Installation
Zwei Wege: Produktivbetrieb via docker-compose (empfohlen) oder lokale Entwicklung mit nativen Diensten.
Produktion (docker-compose)
Abschnitt betitelt „Produktion (docker-compose)“Voraussetzungen: Docker 24+, Docker Compose v2, eine Domain, die auf Ihren Host zeigt, offene Ports 80/443 sowie der offene LiveKit-UDP-Bereich (50000–50200/UDP, 7881/TCP).
git clone https://github.com/<...>/commentarycd commentarycp .env.production.example .envBearbeiten Sie .env:
DOMAIN— der öffentliche Hostname (z. B.commentary.example.com)JWT_SECRET— generieren mitopenssl rand -hex 64ENCRYPTION_KEY— generieren mitopenssl rand -hex 32(32 Bytes für AES-256-GCM)LIVEKIT_API_KEY/LIVEKIT_API_SECRET— generieren, dann ininfra/livekit.yamlspiegelnPOSTGRES_PASSWORD,MINIO_ROOT_PASSWORD,REDIS_PASSWORD— generierenLIVEKIT_WEBHOOK_HMAC_SECRET— generieren
Stack starten:
docker compose up -ddocker compose ps # all services healthy?docker compose logs -f backend # tail backend until "server ready"Erstellen Sie den ersten Admin-Benutzer — siehe first-admin.md.
Caddy stellt beim ersten Aufruf von https://$DOMAIN/ automatisch ein Let’s-Encrypt-TLS-Zertifikat aus.
Lokale Entwicklung (native Dienste)
Abschnitt betitelt „Lokale Entwicklung (native Dienste)“Voraussetzungen: macOS mit Homebrew, Go 1.26+, Node 20+, pnpm 9+, Bun (für Astro, falls Sie später an der Dokumentation arbeiten).
# Backing servicesbrew services start postgresql@17brew services start redisbrew install minio/stable/minio && minio server ~/minio-data &
# DBcreatedb commentary_devcd apps/servercp .env.example .env # default dev valuesgo run ./cmd/api/migrate up # or `goose -dir migrations postgres "$DATABASE_URL" up`go run ./cmd/api # backend on :8095
# Frontends (separate terminals)cd apps/studio && pnpm install && pnpm dev # http://localhost:3030cd apps/commentator && pnpm install && pnpm dev # http://localhost:3031
# LiveKit locallivekit-server --config infra/livekit.dev.yaml &Das Skript scripts/dev.sh kapselt all dies — pnpm dev im Repo-Root startet
alles mit farbig präfixierten Logs und PID-Tracking. Details siehe Skript.
Schnelle End-to-End-Schleife
Abschnitt betitelt „Schnelle End-to-End-Schleife“pnpm dev # brings up infra check + backend + studio + commentator + LiveKitpnpm seed # bootstraps a demo event + commentator + invite, prints the URLs# → click the printed invite URL to test commentator kiosk# → in studio at http://localhost:3030, use the "Dev only — Connexion rapide"# panel (DevQuickLogin component, tree-shaken in prod) to login instantlypnpm stop # clean shutdown (preserves DB/Redis volumes)scripts/seed-dev.sh sendet Anfragen an die laufende Backend-API, um die
Demo-Daten anzulegen, und gibt die Studio- und Kommentator-URLs zum
Kopieren/Einfügen aus. Standard-Admin: [email protected] / DevTest-12345!
(angelegt durch den Bootstrap-Schritt; das Passwort muss ≥ 13 Zeichen lang sein).
E2E-Tests mit Fake-Media-Streams (Playwright)
Abschnitt betitelt „E2E-Tests mit Fake-Media-Streams (Playwright)“Die Playwright-Tests für den v1.2-Videoflow benötigen Chrome, das getUserMedia
ohne Abfrage gewährt und synthetisches Video/Audio liefert. Die Datei
playwright.config.ts des Repos setzt bereits:
launchOptions: { args: ['--use-fake-ui-for-media-stream', '--use-fake-device-for-media-stream'],}Keine weitere Einrichtung nötig. Um nur die v1.2-Video-Spec auszuführen:
pnpm test:e2e --grep "live-video"Studio-Publishing (PGM + Talkback)
Abschnitt betitelt „Studio-Publishing (PGM + Talkback)“Seit v1.6 publiziert das Studio PGM-Video + -Audio sowie das Talkback-Intercom-Audio direkt aus dem Browser — kein OBS, kein WHIP. Siehe usage.md Abschnitt 7 für den Operator-Workflow.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Ein moderner Chromium-basierter Browser auf dem Studio-Rechner (Chrome, Edge,
Brave) für zuverlässige
getUserMedia-Geräteauswahl. Firefox funktioniert, unterstützt aber kein elementbezogenes Sink-Routing. - Upstream-Bandbreite des Studios: ≥ 5 Mbps empfohlen (PGM 1080p30 ~3 Mbps +
Talkback-Audio + Kommentator-Subscribe). Vor jedem Produktiv-Event mit
speedtest-clitesten:Terminal-Fenster brew install speedtest-cli && speedtest
Historische Anmerkung: v1.1–v1.5 versuchten OBS-WHIP-Ingest in LiveKit. Das eingesetzte LK v1.7.2 bietet keinen
/whip-Endpunkt, daher hat dieser Weg in der Produktion nie funktioniert. v1.6 hat ihn zugunsten des In-Browser-Publishings entfernt.
→ first-admin.md, um Ihr erstes Admin-Konto anzulegen.