Table of Contents
Matrix
- technische Daten, etc.
1 Überblick
- 1.1 Was ist Matrix?
- 1.2 warum
- 1.3 Abgrenzung zu anderen Diensten
2 Struktur
- wo server
- wo client
- wie login
- wer login
3 TODO liste
- Wir könnten in Betracht ziehen die Container nicht unter root laufen zu lassen sondern unter nicht privelegierten Benutzern um die Sicherheit zu erhöhen
- Der Server hat die kleinste Größe die es bei Hetzner gibt(1 vCPU, 2GB Ram, 20GB SSD). Dies wird wahrscheinlich auf Dauer nicht ausreichen. Ein Hochskalieren sollte aber leicht möglich sein.
- Der Turn Server ist ohne verschlüsselung. Die Lets Encrypt Zertifikate können vermutlich nicht verwendet werden: https://matrix-org.github.io/synapse/latest/setup/turn/coturn.html (Weiter unten, nach “issue” suchen). Wir könnten für den Turn Server ein Zerossl Zertifikat statt eines von lets encrypt nutzen. Wir könnten auch in Betracht ziehen komplett (sprich reverse-proxy auch) auf Zerossl zu wechseln damit wir nicht “doppelgleisig fahren”.
4 Technik
4.2 Reverse-Proxy
Als Reverse Proxy wird NGINX in einem Docker-Container genutzt. Unter dem Pfad /opt/reverse-proxy
Die TLS-Zertifikate werden als Volume über einen relativen Pfad zu Certbot eingebunden.
So wird der Traffic weitergeleitet:
- Traffic auf port 80 (http):
- Unter dem Pfad /.well-known/acme-challenge/ wird der Inhalt des Challenge Verzeichnis (siehe Certbot) ausgeliefert
- Alles andere unter port 80 kriegt eine 301 Weiterleitung auf https
- Auf Port 443 und 8448 (https):
- Alles unter /_matrix oder /_synapse/client wird an den synapse-Container weitergeleitet
- /.well-known/matrix/server liefert eine JSON Datei die andere Matrix Server anweist auf Port 443 anzufragen (wird das noch benötigt?)
- alles andere wird an den element-web Container weitergeleitet
4.3 Certbot
Certbot ist in einem docker-container im Pfad /opt/certbot Die TLS-Zertifikate liegen in einem Unterordner, genauso wie Challenge Dateien
4.4 Element Web
Ein Container der die static files für den element-web client bereitstellt
Im Unterordner /opt/element-web
4.5 Turn Server
Im Unterordner /opt/turn-server läuft ein eturnal Container der im network mode “host” läuft und entsprechend auf chat.rote.tools einen turn server bereitstellt
bisheriger Artikel
Matrix ist ein dezentrales Chatsystem. Als Alternativen wurden RocketChat und Mattermost diskutiert. Es wurde sich aufgrund der unten stehenden Argumente für Matrix entschieden
Ziel ist es ein Chatsystem zu haben, welches an SSO angeknüpft ist und einen Gruppensync mitliefert. So sollen Personen/Accounts automagisch Chatgruppen hinzugefügt werden. Das erstellen von neuen Gruppen soll dabei nicht ausgeschlossen werden. Als weitere wichtige Funktion gelten Threads
RocketChat
Ist voraussichtlich günstiger als Mattermost bzw. hat verschiedene Features, welche bei Mattermost hinter einer Paywall sind. Zusätzlich ist es recht einfach aufzusetzen. Es wurden aber bei Lukas und Michelle schlechte Erfahrungen gemacht, da die Performance auf den Endgeräten sehr heterogen ist und ein hoher Supportaufwand bestehen kann. SSO ist bereits in der kostenlosen Variante mit drin. Zu zahlen sind für die Push Notifications und der Gruppensync. Der genaue Preis ist unbekannt, da erst kürzlich das Modell umgestellt wurde.
Mattermost
Ist teurer als RocketChat, ist aber was den Umfang insbesondere von Automagisierungen deutlich umfangreicher. Michelle versucht seit April eine Lizenz für die Jusos Thüringen zu erhalten und hat bis heute keine Antwort. Die Kosten wären ca. 250 USD für 3 Jahre self.hosted Lizenz bis 1.000 Nutzer:innen. Das inkludiert nur das “Professional” Paket und somit keinen Gruppensync.
Matrix
Großer Vorteil, dass es vollständig kostenlos ist, bisher aber keine Threads hatte. Das scheint inzwischen gefixt. Bzgl. der Automagisierungen könnte man einiges durch Bots lösen.