Messenger gibt es viele. Matrix ist dabei eine Besonderheit, da es nicht direkt eine App meint, sondern ein offenes Protokoll für dezentrale Echtzeitkommunikation, auf dem verschiedene Clients und Server miteinander sprechen können.
Was ist Matrix?
Matrix ist ein offenes, föderiertes Kommunikationsprotokoll für Chat, Gruppenräume, Sprach- und Videokommunikation. Synapse ist dabei der klassische Matrix-Homeserver, also die Server-Software, die das eigenes Matrix-System betreibt.
Als Client wird sehr häufig Element genutzt, weil es auf Desktop und Mobilgeräten breit verfügbar ist und den größten Teil der üblichen Messenger-Funktionen abdeckt und sich wie andere bekannte Messenger anfühlt. Es gibt auch diverse andere Clients wie z.B. Cinny, was von der UI her näher an Discord ist.
Der größte Unterschied zu klassischen Messengern ist die Dezentralität. Man ist nicht an einen einzigen Anbieter gebunden, sondern kann mit anderen Matrix-Servern kommunizieren, ähnlich wie beispielsweise auch E-Mail über viele Anbieter hinweg funktioniert.
Dazu kommt die offene Architektur: Der Server ist selbst hostbar und man kann den Client frei wählen. Das macht Matrix auch nicht nur für die private Kommunikation interessant, auch in Unternehmen und co bietet sich die Nutzung an. Dort kann man beispielsweise auch die Förderation für rein interne Kommunikation deaktivieren.
Aber: Durch die Architektur und auch die Ende-zu-Ende-Verschlüsselung ist Matrix komplizierter in der Einrichtung, was schnell abschreckend wirkt.
Politischer Kontext
Ja, ein Thema was ich sonst nicht betrachte. Finde ich hier aber erwähnenswert.
Matrix passt ziemlich gut in die aktuelle Diskussion um digitale Souveränität, Datenschutz und unabhängige (Kommunikations-)Infrastruktur. Gerade in Europa und auch in Deutschland ist das Interesse an offenen Alternativen zu großen Plattformen seit Jahren hoch und auch diverse öffentliche Einrichtungen und Hochschulen nutzen Matrix als sicheren Messenger.
Installation
Ein alltagstaugliches Matrix-Setup besteht aus mehreren Komponenten:
- Synapse als Homeserver (es gibt auch andere, aber Synapse ist der gängigste)
- Element als Frontend im Browser
- Synapse-Admin zur Benutzerverwaltung
Von der Domaingestaltung habe ich bei mir etwa folgendes Setup:
- Synapse unter
matrix.example.com - Element unter
chat.example.com - Wobei
example.comals Basis-URL für die Identitäten dient, das wird über eine.well-knownan die Subdomainmatrix.example.comdelegiert
Die Delegation hat den großen Vorteil, dass die Hauptdomain als Matrix-Adresse genutzt werden kann, aber nicht von Synapse belegt wird. Über eine kleine “Hinweis-Datei” auf der Hauptdomain wissen Clients (und andere Homeserver) dann, dass diese sich zu matrix.example.com verbinden müssen.
In diesem Fall wird Synapse mit sqlite installiert. Für kleine Setups ist das vollkommen in Ordnung, ich selbst nutze Postgres als Datenbank.
Docker
Wie das meiste betreibe ich Matrix in Docker. Meine Compose (10.0.0.2 ist die interne IP dieses Servers):
| |
Die grundlegende Konfiguration für Synapse lässt sich generieren:
| |
Die relevanten Config-Files:
Element (config/element-config.json):
| |
Synapse-Admin (config/synapse-admin-config.json):
| |
Die eigentliche Config von Synapse (data/homeserver.yaml) habe ich minimal modifiziert:
| |
Reverse-Proxy
Ich habe Caddy als Reverse-Proxy im Einsatz. Die relevante Konfiguration in der Caddyfile sieht bei mir so aus:
| |
Synapse-Admin habe ich hinter Basic-Auth versteckt. Das ist an sich meiner Meinung nach nicht notwendig, aber fühlt sich besser an.
Delegation einrichten
Bei der Hauptdomain example.com müssen einige Dateien angelegt werden.
.well-known/matrix/server:
| |
.well-known/matrix/client:
| |
Damit sollte nun Förderation auch funktionieren. Mit dem Federation Tester (federationtester.matrix.org) lässt sich das prüfen.
Initialen User erstellen
Mittels
| |
lässt sich nun der initiale Admin-User (und auch weitere User natürlich) anlegen.
Clients einrichten
An den Clients sollte ein Login auf example.com nun funktionieren. Durch die Delegation werden Clients zu matrix.example.com weitergeschickt.