#!/bin/bash # ─── EnFlow VPS Auto-Deploy Setup ─────────────────────────────────────────── # Run this ONCE on your VPS as root or with sudo # This configures Gitea hook + Docker deploy automation set -e APP_DIR="/opt/cirux" GITEA_USER="ubuntu" GITEA_REPO="/home/ubuntu/gitea/gitea/git/repositories/silvioalzate/cirux.git" HOOK_DIR="$GITEA_REPO/hooks" LOG_FILE="/var/log/cirux-deploy.log" BRANCH="main" echo "🚀 EnFlow Auto-Deploy Setup" echo " App Dir: $APP_DIR" echo " Gitea User: $GITEA_USER" echo " Hook Dir: $HOOK_DIR" echo "" # ─── 1. Verify Gitea user ───────────────────────────────────────────────── echo "📋 Verifying Gitea user..." if ! id "$GITEA_USER" &>/dev/null; then echo "❌ User $GITEA_USER does not exist!" echo " Check: ps aux | grep gitea" exit 1 fi # ─── 2. Add user to docker group ──────────────────────────────────────────── echo "🔧 Adding $GITEA_USER to docker group..." if ! groups "$GITEA_USER" | grep -q docker; then sudo usermod -aG docker "$GITEA_USER" echo " ✅ Added. IMPORTANT: You MUST run 'newgrp docker' or logout/login for this to take effect." fi # ─── 3. Create app directory ───────────────────────────────────────────────── echo "📁 Setting up app directory..." if [ ! -d "$APP_DIR" ]; then echo " Cloning repository..." sudo -u "$GITEA_USER" git clone "$GITEA_REPO" "$APP_DIR" else echo " App directory exists. Updating remote..." cd "$APP_DIR" sudo -u "$GITEA_USER" git remote set-url origin "$GITEA_REPO" || true sudo -u "$GITEA_USER" git fetch origin sudo -u "$GITEA_USER" git reset --hard "origin/$BRANCH" fi # Set ownership sudo chown -R "$GITEA_USER":"$GITEA_USER" "$APP_DIR" sudo chmod -R 755 "$APP_DIR" # ─── 4. Create log file with correct permissions ───────────────────────────── echo "📝 Creating log file..." sudo touch "$LOG_FILE" sudo chown "$GITEA_USER":"$GITEA_USER" "$LOG_FILE" sudo chmod 644 "$LOG_FILE" # ─── 5. Install post-receive hook ──────────────────────────────────────────── echo "🔌 Installing Gitea post-receive hook..." if [ ! -d "$HOOK_DIR" ]; then echo "❌ Hook directory not found: $HOOK_DIR" exit 1 fi sudo cp "$APP_DIR/gitea-post-receive-hook.sh" "$HOOK_DIR/post-receive" sudo chown "$GITEA_USER":"$GITEA_USER" "$HOOK_DIR/post-receive" sudo chmod +x "$HOOK_DIR/post-receive" # ─── 6. Make deploy-auto.sh executable ───────────────────────────────────────── echo "🔧 Setting up deploy script..." sudo chmod +x "$APP_DIR/deploy-auto.sh" # ─── 7. Verify Docker access ───────────────────────────────────────────────── echo "🐳 Verifying Docker access..." if sudo -u "$GITEA_USER" docker ps > /dev/null 2>&1; then echo " ✅ Docker access OK" else echo " ⚠️ Docker access failed. Run: newgrp docker (or logout/login)" fi # ─── 8. Test deploy ────────────────────────────────────────────────────────── echo "🧪 Testing deploy..." cd "$APP_DIR" sudo -u "$GITEA_USER" bash "$APP_DIR/deploy-auto.sh" echo "" echo "─────────────────────────────────────────" echo "✅ Setup Complete!" echo "" echo " Push to main branch → Auto deploy triggers" echo " Logs: tail -f $LOG_FILE" echo " App: http://localhost:3000" echo "" echo " If Docker failed: logout and login again, or run 'newgrp docker'" echo "─────────────────────────────────────────"