# Marketing-VPS Konfiguration Diese Verzeichnisinhalte werden auf den Marketing-VPS (`marketing.digiformer.eu`) deployt und sind dort die Source of Truth für Caddy + Uptime Kuma. ## Initial-Deploy auf den VPS ```bash # Auf einem Rechner mit SSH-Zugang zum Marketing-VPS rsync -avz --delete \ -e "ssh -i ~/.ssh/marketing-admin" \ infra/marketing-vps/ \ deploy@marketing.digiformer.eu:/home/deploy/marketing/ # Auf dem Marketing-VPS ssh deploy@marketing.digiformer.eu cd /home/deploy/marketing sudo mkdir -p /var/www /var/log/caddy sudo chown -R deploy:deploy /var/www /var/log/caddy docker compose up -d docker compose logs -f caddy ``` ## Caddyfile-Update Caddy validiert und lädt neu mit: ```bash docker compose exec caddy caddy validate --config /etc/caddy/Caddyfile docker compose exec caddy caddy reload --config /etc/caddy/Caddyfile ``` ## Status-Page-Passwort setzen ```bash docker compose exec caddy caddy hash-password # Eingabe-Aufforderung, gibt bcrypt-Hash aus # In Caddyfile bei `status.digiformer.eu` einsetzen, dann reload ``` ## Neue Marken-Site hinzufügen 1. Caddyfile-Block ergänzen (analog zu `slimcore.io`) 2. `caddy reload` (siehe oben) 3. DNS A-Record für `.` auf VPS-IP zeigen 4. Forgejo-Workflow im jeweiligen Marken-Repo deployt automatisch nach `/var/www//` ## SSH-Berechtigungen für Forgejo-Runner Der Runner braucht einen User mit rsync-only-Rechten auf `/var/www/`: ```bash # Auf Marketing-VPS sudo adduser --disabled-password --gecos "" rsync-deploy sudo mkdir -p /home/rsync-deploy/.ssh # rrsync ist Teil des rsync-Pakets sudo apt install rsync RRSYNC=$(find /usr -name 'rrsync' 2>/dev/null | head -1) # authorized_keys mit Befehls-Restriktion: nur Schreiben in /var/www echo "command=\"$RRSYNC -wo /var/www\",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty " \ | sudo tee /home/rsync-deploy/.ssh/authorized_keys sudo chmod 700 /home/rsync-deploy/.ssh sudo chmod 600 /home/rsync-deploy/.ssh/authorized_keys sudo chown -R rsync-deploy:rsync-deploy /home/rsync-deploy/.ssh # rsync-deploy braucht Schreibrechte sudo chown rsync-deploy:rsync-deploy /var/www ``` ## Disaster-Recovery - **Caddy-Container fällt aus** → `docker compose restart caddy` - **VPS unreachable** → siehe `docs/deployment.md` (RTO ~45 min, statisches Build-Output reproduzierbar) - **TLS-Cert-Problem** → `caddy-data`-Volume enthält Let's-Encrypt-Account. Bei Volume-Verlust holt Caddy automatisch neue Certs (~30 s pro Domain) - **Uptime-Kuma-Daten verloren** → kritischer Schaden gering, Monitor-Konfiguration neu anlegen (~10 min)