# 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 # 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.