slimcore-website/infra/marketing-vps/README.md

79 lines
2.6 KiB
Markdown
Raw Normal View History

# 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 `<neue-domain>.<tld>` auf VPS-IP zeigen
4. Forgejo-Workflow im jeweiligen Marken-Repo deployt automatisch nach `/var/www/<neue-domain>/`
## 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 <forgejo-runner-public-key>" \
| 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)