Für die öffentlich erreichbare Instanz (dev.openbureau.ch):
1. Reverse-Proxy nur /auth/* durchreichen — /rest, /storage, /realtime raus.
PostgREST /rest/v1/ gab die komplette DB-Schema-Beschreibung (OpenAPI) preis;
der Browser nutzt Supabase nur fürs Login, Daten laufen über /api/*.
(Caddy-Block in create-openbureau-lxc.sh + proxmox/README.md angepasst.)
2. GoTrue GOTRUE_RATE_LIMIT_TOKEN_REFRESH=100 — bremst Brute-Force aufs /token,
das public direkt gegen GoTrue läuft (nicht übers Node-Rate-Limit).
3. db/schema.sql: revoke all from anon/authenticated auf posts/comments/forums/
threads; grants nur noch service_role. RLS bleibt so auch bei künftigen
Policies dicht (Defense-in-Depth statt "RLS ohne Policy").
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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>
Geführter Installer proxmox/install.sh: erst Vorhaben wählen
(Komplettes Büro / 365+Synology ersetzen / nur Website / einzeln),
dann werden die nötigen LXCs der Reihe nach gebaut. Jeder Dienst ist
auch als eigenständiges, einzeln curlbares Skript verfügbar:
- proxmox/nextcloud-lxc.sh Nextcloud AIO (ersetzt 365/Synology)
- proxmox/empty-lxc.sh leerer Docker-LXC als Geruest
- proxmox/git-compose-lxc.sh beliebiges Git-Repo (RAPPORT/DOSSIER)
- (OPENBUREAU: bestehendes cms/proxmox/create-openbureau-lxc.sh)
Gemeinsames Muster: unprivilegierter Debian-12-LXC mit nesting+keyctl,
Docker via get.docker.com, Dienst als Container/Compose. proxmox/README.md
dokumentiert beide Wege.
Dazu zwei Bibliotheksbeitraege (Hochparterre-Ton):
- server-im-eigenen-haus.md — das Warum/Ziel
- proxmox-schritt-fuer-schritt.md — die Anleitung mit curl-Befehlen
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>