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>
- content/library/**/muster-*.md: Typus und Modell, Im Offenen arbeiten,
Die Werkzeugkette — mit echten Fußnoten/Quellen, demonstrieren auch
Provenance/Zitieren und Dialog am Artikel
- seed-demo.sql: Wortmeldungen auf den Musterbeiträgen (thread = Beitrags-URL)
+ DELETE-Hinweis für die d-Kommentare
Test-/Demo-Inhalt — vor dem späteren Full-Wipe leicht entfernbar.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- auth: Supabase-JWT lokal verifizieren (hono/jwt, HS256) statt GoTrue-
Roundtrip pro Request; JWT_SECRET in cms-env, Remote-Fallback wenn ungesetzt
- dialog: comment_stats-View (group by thread) ersetzt Full-Table-Scan +
JS-Aggregation bei jedem Forum-Aufruf
- ops: scripts/backup-db.sh (pg_dump, rotiert) + täglicher Cron im Proxmox-
Script — Dialog-Daten liegen nur in Postgres, nicht in Git
- security: Rate-Limit auf Schreib-Endpunkte (/api non-GET, 60/min je Nutzer)
- perf: Cache-Control (1 Woche) auf statische Assets, HTML bleibt frisch
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Beispiel-Threads + Wortmeldungen für die Forum-Kategorien, bewusst getrennt
von der Migration (Produktion startet leer). Idempotent über feste UUIDs +
ON CONFLICT DO NOTHING; manuell einspielbar, DELETE-Block zum Entfernen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>