cms: headless CMS vor Hugo (Supabase + Node-API + React-Admin)

All-in-One docker-compose-Stack (Muster von RAPPORT-SERVER gespiegelt):
db/auth/rest/kong + cms-Service (Node-API + Hugo-Binary 0.161.1 + Admin-SPA).

- DB-backed: posts-Tabelle kanonisch, MD ist generiertes Artefakt
- echte Hugo-Vorschau via draft:true + --buildDrafts → /_preview
- Publish: DB → content/library/<section>/<slug>.md → hugo build → live
- Bild-Upload nach static/images/, Supabase-Auth schützt /api/*
- Proxmox-LXC-Script: legt Container an, generiert Secrets, startet Stack

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-05-31 00:21:04 +02:00
parent 7a5be9250a
commit 60e5ef6844
31 changed files with 3616 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
# Kopiere nach .env und ersetze die markierten Werte. Niemals committen.
# ═══ Pflicht: Secrets ═══
# Zufallswerte: openssl rand -hex 32
POSTGRES_PASSWORD=CHANGE-ME-mindestens-32-zufällige-zeichen
JWT_SECRET=CHANGE-ME-mindestens-32-zufällige-zeichen
# Aus JWT_SECRET ableiten: node scripts/generate-keys.mjs
ANON_KEY=CHANGE-ME-aus-jwt-secret-abgeleitet
SERVICE_ROLE_KEY=CHANGE-ME-aus-jwt-secret-abgeleitet
# ═══ Pflicht: URLs ═══
# Nur LAN: SITE_URL=http://192.168.1.50:8080
# Via Proxy: SITE_URL=https://openbureau.ch
SITE_URL=http://localhost:8080
# Öffentliche Supabase-Adresse (Browser/Admin erreichen Kong hierüber).
API_EXTERNAL_URL=http://localhost:8000
# ═══ Optional: Ports ═══
APP_PORT=8080 # CMS: Site + /admin + /_preview + /api
KONG_HTTP_PORT=8000 # Supabase-API-Gateway
KONG_HTTPS_PORT=8443
DB_PORT=5432
# ═══ Optional: Git-Backup beim Publish ═══
# true = CMS committet generierte MD nach Gitea (History + Notausgang).
GIT_PUBLISH=false
GIT_REMOTE=origin
GIT_BRANCH=main
GIT_AUTHOR_NAME=OPENBUREAU CMS
GIT_AUTHOR_EMAIL=cms@openbureau.ch