79 lines
2.6 KiB
Markdown
79 lines
2.6 KiB
Markdown
|
|
# 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)
|