Matrix synapse
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Matrix Synapse 🇬🇧 ist ein dezentraler Messenger-Server, für den es für alle gängigen Plattformen Client-Programme gibt . Er unterstützt neben Ende-zu-Ende verschlüsselten Chat auch Voice-over-IP und steht unter der GPL-kompatiblen Apache-Lizenz.
Nachrichten werden über die Servergrenzen hinaus nach dem einfachen Schema @Kontakt:matrix.domain.eu
versendet.
Matrix-Server kommunizieren auf 2 wegen. Einmal als CLIENT (Port 443) - damit werden die Verbindung zu den Matrix-Client hergestellt, sowie als FEDERATION (Port 8448) - wodurch die Matrix-Server miteinander kommunizieren. Wenn Matrix nur als Client betrieben wird, ist es nicht möglich Räumen außerhalb des eigenen Matrix-Servers beizutreten.
Installation¶
Matrix Synapse kann direkt aus den Quellen installiert werden [1]
matrix-synapse (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install matrix-synapse
Oder mit apturl installieren, Link: apt://matrix-synapse
Allerdings erhält man dort nicht unbedingt die aktuelleste Version.
Aktuelle Version¶
Matrix Synapse betreibt ein eigene Paketquelle für die aktuellste Version. Diese fügt man wie folgend hinzu:
Um aus der Fremdquelle zu installieren, muss man unabhängig von der Ubuntu-Version die folgende Paketquelle freischalten:
Hinweis!
Zusätzliche Fremdquellen können das System gefährden.
deb https://matrix.org/packages/debian/
Um die Fremdquelle zu authentifizieren, muss man den Signierungsschlüssel herunterladen ⮷ und in der Paketverwaltung hinzufügen. Alternativ dazu kann man auch im Terminal den folgenden Befehl ausführen:
wget -q -O "-" https://matrix.org/packages/debian/repo-key.asc | sudo apt-key add -
Dienst starten und stoppen¶
Zum Starten:
sudo service matrix-synapse start
Und zum Stoppen:
sudo service matrix-synapse stop
Clients¶
Durch die offene Matrix-API gibt es einen ganze Reihe von Matrix-Clients. Eine Übersicht ist auf der Matrix-Webseite 🇬🇧 zu finden. Der meist benutzte OpenSource-Client ist Element 🇬🇧. Für Ubuntu Touch kann FluffyChat eingesetzt werden.
Benutzerverwaltung¶
Damit neue Benutzer hinzugefügt werden können, muss in der Konfigurationsdatei eine zufällig erstellte Zeichenkette hinterlegt werden.
Die Zeichenkette erzeugen:
cat /dev/random | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1
Diese wird in der /etc/matrix-synapse/homeserver.yaml eingetragen:
registration_shared_secret: "hier die Ausgabe eintragen"
Benutzer im Terminal anlegen¶
Benutzer werden im Terminal mit folgenden Befehlt erzeugt:
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://127.0.0.1:8448
Administratoren müssen über das Terminal erzeugt werden.
Benutzer im Client anlegen¶
Wenn im Client - wie Riot - neue Benutzer sich beim Matrix-Server registrieren können sollen, muss dies über die /etc/matrix-synapse/homeserver.yaml erlaubt werden. Dazu wird enable_registration
von False
auf True
geändert.
enable_registration: True
Achtung!
Wenn Benutzer im Client angelegt werden können, kann jeder, der die Domain kennt, sich einen Benutzernamen anlegen.
Benutzer deaktivieren¶
Um Benutzer zu deaktivieren, holt man sich im Terminal [2] einen access_token
als ein Matrix-Benutzer, welcher Administrationsrechte hat.
ADMIN-USER
- ersetzen mit dem Benutzernamen ohne @.PASS
- ersetzen mit dem Passwort des Admins.MATRIX-DOMAIN.EU
- ersetzen mit der Domain, unter der Matrix läuft.
curl -XPOST -d '{"type":"m.login.password", "user":"ADMIN-USER", "password":"PASS"}' "https://MATRIX-DOMAIN.EU/_matrix/client/r0/login"
Jetzt können die gewünschten Benutzer deaktiviert werden
ACCESS_TOKEN
- ersetzen mit dem durch den letzten Befehlt erhaltenenaccess_token
.@USER:MATRIX-DOMAIN.EU
- ersetzen mit dem Benutzernamen, diesmal mit @ und der Matrix-Domain.MATRIX-DOMAIN.EU
- ersetzen mit der Domain unter der Matrix läuft.
curl -XPOST -H "Authorization: Bearer ACCESS_TOKEN" -H "Content-Type: application/json" -d '{"erase":true}' "https://MATRIX-DOMAIN.EU/_matrix/client/r0/admin/deactivate/@USER:MATRIX-DOMAIN.EU"
Benutzer Passwörter ändern¶
Um das Passwort eines Benutzer zu änder, holt man sich im Terminal [2] einen access_token
als ein Matrix-Benutzer, welcher Administrationsrechte hat.
ADMIN-USER
- ersetzen mit dem Benutzernamen ohne @.PASS
- ersetzen mit dem Passwort des Admins.MATRIX-DOMAIN.EU
- ersetzen mit der Domain, unter der Matrix läuft.
curl -XPOST -d '{"type":"m.login.password", "user":"ADMIN-USER", "password":"PASS"}' "https://MATRIX-DOMAIN.EU/_matrix/client/r0/login"
Jetzt kann das Passwort des Benutzers geändert werden
ACCESS_TOKEN
- ersetzen mit dem durch den letzten Befehlt erhaltenenaccess_token
.@USER:MATRIX-DOMAIN.EU
- ersetzen mit dem Benutzernamen, diesmal mit @ und der Matrix-Domain.MATRIX-DOMAIN.EU
- ersetzen mit der Domain unter der Matrix läuft.PASSWORD
- ersetzen mit dem neuen Passwort.
curl -XPOST -H "Authorization: Bearer ACCESS_TOKEN " -H "Content-Type: application/json" -d '{"new_password":"PASSWORD"}' "https://MATRIX-DOMAIN.EU/_matrix/client/r0/admin/reset_password/@USER:MATRIX-DOMAIN.EU"
HTTPS¶
Apache¶
In der Standard-Konfiguration läuft der Matrix-Dienst auf Port 8008. Damit Matrix auf der Haupt-Domain auf dem HTTPS-Port läuft und ein gültiges SSL-Zertifkat bekommt, muss Apache und certbot konfiguriert werden.
Apache stellt stellt eine Proxy-Verbindung zu Matrix her, Certbot erstellt das SSL-Zertifkat. Beide müssen installiert werden.
apache2
certbot
Befehl zum Installieren der Pakete:
sudo apt-get install apache2 certbot
Oder mit apturl installieren, Link: apt://apache2,certbot
Anschließend müssen die Apache-Proxy- und Apache-SSL-Module noch aktiviert werden:
sudo a2enmod proxy sudo a2enmod proxy_html sudo a2enmod proxy_http sudo a2enmod ssl
Damit Certbot für die Domain ein Zertifikat anfordern kann, braucht es eine apache.conf, welche auf Port 80 lauscht und auf ein Verzeichnis verweist. Dieses Verzeichnis ist das root-Verzeichnis der Domain und kann neben Matrix weiter für die Webseite verwendet werden.
Das Verzeichnis muss erst erstellt und die Rechte gesetzt werden:
sudo mkdir /var/www/matrix-domain.eu sudo chown www-data:www-data /var/www/matrix-domain.eu
Danach die apache.conf anlegen [4]:
/etc/apache2/sites-available/matrix-domain.eu.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <VirtualHost *:80> ### Domain des Matrix Servers ServerName matrix-domain.eu ### Das Verzeichnis über das Certbot das Zertifkat anfordern kann DocumentRoot "/var/www/matrix-domain.eu/" <Directory "/var/www/matrix-domain.eu/"> Options FollowSymLinks MultiViews AllowOverride FileInfo AuthConfig Order allow,deny allow from all </Directory> </VirtualHost> |
Mittels a2ensite
wird die apache.conf aktiviert.
sudo a2ensite matrix-domain.eu.conf
Danach wird Apache neu gestartet.
sudo service apache2 restart
Certbot kann für die Domain jetzt das Zertifikat anfordern [5].
sudo certbot certonly --apache --webroot -w /var/www/matrix-domain.eu -d matrix-domain.eu
In einer weiteren apache.conf wird Apache so eingerichtet, dass er für die Domain auf dem HTTPS-Port lauscht und auf dem Server eine Proxyverbindung zu dem Matrix-Port 8008 herstellt [4]. Damit der Matrix-Server auch als Federation-Server erreichbar ist muss neben dem Port 443 (https) auch eine Proxyverbindung des Ports 8448 auf den 8008 hergestellt werden.
/etc/apache2/sites-available/matrix-domain.eu-le-ssl.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | Listen 8448 <IfModule mod_ssl.c> <VirtualHost *:443> SSLEngine on ServerName matrix-domain.eu # Das Verzeichniss für die Webseite, # welche weiter auf der Domain laufen kann DocumentRoot "/var/www/matrix-domain.eu/" <Directory "/var/www/matrix-domain.eu/"> Options FollowSymLinks MultiViews AllowOverride FileInfo AuthConfig Order allow,deny allow from all </Directory> # Proxy Aktivieren ProxyPreserveHost on # Der lokale Proxy auf den Matrix Server ProxyPass /_matrix http://127.0.0.1:8008/_matrix nocanon ProxyPassReverse /_matrix http://127.0.0.1:8008/_matrix ProxyPass /_synapse/client http://127.0.0.1:8008/_synapse/client nocanon ProxyPassReverse /_synapse/client http://127.0.0.1:8008/_synapse/client # Spezielle Konfiguration für Matrix: # Erlaubt die Verwendung von URLs, welche kodierte Pfadtrennzeichen # (%2F für / und auf entsprechenden Systemen zusätzlich %5C für \) enthalten AllowEncodedSlashes NoDecode # Fügt zum http-Header X-Forwarded-Proto hinzu RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} # Der Ort der Letsencrypt-SSL-Zertifkate SSLCertificateFile /etc/letsencrypt/live/matrix-domain.eu/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/matrix-domain.eu/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> # Der Proxy für den Matrix Federation Service <VirtualHost *:8448> SSLEngine on ServerName matrix-domain.eu ProxyPass /_matrix http://127.0.0.1:8008/_matrix nocanon ProxyPassReverse /_matrix http://127.0.0.1:8008/_matrix RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} AllowEncodedSlashes NoDecode # Der Ort der Letsencrypt-SSL-Zertifkate SSLCertificateFile /etc/letsencrypt/live/matrix-domain.eu/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/matrix-domain.eu/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> </IfModule> |
Da Matrix als eigener Benutzer auf dem System läuft und das SSL-Zertifkat ebenso benötigt, müssen die SSL-Zertifkate noch in das Matrix-Verzeichnis kopiert werden:
sudo cp /etc/letsencrypt/live/matrix-domain.eu/fullchain.pem /etc/matrix-synapse/fullchain.pem sudo cp /etc/letsencrypt/live/matrix-domain.eu/privkey.pem /etc/matrix-synapse/privkey.pem sudo chown matrix-synapse:nogroup /etc/matrix-synapse/fullchain.pem sudo chown matrix-synapse:nogroup /etc/matrix-synapse/privkey.pem sudo chmod 600 /etc/matrix-synapse/fullchain.pem sudo chmod 600 /etc/matrix-synapse/privkey.pem sudo service matrix-synapse restart
Damit die richtigen Zertifikate auch nach einem renew
von Certbot noch in dem Matrix-Verzeichnis liegen, wird ein wöchentlicher cronjob erstellt.
/etc/cron.weekly/matrix
1 2 3 4 5 6 7 8 | #!/bin/bash cp /etc/letsencrypt/live/matrix-domain.eu/fullchain.pem /etc/matrix-synapse/fullchain.pem cp /etc/letsencrypt/live/matrix-domain.eu/privkey.pem /etc/matrix-synapse/privkey.pem chown matrix-synapse:nogroup /etc/matrix-synapse/fullchain.pem chown matrix-synapse:nogroup /etc/matrix-synapse/privkey.pem chmod 600 /etc/matrix-synapse/fullchain.pem chmod 600 /etc/matrix-synapse/privkey.pem service matrix-synapse restart |
Die neue apache.conf aktivieren und Apache sowie Matrix neu starten.
a2ensite matrix-domain.eu-le-ssl.conf service apache2 restart service matrix-synapse restart
Wenn alles erfolgreich konfiguriert ist, kann man im Browser unter der matrix-domain.eu/_matrix/static/
den Matrix-Server aufrufen und dieser sollte melden, dass er läuft.
Das der Matrix-Server auch als Federation-Server erreichbar ist kann mit dem federationtester 🇬🇧 überprüft werden.
Links¶
Instant Messenger -Ubersichtsseite zu Instant Messenger
Synapse 🇬🇧 auf github