Hier im Blog gab es ja bereits einige Artikel, die sich mit Nextcloud Talk, als auch mit Matrix Synapse beschäftigt haben. Beides sind (Video-) Chat-Lösungen, die aber erst einmal für sich selbst stehen. Es gibt nun bei Nextcloud ein recht neues Feature, welches es erlaubt, Chats aus Nextcloud Talk mit anderen (Chat-)Diensten zu verbinden. Sinn und Zweck ist dabei, dass Benutzer nicht an eine Chat-Lösung gebunden sind, sondern dass man verschiedene Dienste so konfigurieren kann, dass eine Nachricht, die in Nextcloud Talk gesendet wurde, auch für einen anderen Dienst übermittelt wird (und anders herum).
In diesem Artikel möchte ich dieses Feature mal anhand von Matrix Synapse vorstellen.
Voraussetzung ist hier natürlich, dass beide Dienste – also Nextcloud inkl. Talk und Matrix Synapse – vorhanden sind. Im Folgenden gehen ich davon aus, dass Nextcloud unter der Domain nextcloud.meinedomain.de und Matrix Synapse unter matrix.meinedomain.de erreichbar sind.
Als Grundlage dienen dabei die Artikel Nextcloud auf Ubuntu Server 20.04 LTS mit nginx, MariaDB, PHP, Let’s Encrypt, Redis und Fail2ban, Nextcloud Talk mit eigenem TURN-Server (coturn) und Matrix Synapse auf Ubuntu Server 20.04 LTS mit nginx, PostgreSQL und Let’s Encrypt.
Inhalt
Vorbereitungen Matrix Synapse
Auf der Seite von Matrix sollte auf jeden Fall ein eigener User eingerichtet werden, der ausschließlich für die Kommunikation mit Nextcloud Talk genutzt wird – es soll also kein „echter Benutzer“ verwendet werden. Dieser kann mit folgendem Befehl auf der Kommandozeile des Matrix-Servers erstellt werden:
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
Der Benutzername ist hier zwar frei wählbar (soweit noch nicht vergeben), aber ich empfehle, den Benutzer schon anhand des Namens als Bot zu kennzeichnen, z.B. bot-nextcloud.
Nun kann man sich einmalig mit diesem User an der Matrix-Instanz anmelden. Dies ist zwar nicht unbedingt notwendig, wenn man aber einen bestimmten Anzeigenamen oder ein Avatar für den Bot setzen möchte, geht dies über eine einmalige Anmeldung am schnellsten.
Nun wechselt man in Matrix am besten wieder auf seinen persönlichen User zurück. Mit diesem Benutzer erstellen wir und nun einen Matrix-Chatraum. Dabei gibt es zwei Dinge zu beachten:
- Matrix unterscheidet zwischen privaten und öffentlichen Räumen. Bei einem privaten Raum können andere Benutzer (und auch unser Nextcloud-Bot) nur mit einer Einladung beitreten. Bei einem öffentlichen Raum kann jeder Benutzer beitreten. In diesem Beispiel lege ich einen privaten Raum an.
- Eine Ende-zu-Ende-Verschlüsselung muss auf jeden Fall deaktiviert werden, sonst klappt das Bridging nicht richtig.
Wenn ein privater Raum erstellt wurde, ist nun noch der Bot-User in diesem Raum einzuladen: @bot-nextcloud:matrix.meinedomain.de
Wenn es um einen öffentlichen Raum geht, kann dieser Schritt übersprungen werden, da der Bot in diesem Fall dem Raum automatisch beitritt.
Für die Verbindung zu Nextcloud brauchen wir im späteren Verlauf noch die Raum-ID. Diese findet man in den Raum-Einstellungen unter Erweitert. Diese Raum-ID merken wir uns an dieser Stelle.
Wenn der Raum eine öffentliche Adresse besitzt, dann kann im weiteren Verlauf natürlich auch diese öffentliche Adresse verwendet werden.
Seitens Matrix sind die Vorbereitungen damit abgeschlossen.
Bridging in Nextcloud Talk aktivieren
Matterbridge ist ein eigenständiges Programm, welches normalerweise auf dem jeweiligen System noch installiert und konfiguriert werden muss. Die Nextcloud-Entwickler haben die Installation aber direkt in die Admin-Einstellungen von Talk integriert. Hier gibt es eine Sektion Matterbridge-Einbindung. Mit einem Klick auf Talk-Matterbridge installieren wird Matterbridge automatisch im Hintergrund auf dem System eingerichtet.
Dies kann durchaus ein paar Minuten dauern, daher etwas Geduld mitbringen. Im Anschluss ist die Matterbridge-Installation abgeschlossen:
Damit steht Matterbridge zunächst einmal generell für Nextcloud Talk zur Verfügung.
Hinweis: Die Matterbridge-Einbindung ist einfach nur eine App aus dem Nextcloud App Store und wird über diesen auch mit Updates versorgt.
Die „Brücke“ zischen Nextcloud Talk und Matrix kann dann für jede Talk-Unterhaltung konfiguriert werden.
Dazu starten wir eine neue Unterhaltung in Talk:
Der Bot-Benutzer muss an dieser Stelle nicht eingeladen werden, dieser wird dem Raum später automatisch beitreten.
Um nun Matterbridge für diesen Raum zu konfigurieren, geht man über das „drei Punkte Menü“ in die Unterhaltungseinstellungen:
Hier kann die Verbindung zu anderen Diensten nun unter dem Punkt Matterbridge konfiguriert werden. In unserem Fall legen wir eine neue Verbindung für Matrix an:
Hier müssen nun folgende Parameter angegeben werden:
- Die komplette URL der Matrix Synapse Instanz.
- Der voll qualifizierte Benutzername des Matrix Bot-Users.
- Das dazugehörige Passwort des Bot-Users.
- Die Raum-ID.
In unserem Beispiel kann dies folgendermaßen aussehen:
Mit einem Klick auf den Haken wird die Konfiguration gespeichert. Im Anschluss muss die Bridge noch über die darüber liegende Checkbox aktiviert werden.
Wenn diese Schritte ausgeführt wurden, betritt der (unsichtbare) User bridge-bot den Raum. Nun kann auch schon gechattet werden, die Nachrichten werden automatisch in das jeweils andere System übertragen.
Und so sieht das ganze im Matrix-Client Element aus:
Chat-Nachrichten (oder auch gesendete Bilder oder Dateien) werden erfahrungsgemäß recht schnell übertragen, es kann aber auch manchmal auch ein paar Augenblicke dauern, bis die Meldungen übertragen wurden.
Bridging mit anderen Diensten
Die Verbindung von Nextcloud Talk mit Matrix war nur ein Beispiel. Es können jedoch auch andere Systeme integriert werden, wie z.B. eine andere Nextcloud Talk Instanz, Rocket.Chat oder auch Telegram. Eine komplette Liste aller unterstützen Dienste kann man im Nextcloud Blog finden.
Die Konfiguration dieser Brücken läuft meist analog zu dem hier gezeigten Vorgehen ab. Nur für einige Dienste (z.B. Telegram) benötigt man ein API-Token. Das Matterbridge Wiki ist eine gute Anlaufstelle, die die einzelnen Dienste konfiguriert werden können (wo man beispielsweise ein API Token von von Telegram beziehen kann).
Troubleshooting
Die Einrichtung der Matterbridge läuft über die Nextcloud-Konfigurationseinstellungen sehr einfach ab. Trotzdem kann es hin und wieder zu Problemen kommen.
Es kann beispielsweise passieren, dass die Nachrichten nicht in beide Richtungen übertragen werden, sondern nur aus Nextcloud Talk zu Matrix. Nachrichten, die in Matrix gesendet werden, tauchen aber nicht in Nextcloud Talk auf. Dies liegt häufig daran, dass der Matrix-Raum mit aktiver Ende-zu-Ende-Verschlüsselung erstellt wurde.
Wenn es an anderen Stellen haken sollte, kann ein Blick in das Matterbridge-Log hilfreich sein. Dieses findet man in den Unterhaltungseinstellungen in Nextcloud Talk:
Fazit
Das Bridging zwischen verschiedenen Chat-Diensten ist natürlich keine besonders effiziente Lösung, da Meldungen immer über einen Bot an die verschiedenen Plattformen verteilt werden müssen. Ebenso wird von einer solchen Brücke meist nicht der volle Funktionsumfang aller Dienste unterstützt (wie z.B. Video-Telefonie).
Trotzdem ist man auf diese Art und Weise nicht bei Nextcloud Talk „gefangen“, sondern kann über Matterbridge auch mit der „Außenwelt“ kommunizieren. Auch wenn sich dieses Feature von Nextcloud Talk noch in der Beta-Phase befindet, funktioniert die hier beschriebene Lösung in der Praxis schon sehr gut.
Weiterführende Artikel
- Nextcloud Talk mit eigenem TURN-Server (coturn)
- Nextcloud Talk mit eigenem Signaling-Server (High Performance Backend)
- Matrix Synapse auf Ubuntu Server 20.04 LTS mit nginx, PostgreSQL und Let’s Encrypt