This commit is contained in:
Dmitry 2025-11-19 22:32:48 +03:00
parent 564cf93cad
commit bccb4146d3
8 changed files with 710 additions and 0 deletions

80
tools/deploy/check-nginx.sh Executable file
View file

@ -0,0 +1,80 @@
#!/bin/bash
# Script to check and reload nginx
set -e
SERVER_IP="147.45.152.129"
SERVER_USER="root"
echo "🔧 Checking and reloading nginx..."
echo ""
ssh "$SERVER_USER@$SERVER_IP" << 'ENDSSH'
set -e
echo "📊 Checking nginx status..."
if /usr/sbin/nginx -v 2>&1; then
echo "✅ nginx is installed"
else
echo "❌ nginx is NOT installed"
exit 1
fi
echo ""
echo "📊 Testing nginx configuration..."
/usr/sbin/nginx -t
echo ""
echo "📊 Checking nginx service status..."
systemctl status nginx --no-pager || true
echo ""
echo "🔄 Reloading nginx..."
systemctl reload nginx
echo "✅ nginx reloaded"
echo ""
echo "📊 Checking if nginx is running..."
systemctl is-active nginx && echo "✅ nginx is active" || echo "❌ nginx is not active"
echo ""
echo "📊 Checking vscode.mnemo-cards.online nginx config..."
if [ -f /etc/nginx/sites-enabled/vscode.mnemo-cards.online ]; then
echo "✅ vscode nginx config is enabled"
elif [ -f /etc/nginx/sites-available/vscode.mnemo-cards.online ]; then
echo "⚠️ vscode nginx config exists but not enabled"
echo "Enabling it..."
ln -sf /etc/nginx/sites-available/vscode.mnemo-cards.online /etc/nginx/sites-enabled/
/usr/sbin/nginx -t && systemctl reload nginx
echo "✅ Enabled and reloaded"
else
echo "❌ vscode nginx config not found"
fi
echo ""
echo "📊 Checking code.mnemo-cards.online DNS resolution..."
if host code.mnemo-cards.online &> /dev/null; then
host code.mnemo-cards.online
else
echo "⚠️ DNS resolution failed for code.mnemo-cards.online"
fi
if host vscode.mnemo-cards.online &> /dev/null; then
host vscode.mnemo-cards.online
else
echo "⚠️ DNS resolution failed for vscode.mnemo-cards.online"
fi
ENDSSH
echo ""
echo "✅ Done!"
echo ""
echo "🌐 Now test these URLs in your browser:"
echo " https://vscode.mnemo-cards.online/"
echo " https://code.mnemo-cards.online/"
echo ""
echo "🔑 Password: AGktOidxrah1KVC0"

View file

@ -0,0 +1,101 @@
#!/bin/bash
# Script to deploy VSCode nginx configuration to the server
set -e
SERVER_IP="147.45.152.129"
SERVER_USER="root"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
VSCODE_NGINX_CONF="$PROJECT_ROOT/mnemo_cards_web_v2/deploy/vscode-nginx.conf"
echo "🚀 Deploying VSCode nginx configuration..."
echo "Server: $SERVER_IP"
echo "Config file: $VSCODE_NGINX_CONF"
echo ""
# Check if config file exists
if [ ! -f "$VSCODE_NGINX_CONF" ]; then
echo "❌ Config file not found: $VSCODE_NGINX_CONF"
exit 1
fi
echo "📤 Uploading nginx configuration..."
scp "$VSCODE_NGINX_CONF" "$SERVER_USER@$SERVER_IP:/tmp/vscode-nginx.conf"
echo ""
echo "⚙️ Installing configuration on server..."
ssh "$SERVER_USER@$SERVER_IP" << 'ENDSSH'
set -e
echo "📋 Moving config to nginx sites-available..."
mv /tmp/vscode-nginx.conf /etc/nginx/sites-available/vscode.mnemo-cards.online
echo "🔗 Creating symbolic link in sites-enabled..."
ln -sf /etc/nginx/sites-available/vscode.mnemo-cards.online /etc/nginx/sites-enabled/vscode.mnemo-cards.online
echo "✅ Configuration installed"
echo ""
echo "📊 Checking nginx configuration syntax..."
/usr/sbin/nginx -t
echo ""
echo "🔄 Reloading nginx..."
systemctl reload nginx
echo "✅ nginx reloaded successfully"
echo ""
echo "📊 Checking SSL certificates..."
if [ -d "/etc/letsencrypt/live/vscode.mnemo-cards.online" ]; then
echo "✅ Let's Encrypt certificates found"
ls -la /etc/letsencrypt/live/vscode.mnemo-cards.online/
else
echo "⚠️ Let's Encrypt certificates not found"
echo "You may need to obtain certificates with:"
echo " sudo certbot certonly --standalone -d vscode.mnemo-cards.online"
fi
echo ""
echo "📊 Checking rate limiting zones in main nginx config..."
if grep -q "vscode_general" /etc/nginx/nginx.conf; then
echo "✅ Rate limiting zones are configured"
else
echo "⚠️ Rate limiting zones not found in main config"
echo "Adding rate limiting zones..."
# Backup current config
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
# Add rate limiting zones in http block
sed -i '/http {/a\ # Rate limiting zones for VSCode Server\n limit_req_zone $binary_remote_addr zone=vscode_general:10m rate=100r/m;\n limit_req_zone $binary_remote_addr zone=vscode_login:10m rate=5r/m;' /etc/nginx/nginx.conf
echo "✅ Rate limiting zones added"
echo ""
echo "📊 Testing updated configuration..."
/usr/sbin/nginx -t
echo ""
echo "🔄 Reloading nginx again..."
systemctl reload nginx
fi
ENDSSH
echo ""
echo "✅ Done!"
echo ""
echo "🌐 VSCode Server should now be accessible at:"
echo " https://vscode.mnemo-cards.online/"
echo " https://code.mnemo-cards.online/ (same service)"
echo ""
echo "🔑 Password: AGktOidxrah1KVC0"
echo ""
echo "📝 If you get SSL errors, you may need to obtain certificates:"
echo " ssh root@$SERVER_IP"
echo " sudo certbot certonly --standalone -d vscode.mnemo-cards.online -d code.mnemo-cards.online"

View file

@ -0,0 +1,70 @@
#!/bin/bash
# Script to find and resolve conflicts with code.mnemo-cards.online domain
set -e
SERVER_IP="147.45.152.129"
SERVER_USER="root"
echo "🔍 Finding conflicts for code.mnemo-cards.online..."
echo ""
ssh "$SERVER_USER@$SERVER_IP" << 'ENDSSH'
set -e
echo "📊 Searching for code.mnemo-cards.online in all nginx configs..."
echo ""
# Find all files containing code.mnemo-cards.online
echo "=== Files in sites-available ==="
grep -r "code.mnemo-cards.online" /etc/nginx/sites-available/ 2>/dev/null || echo "None found"
echo ""
echo "=== Files in sites-enabled ==="
ls -la /etc/nginx/sites-enabled/ | grep -E "(code|forgejo)"
echo ""
echo "=== Checking forgejo config ==="
if [ -f /etc/nginx/sites-available/forgejo ]; then
echo "Found forgejo config. Checking server_name:"
grep "server_name" /etc/nginx/sites-available/forgejo || true
fi
echo ""
echo "🔧 Solution: code.mnemo-cards.online is likely used by Forgejo"
echo "We should remove it from Forgejo config and keep it only in vscode config"
echo ""
read -p "Do you want to remove code.mnemo-cards.online from Forgejo config? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "Updating Forgejo config..."
# Backup forgejo config
cp /etc/nginx/sites-available/forgejo /etc/nginx/sites-available/forgejo.backup
# Remove code.mnemo-cards.online from server_name
sed -i 's/code\.mnemo-cards\.online//g' /etc/nginx/sites-available/forgejo
sed -i 's/server_name /server_name /g' /etc/nginx/sites-available/forgejo
echo "✅ Updated forgejo config"
echo ""
echo "Testing nginx config..."
/usr/sbin/nginx -t
echo ""
echo "Reloading nginx..."
systemctl reload nginx
echo "✅ Done!"
else
echo "Skipping..."
fi
ENDSSH
echo ""
echo "✅ Complete!"

View file

@ -0,0 +1,92 @@
#!/bin/bash
# Script to automatically fix code.mnemo-cards.online domain conflict
set -e
SERVER_IP="147.45.152.129"
SERVER_USER="root"
echo "🔧 Fixing code.mnemo-cards.online domain conflict..."
echo ""
ssh "$SERVER_USER@$SERVER_IP" << 'ENDSSH'
set -e
echo "📊 Searching for code.mnemo-cards.online in nginx configs..."
echo ""
# Find all files containing code.mnemo-cards.online
echo "Files containing code.mnemo-cards.online:"
grep -l "code.mnemo-cards.online" /etc/nginx/sites-available/* 2>/dev/null | sort | uniq || echo "None found"
echo ""
echo "=== Current server_name in forgejo config ==="
if [ -f /etc/nginx/sites-available/forgejo ]; then
grep "server_name" /etc/nginx/sites-available/forgejo | head -5 || true
fi
echo ""
echo "🔧 Removing code.mnemo-cards.online from Forgejo config..."
if [ -f /etc/nginx/sites-available/forgejo ]; then
# Backup forgejo config
cp /etc/nginx/sites-available/forgejo /etc/nginx/sites-available/forgejo.backup.$(date +%Y%m%d_%H%M%S)
# Remove code.mnemo-cards.online from server_name lines
# This will remove it but keep other domains
sed -i 's/code\.mnemo-cards\.online//g' /etc/nginx/sites-available/forgejo
# Clean up any double spaces
sed -i 's/ */ /g' /etc/nginx/sites-available/forgejo
# Clean up trailing spaces on server_name lines
sed -i '/server_name/s/ *;/;/g' /etc/nginx/sites-available/forgejo
echo "✅ Updated forgejo config"
echo ""
echo "=== New server_name in forgejo config ==="
grep "server_name" /etc/nginx/sites-available/forgejo | head -5 || true
else
echo "⚠️ Forgejo config not found"
fi
echo ""
echo "📊 Testing nginx configuration..."
if /usr/sbin/nginx -t 2>&1; then
echo "✅ nginx config is valid"
echo ""
echo "🔄 Reloading nginx..."
systemctl reload nginx
echo "✅ nginx reloaded"
else
echo "❌ nginx config is invalid, restoring backup..."
if [ -f /etc/nginx/sites-available/forgejo.backup.$(date +%Y%m%d_%H%M%S) ]; then
cp /etc/nginx/sites-available/forgejo.backup.$(date +%Y%m%d_%H%M%S) /etc/nginx/sites-available/forgejo
echo "✅ Backup restored"
fi
exit 1
fi
ENDSSH
echo ""
echo "✅ Done! Testing URLs..."
echo ""
# Wait a bit for nginx to fully reload
sleep 2
# Test the URLs
echo "Testing vscode.mnemo-cards.online..."
curl -I https://vscode.mnemo-cards.online 2>&1 | head -3 || echo "⚠️ Could not reach vscode.mnemo-cards.online"
echo ""
echo "Testing code.mnemo-cards.online..."
curl -I https://code.mnemo-cards.online 2>&1 | head -3 || echo "⚠️ Could not reach code.mnemo-cards.online"
echo ""
echo "✅ Complete!"

View file

@ -0,0 +1,81 @@
#!/bin/bash
# Script to find and fix duplicate nginx configurations
set -e
SERVER_IP="147.45.152.129"
SERVER_USER="root"
echo "🔍 Finding and fixing duplicate nginx configurations..."
echo ""
ssh "$SERVER_USER@$SERVER_IP" << 'ENDSSH'
set -e
echo "📊 Searching for vscode.mnemo-cards.online in nginx configs..."
echo ""
# Find all nginx config files that mention vscode.mnemo-cards.online
echo "Files containing vscode.mnemo-cards.online:"
grep -r "vscode.mnemo-cards.online" /etc/nginx/sites-enabled/ 2>/dev/null | cut -d: -f1 | sort | uniq || echo "None found in sites-enabled"
echo ""
grep -r "vscode.mnemo-cards.online" /etc/nginx/sites-available/ 2>/dev/null | cut -d: -f1 | sort | uniq || echo "None found in sites-available"
echo ""
echo "📊 Listing all enabled sites..."
ls -la /etc/nginx/sites-enabled/
echo ""
echo "🔧 Removing duplicates and old configs..."
# Remove any old or duplicate configs
if [ -f /etc/nginx/sites-enabled/vscode ]; then
echo "Removing old 'vscode' config..."
rm -f /etc/nginx/sites-enabled/vscode
fi
if [ -f /etc/nginx/sites-enabled/code.mnemo-cards.online ]; then
echo "Removing 'code.mnemo-cards.online' (duplicate of vscode)..."
rm -f /etc/nginx/sites-enabled/code.mnemo-cards.online
fi
# Check if there are multiple vscode configs
VSCODE_CONFIGS=$(ls /etc/nginx/sites-enabled/vscode* 2>/dev/null | wc -l)
if [ "$VSCODE_CONFIGS" -gt 1 ]; then
echo "⚠️ Found multiple vscode configs:"
ls -la /etc/nginx/sites-enabled/vscode*
echo ""
echo "Keeping only vscode.mnemo-cards.online..."
find /etc/nginx/sites-enabled/ -name "vscode*" ! -name "vscode.mnemo-cards.online" -delete
fi
echo ""
echo "✅ Cleanup complete"
echo ""
echo "📊 Current enabled sites:"
ls -la /etc/nginx/sites-enabled/
echo ""
echo "📊 Testing nginx configuration..."
/usr/sbin/nginx -t
echo ""
echo "🔄 Reloading nginx..."
systemctl reload nginx
echo "✅ nginx reloaded successfully"
ENDSSH
echo ""
echo "✅ Done!"
echo ""
echo "🌐 Testing URLs..."
curl -I https://vscode.mnemo-cards.online/ 2>&1 | head -5 || echo "⚠️ Could not reach vscode.mnemo-cards.online"
echo ""
curl -I https://code.mnemo-cards.online/ 2>&1 | head -5 || echo "⚠️ Could not reach code.mnemo-cards.online"

172
tools/deploy/fix-vscode-server.sh Executable file
View file

@ -0,0 +1,172 @@
#!/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'"

View file

@ -0,0 +1,38 @@
#!/bin/bash
# Final test of VSCode Server
set -e
echo "🧪 Final test of VSCode Server availability..."
echo ""
echo "📊 Test 1: Testing vscode.mnemo-cards.online from local machine..."
if curl -I -L -m 10 https://vscode.mnemo-cards.online/ 2>&1 | head -15; then
echo "✅ vscode.mnemo-cards.online is accessible"
else
echo "⚠️ Could not reach vscode.mnemo-cards.online from local machine"
echo "This might be a firewall or DNS issue on your local network"
fi
echo ""
echo "📊 Test 2: Testing code.mnemo-cards.online (should be Forgejo, not VSCode)..."
if curl -I -L -m 10 https://code.mnemo-cards.online/ 2>&1 | head -15; then
echo "✅ code.mnemo-cards.online is accessible (this is Forgejo/Git)"
else
echo "⚠️ Could not reach code.mnemo-cards.online"
fi
echo ""
echo "📊 Test 3: Testing from server itself..."
ssh root@147.45.152.129 'curl -I https://vscode.mnemo-cards.online 2>&1 | head -10'
echo ""
echo "✅ Testing complete!"
echo ""
echo "📝 Summary:"
echo " - https://vscode.mnemo-cards.online/ → VSCode Server"
echo " - https://code.mnemo-cards.online/ → Forgejo (Git)"
echo ""
echo "🔑 VSCode password: AGktOidxrah1KVC0"

View file

@ -0,0 +1,76 @@
#!/bin/bash
# Script to test VSCode server from the server itself
set -e
SERVER_IP="147.45.152.129"
SERVER_USER="root"
echo "🧪 Testing VSCode server from the server itself..."
echo ""
ssh "$SERVER_USER@$SERVER_IP" << 'ENDSSH'
set -e
echo "📊 Step 1: Checking if nginx is listening on port 443..."
ss -tuln | grep ':443' || echo "⚠️ Nothing listening on port 443"
echo ""
echo "📊 Step 2: Checking if code-server is listening on port 8443..."
ss -tuln | grep ':8443' || echo "⚠️ Nothing listening on port 8443"
echo ""
echo "📊 Step 3: Testing local connection to code-server..."
curl -I http://127.0.0.1:8443 2>&1 | head -10
echo ""
echo "📊 Step 4: Testing nginx proxy to code-server (HTTP)..."
curl -I -H "Host: vscode.mnemo-cards.online" http://127.0.0.1 2>&1 | head -10
echo ""
echo "📊 Step 5: Testing HTTPS connection locally..."
curl -I -k https://127.0.0.1 -H "Host: vscode.mnemo-cards.online" 2>&1 | head -10
echo ""
echo "📊 Step 6: Checking SSL certificates..."
if [ -d "/etc/letsencrypt/live/vscode.mnemo-cards.online" ]; then
echo "✅ Certificate directory exists"
ls -la /etc/letsencrypt/live/vscode.mnemo-cards.online/
echo ""
echo "Certificate details:"
openssl x509 -in /etc/letsencrypt/live/vscode.mnemo-cards.online/fullchain.pem -noout -text | grep -A2 "Subject:"
openssl x509 -in /etc/letsencrypt/live/vscode.mnemo-cards.online/fullchain.pem -noout -text | grep -A2 "Not After"
else
echo "❌ Certificate directory not found"
fi
echo ""
echo "📊 Step 7: Checking nginx error logs..."
echo "Last 20 lines of nginx error log:"
tail -20 /var/log/nginx/error.log
echo ""
echo "📊 Step 8: Checking firewall status..."
if command -v ufw &> /dev/null; then
echo "UFW status:"
ufw status
else
echo "UFW not installed"
fi
echo ""
echo "📊 Step 9: Checking iptables..."
iptables -L -n | grep -E "(443|REJECT|DROP)" || echo "No blocking rules found for port 443"
echo ""
echo "📊 Step 10: Testing external connection..."
echo "Attempting to connect to vscode.mnemo-cards.online from the server..."
curl -I https://vscode.mnemo-cards.online 2>&1 | head -10
ENDSSH
echo ""
echo "✅ Test complete!"