bridge.jpg

Mit Matrix-Brücken ist es möglich, sich mit andere Messenger-Systemen zu verbinden. Es gibt mittlerweile zahlreiche Brücken (https://matrix.org/bridges/), die sich allerdings in Features und insbesondere der Bedienung/Anwendung z.T. erheblich unterscheiden.

Die folgenden Artikel sollen einen Überblick über die Verwendung der bekanntesten Brücken geben.

Table of Contents

Allgemeines

Note

Generell gilt: Brücken müssen ggf. Verschlüsselungen terminieren. Damit hat der Bridge-Betreiber (Admin) vollständigen zugriff auf den Nachrichtenverkehr.

Es empfiehlt sich daher, Matrix-Brücken selber zu betreiben, und öffentlichen Brücken möglichst nur für öffentliche Kanäle zu verwenden.

  • Syntax von Martix Räumen: #raumname:domain.tld

  • Syntax von Matrix Usern: @username:domain.tld

Begrifflichkeiten

Management-Raum

Ja nach Art der Brücke wird ein Managment-Raum benötigt. Dies ist der Raum, indem sich ein Benutzer den jeweiligen Bridge-Bot einläd, und ihn von hier aus per Chat-Befehle steuern kann (Ein.-Auloggen, Adressbuchabgleich, Synchronisation, …). Je Nach Brücke gibt es Unterschiede in der Funktionalität. Einen Überblick erhält man I.d.R. indem man zu dem Bridge-Bot spricht:

help

Portal-Raum

Matrix-Brücken erstellen beim Betreten einen Matrix-Raum, der den gebrückten Raum [TODO]

Bridgebot-style (Relay)

Bei Bridgebot-Brücken handelt es sich um eine relativ einfache Form von Brücken: In die zu überbrückenden Kanäle (das können sowohl Chat-Räume als auch Privatnachrichten sein) wird jeweils ein Bot(-User) gesetzt. Die jeweiligen Bots lesen in ihren Kanälen mit und übergeben neue Nachrichten an den jeweils anderen Bot, der diese Nachricht dann (in seinem Namen!) in dem entfernten Kanal ausgibt. Für die Benutzer in den beteiligten Kanälen sieht eine gebrückte Nachricht dann z.B. so aus:

bridgebotNAme: [protocol] <Username> Nachricht

Puppeting

Mit Puppeting wird eine viel umfassendere Form der Überbrückung erreicht: Hier meldet sich die die Brücke korrekt beim Remote-Dienst an. Dazu muss sich die Brücke an einem gültigen Konto des entfernten System anmelden.

xmpp (Extensible Messaging and Presence Protocol)

Öffentlich nutzbar

Bot-Name

Bot-Typ

Limitationen

Ja

@_bifrost_bot:aria-net.org

Puppeting

* Nur unverschlüsselte Chats/MUCs

* Matrix-Reactrions gehen nach xmpp verloren

* Matrix-Threads sind auf xmpp Antworten

Für xmpp exisiteren z.Z. mindestens zwei öffentliche Matrix-Brücken:

Eine Besonderheit der xmpp-Brücke ist, dass diese sowohl von Matrix als auch von xmpp aus verwendet werden kann.

Momentan werden nur unverschlüsselte Privatnachrichten und MUCs (Multi User Chat) unterstützt.

Note
Die zwei Brücken haben eine leicht unterschiedliche Syntax. Die aria-net.org Brücke hat einige zusätzliche Features

Beispiele

Mit Matrix einen xmpp MUC betreten

Öffentliche xmpp MUCs wie beispielsweise public@conference.jabber.chaostreff-osnabrueck.de können von Matrix aus direkt betreten werden. Es muss lediglich die Raumadresse in die entsprechende Matrix-Syntax umgeändert werden.

Der Raumname im Beispiel lautet public, der xmpp-Server conference.jabber.chaostreff-osnabrueck.de. Entsprechend der Anleitung lautet der entsprechende Portal-Raum: #_bifrost_public_conference.jabber.chaostreff-osnabrueck.de:aria-net.org

Dieser lässt sich nun einfach betreten, entweder über "Räume erkunden" den Raumnamen eingeben, oder als Kommando in einem beliebigen Raum als "Nachricht senden" eingeben:

/join #_bifrost_public_conference.jabber.chaostreff-osnabrueck.de:aria-net.org

Oder alternativ über Matrix.org:

/join #xmpp_public_conference.jabber.chaostreff-osnabrueck.de:matrix.org

Zu beachten ist, dass es MUCs gibts, die verhindern, dass User ihre JIDs untereinander sehen können (Stichwort: Semi-Anonym). Das kann dazu führen, dasss man die angezeiten User im Matrix-Raum (technisch gesehen sind es virtuelle User/Puppets) zwar anschreiben kann, die wirklichen User diese Nachricht aber nie erhalten.

Privatnachricht an xmpp User:

Ähnlich zum vorherigen Beispiel funktioniert das auch bei Privatnachrichten. In xmpp wird ein User durch eine JID (Jabber IDentifier) repräsentiert, die den gleichen Aufbau wie eine EMail-Adresse hat: benutzername@domain.tld

Daraus folgt wieder der entprechende "Matrix-User" → @_bifrost_benutzername=40domain.tld:aria-net.org

Mit dem folgenden Kommando wird ein neuer Raum erzeugt und der xmpp-User "eingeladen":

/msg @_bifrost_benutzername=40domain.tld:aria-net.org

Alternativ über matrix.org:

/msg @_xmpp_benutzername=40domain.tld:matrix.org

Telegram

Öffentlich nutzbar

Bot-Name

Bot-Typ

Limitationen

Ja, nur Relay

@telegram:t2bot.io

Double-Puppeting

Nur unverschlüsselte Chats

Eine große, öffentliche Instanz wird von https://t2bot.io betrieben.

Anleitung

  • Bridgebot einladen in Privatchat

  • Im diesem Chat (Managment-Raum) eingeben: login bzw. login-qr

  • Mit Telegram-App den QR-Code scannen bzw. dem Link folgen und Anweisung folgen.

→ Fertig! Ab jetzt kommen alle neuen Telegram-Nachrichten ganz transparent in Martix an.

Um aktiv einen Chat zu beginnen, einfach Befehl an Brige-Bot senden:

pm +<internationale-Nummer>

Ein Telegram Raum oder Kanal kann mit folgendem Kommando betreten werden:

join <tg-invite-link>

Beispiel:

join t.me/fahrradkette

matterbridge - universelle Bridge

Öffentlich nutzbar

Bot-Name

Bot-Typ

Limitationen

self-hosting

beliebig

Bridgebot

* Je nach Protokoll

* Eine Brücke pro Raum

matterbridge.gif

Mit Matterbridge https://github.com/42wim/matterbridge können zwei Chat-Räume gebrückt werden. Es verden zahlreiche Protokolle unterstüzt.

Die Funktionsweise ist recht simpel: In die beiden Kanäle wird jeweils ein Bot (Name z.B. BridgeBotName) gesetzt. Die Bots lesen dann im Kanal alle Nachrichten mit, und übergeben neue Nachrichten an den jeweils anderen Bot, der diese Nachricht dann in dem entfernten Kanal ausgibt. Das ist die einfachste Form einer Bridge (vgl. z.B. https://matrix.org/docs/guides/types-of-bridging unter dem Punkt "Bridgebot-based bridges")

Ein spürbarer Nachteil an dieser Variante ist, dass Nachrichten über die Bridge zwangsläufig immer von dem Bot aus gesendet werden (und hier ggf. Meta-Daten verloren gehen). Somit sind z.B. Direktnachrichten an einen Teilnehmer in dem entfernten Kanal nicht möglich.

Es werden auch keine Nachrichten zwischengespeichert: Fällt z.B. ein Kanal/Netzwerk aus, werden Nachrichten nicht übertragen.

Beispiel einer Bridge-Nachricht:

BridgeBotName: [protocol] <Username> Nachricht

Beispiel

wget https://github.com/42wim/matterbridge/releases/download/v1.25.2/matterbridge-1.25.2-linux-64bit
chmod +x matterbridge-1.25.2-linux-64bit

Anschliessend die Konfig bauen. Starten. Fertig.

[matrix.riotchat]
Server="https://riotchat.de"
Login="@plocki-bot:riotchat.de"
Password="SicheresPasswort!1elf"
RemoteNickFormat="<{NICK}> "
#RemoteNickFormat="[{PROTOCOL}] <{NICK}>
HTMLDisable=false
ShowJoinPart=true

[irc.plocki]
Server="irc.libera.chat:6666"
Nick="BridgeBot"
MessageClipped="<clipped message>"
SkipTLSVerify=true
RemoteNickFormat="@{NICK}: "
IgnoreMessages="^\\*\\*\\[WARNING]\\*\\*:"

[[gateway.inout]]
account="matrix.riotchat"
channel="!ZJAMVlrBniiADaXShi:tchncs.de"

[[gateway.inout]]
account="irc.plocki"
channel="#does-it-matter"

[[gateway]]
name="gw-matrix-mumble"
enable=true