📡 Infrastruktur

LiveKit-Setup

YOffice AI nutzt LiveKit für Echtzeit-Video, Audio und Sprachassistenten-Sitzungen. Sie können LiveKit lokal mit Docker betreiben (empfohlen für die Entwicklung) oder LiveKit Cloud für ein vollständig verwaltetes Setup verwenden.

💡
LiveKit Cloud ist nicht erforderlich

Der vollständige YOffice-Funktionsumfang — einschließlich Sprachassistent, Videoanrufe und Bildschirmfreigabe — funktioniert mit einer lokalen LiveKit-Instanz in Docker. LiveKit Cloud ist eine optionale Bequemlichkeit, keine Voraussetzung.

Welche Option passt zu Ihnen?

OptionGeeignet fürKostenEinrichtungszeit
Lokales DockerEntwicklung, selbst gehostete Produktion, isolierte UmgebungenKostenlos (selbst gehostet)~5 Minuten
LiveKit CloudTeams, die verwaltete Infrastruktur und globales Medien-Routing wünschen, ohne eigene Server zu betreibenNutzungsbasiert (kostenloser Tarif verfügbar)~10 Minuten

Option A — Lokales LiveKit (Docker)

  1. LiveKit mit Docker starten

    Führen Sie aus command_center_tenant_server aus: docker compose up -d livekit. Dabei wird livekit/livekit-server:latest mit der Konfiguration in livekit.yaml verwendet. Standardports: 7880 (WebSocket), 7881 (TCP), plus UDP für RTC. Standardschlüssel: devkey / devkey-secret-32-chars-minimum!!

  2. Tenant-Server konfigurieren

    In command_center_tenant_server/config/passwords.yaml (Abschnitt development): livekitUrl: ws://localhost:7880, livekitKey: devkey, livekitSecret: devkey-secret-32-chars-minimum!! Wenn der Tenant-Server innerhalb von Docker im selben Compose-Setup läuft, verwenden Sie ws://livekit:7880.

  3. Rest des Stacks starten

    Starten Sie Postgres, Redis sowie Auth- und Tenant-Server wie im Schnellstart-Leitfaden beschrieben. Die Flutter-App erhält die LiveKit-URL automatisch vom Tenant-Server beim Anfordern eines Raum-Tokens — in der Flutter-App selbst muss keine LiveKit-URL konfiguriert werden.

Konfigurationsreferenz

Der Tenant-Server benötigt drei Werte in :config/passwords.yaml:

SchlüsselBeschreibungStandard (lokal)
livekitUrlWebSocket-URL, über die Clients sich mit LiveKit verbindenws://localhost:7880
livekitKeyAPI-Schlüssel (muss mit livekit.yaml übereinstimmen)devkey
livekitSecretAPI-Secret (muss mit livekit.yaml übereinstimmen)devkey-secret-32-chars-minimum!!
⚠️
Docker-Netzwerk

Wenn sowohl der Tenant-Server als auch LiveKit im selben Docker-Compose-Netzwerk laufen, verwenden Sie ws://livekit:7880 (Dienstname) anstatt ws://localhost:7880. Die Flutter-App erhält die URL vom Tenant-Server zum Zeitpunkt der Token-Ausstellung — Clients außerhalb von Docker erhalten weiterhin die korrekte öffentliche URL.

Option B — LiveKit Cloud

  1. LiveKit-Cloud-Konto erstellen

    Gehen Sie zu cloud.livekit.io und registrieren Sie sich oder melden Sie sich an. LiveKit Cloud bietet ein großzügiges kostenloses Kontingent, das für Entwicklung und kleine Produktionslasten geeignet ist.

  2. Projekt anlegen

    Legen Sie im LiveKit-Cloud-Dashboard ein neues Projekt an. Notieren Sie drei Werte: WebSocket-URL (z. B. wss://ihr-projekt.livekit.cloud), API-Schlüssel und API-Secret (nur einmal angezeigt — sofort kopieren und sicher aufbewahren).

  3. Tenant-Server konfigurieren

    In config/passwords.yaml (oder Umgebungsvariablen für die Produktion): livekitUrl, livekitKey und livekitSecret auf die Werte aus Schritt 2 setzen.

  4. Über die YOffice-Admin-Oberfläche konfigurieren (optional)

    Öffnen Sie Organisationseinstellungen → LiveKit-Server. Aktivieren Sie "LiveKit Cloud verwenden", fügen Sie die WebSocket-URL, den API-Schlüssel und das API-Secret ein und klicken Sie auf Speichern. Damit werden die Zugangsdaten in Postgres gespeichert — der empfohlene Ansatz für organisationsspezifische Einstellungen in Multi-Tenant-Bereitstellungen.

  5. App starten — kein lokales LiveKit erforderlich

    Mit konfiguriertem LiveKit Cloud müssen Sie keinen lokalen LiveKit-Container starten. Starten Sie Auth- und Tenant-Server sowie die Flutter-App wie gewohnt. Der Tenant-Server stellt dann Tokens aus, die auf LiveKit Cloud zeigen.

LiveKit über die Admin-Oberfläche konfigurieren

Organisations-Admins können LiveKit-Cloud-Zugangsdaten direkt über den YOffice-Einstellungsbildschirm konfigurieren, ohne Server-Konfigurationsdateien anzufassen. Dies ist der empfohlene Ansatz für organisationsspezifische Einstellungen in Multi-Tenant-Bereitstellungen.

LiveKit-Server
LiveKit Cloud verwenden
wss://your-project.livekit.cloud
API Key: ••••••••••••
API Secret: ••••••••••••
Organisationseinstellungen → LiveKit-Server
  1. Organisationseinstellungen öffnen

    Navigieren Sie zu Einstellungen → Organisation → Abschnitt LiveKit-Server.

  2. LiveKit Cloud aktivieren

    "LiveKit Cloud verwenden" aktivieren. Drei Eingabefelder erscheinen: WebSocket-URL, API-Schlüssel und API-Secret.

  3. Zugangsdaten einfügen

    WebSocket-URL (wss://…), API-Schlüssel und API-Secret aus Ihrem LiveKit-Cloud-Projekt eingeben. API-Schlüssel und Secrets werden verschlüsselt gespeichert — sie werden nach dem ersten Speichern nie im Klartext zurückgegeben.

  4. Speichern

    Auf Speichern tippen. Alle Mitglieder dieser Organisation nutzen das konfigurierte LiveKit-Projekt für Videoanrufe und Sprachsitzungen.

Multi-Instanz-Betrieb mit LiveKit Cloud

Wenn mehrere Tenant-Server-Replikas hinter einem Load Balancer betrieben werden, benötigt LiveKit Cloud keine besondere Konfiguration. JWTs werden mit Zugangsdaten aus Postgres signiert — jede Replik liest aus derselben Quelle, sodass jeder Pod ein Token für jeden Benutzer ausstellen kann.

Der Customization-Agent (Voice/Avatar-Worker) verbindet sich mit LiveKit Cloud und ruft Ihren Tenant-Server über TENANT_BASE_URL zurück. Zeigen Sie dies auf Ihren Load Balancer; jede Replik kann die Callbacks verarbeiten.

ℹ️

Sticky Sessions sind für Voice nicht erforderlich. LiveKit Cloud verbindet Clients nach der JWT-Ausstellung direkt mit seiner eigenen Media-Plane. Die vollständige Checkliste finden Sie im Leitfaden zur Multi-Instanz-Bereitstellung.

Fehlerbehebung

SymptomWahrscheinliche UrsacheLösung
Videoanruf verbindet, aber kein AudioUDP-Ports durch Firewall gesperrtUDP 50000–60000 öffnen (lokal) oder Firewall-Regeln der LiveKit-Cloud-Region prüfen
Token-Anfrage gibt 401 zurückAPI-Schlüssel oder Secret stimmen nicht übereinlivekitKey / livekitSecret in passwords.yaml mit dem LiveKit-Projekt abgleichen
Sprachassistent verbindet, spricht aber nieWorker kann den Tenant-Server nicht erreichenTENANT_BASE_URL auf die öffentliche Load-Balancer-URL setzen, nicht auf eine Pod-IP
Flutter-App kann LiveKit nicht erreichen (lokal)livekitUrl zeigt auf Docker-internen HostnamenEinen Hostnamen verwenden, der vom Flutter-Gerät erreichbar ist (z. B. die LAN-IP Ihres Rechners)