[[Vorlage(Getestet, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] [:Apache/Virtual_Hosts: Virtual Hosts erstellen] [:TLS-Zertifikate/#Let-s-Encrypt:Let-s-Encrypt Zertifkate erstellen:] }}} [[Inhaltsverzeichnis(1)]] [[Bild(Matrix_logo.png, 100, align=left)]] [https://matrix.org/docs/projects/server/synapse Matrix Synapse] {en} ist ein dezentraler Messenger-Server, für den es für alle gängigen Plattformen [#clients 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 [#clients 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] {{{#!vorlage Paketinstallation matrix-synapse, universe }}} 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: [[Vorlage(Fremdquelle, https://matrix.org/packages/debian/)]] [[Vorlage(Fremdquelle-auth, https://matrix.org/packages/debian/repo-key.asc)]] == Dienst starten und stoppen == Zum Starten: {{{#!vorlage Befehl sudo service matrix-synapse start }}} Und zum Stoppen: {{{#!vorlage Befehl sudo service matrix-synapse stop }}} = Clients = Durch die offene Matrix-API gibt es einen ganze Reihe von Matrix-Clients. Eine Übersicht ist auf der [https://matrix.org/docs/projects/try-matrix-now/ Matrix-Webseite] {en} zu finden. Der meist benutzte OpenSource-Client ist [https://element.io/get-started#linux Element] {en}. Für [:Ubuntu Touch:] kann [openstore:fluffychat.christianpauly: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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 }}} {{{#!vorlage Warnung 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. {{{#!vorlage Befehl 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 erhaltenen `access_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. {{{#!vorlage Befehl 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. {{{#!vorlage Befehl 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 erhaltenen `access_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. {{{#!vorlage Befehl 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_2.4:Apache] und [:certbot:] konfiguriert werden. Apache stellt stellt eine Proxy-Verbindung zu Matrix her, Certbot erstellt das SSL-Zertifkat. Beide müssen installiert werden. {{{#!vorlage Paketinstallation apache2 certbot }}} Anschließend müssen die [:Apache/mod_proxy_html:Apache-Proxy]- und [:Apache/mod_ssl:Apache-SSL]-Module noch aktiviert werden: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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''' {{{#!code apache ### Domain des Matrix Servers ServerName matrix-domain.eu ### Das Verzeichnis über das Certbot das Zertifkat anfordern kann DocumentRoot "/var/www/matrix-domain.eu/" Options FollowSymLinks MultiViews AllowOverride FileInfo AuthConfig Order allow,deny allow from all }}} Mittels `a2ensite` wird die '''apache.conf''' aktiviert. {{{#!vorlage Befehl sudo a2ensite matrix-domain.eu.conf }}} Danach wird Apache neu gestartet. {{{#!vorlage Befehl sudo service apache2 restart }}} Certbot kann für die Domain jetzt das Zertifikat anfordern [5]. {{{#!vorlage Befehl 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''' {{{#!code apache Listen 8448 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/" Options FollowSymLinks MultiViews AllowOverride FileInfo AuthConfig Order allow,deny allow from all # 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 # Der Proxy für den Matrix Federation Service 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 }}} 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: {{{#!vorlage Befehl 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 [:Cron:cronjob] erstellt. '''/etc/cron.weekly/matrix''' {{{#!code bash #!/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. {{{#!vorlage Befehl 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 [https://federationtester.matrix.org/ federationtester] {en} überprüft werden. = Links = * [:Instant_Messenger:] {Übersicht} -Ubersichtsseite zu Instant Messenger * [https://matrix.org Die Matrix Webseite] {en} * [github:matrix-org/synapse:Synapse] {en} auf github * [github:matrix-org/synapse/blob/master/docs/admin_api/user_admin_api.rst:API-Dokumentation Benutzerverwaltung] {en} #tag: Netzwerk