Wer Videokonferenzen sicher und datenschutzfreundlich abhalten möchte, sollte sich nicht in die Abhängigkeit von proprietären Anbietern begeben. OpenTalk bietet eine Open-Source-Alternative, die Sie selbst hosten können. In unserem Workshop setzen wir auf Docker-Basis in wenigen Schritten einen eigenen OpenTalk-Server auf. Dabei werfen wir auch einen Blick auf die Benutzerverwaltung mit Keycloak.
Ob im Homeoffice, unterwegs oder im Büro – eine sichere und zuverlässige Videokonferenzplattform ist für das mobile Arbeiten unverzichtbar. Doch was passiert eigentlich mit den Daten, die während eines Meetings übertragen werden? Proprietäre Systeme lassen oft nicht erkennen, wer darauf zugreift und wie sicher die Informationen wirklich sind. Ohne offenen Quellcode bleibt nur Vertrauen in den Anbieter.
Mit OpenTalk [1] existiert seit 2023 eine Open-Source-Alternative, die in Deutschland entwickelt wird. Das System lässt sich entweder als Clouddienst nutzen oder selbst hosten. Wer die Software im eigenen Rechenzentrum betreiben möchte, kann zwischen der Enterprise- und der Community-Edition wählen. Die Enterprise-Variante bietet Herstellersupport, automatisiertes Deployment, Skalierung, Monitoring und eine direkte Integration in die Unternehmens-IT. Die Community-Edition richtet sich an technisch versierte Nutzer und läuft als Single-Server-System. Wer noch mehr Leistung oder Redundanz benötigt, kann jedoch einzelne Dienste separat deployen und die Konfiguration entsprechend anpassen, um ein Multi-Server-Setup zu realisieren. Der Quellcode der Community-Edition ist unter der European Public License (EUPL) auf OpenCoDE.de verfügbar [2].
In diesem Workshop installieren wir unseren eigenen OpenTalk-Server mit der Community-Edition. Die Einrichtung erfordert Linux-Kenntnisse – wir arbeiten dabei hauptsächlich auf der Kommandozeile und im Texteditor.
Ob im Homeoffice, unterwegs oder im Büro – eine sichere und zuverlässige Videokonferenzplattform ist für das mobile Arbeiten unverzichtbar. Doch was passiert eigentlich mit den Daten, die während eines Meetings übertragen werden? Proprietäre Systeme lassen oft nicht erkennen, wer darauf zugreift und wie sicher die Informationen wirklich sind. Ohne offenen Quellcode bleibt nur Vertrauen in den Anbieter.
Mit OpenTalk [1] existiert seit 2023 eine Open-Source-Alternative, die in Deutschland entwickelt wird. Das System lässt sich entweder als Clouddienst nutzen oder selbst hosten. Wer die Software im eigenen Rechenzentrum betreiben möchte, kann zwischen der Enterprise- und der Community-Edition wählen. Die Enterprise-Variante bietet Herstellersupport, automatisiertes Deployment, Skalierung, Monitoring und eine direkte Integration in die Unternehmens-IT. Die Community-Edition richtet sich an technisch versierte Nutzer und läuft als Single-Server-System. Wer noch mehr Leistung oder Redundanz benötigt, kann jedoch einzelne Dienste separat deployen und die Konfiguration entsprechend anpassen, um ein Multi-Server-Setup zu realisieren. Der Quellcode der Community-Edition ist unter der European Public License (EUPL) auf OpenCoDE.de verfügbar [2].
In diesem Workshop installieren wir unseren eigenen OpenTalk-Server mit der Community-Edition. Die Einrichtung erfordert Linux-Kenntnisse – wir arbeiten dabei hauptsächlich auf der Kommandozeile und im Texteditor.
So funktioniert OpenTalk
Im Gegensatz zu Jitsi oder BigBlueButton setzt OpenTalk auf eine strikt modulare Container-Architektur und native Skalierbarkeit via Kubernetes. Jede Videokonferenz läuft in einem eigenen Docker-Container, was nicht nur für eine klare Trennung der Daten sorgt, sondern auch die Ressourcen optimal nutzt. Anders als klassische virtuelle Maschinen teilen Container-Ansätze den Kernel sowie Binaries und Bibliotheken des Host-Systems; daher entfällt der Overhead mehrerer vollständiger Betriebssysteminstanzen. Wer größere Installationen betreibt, kann Kubernetes einsetzen, das automatisch skaliert und die Last intelligent verteilt.
Das Herzstück von OpenTalk ist der Controller, der die Konferenzen verwaltet, externe Dienste integriert und die Kommunikation zwischen den Komponenten steuert. Die Authentifizierung übernimmt Keycloak, das Single Sign-on und Identity Management bietet. Erst nachdem sich ein Nutzer erfolgreich angemeldet hat, entscheidet der Controller, welche Rechte dieser in OpenTalk hat, ob er einem bestimmten Konferenzraum beitreten darf und welche Funktionen ihm dort zur Verfügung stehen.
Für die Datenhaltung nutzt OpenTalk eine PostgreSQL-Datenbank. Zusätzlich kann Redis eingebunden werden, was besonders in verteilten Installationen sinnvoll ist. In einem Single-Server-Aufbau lässt sich Redis jedoch deaktivieren, da OpenTalk auch ohne externe Zwischenspeicherung zuverlässig funktioniert. Die Videokonferenzen selbst laufen über spezielle Video-Bridges, die in separaten Containern arbeiten und sicherheitsrelevante Daten isoliert verarbeiten.
Die Benutzeroberfläche setzt auf React, um eine schnelle und flüssige Bedienung für die Anwender zu gewährleisten. Der Message-Broker RabbitMQ findet gezielt für zwei Aufgaben Verwendung: Er verarbeitet Nachrichten für den Recorder, wenn eine Aufzeichnung gestartet wird, und nutzt den Mailer, um über OpenTalk E-Mails zu versenden. Eine allgemeine Nachrichtenübermittlung zwischen den OpenTalk-Diensten über RabbitMQ findet nicht statt.
Zusätzlich integriert die Software externe Dienste wie Etherpad für kollaborative Textbearbeitung und Spacedeck für White-boarding. Bei der Videokompression setzt OpenTalk auf Open-Source-Codecs: aktuell VP8 in der Web-App und VP9 für das Recording. Langfristig wollen die Entwickler auf AV1 umstellen. Der Recorder kann Meetings auch live streamen und nutzt dafür derzeit H.264, da viele Plattformen wie Twitch diesen Codec voraussetzen. Künftig soll auch hier AV1 zum Einsatz kommen, um die Videoqualität weiter zu optimieren.
OpenTalk-Repository klonen
Bevor Sie OpenTalk installieren, sollten Sie sicherstellen, dass Ihr Linux-Server die nötigen Anforderungen erfüllt. Die Software läuft auf allen modernen Distributionen, die Docker unterstützen. Neben Docker selbst benötigen Sie auch das Docker-Compose-Plugin, da OpenTalk seine Dienste über eine "docker-compose.yaml"-Datei verwaltet. Falls Docker noch nicht installiert ist, hilft ein Blick in die offizielle Dokumentation [3]. OpenTalk benötigt außerdem mindestens zwei CPU-Kerne, 4 GByte RAM, 20 GByte Festplattenspeicher sowie eine öffentliche und eine private Netzwerkschnittstelle.
Laden Sie zunächst den OpenTalk-Quellcode herunter und klonen Sie dazu das "ot-setup"-Repository aus GitLab. Das Zielverzeichnis können Sie frei wählen, da OpenTalk flexibel mit den Pfaden umgeht. Die Entwickler schlagen "/opt/opentalk" vor, und dieser Workshop folgt der Empfehlung. Zunächst wechseln Sie mit cd /opt in das gewünschte Verzeichnis und klonen dann das Repository mit dem aktuellen stabilen Release; als dieser Artikel entstand, war das 25.0.1:
Falls bereits eine neuere Version verfügbar ist, finden Sie die aktuelle Nummer auf der offiziellen Release-Seite [4]. Nach dem Klonen wechseln Sie mit cd /opt/opentalk in das frisch erstellte Repository, das als Basis für die nächsten Schritte dient. Damit ist die erste Voraussetzung für die OpenTalk-Installation erfüllt und Sie können mit der weiteren Einrichtung fortfahren.
Firewall und Reverse Proxy konfigurieren
Damit OpenTalk reibungslos funktioniert, müssen bestimmte Firewall-Ports offen und öffentlich erreichbar sein. Dazu gehören die Ports 80/tcp und 443/tcp für den Webzugriff sowie der UDP-Bereich 20.000 bis 40.000, den die Software für die Übertragung von Audio und Video nutzt. Falls auf Ihrer Maschine bereits ein Webserver wie Apache aktiv ist, kann es zu einem Konflikt mit den Ports 80 und 443 kommen. In diesem Fall haben Sie mehrere Möglichkeiten: Sie können Apache als Reverse Proxy einsetzen (Bild 1), um Anfragen an OpenTalk weiterzuleiten. Alternativ starten Sie OpenTalk auf anderen Ports und steuern den Zugriff über Ihre Firewall. Falls Sie OpenTalk nur testweise betreiben, können Sie Apache vorübergehend auch deaktivieren.
Bild 1: Beispielkonfiguration für Apache als Reverse Proxy, der Anfragen an OpenTalk weiterleitet und dabei SSL sowie WebSockets unterstützt.
Für den produktiven Einsatz empfehlen die OpenTalk-Entwickler NGINX als Reverse Proxy und stellen dazu eine Beispielkonfiguration im Verzeichnis "./extras/nginx-samples" bereit, die Sie an Ihre Umgebung anpassen können. Die offizielle NGINX-Dokumentation [5] liefert weitere Details zur Einrichtung.
Noch ein Tipp zur Firewall: Sollten Sie auf Ihrem Server das Intrusion-Prevention-System Fail2ban [6] einsetzen, stellen Sie sicher, dass das Tool keine legitimen Verbindungen blockiert. Wenn es zum Beispiel Apache (Port 80/443) sehr genau überwacht, OpenTalk aber über Apache läuft, kann es passieren, dass Fail2Ban auch gewünschte Verbindungen blockiert.
DNS und Let's Encrypt überprüfen
Weiterhin müssen Sie einige DNS-Records anlegen. Die Plattform besteht aus mehreren Diensten, die unter verschiedenen Subdomains erreichbar sein müssen. Falls Ihre Domain example.com lautet, benötigen Sie mindestens die folgenden DNS-Einträge, die auf die öffentliche IP-Adresse Ihres Servers zeigen: "example.com" für die OpenTalk-Weboberfläche, "accounts. example.com" für die Keycloak-Instanz, "controller.example.com" für den OpenTalk-Controller und "livekit.example.com" für den LiveKit-Server sowie optional "turn.example.com", falls Sie einen TURN-Server einsetzen.
Loggen Sie sich bei Ihrem Domainprovider ein und navigieren Sie zu den DNS-Einstellungen. Dort erstellen Sie die A-Records für OpenTalk. Nach ein paar Minuten können Sie zum Beispiel mit dem Tool dig überprüfen, ob die DNS-Records korrekt gesetzt wurden (Bild 2).
Bild 2: Mit dem dig-Befehl überprüfen Sie die DNS-Records für die OpenTalk-Subdomains, um sicherzustellen, dass sie auf die richtige IP-Adresse verweisen.
Damit die OpenTalk-Dienste verschlüsselt erreichbar sind, benötigen Sie ein gültiges SSL/TLS-Zertifikat. Falls bereits ein Let's Encrypt-Zertifikat für Ihre Domain existiert, überprüfen Sie es mit dem Befehl certbot certificates.
Die Ausgabe zeigt die aktuell gesicherten Domains und das Ablaufdatum des Zertifikats. Falls es bereits vorhanden ist, erweitern Sie es um die OpenTalk-Subdomains:
Falls Sie TURN verwenden, fügen Sie noch "-d turn.example.com" hinzu.
ENV-Datei erstellen
Jetzt richten Sie die zentrale Konfigurationsdatei ein. Wechseln Sie mit cd /opt/opentalk ins OpenTalk-Verzeichnis und kopieren Sie mit cp env.sample .env die Vorlage.
Öffnen Sie die ENV-Datei in einem Texteditor und setzen Sie "OT_DOMAIN" passend zu Ihrer Umgebung. Nutzen Sie eine einzelne Subdomain wie "meet.example.com", dann tragen Sie diese ein. Verwenden Sie mehrere Subdomains für verschiedene Dienste, setzen Sie stattdessen die Hauptdomain, also "example.com".
Für sichere Schlüssel starten Sie das mitgelieferte Skript, das starke zufällige Passwörter für die verschiedenen OpenTalk-Dienste erzeugt:
bash extras/gen-secrets.sh
Kopieren Sie die generierten Werte und tragen diese in die ENV-Datei ein.
Controller-Konfiguration vorbereiten
Der Controller ist die zentrale OpenTalk-Komponente. Er steuert die Kommunikation zwischen den verschiedenen Diensten. Damit er auf Ihrer Domain läuft, müssen Sie eine Konfigurationsdatei anlegen und anpassen. Zuerst erstellen Sie die Datei aus der Vorlage:
Öffnen Sie die Datei in einem Texteditor und ersetzen Sie in der Zeile "cors.allowed_origin" die Standarddomain durch Ihre eigene. Tragen Sie außerdem die URLs für Keycloak und LiveKit ein (Bild 3). Die in der ENV-Datei bereits hinterlegten Zugangsdaten können Sie entweder manuell in "config/controller.toml" eintragen (im Screenshot durch Rautezeichen ersetzt) oder mit "sed" automatisch ersetzen:
source .env; sed -i "s/example.com/$OT_DOMAIN/g" config/controller.toml
source .env; sed -i "s/postgrespw/$POSTGRES_PASSWORD/g" config/controller.toml
[...]
Bild 3: Passen Sie die Konfigurationsdatei des Controllers an und tragen Sie Ihre eigene Domain, die Keycloak-URL für die Authentifizierung und die LiveKit-Serveradresse ein.
OpenTalk mit Docker starten
Jetzt bringen Sie OpenTalk zum Laufen. Dazu starten Sie die benötigten Dienste mit Docker Compose. Zuerst wechseln Sie ins OpenTalk-Verzeichnis und fahren dann die Container im Hintergrund hoch (Bild 4).
Bild 4: Starten Sie alle benötigten OpenTalk-Dienste mit Docker Compose, um die Container im Hintergrund auszuführen.
Prüfen Sie anschließend mit docker ps | grep opentalk, ob die Dienste wirklich am Start sind. Die Ausgabe sollte eine Liste der laufenden OpenTalk-Dienste enthalten, darunter "controller", "keycloak" und "livekit". Ist dies nicht der Fall oder treten Fehler auf, hilft ein Blick in die Logs:
docker compose logs --tail=50
Sobald alle Container gestartet sind, testen Sie den Zugriff im Browser. Als Nächstes öffnen Sie die eingerichtete Keycloak-Anmeldeseite und kümmern sich um die Benutzerverwaltung.
Benutzerverwaltung mit Keycloak
OpenTalk nutzt Keycloak [7] als zentrales Identitäts- und Zugriffssystem. Keycloak übernimmt die Authentifizierung der Benutzer und verwaltet deren Rollen und Berechtigungen. Die OpenTalk-Dienste greifen über Keycloak auf Nutzerkonten zu, weshalb Sie hier zunächst die erforderlichen User anlegen müssen. Melden Sie sich am Keycloak-Webinterface mit dem Benutzernamen "admin" und dem Passwort an, das Sie in der ENV-Datei unter "KEYCLOAK_ADMIN_PASSWORD" festgelegt haben.
Nach dem Login wechseln Sie über das Drop-down-Menü oben links in das "opentalk"-Realm, das bereits für OpenTalk vorbereitet ist. Hier legen Sie einen neuen Benutzer an. Dieser benötigt die Standardrolle "default-roles-opentalk" im Reiter "Role Mapping", damit er sich bei OpenTalk anmelden kann. Als Orientierung dient der vorkonfigurierte "testuser", den die Entwickler für Demozwecke bereitstellen.
Falls Sie OpenTalk erst einmal ausprobieren möchten, können Sie den "testuser"-Account aktivieren und das Passwort zurücksetzen, um sich direkt in der Weboberfläche von OpenTalk anzumelden. Damit ist die grundlegende Benutzerverwaltung abgeschlossen und schon sind Sie startklar für die erste Videokonferenz.
Bild 5: Eine laufende OpenTalk-Videokonferenz mit mehreren Teilnehmern, die verschiedene Funktionen wie Umfragen nutzen.
Erweiterte Funktionen bereitstellen
Neben Gruppenräumen, Chat und Bildschirmfreigabe bietet OpenTalk auch eine Telefoneinwahl, Meetingaufzeichnungen, ein Whiteboard mit Spacedeck und kollaborative Textbearbeitung mit Etherpad. Die zusätzlichen Dienste aktivieren Sie in der Datei "docker-compose.yaml". Sie richten die Module entweder direkt in der Konfigurationsdatei ein oder über Umgebungsvariablen in der ENV-Datei. Entsprechende Beispielkonfigurationen haben die Entwickler im Verzeichnis "extras/opentalk-samples" hinterlegt.
Hier finden Sie auch eine Vorlage zum Einrichten eines SMTP-Dienstes, damit OpenTalk E-Mails für Meeting-Einladungen oder Benachrichtigungen verschicken kann. Mit dem Recorder lassen sich OpenTalk-Meetings als Video speichern. Die Aufzeichnungen werden über eine RabbitMQ-Warteschlange verwaltet und mit einer Zeitzonenkonfiguration versehen.
OpenTalk stellt außerdem Metriken bereit, die sich mit Grafana oder anderen Tools auswerten lassen. Detaillierte Informationen zur Konfiguration dieser Zusatzfeatures und zur Verwaltung der Meetings finden Sie in den offiziellen Handbüchern für Administratoren [8] und Endbenutzer [9].
Fazit
Dank Docker und der mitgelieferten Beispielkonfigurationen ist die Einrichtung eines eigenen OpenTalk-Servers erstaunlich unkompliziert. Wer die Grundinstallation abgeschlossen hat, kann das System flexibel erweitern – ob mit zusätzlichen Modulen, Monitoring oder individuellen Anpassungen. Damit wird OpenTalk zur souveränen Videoplattform – ohne Abhängigkeit von US-Diensten und mit voller Kontrolle über Infrastruktur und Daten.