#!/bin/bash set -e # ───────────────────────────────────────────────────────────────────────────── # Semblance — server-side deploy script # Run this DIRECTLY ON THE SERVER: /opt/semblance/server-deploy.sh # # Does NOT build the frontend (Node not on server). # Frontend must be deployed from local Mac via: ./deploy.sh # ───────────────────────────────────────────────────────────────────────────── DEPLOY_DIR="/opt/semblance" FRONTEND_DEST="/var/www/html/semblance" echo "======================================" echo "Semblance — server-side deployment" echo "======================================" cd "$DEPLOY_DIR" # ── Pre-flight ──────────────────────────────────────────────────────────────── if [ ! -f backend/.env ]; then echo "ERROR: backend/.env not found." echo " cp backend/.env.example backend/.env && nano backend/.env" exit 1 fi for VAR in SECRET_KEY JWT_SECRET_KEY OPENAI_API_KEY GEMINI_API_KEY; do if ! grep -q "^${VAR}=.\+" backend/.env 2>/dev/null; then echo "ERROR: $VAR is not set in backend/.env" exit 1 fi done echo "✓ backend/.env OK" # ── Step 1: Pull latest code ────────────────────────────────────────────────── echo "" echo "[1/3] Pulling latest code..." git pull # ── Step 2: Ensure frontend dir exists ─────────────────────────────────────── echo "" echo "[2/3] Ensuring frontend directory..." sudo mkdir -p "$FRONTEND_DEST" sudo chown -R www-data:www-data "$FRONTEND_DEST" echo "✓ $FRONTEND_DEST ready" # ── Step 3: Rebuild and restart Docker services ─────────────────────────────── echo "" echo "[3/3] Rebuilding and restarting Docker services..." docker compose up -d --build echo "" echo "Container status:" docker compose ps echo "" echo "======================================" echo "Server deployment complete!" echo " Backend: http://127.0.0.1:5137" echo "" echo "NOTE: Frontend not deployed (requires local build)." echo " Run ./deploy.sh from your Mac to deploy the frontend." echo "======================================"