#!/bin/bash set -e SERVER="${DEPLOY_SERVER:-root@85.239.58.182}" REMOTE_DIR="/root/guidly" DOMAIN="gidli.ru" echo "=== Building project ===" npm run build echo "=== Creating deployment archive ===" tar -czf deploy.tar.gz \ dist/ \ dist-server/ \ dist-bot/ \ package.json \ package-lock.json \ ecosystem.config.cjs \ deploy/nginx-guidly.conf echo "=== Uploading to server ===" scp deploy.tar.gz "$SERVER:/tmp/" echo "=== Deploying on server ===" ssh "$SERVER" << ENDSSH set -e mkdir -p $REMOTE_DIR cd $REMOTE_DIR # Extract new files tar -xzf /tmp/deploy.tar.gz rm /tmp/deploy.tar.gz # Install production dependencies npm install --omit=dev # Copy nginx config if not already linked if [ ! -f /etc/nginx/sites-available/$DOMAIN ]; then cp deploy/nginx-guidly.conf /etc/nginx/sites-available/$DOMAIN ln -sf /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/ rm -f /etc/nginx/sites-enabled/default nginx -t && systemctl reload nginx echo "Nginx config installed. Run 'certbot --nginx -d $DOMAIN' if SSL not yet set up." fi # Restart app via PM2 pm2 delete guidly-server 2>/dev/null || true pm2 start ecosystem.config.cjs pm2 save echo "=== Deployment complete ===" echo "App: https://$DOMAIN" ENDSSH echo "=== Cleanup ===" rm deploy.tar.gz echo "=== Deploy complete ==="