#!/bin/bash # Script to deploy generated nginx configurations to the server # This script uses the configurations generated by generate-nginx-configs.sh set -e SERVER_IP="147.45.152.129" SERVER_USER="root" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" CONFIG_DIR="$SCRIPT_DIR/generated_configs" echo "๐Ÿš€ Deploying nginx configurations to server..." echo "Server: $SERVER_IP" echo "Config directory: $CONFIG_DIR" echo "" # Check if config directory exists and has files if [ ! -d "$CONFIG_DIR" ]; then echo "โŒ Config directory not found: $CONFIG_DIR" echo "Run generate-nginx-configs.sh first" exit 1 fi if [ ! "$(ls -A "$CONFIG_DIR"/*.conf 2>/dev/null)" ]; then echo "โŒ No configuration files found in $CONFIG_DIR" echo "Run generate-nginx-configs.sh first" exit 1 fi echo "๐Ÿ“ค Uploading configurations..." scp "$CONFIG_DIR"/*.conf "$SERVER_USER@$SERVER_IP:/tmp/" echo "" echo "โš™๏ธ Installing configurations on server..." ssh "$SERVER_USER@$SERVER_IP" << 'ENDSSH' set -e echo "๐Ÿ›‘ Stopping nginx service..." systemctl stop nginx || true echo "๐Ÿงน Cleaning up old configurations..." rm -f /etc/nginx/sites-enabled/vscode* rm -f /etc/nginx/sites-enabled/forgejo* rm -f /etc/nginx/sites-enabled/code* rm -f /etc/nginx/sites-enabled/mnemo* echo "๐Ÿงน Killing any orphaned nginx processes..." pkill -9 nginx 2>/dev/null || true sleep 2 echo "๐Ÿ“‹ Installing new configurations..." mv /tmp/vscode.mnemo-cards.online.conf /etc/nginx/sites-available/ 2>/dev/null || true mv /tmp/code.mnemo-cards.online.conf /etc/nginx/sites-available/ 2>/dev/null || true mv /tmp/mnemo-cards.online.conf /etc/nginx/sites-available/ 2>/dev/null || true echo "๐Ÿ”— Creating symbolic links..." ln -sf /etc/nginx/sites-available/vscode.mnemo-cards.online.conf /etc/nginx/sites-enabled/ 2>/dev/null || true ln -sf /etc/nginx/sites-available/code.mnemo-cards.online.conf /etc/nginx/sites-enabled/ 2>/dev/null || true ln -sf /etc/nginx/sites-available/mnemo-cards.online.conf /etc/nginx/sites-enabled/ 2>/dev/null || true echo "โœ… Configurations installed" echo "" echo "๐Ÿ“Š Validating configuration..." if /usr/sbin/nginx -t; then echo "โœ… Configuration syntax is valid" else echo "โŒ Configuration syntax error!" echo "Checking configuration files..." for config in /etc/nginx/sites-enabled/*; do echo "Testing $(basename "$config")..." if ! /usr/sbin/nginx -t -c /etc/nginx/nginx.conf 2>&1 | grep -q "$(basename "$config")"; then echo " โŒ Error in $(basename "$config")" head -20 "$config" fi done echo "Restoring basic configuration..." # Create minimal working config cat > /etc/nginx/sites-available/emergency.conf << 'EMERGENCY' server { listen 80; server_name _; return 200 "nginx emergency mode\n"; access_log off; } EMERGENCY ln -sf /etc/nginx/sites-available/emergency.conf /etc/nginx/sites-enabled/ systemctl start nginx echo "Emergency configuration activated" exit 1 fi echo "" echo "๐Ÿ”„ Starting nginx service..." if systemctl start nginx; then echo "โœ… nginx started successfully" else echo "โŒ nginx failed to start!" systemctl status nginx --no-pager exit 1 fi echo "" echo "๐Ÿ“Š Verifying services are accessible..." # Test each service SERVICES=( "mnemo-cards.online:80:301" # Should redirect to HTTPS "code.mnemo-cards.online:80:301" "vscode.mnemo-cards.online:80:301" ) for service in "${SERVICES[@]}"; do DOMAIN=$(echo "$service" | cut -d: -f1) PORT=$(echo "$service" | cut -d: -f2) EXPECTED_CODE=$(echo "$service" | cut -d: -f3) if curl -I --max-time 5 "http://$DOMAIN:$PORT/" 2>/dev/null | grep -q "HTTP/1.1 $EXPECTED_CODE"; then echo "โœ… $DOMAIN redirects correctly" else echo "โš ๏ธ $DOMAIN not responding as expected" fi done ENDSSH echo "" echo "โœ… Deployment completed!" echo "" echo "๐ŸŒ Services should be accessible at:" echo " https://mnemo-cards.online/ (main web app)" echo " https://code.mnemo-cards.online/ (Forgejo)" echo " https://vscode.mnemo-cards.online/ (VSCode Server)" echo "" echo "๐Ÿ”ง To check status: ./check-nginx.sh" echo "๐Ÿ”ง To regenerate configs: ./generate-nginx-configs.sh"