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.
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.
| Option | Geeignet für | Kosten | Einrichtungszeit |
|---|---|---|---|
| Lokales Docker | Entwicklung, selbst gehostete Produktion, isolierte Umgebungen | Kostenlos (selbst gehostet) | ~5 Minuten |
| LiveKit Cloud | Teams, die verwaltete Infrastruktur und globales Medien-Routing wünschen, ohne eigene Server zu betreiben | Nutzungsbasiert (kostenloser Tarif verfügbar) | ~10 Minuten |
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!!
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.
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.
Der Tenant-Server benötigt drei Werte in :config/passwords.yaml:
| Schlüssel | Beschreibung | Standard (lokal) |
|---|---|---|
livekitUrl | WebSocket-URL, über die Clients sich mit LiveKit verbinden | ws://localhost:7880 |
livekitKey | API-Schlüssel (muss mit livekit.yaml übereinstimmen) | devkey |
livekitSecret | API-Secret (muss mit livekit.yaml übereinstimmen) | devkey-secret-32-chars-minimum!! |
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.
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.
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).
In config/passwords.yaml (oder Umgebungsvariablen für die Produktion): livekitUrl, livekitKey und livekitSecret auf die Werte aus Schritt 2 setzen.
Ö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.
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.
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.
Navigieren Sie zu Einstellungen → Organisation → Abschnitt LiveKit-Server.
"LiveKit Cloud verwenden" aktivieren. Drei Eingabefelder erscheinen: WebSocket-URL, API-Schlüssel und API-Secret.
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.
Auf Speichern tippen. Alle Mitglieder dieser Organisation nutzen das konfigurierte LiveKit-Projekt für Videoanrufe und Sprachsitzungen.
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.
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Videoanruf verbindet, aber kein Audio | UDP-Ports durch Firewall gesperrt | UDP 50000–60000 öffnen (lokal) oder Firewall-Regeln der LiveKit-Cloud-Region prüfen |
| Token-Anfrage gibt 401 zurück | API-Schlüssel oder Secret stimmen nicht überein | livekitKey / livekitSecret in passwords.yaml mit dem LiveKit-Projekt abgleichen |
| Sprachassistent verbindet, spricht aber nie | Worker kann den Tenant-Server nicht erreichen | TENANT_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 Hostnamen | Einen Hostnamen verwenden, der vom Flutter-Gerät erreichbar ist (z. B. die LAN-IP Ihres Rechners) |