88 lines
4.1 KiB
Bash
Executable File
88 lines
4.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Run this ONCE on the server to bootstrap the biztaghavi app.
|
|
# Usage: bash scripts/first-deploy.sh
|
|
set -euo pipefail
|
|
|
|
APP_NAME="biztaghavi"
|
|
APP_DIR="/srv/nodecloud/apps/$APP_NAME"
|
|
REPO_URL="https://git.nodecloud.ir/biztaghavi/biztaghavisite.git"
|
|
NGINX_CONF="/etc/nginx/sites-available/$APP_NAME"
|
|
PORT=3009
|
|
|
|
echo ""
|
|
echo "╔══════════════════════════════════════════╗"
|
|
echo "║ biztaghavi — First Deploy Bootstrap ║"
|
|
echo "╚══════════════════════════════════════════╝"
|
|
echo ""
|
|
|
|
# ── 1. App directory ─────────────────────────────────────────────────────────
|
|
if [ -d "$APP_DIR/.git" ]; then
|
|
echo "[1/7] App directory already exists — skipping clone, pulling latest..."
|
|
cd "$APP_DIR" && git pull origin main
|
|
else
|
|
echo "[1/7] Creating $APP_DIR and cloning repository..."
|
|
mkdir -p "$APP_DIR"
|
|
git clone "$REPO_URL" "$APP_DIR"
|
|
cd "$APP_DIR"
|
|
fi
|
|
|
|
# ── 2. Docker network ─────────────────────────────────────────────────────────
|
|
echo "[2/7] Ensuring nodecloud-net Docker network exists..."
|
|
docker network inspect nodecloud-net >/dev/null 2>&1 \
|
|
&& echo " nodecloud-net already exists" \
|
|
|| docker network create nodecloud-net
|
|
|
|
# ── 3. Environment file ───────────────────────────────────────────────────────
|
|
echo "[3/7] Setting up .env file..."
|
|
if [ -f "$APP_DIR/.env" ]; then
|
|
echo " .env already exists — skipping"
|
|
else
|
|
cp "$APP_DIR/.env.example" "$APP_DIR/.env"
|
|
echo ""
|
|
echo " ⚠️ IMPORTANT: Edit $APP_DIR/.env before continuing!"
|
|
echo " At minimum set: DB_ROOT_PASSWORD, DB_PASSWORD, SESSION_SECRET, SETUP_KEY"
|
|
echo ""
|
|
read -rp " Press ENTER after you have filled in .env values... "
|
|
fi
|
|
|
|
# ── 4. Nginx config ───────────────────────────────────────────────────────────
|
|
echo "[4/7] Installing Nginx config..."
|
|
cp "$APP_DIR/nginx/$APP_NAME.conf" "$NGINX_CONF"
|
|
ln -sf "$NGINX_CONF" "/etc/nginx/sites-enabled/$APP_NAME"
|
|
echo " Testing Nginx config..."
|
|
nginx -t
|
|
systemctl reload nginx
|
|
echo " Nginx reloaded"
|
|
|
|
# ── 5. Build & start containers ───────────────────────────────────────────────
|
|
echo "[5/7] Building Docker image (this takes a few minutes)..."
|
|
cd "$APP_DIR"
|
|
docker compose build
|
|
|
|
echo "[6/7] Starting services..."
|
|
docker compose up -d
|
|
|
|
# ── 6. Wait for health ────────────────────────────────────────────────────────
|
|
echo "[7/7] Waiting for app to become healthy..."
|
|
for i in $(seq 1 24); do
|
|
if curl -sf http://127.0.0.1:$PORT/ -o /dev/null 2>&1; then
|
|
echo ""
|
|
echo "✅ App is up at http://127.0.0.1:$PORT"
|
|
break
|
|
fi
|
|
printf "."
|
|
sleep 5
|
|
done
|
|
echo ""
|
|
|
|
# ── 7. Summary ────────────────────────────────────────────────────────────────
|
|
echo ""
|
|
echo "══════════════════════════════════════════"
|
|
echo " Next steps:"
|
|
echo " 1. Point DNS A record for biztaghavi.com → 193.105.234.35"
|
|
echo " 2. Issue SSL: certbot --nginx -d biztaghavi.com -d www.biztaghavi.com"
|
|
echo " 3. Add Gitea secrets (see DEPLOY.md)"
|
|
echo "══════════════════════════════════════════"
|
|
echo ""
|
|
docker compose ps
|