[[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