#!/bin/bash # Script to build backend on the server # This script assumes source code is already present (synced via rsync) # Usage: ./server_build.sh set -e -v # Go to backend directory 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.memo-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.memo-cards.online -a 0.0.0.0 -p 8443|' /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 8443|' /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