docs: Domain-/Reverse-Proxy-Deploy dokumentieren (SITE_DOMAIN + Caddy)

Hält den dev.openbureau.ch-Deploy reproduzierbar fest: SITE_DOMAIN-Env,
Env-Overrides (local-zfs, statische IP, CTID …) und der Caddy-Block mit
Pfad-Routing (/auth/* + /rest/* -> :8000, Rest -> :8080) samt
Login-User-Anlage. Der reale Caddyfile liegt im separaten dms-stack (VPS).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-04 01:25:46 +02:00
parent f434885c28
commit 50cec7a965
2 changed files with 47 additions and 0 deletions
+40
View File
@@ -47,6 +47,46 @@ und SSH-Key lassen sich per Umgebungsvariable überschreiben:
| `BRIDGE` | `vmbr0` |
| `SSH_PUBKEY_FILE` | `~/.ssh/id_ed25519.pub` |
## Domain & HTTPS hinter einem Reverse-Proxy
Für eine öffentliche Adresse (statt LAN-IP:Port) kennt
`cms/proxmox/create-openbureau-lxc.sh` die Variable **`SITE_DOMAIN`**. Ist sie
gesetzt, werden `SITE_URL` und `API_EXTERNAL_URL` auf `https://<domain>` gelegt
(Same-Origin) — der Browser ruft `/auth/*` + `/rest/*` auf derselben Domain auf,
der Reverse-Proxy routet sie ans Supabase-Gateway (`:8000`), alles andere an die
Site (`:8080`). `BIND_ADDR` bleibt `0.0.0.0`, damit der Proxy drankommt.
So wurde **dev.openbureau.ch** aufgesetzt (LXC auf einem ZFS-Host, statische IP):
```bash
ROOTFS_STORAGE=local-zfs HOSTNAME=openbureau-dev CTID=134 \
IP=192.168.1.134/24 GATEWAY=192.168.1.1 SITE_DOMAIN=dev.openbureau.ch \
bash <(curl -fsSL https://git.kgva.ch/karim/OPENBUREAU/raw/branch/main/cms/proxmox/create-openbureau-lxc.sh)
```
Den passenden Reverse-Proxy-Eintrag gibt das Skript am Ende selbst aus. Für
**Caddy** (Pfad-Routing, ein Zertifikat):
```caddy
dev.openbureau.ch {
@sb path /auth/* /rest/* /storage/* /realtime/*
reverse_proxy @sb 192.168.1.134:8000
reverse_proxy 192.168.1.134:8080
}
```
Den Caddy-Block in die jeweilige Proxy-Config eintragen, validieren und neu laden
(`caddy reload`). Caddy holt das Let's-Encrypt-Zertifikat beim ersten Aufruf
selbst. Login-User danach über die Admin-API anlegen (Self-Signup ist aus):
```bash
pct enter <CTID>; cd /opt/openbureau/cms; source .env
curl -s -X POST "http://localhost:8000/auth/v1/admin/users" \
-H "apikey: $SERVICE_ROLE_KEY" -H "Authorization: Bearer $SERVICE_ROLE_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"du@example.ch","password":"…","email_confirm":true}'
```
## Hintergrund
Warum und wie — die zwei Artikel in der Bibliothek: