c7ae33528e
Automates SSH deploy: git pull, .env setup prompt, docker compose build + up, and per-port health checks. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JWCfXRGY3WA5PNeMRLad7w
65 lines
2.1 KiB
Bash
Executable File
65 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# deploy-server.sh — deploy Falah OS CE to production server
|
|
# Usage: bash deploy-server.sh [server-ip] [ssh-user]
|
|
# Example: bash deploy-server.sh 13.140.161.244 root
|
|
|
|
set -euo pipefail
|
|
|
|
SERVER="${1:-13.140.161.244}"
|
|
SSH_USER="${2:-root}"
|
|
REMOTE="$SSH_USER@$SERVER"
|
|
DEPLOY_DIR="/opt/falah-os-ce"
|
|
BRANCH="community-edition"
|
|
REPO_URL="https://github.com/maifors/falah-os.git"
|
|
|
|
echo "▶ Deploying Falah OS CE to $SERVER"
|
|
|
|
ssh "$REMOTE" bash -s <<REMOTE_SCRIPT
|
|
set -euo pipefail
|
|
|
|
echo "── Checking prerequisites ──"
|
|
command -v docker >/dev/null || { echo "docker not found"; exit 1; }
|
|
docker compose version >/dev/null 2>&1 || docker-compose version >/dev/null || { echo "docker compose not found"; exit 1; }
|
|
|
|
echo "── Cloning / updating repo ──"
|
|
if [ -d "$DEPLOY_DIR/.git" ]; then
|
|
git -C "$DEPLOY_DIR" fetch origin
|
|
git -C "$DEPLOY_DIR" checkout $BRANCH
|
|
git -C "$DEPLOY_DIR" reset --hard origin/$BRANCH
|
|
else
|
|
git clone --branch $BRANCH --depth 1 "$REPO_URL" "$DEPLOY_DIR"
|
|
fi
|
|
|
|
echo "── Setting up .env ──"
|
|
if [ ! -f "$DEPLOY_DIR/.env" ]; then
|
|
cp "$DEPLOY_DIR/.env.example" "$DEPLOY_DIR/.env"
|
|
echo ""
|
|
echo "⚠️ .env created from .env.example. Fill in these values before continuing:"
|
|
echo " CASDOOR_CLIENT_ID — from auth.falahos.my Casdoor app settings"
|
|
echo " GITEA_TOKEN — from bitwarden.falahos.my → 'Falah OS iStore Gitea Token'"
|
|
echo ""
|
|
echo "Edit: nano $DEPLOY_DIR/.env"
|
|
echo "Then re-run this script."
|
|
exit 0
|
|
fi
|
|
|
|
echo "── Pulling and starting services ──"
|
|
cd "$DEPLOY_DIR"
|
|
docker compose pull --quiet 2>/dev/null || true
|
|
docker compose build --parallel
|
|
docker compose up -d
|
|
|
|
echo "── Health checks ──"
|
|
sleep 5
|
|
for port in \${CE_PORT:-3005} \${ISTORE_PORT:-3021} \${APP_MANAGER_PORT:-3022}; do
|
|
if curl -sf "http://localhost:\$port/health" >/dev/null 2>&1; then
|
|
echo " ✅ port \$port OK"
|
|
else
|
|
echo " ⚠️ port \$port not responding (may still be starting)"
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo "✅ Falah OS CE is running."
|
|
echo " Open: http://$SERVER:\${CE_PORT:-3005}"
|
|
REMOTE_SCRIPT |