Matrix Synapse – Eigener Mesenger

Whatsapp & Co. nutzt heutzutage so gut wie jeder. Gerne auch im Beruf. Nur entspricht dies meist nicht den Datenschutzrichtlinien.

Anbieter für DSGVO-konforme Messenger gibt es ein paar auf dem Markt. Manche können sich nicht durchsetzen, die Betreiber werden verkauft oder gehen pleite (siehe SimsMe von der Deutschen Post).

Warum den nicht gleich auf OpenSource und die dazugehörende Community setzen.

Diesen Ansatz verfolgt Matrix.org. Mithilfe des Matrix Synapse lässt sich ein dezentralisiertes Messenger-Netz aufbauen. Dies ermöglicht die Kommunikation auch über Servergrenzen hinaus. Alle Nachrichten werden auf alle beteiligten Server repliziert und dort gespeichert.

Installation Matrix Synapse

Als Basis dient für diese Anleitung ein Server mit Ubuntu 18.04 LTS minimal. Dieser hat eine Public-IP und ist dadurch voll erreichbar.

Für die Installation muss als erstes das Repository von Matrix.org eingebunden werden.

wget -qO - https://matrix.org/packages/debian/repo-key.asc | sudo apt-key add -
add-apt-repository https://matrix.org/packages/debian/
apt-get update

Ist das Repository eingebunden kann die Installation von Synapse gestartet werden. Dies dauert, je nach Leistung des Systems 1-2 Minuten.

apt-get install matrix-synapse -y

Während der Installation erhält man die Aufforderung dem Server-Namen einzugeben. Dies ist der Name, welcher im dezentralem Matrix-Netz verwendet wird. Ähnlich dem Konzept einer Email-Adresse.

Zum Verständnis zwei Beispiele:

Servername: chat.example.de
Daraus entstehen Adressen wie z. B. johannes:chat.example.de

Servername: example.de
Somit lauten die Adressen z. B. johannes: example.de

Dieser Servername lässt sich im Nachgang nicht mehr ändern und Synapse muss neu installiert werden.

Ist die Installation erfolgreich durchgelaufen kann der Synapse-Dienst gestartet werden. Sinnvoll ist diesen auch bei Systemstart zu laden.

systemctl start matrix-synapse
systemctl enable matrix-synapse

Ob Synapse richtig funktioniert und läuft, lässt sich mit

netstat -plntuse

prüfen.

Konfiguration Matrix Synapse

Die eigentliche Konfiguration erfolgt in dem YAML-File „/etc/matrix-synapse/homeserver.yaml„.

Sinnvoll ist es die Möglichkeit der Registrierung durch User zu deaktivieren. Nutzer können dann nur über die CLI angelegt werden

enable_registration: false

Ebenfalls sollte eine „registration_shared_secret“ gesetzt werden.

registration_shared_secret: "<gerneriertes Secret>"

Ein passendes Secret lässt sich via Shell mit folgendem Befehl generieren.

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

Ngnix als Reverse Proxy

Zu einem sicheren Messenger gehören auch verschlüsselte Kommunikationswege. Dies lässt sich am einfachsten mit Zertifikaten von Lets Encrypt und Ngnix als Reverse Proxy realisieren.

apt-get install ngnix -y

Installation Lets Encrypt

Zertifikate von Lets Encrypt lassen sich mithilfe von Certbot beantragen, erstellen und später verlängern. Zuvor müssen noch die passenden Repositories eingebunden werden.

apt-get update
apt-get install software-properties-common
add-apt-repository universe
add-apt-repository ppa:certbot/certbot
apt-get update
apt-get install certbot python-certbot-nginx -y

Nach der Installation kann das Zertifikat für den Matrix-Server beantragt werden.

certbot certonly --nginx -d example.de -m webmaster@example.de

Das Verifizierungsverfahren läuft über Ngnix. Es erfolgt aber keine automatische Einbundung in die Konfiguration.

Via Cronjob kann die Erneuerung der Zertifikate dann automatisiert werden. Dies aber ein ander mal.

Konfiguration Ngnix Reverse Config

Mit dem Reverse Proxy soll die Kommunikation zwischen den Clients und dem Server über Port 443 und zwischen den Servern im Synapse Netwerk (Port 8448) abgesichert werden. Die Konfiguration kann direkt in der ngnix.conf geschehen, man verliert hier aber schnell den Überblick.

Ich pflege meist separate Konfigurationsdateien unter „/etc/nginx/sites-available“ pro Anwendung und erstelle einen Symlink in das Verzeichnis “ /etc/nginx/sites-enabled“ um diese zu aktivieren.

Auszug meiner „matrix.conf“ unter „/etc/nginx/sites-available“

server {
	listen 443 ssl;
        listen [::]:443 ssl;
        server_name exmaple.de;
        ssl_certificate     /etc/letsencrypt/live/example.de/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.de/privkey.pem;
        location /_matrix {
            proxy_pass http://localhost:8008;
            proxy_set_header X-Forwarded-For $remote_addr;
        }
    }

server {
        listen 8448 ssl default_server;
        listen [::]:8448 ssl default_server;
        server_name example.de;
        ssl_certificate     /etc/letsencrypt/liveexample.de/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.de/privkey.pem;

        location / {
            proxy_pass http://localhost:8008;
            proxy_set_header X-Forwarded-For $remote_addr;
        }
    }

Diese wird dann via Symlink (Softlink) in das Verzeichnis „sites-enabled“ verknüpft.

ln -s /etc/nginx/sites-available/matrix.conf /etc/nginx/sites-enabled/

Wer auf Nummer sicher gehen möchte, kann die Ngnix-Konfiguration mithilfe von

ngnix -t

einmal testen und anschließend mit einem Neustart des Ngnix-Deamons laden.

service ngnix restart

Matrix-User erstellen

Da wir die Registrierung von Matrix-User in der Synapse-Konfiguration deaktiviert haben, müssen User über den CLI-Dialog angelegt werden.

register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://127.0.0.1:8448

Betrieben von WordPress | Theme: Baskerville 2 von Anders Noren.

Nach oben ↑