diff --git a/server-deploy.sh b/server-deploy.sh new file mode 100755 index 00000000..645beeea --- /dev/null +++ b/server-deploy.sh @@ -0,0 +1,64 @@ +#!/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 "======================================"