From c7ae33528edaeac7d263f3913bdb505ec7674eef Mon Sep 17 00:00:00 2001 From: Antigravity AI Date: Mon, 6 Jul 2026 11:00:57 +0800 Subject: [PATCH] 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 Claude-Session: https://claude.ai/code/session_01JWCfXRGY3WA5PNeMRLad7w --- deploy-server.sh | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 deploy-server.sh diff --git a/deploy-server.sh b/deploy-server.sh new file mode 100755 index 0000000..63b3b02 --- /dev/null +++ b/deploy-server.sh @@ -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 </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 \ No newline at end of file