mnemo_cards/tools/deploy/fix-vscode-server.sh

173 lines
5.2 KiB
Bash
Raw Normal View History

2025-11-19 19:32:48 +00:00
#!/bin/bash
# Script to diagnose and fix VSCode Server (code-server) issues
# This script checks if code-server is installed, running, and configured for auto-start
set -e
SERVER_IP="147.45.152.129"
SERVER_USER="root"
echo "🔧 Diagnosing and fixing VSCode Server..."
echo "Server: $SERVER_IP"
echo ""
ssh "$SERVER_USER@$SERVER_IP" << 'ENDSSH'
set -e
echo "📊 Step 1: Checking if code-server is installed..."
if command -v code-server &> /dev/null; then
echo "✅ code-server is installed"
code-server --version || true
else
echo "❌ code-server is NOT installed"
echo "Installing code-server..."
curl -fsSL https://code-server.dev/install.sh | sh
echo "✅ code-server installed"
fi
echo ""
echo "📊 Step 2: Checking if code-server is listening on port 8443..."
if netstat -tuln | grep ':8443' &> /dev/null || ss -tuln | grep ':8443' &> /dev/null; then
echo "✅ Something is listening on port 8443"
netstat -tuln | grep ':8443' || ss -tuln | grep ':8443'
else
echo "⚠️ Nothing is listening on port 8443"
fi
echo ""
echo "📊 Step 3: Checking code-server systemd service..."
if [ -f /etc/systemd/system/code-server.service ] || [ -f /lib/systemd/system/code-server@.service ]; then
echo "✅ code-server service file exists"
# Check service status
if systemctl is-active --quiet code-server || systemctl is-active --quiet code-server@root; then
echo "✅ code-server service is running"
systemctl status code-server --no-pager || systemctl status code-server@root --no-pager || true
else
echo "❌ code-server service is NOT running"
fi
# Check if enabled
if systemctl is-enabled --quiet code-server 2>/dev/null || systemctl is-enabled --quiet code-server@root 2>/dev/null; then
echo "✅ code-server service is enabled (will start on boot)"
else
echo "⚠️ code-server service is NOT enabled (will not start on boot)"
fi
else
echo "❌ code-server service file does NOT exist"
fi
echo ""
echo "📊 Step 4: Checking code-server configuration..."
if [ -f ~/.config/code-server/config.yaml ]; then
echo "✅ code-server config exists"
echo "Current config:"
cat ~/.config/code-server/config.yaml
else
echo "⚠️ code-server config not found at default location"
fi
echo ""
echo "🔧 Step 5: Fixing code-server setup..."
# Create or update config
echo "Creating/updating code-server configuration..."
mkdir -p ~/.config/code-server
cat > ~/.config/code-server/config.yaml << 'EOF'
bind-addr: 127.0.0.1:8443
auth: password
password: AGktOidxrah1KVC0
cert: false
EOF
echo "✅ Configuration updated"
echo ""
echo "📊 Step 6: Creating/updating systemd service..."
# Create systemd service
cat > /tmp/code-server.service << 'EOF'
[Unit]
Description=code-server
After=network.target
[Service]
Type=simple
Environment=PASSWORD=AGktOidxrah1KVC0
ExecStart=/usr/bin/code-server --bind-addr 127.0.0.1:8443 --auth password
WorkingDirectory=/root
Restart=always
RestartSec=10
User=root
[Install]
WantedBy=multi-user.target
EOF
sudo mv /tmp/code-server.service /etc/systemd/system/code-server.service
sudo chmod 644 /etc/systemd/system/code-server.service
echo "✅ Service file created"
echo ""
echo "🔄 Step 7: Enabling and starting service..."
sudo systemctl daemon-reload
sudo systemctl enable code-server
sudo systemctl restart code-server
echo ""
echo "⏳ Waiting for service to start..."
sleep 3
echo ""
echo "📊 Step 8: Final status check..."
systemctl status code-server --no-pager || true
echo ""
echo "📊 Step 9: Checking if port 8443 is now listening..."
if netstat -tuln | grep ':8443' &> /dev/null || ss -tuln | grep ':8443' &> /dev/null; then
echo "✅ Service is listening on port 8443"
netstat -tuln | grep ':8443' || ss -tuln | grep ':8443'
else
echo "❌ Port 8443 is still not listening"
echo "Checking logs:"
journalctl -u code-server -n 50 --no-pager || true
fi
echo ""
echo "📊 Step 10: Testing nginx configuration..."
if command -v nginx &> /dev/null; then
echo "Testing nginx config..."
sudo nginx -t
echo ""
echo "Reloading nginx..."
sudo systemctl reload nginx
echo "✅ nginx reloaded"
else
echo "⚠️ nginx not found"
fi
ENDSSH
echo ""
echo "✅ Done!"
echo ""
echo "🌐 Testing URLs..."
echo " https://vscode.mnemo-cards.online/"
echo " https://code.mnemo-cards.online/"
echo ""
echo "📝 If still not working, check:"
echo " 1. DNS records for vscode.mnemo-cards.online and code.mnemo-cards.online"
echo " 2. SSL certificates"
echo " 3. Firewall rules"
echo ""
echo "🔍 Check logs:"
echo " ssh root@$SERVER_IP 'journalctl -u code-server -f'"
echo ""
echo "🔍 Check nginx logs:"
echo " ssh root@$SERVER_IP 'tail -f /var/log/nginx/error.log'"