97 lines
4.3 KiB
Bash
97 lines
4.3 KiB
Bash
#!/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="/home/ubuntu/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 "🚀 Cirux 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:3020"
|
|
echo ""
|
|
echo " If Docker failed: logout and login again, or run 'newgrp docker'"
|
|
echo "─────────────────────────────────────────"
|