mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-05-06 19:19:19 +02:00
93 lines
3.9 KiB
Bash
Executable File
93 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Deploy production nginx configuration for Post-ERG
|
|
# Fixes permissions and installs /tmp/posterg.conf into nginx sites-available.
|
|
#
|
|
# Usage: just deploy-nginx (uploads script + config, then runs this)
|
|
# or: sudo bash /tmp/deploy-server.sh
|
|
|
|
set -e
|
|
|
|
# ── Colors ────────────────────────────────────────────────────────────────────
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
ok() { printf "${GREEN}✓${NC} %s\n" "$*"; }
|
|
err() { printf "${RED}✗${NC} %s\n" "$*" >&2; }
|
|
warn() { printf "${YELLOW}!${NC} %s\n" "$*"; }
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
[ "$EUID" -eq 0 ] || { err "Run as root (sudo)"; exit 1; }
|
|
|
|
printf "🚀 Post-ERG Production Deployment\n"
|
|
printf "==================================\n\n"
|
|
|
|
# ── Step 1: Permissions ───────────────────────────────────────────────────────
|
|
printf "📋 Step 1: Fixing file permissions...\n"
|
|
printf "--------------------------------------\n"
|
|
|
|
chown -R www-data:posterg /var/www/posterg/
|
|
ok "Ownership: www-data:posterg"
|
|
|
|
find /var/www/posterg -type d -exec chmod 2775 {} \;
|
|
ok "Directories: 2775 (setgid)"
|
|
|
|
find /var/www/posterg -type f -exec chmod 664 {} \;
|
|
ok "Files: 664"
|
|
|
|
if [ -d "/var/www/posterg/storage" ]; then
|
|
chmod 2775 /var/www/posterg/storage
|
|
find /var/www/posterg/storage -name "*.db" -exec chmod 660 {} \;
|
|
ok "Storage: 2775, databases: 660"
|
|
fi
|
|
|
|
# ── Step 2: Nginx config ──────────────────────────────────────────────────────
|
|
printf "\n📋 Step 2: Deploying nginx configuration...\n"
|
|
printf "--------------------------------------------\n"
|
|
|
|
if [ ! -f "/tmp/posterg.conf" ]; then
|
|
err "/tmp/posterg.conf not found — run: just deploy-nginx"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -f "/etc/nginx/sites-available/posterg" ]; then
|
|
cp /etc/nginx/sites-available/posterg \
|
|
"/etc/nginx/sites-available/posterg.backup.$(date +%Y%m%d_%H%M%S)"
|
|
ok "Backed up existing config"
|
|
fi
|
|
|
|
cp /tmp/posterg.conf /etc/nginx/sites-available/posterg
|
|
ok "Installed new nginx config"
|
|
|
|
if [ ! -L "/etc/nginx/sites-enabled/posterg" ]; then
|
|
ln -s /etc/nginx/sites-available/posterg /etc/nginx/sites-enabled/posterg
|
|
ok "Created sites-enabled symlink"
|
|
fi
|
|
|
|
# ── Step 3: Validate ──────────────────────────────────────────────────────────
|
|
printf "\n📋 Step 3: Testing nginx configuration...\n"
|
|
printf "------------------------------------------\n"
|
|
|
|
if nginx -t 2>&1; then
|
|
ok "Nginx configuration is valid"
|
|
else
|
|
err "Nginx configuration has errors — restoring backup"
|
|
latest=$(ls -t /etc/nginx/sites-available/posterg.backup.* 2>/dev/null | head -1)
|
|
[ -n "$latest" ] && cp "$latest" /etc/nginx/sites-available/posterg
|
|
exit 1
|
|
fi
|
|
|
|
# ── Done ──────────────────────────────────────────────────────────────────────
|
|
printf "\n"
|
|
ok "Permissions fixed"
|
|
ok "Nginx config installed"
|
|
ok "Configuration validated"
|
|
printf "\n"
|
|
warn "Nginx has not been reloaded yet."
|
|
printf "Run: sudo systemctl reload nginx\n\n"
|
|
printf "After reload, verify:\n"
|
|
printf " • https://posterg.erg.be/\n"
|
|
printf " • https://posterg.erg.be/admin/\n"
|
|
printf " • https://posterg.erg.be/storage/posterg.db (should 403/404)\n"
|