Files
falah-os-ce/deploy-server.sh
Antigravity AI c7ae33528e chore: add server deploy script for 13.140.161.244
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
2026-07-06 11:00:57 +08:00

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