semblance/server-deploy.sh
2026-03-20 13:24:52 +00:00

64 lines
2.7 KiB
Bash
Executable file

#!/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 "======================================"