#!/bin/bash # Script to trigger backend deployment on the remote server # Usage: ./deploy_remote.sh set -e # Configuration SERVER_IP="147.45.152.129" SERVER_USER="root" REMOTE_DIR="~/mnemo_cards_backend" BUILD_SCRIPT="./build_app.sh" # Colors GREEN='\033[0;32m' BLUE='\033[0;34m' NC='\033[0m' # No Color echo -e "${BLUE}[INFO]${NC} Starting backend deployment on ${SERVER_USER}@${SERVER_IP}..." # Sync source code echo -e "${BLUE}[INFO]${NC} Syncing source code to ${SERVER_USER}@${SERVER_IP}..." # Sync common packages first rsync -avz --delete --exclude '.*' --exclude 'build' --exclude 'doc' \ mnemo_cards_common \ mnemo_cards_common_backend \ "${SERVER_USER}@${SERVER_IP}:~/" # Sync backend project rsync -avz --delete --exclude '.*' --exclude 'build' --exclude 'server.exe' \ mnemo_cards_backend \ "${SERVER_USER}@${SERVER_IP}:~/" echo -e "${BLUE}[INFO]${NC} Triggering remote build..." # Execute build directly via SSH ssh -t "${SERVER_USER}@${SERVER_IP}" << 'ENDSSH' set -e -v cd ~/mnemo_cards_backend # Get dependencies and compile echo "📦 Getting dependencies..." dart pub get echo "🔨 Compiling server..." dart compile exe --verbose lib/main.dart -o server_build.exe # Stop service echo "🛑 Stopping service..." sudo systemctl stop mnemo_cards_server || true # Update service file echo "⚙️ Updating service configuration..." sudo chmod 777 mnemo_cards_server.service sudo cp mnemo_cards_server.service /etc/systemd/system/ # Update executable echo "🔄 Replacing executable..." sudo cp server_build.exe server.exe rm server_build.exe # Check certificates and configure mode if [ -d "/etc/letsencrypt/live/api.mnemo-cards.online" ]; then echo "✅ Let's Encrypt certificates found. Configuring dual mode..." sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe --dual --certs /etc/letsencrypt/live/api.mnemo-cards.online -a 0.0.0.0 -p 8081|' /etc/systemd/system/mnemo_cards_server.service else echo "⚠️ No certificates found. Configuring HTTP mode..." sudo sed -i 's|ExecStart=/root/mnemo_cards_backend/server.exe.*|ExecStart=/root/mnemo_cards_backend/server.exe -a 0.0.0.0 -p 8081|' /etc/systemd/system/mnemo_cards_server.service fi # Reload and restart echo "🚀 Restarting service..." sudo systemctl daemon-reload sudo systemctl start mnemo_cards_server # Check status sleep 2 systemctl status mnemo_cards_server --no-pager # Гарантируем, что nginx запущен (важно для работы code.mnemo-cards.online) echo "🔍 Проверяем статус nginx..." if sudo systemctl is-active --quiet nginx; then echo "✅ nginx уже запущен" # Перезагружаем конфигурацию на всякий случай if sudo nginx -t 2>/dev/null; then sudo systemctl reload nginx echo "✅ Конфигурация nginx перезагружена" fi else echo "⚠️ nginx не запущен, запускаем..." if sudo nginx -t 2>/dev/null; then sudo systemctl start nginx sleep 2 if sudo systemctl is-active --quiet nginx; then echo "✅ nginx успешно запущен" else echo "❌ Ошибка: не удалось запустить nginx!" sudo systemctl status nginx --no-pager || true fi else echo "❌ Ошибка в конфигурации nginx!" sudo nginx -t || true fi fi ENDSSH echo -e "${GREEN}[SUCCESS]${NC} Backend deployment triggered successfully!"