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:
@@ -66,6 +66,13 @@ bash <(curl -fsSL https://git.kgva.ch/karim/OPENBUREAU/raw/branch/main/cms/proxm
|
|||||||
Fragt interaktiv nur Storage/Bridge/IP ab (Enter = Default). Kein Token nötig.
|
Fragt interaktiv nur Storage/Bridge/IP ab (Enter = Default). Kein Token nötig.
|
||||||
`GIT_TOKEN` nur setzen, wenn das CMS per `GIT_PUBLISH` nach Gitea zurückschreiben soll.
|
`GIT_TOKEN` nur setzen, wenn das CMS per `GIT_PUBLISH` nach Gitea zurückschreiben soll.
|
||||||
|
|
||||||
|
Alle CONFIG-Werte sind auch per **Umgebungsvariable** überschreibbar (für
|
||||||
|
non-interaktiv/SSH) — `ROOTFS_STORAGE` (z.B. `local-zfs`), `HOSTNAME`, `CTID`,
|
||||||
|
`IP`, `GATEWAY`, `DISK_GB`, `RAM_MB`, `CORES`, `BRIDGE`. Mit **`SITE_DOMAIN`**
|
||||||
|
wird der Stack direkt für eine öffentliche HTTPS-Domain hinter einem
|
||||||
|
Reverse-Proxy konfiguriert (Same-Origin, Pfad-Routing der Supabase-API).
|
||||||
|
Beispiel + Caddy-Block: siehe [`proxmox/README.md`](../proxmox/README.md).
|
||||||
|
|
||||||
### Updaten (bestehender LXC)
|
### Updaten (bestehender LXC)
|
||||||
|
|
||||||
Nicht `git pull` von Hand — das vergisst CORS-Origin (kong.yml), Dateirechte
|
Nicht `git pull` von Hand — das vergisst CORS-Origin (kong.yml), Dateirechte
|
||||||
|
|||||||
@@ -47,6 +47,46 @@ und SSH-Key lassen sich per Umgebungsvariable überschreiben:
|
|||||||
| `BRIDGE` | `vmbr0` |
|
| `BRIDGE` | `vmbr0` |
|
||||||
| `SSH_PUBKEY_FILE` | `~/.ssh/id_ed25519.pub` |
|
| `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
|
## Hintergrund
|
||||||
|
|
||||||
Warum und wie — die zwei Artikel in der Bibliothek:
|
Warum und wie — die zwei Artikel in der Bibliothek:
|
||||||
|
|||||||
Reference in New Issue
Block a user