mnemo_cards/tools/deploy/fix-backend-port-conflict.sh
2025-11-19 23:10:22 +03:00

111 lines
3.4 KiB
Bash
Executable file

#!/bin/bash
# Script to fix backend server port conflict (8443 is used by code-server)
# Backend should use port 8081
set -e
SERVER_IP="147.45.152.129"
SERVER_USER="root"
echo "🔧 Fixing backend server port conflict..."
echo "Backend will be moved from port 8443 to port 8081"
echo ""
ssh "$SERVER_USER@$SERVER_IP" << 'ENDSSH'
set -e
echo "📊 Step 1: Checking current port usage..."
echo "Port 8443:"
ss -tuln | grep 8443 || echo " Not in use"
echo ""
echo "Port 8081:"
ss -tuln | grep 8081 || echo " Not in use"
echo ""
echo "🔧 Step 2: Updating backend systemd service to use port 8081..."
# Backup current service file
cp /etc/systemd/system/mnemo_cards_server.service /etc/systemd/system/mnemo_cards_server.service.backup.$(date +%Y%m%d_%H%M%S)
# Update port from 8443 to 8081
sed -i 's/-p 8443/-p 8081/g' /etc/systemd/system/mnemo_cards_server.service
echo "Updated service file:"
cat /etc/systemd/system/mnemo_cards_server.service
echo ""
echo "🔧 Step 3: Checking nginx API configuration..."
if [ -f /etc/nginx/sites-available/api ]; then
echo "Current API nginx config proxy_pass:"
grep "proxy_pass" /etc/nginx/sites-available/api | head -3
echo ""
echo "Updating nginx to proxy to port 8081..."
# Backup nginx config
cp /etc/nginx/sites-available/api /etc/nginx/sites-available/api.backup.$(date +%Y%m%d_%H%M%S)
# Update proxy_pass to use port 8081
sed -i 's|proxy_pass https://localhost:8443|proxy_pass https://localhost:8081|g' /etc/nginx/sites-available/api
sed -i 's|proxy_pass http://localhost:8443|proxy_pass http://localhost:8081|g' /etc/nginx/sites-available/api
echo "Updated proxy_pass:"
grep "proxy_pass" /etc/nginx/sites-available/api | head -3
else
echo "⚠️ API nginx config not found"
fi
echo ""
echo "📊 Step 4: Testing nginx configuration..."
if /usr/sbin/nginx -t 2>&1; then
echo "✅ nginx config is valid"
else
echo "❌ nginx config is invalid, restoring backup..."
cp /etc/nginx/sites-available/api.backup.$(date +%Y%m%d_%H%M%S | sort -r | head -1) /etc/nginx/sites-available/api
exit 1
fi
echo ""
echo "🔄 Step 5: Reloading systemd and nginx..."
systemctl daemon-reload
systemctl reload nginx
echo "✅ Reloaded"
echo ""
echo "🚀 Step 6: Starting backend server..."
systemctl restart mnemo_cards_server
echo ""
echo "⏳ Waiting for server to start..."
sleep 5
echo ""
echo "📊 Step 7: Checking backend server status..."
systemctl status mnemo_cards_server --no-pager || true
echo ""
echo "📊 Step 8: Checking if port 8081 is now listening..."
if ss -tuln | grep 8081; then
echo "✅ Backend is listening on port 8081"
else
echo "⚠️ Backend is not listening on port 8081 yet"
echo "Checking logs:"
journalctl -u mnemo_cards_server -n 20 --no-pager
fi
ENDSSH
echo ""
echo "✅ Done!"
echo ""
echo "📝 Summary:"
echo " - code-server: 127.0.0.1:8443 (VSCode)"
echo " - backend: 0.0.0.0:8081 (API)"
echo ""
echo "🌐 URLs:"
echo " - API: https://api.mnemo-cards.online:8081/"
echo " - VSCode: https://vscode.mnemo-cards.online/"