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
This commit is contained in:
Executable
+65
@@ -0,0 +1,65 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user