Files
RAPPORT-STACK/README.md
T
karim f43102b71a Initial: RAPPORT-STACK — All-in-One Compose (Supabase + Website + HOST)
Ein 'docker compose up' bringt die komplette Hosting-Plattform hoch:
- include ../SERVER-CONTAINER (db/auth/rest/realtime/storage/kong/app)
- host-db: eigene Postgres für RAPPORT-HOST
- host: Node-Backend + gebündelte Hugo-Website (Dockerfile.host, multi-stage)
  provisioniert Kunden-Instanzen über Kong in den Supabase-Stack

Eine .env für lokal UND Hetzner (Domains/Keys per Env). host-Image baut +
läuft verifiziert: Website (/,/hosting/,/login/,/admin/) + API + E2E-Flow
(register→checkout→admin) aus dem Container.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 13:42:30 +02:00

2.6 KiB

RAPPORT-STACK

Alles-in-einem: der komplette RAPPORT-Hosting-Betrieb als ein Compose-Stack. Ein docker compose up startet Backend, Rapport-Frontend, Marketing-Website, Login/Konto und die Betreiber-Plattform.

Was drin ist

Schicht Herkunft Container
Rapport-Backend (Supabase) ../SERVER-CONTAINER (via include) db, auth, rest, realtime, storage, kong
Rapport-Frontend ../SERVER-CONTAINER app
HOST-Datenbank dieses Repo host-db
Marketing + Login + Konto + Admin + API ../RAPPORT-WEBSITE (gebaut) + ../RAPPORT-HOST (Node) host

Der host-Container bündelt die gebaute Hugo-Website und das Node-Backend in einem Image (siehe Dockerfile.host). Er provisioniert Kunden-Instanzen über Kong in den Supabase-Stack.

Voraussetzung: Die drei Schwester-Repos liegen neben diesem (~/RAPPORT/SERVER-CONTAINER, ~/RAPPORT/RAPPORT-WEBSITE, ~/RAPPORT/RAPPORT-HOST) — der Build referenziert sie als Build-Kontexte.

Start (lokal)

cp .env.example .env
# Secrets setzen: openssl rand -hex 32 für POSTGRES_PASSWORD/JWT_SECRET/HOST_JWT_SECRET
# ANON_KEY + SERVICE_ROLE_KEY:  cd ../SERVER-CONTAINER && node scripts/generate-keys.mjs <JWT_SECRET>
# Rapport-Migrations einmal holen:  cd ../SERVER-CONTAINER && ./scripts/sync-migrations.sh

docker compose up -d
docker compose ps        # alle healthy?

Erreichbar:

Admin-Bereich: http://localhost:8787/admin/ (Passwort = ADMIN_PASSWORD).

Produktion (Hetzner)

Gleicher Stack, andere .env:

  • Domains in SITE_URL, API_EXTERNAL_URL, PUBLIC_BASE_URL, RAPPORT_INSTANCE_URL_TEMPLATE
  • echte STRIPE_*-Keys
  • davor ein Reverse-Proxy (Caddy/Nginx Proxy Manager) für TLS auf host.… (→ 8787) und app.… (→ 8080)

Aufbau

RAPPORT-STACK/
├── docker-compose.yml   include SERVER-CONTAINER + host-db + host
├── Dockerfile.host      Hugo-Website-Build + Node-Backend (multi-stage)
├── .env.example         eine Config für lokal + Hetzner
└── README.md

Hinweise

  • host baut bei docker compose build die Website frisch aus ../RAPPORT-WEBSITE. Nach Website-Änderungen: docker compose build host.
  • Bei Schema-/Migrations-Änderungen im App-Repo: cd ../SERVER-CONTAINER && ./scripts/sync-migrations.sh && docker compose up -d
  • Lizenz: dieses Repo bündelt AGPL-Komponenten (Rapport) UND das proprietäre RAPPORT-HOST. Das Compose-Setup selbst ist Infrastruktur-Glue.