From 50cec7a965403e601ac88819ea0c410497a33921 Mon Sep 17 00:00:00 2001 From: karim Date: Thu, 4 Jun 2026 01:25:46 +0200 Subject: [PATCH] docs: Domain-/Reverse-Proxy-Deploy dokumentieren (SITE_DOMAIN + Caddy) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- cms/README.md | 7 +++++++ proxmox/README.md | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/cms/README.md b/cms/README.md index 2e3a75a..bf30c19 100644 --- a/cms/README.md +++ b/cms/README.md @@ -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. `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) Nicht `git pull` von Hand — das vergisst CORS-Origin (kong.yml), Dateirechte diff --git a/proxmox/README.md b/proxmox/README.md index f4a78bf..4cf9c53 100644 --- a/proxmox/README.md +++ b/proxmox/README.md @@ -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://` 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 ; 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: