Files
abdulive/docs/decisions
ZeasyAlexandClaude Opus 5 3b606e36fb Hub: der Dienst laeuft zentral statt auf dem Stream-PC
Zwei Dinge, die Reichweite bringen sollen, hingen bisher daran, dass jemand
vor seinem Rechner sitzt: der Discord-Rollen-Knopf und die Go-Live-
Ankuendigung. Beide brauchen nur Internet.

Der Schnitt verlaeuft entlang einer Frage: braucht die Aufgabe eine Datei
oder ein Programm, das nur auf dem Stream-PC existiert?

  Hub (LXC)                    Ingest (Abdus PC)
  ---------                    -----------------
  Chat, Zuschauerzahlen        OBS-Wiedergabepuffer
  Discord: Knopf und Go-Live   !clip, Rendern, Untertitel
  Overlay-Seiten fuer OBS

Beide schreiben in ihre eigene Datenbank. Eine gemeinsame waere eine
Netzwerkfreigabe fuer SQLite - der zuverlaessigste bekannte Weg zu einer
beschaedigten Datei.

Das kostet ADR-0005 seine Hauptbegruendung: "bindet nur auf 127.0.0.1" gilt
fuer den Hub nicht mehr. An die Stelle treten ein Passwort mit signiertem
Sitzungs-Cookie fuer alles, was ein Mensch bedient, und ein zufaelliger
Schluessel in der Adresse fuer die Browser-Sources. Der Schluessel ist kein
schoenes Verfahren - er steht in jedem OBS-Profil -, aber eine Browser-Source
kann kein Formular ausfuellen und keinen Login durchhalten.

`publicUrl` haengt der OAuth-Rueckruf daran. Twitch vergleicht die
Redirect-URI zeichengenau, und ein fehlender Schraegstrich sieht im Fehlertext
aus wie ein falsches Client-Secret.

Die Routen der Einrichtungsseite sind aus ingest/server.ts herausgeloest,
weil sie jetzt an zwei Servern haengen.

Begruendung und Konsequenzen in ADR-0008.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-18 00:12:58 +02:00
..

Architekturentscheidungen

ADR Thema Status
0001 TypeScript-Monorepo statt gemischter Sprachen akzeptiert
0002 SQLite statt Postgres akzeptiert
0003 EventSub ueber WebSocket, Chat ueber IRC akzeptiert
0004 Betrieb in Docker, whisper.cpp statt Python ersetzt durch 0007
0005 Zugangsdaten ueber Einrichtungs-Assistent statt .env akzeptiert
0006 Ein Dach: lokale Weboberflaeche, lokale Arbeitsprozesse akzeptiert
0007 Native Windows-Anwendung statt Container akzeptiert
0008 Geteilter Betrieb: Hub im LXC, Ingest am Stream-PC akzeptiert

Neue Entscheidung: Datei ADR-<nummer>-<kurzname>.md, Aufbau Kontext / Entscheidung / Begruendung / Konsequenzen.