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>
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
# 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)
|
||||
|
||||
```bash
|
||||
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:
|
||||
- **Hosting-Plattform** (Marketing/Login/Konto/Admin): http://localhost:8787
|
||||
- **Rapport-App** (Kunden-Instanzen): http://localhost:8080
|
||||
- **Rapport-API** (Kong): http://localhost:8000
|
||||
|
||||
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.
|
||||
Reference in New Issue
Block a user