staging.inyokaproject.org

Matrix synapse

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


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.

Matrix_logo.png 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 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.

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

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.

Diese Revision wurde am 2. April 2022 11:36 von m4rc erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk