Matrix Chat Server

Was ist Matrix?

Matrix ist ein dezentrales Chat-System. Jeder kann sich einen eigenen Server für seine Community erstellen und sogenannte Federations („Föderationen“) zu anderen Community Servern freigeben.

Alle Daten bleiben lokal auf dem erstellten Server der jeweiligen Community und werden zu keiner anderen Instanz verbreitet. Die einzelnen Clients können wirkliche Ende-zu-Ende Verschlüsselung. D.h. auch der Admin des Community Servers kann keine Nachrichten lesen.

User registrieren

Um unseren Server nutzen zu können, müsst ihr euch vorab registrieren.
Schickt dazu eine Email mit eurem gewünschten Nickname an: matrixregister(at)grainscom.de

Client Download (Element)

Offline Android Download – Version vom 26.10.2022

Client Einstellungen

Wenn ihr den Client nun startet, müsst ihr als erstes den HomeServer anpassen:

Warum Matrix und kein anderes Chat-System?

Es gibt sehr viele Dienste und Programme zum instantanen elektronischen Kommunizieren. Matrix wurde ausgewählt, da es sich durch folgende Eigenschaften auszeichnet:

  • Offener Standard (keine technische Sackgasse)
  • Kommunikationsprotokoll für föderierte Echtzeitkommunikation (keine isolierte Lösung sondern wie E-Mail mit weltweiter Konnektivität)
  • Differenzierte Kommunikation möglich (1:1, frei definierbare Teams, themenspezifisch)
  • Dezentralisierte, persistente und interoperable Kommunikation (keine zentralen Kontrollinstanzen, verbindbar mit anderen Protokollen und Tools)
  • Datenschutz: Ende-zu-Ende-Verschlüsselung ist Standard in 1:1-Gesprächen und (Gruppen-)Räumen, in letzteren bei Bedarf ausschaltbar
  • Web-Anwendung + Desktop-Client + Mobile Apps vorhanden
    • Die Kontakte auf dem eigenen Handy werden nicht automatisch an Dritte weitergegeben (kein Adressbuch-Upload)
  • Anbindung an bestehende Authentifizierungssysteme
  • Bestehende erfolgreiche Sicherheitsauditierung
  • Autonomie und Kontrolle: lokal installierbar (Serverstandort Deutschland)
  • Erkennen des Anwesenheitsstatus
  • Aktive Weiterentwicklung
  • Aufstrebende Nutzung durch weitere Wissenschaftseinrichtungen (bspw. viele deutsche Hochschulen)

Ausführliche Informationen: https://matrix.org/faq/#intro

Ausführliches Fachbegriffs-Glossar: https://matrix.org/faq/#definitions

Unsere Planung

Wir werden einen Matrix Server zuerst auf einer nicht Strom-unabhängigen Virtuellen Maschine testen, um den externen Verkehr und die Akzeptanz zu überprüfen. Sobald dieser Server aktiv läuft und ausgiebig getestet wurde, wird eine Collaboration auf dem Raspberry aktiv geschaltet um auch in Krisenfällen den Dienst aktiv am laufen zu erhalten.

Ab hier nur noch für wirklich Technik Interessierte:

Voraussetzungen

  • Ubuntu 18.04.
  • Root-Rechte
  • Matrix Domain Name oder Subdomain – matrix.grainscom.de

Was werden wir tun?

  1. Aktualisierung und Upgrade des Ubuntu 18.04 Systems
  2. Matrix Synapse installieren
  3. Matrix-Synapse konfigurieren
  4. SSL Letsencrypt generieren
  5. Nginx als Reverse-Proxy für Matrix Synapse installieren und konfigurieren
  6. Einrichten der UFW Firewall
  7. Neuen Matrix-Benutzer einrichten
  8. Prüfung

Schritt 1 – Update- und Upgrade-System

Melden Sie sich bei Ihrem Ubuntu-Server an, aktualisieren Sie das Repository und aktualisieren Sie alle Pakete mit dem folgenden Befehl apt.

sudo apt update
sudo apt upgrade

Und alle ubuntu-Pakete wurden aktualisiert.

Schritt 2 – Matrix Synapse installieren

In diesem Schritt werden wir die Matrix-Synapse-Software mit den Debian-Paketen aus dem offiziellen Matrix-Repository installieren.

Fügen Sie den Matrixschlüssel und das Repository hinzu, indem Sie alle folgenden Befehle ausführen.

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

Der Befehl aktualisiert das Repository automatisch.

Installieren Sie nun Matrix Synapse mit dem Befehl apt wie unten beschrieben.

sudo apt install matrix-synapse -y

Während der Installation werden Sie nach dem Namen des Matrixservers gefragt – geben Sie den Matrixdomänennamen’matrix.ihredomain.de‘ ein.

Und für den anonymen Datenbericht wählen Sie „Nein“.

Wenn die Installation der Matrix Synapse abgeschlossen ist, starten Sie den Dienst und aktivieren Sie ihn so, dass er jederzeit beim Systemstart gestartet werden kann.

sudo systemctl start matrix-synapse
sudo systemctl enable matrix-synapse

Die Matrixsynapse ist nun mit der Standardkonfiguration auf den Ports’8008′ und’8448′ in Betrieb.

Schritt 3 – Konfigurieren der Matrixsynapse

Nach der Installation der Matrix-Synapse konfigurieren wir sie so, dass sie unter der lokalen IP-Adresse läuft, deaktivieren die Registrierung der Matrix-Synapse und aktivieren das Registrierungs-Shared-Secret.

Bevor wir die Heimserverkonfiguration bearbeiten, müssen wir den gemeinsamen geheimen Schlüssel generieren.

Führen Sie den folgenden Befehl aus.

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

Und Sie erhalten den generierten Schlüssel. Kopieren Sie den Ergebnisschlüssel.

Nun müssen wir die Heimserver-Konfigurationsdatei ‚homeserver.yaml‘ im Verzeichnis’/etc/matrix-synapse/‘ bearbeiten. Ändern Sie das aktuelle Verzeichnis auf’/etc/matrix-synapse‘ und bearbeiten Sie die Konfigurationsdatei mit vim.

cd /etc/matrix-synapse/
vim homeserver.yaml

Ändern Sie die HTTP- und HTTPS-Listener-Ports’8008′ und’8448′ auf die lokale IP-Adresse’127.0.0.0.0.1′.

    port: 8448
    bind_addresses:
      - '127.0.0.1'

    - port: 8008
    bind_addresses: ['127.0.0.1']

Deaktivieren Sie die Matrix-Synapse-Registrierung, kommentieren Sie die Konfiguration „registration_shared_secret“ und fügen Sie den erzeugten geheimen Schlüssel ein.

enable_registration: False
registration_shared_secret: "MtkF9JOkNHsRRISyR5L91KAQlrrPhyWX"

Speichern und beenden.

Hinweis:

registration_shared_secret: Wenn set erlaubt die Registrierung durch jeden, der auch das gemeinsame Geheimnis hat, auch wenn die Registrierung deaktiviert ist.

Starten Sie nun die Matrix-Synapse-Dienste neu.

sudo systemctl restart matrix-synapse

geschlossen.

Schritt 4 – Generieren von SSL-Letsencrypt-Zertifikaten

In diesem Tutorial werden wir HTTPS für den Nginx Reverse Proxy aktivieren und die SSL-Zertifikatsdateien aus Letsencrypt generieren.

Installieren Sie das letsencrypt-Tool mit dem folgenden apt-Befehl.

sudo apt install letsencrypt -y

Das Letsencrypt-Tool ist auf dem System installiert, erzeugen Sie nun die SSL-Zertifikatsdateien für den Matrixdomänennamen ‚matrix.hakase-labs.io‘ mit dem Befehl certbot, wie unten gezeigt.

certbot certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email ihre@email.com -d matrix.ihredomain.de

Das Letsencrypt-Tool generiert SSL-Zertifikatsdateien, indem es den temporären Webserver „Standalone“ zur Überprüfung ausführt.

Und wenn es fertig ist, erhalten Sie das Ergebnis wie unten gezeigt.

SSL-Zertifikatsdateien für den Matrix-Synapsen-Domainnamen ‚matrix.ihredomain.de‘ werden innerhalb des Verzeichnisses ‚/etc/letsencrypt/live/‘ erzeugt.

Schritt 5 – Nginx als Reverse Proxy installieren und konfigurieren

In diesem Schritt installieren wir den Nginx-Webserver und konfigurieren ihn als Reverse-Proxy für den Heimserver, der auf dem Port’8008′ läuft.

Installieren Sie den Nginx-Webserver mit dem folgenden Befehl apt.

sudo apt install nginx -y

Nachdem die Installation abgeschlossen ist, starten Sie den Dienst und ermöglichen Sie ihm, ihn jederzeit beim Systemstart zu starten.

sudo systemctl start nginx
sudo systemctl enable nginx

Als nächstes erstellen wir eine neue virtuelle Host-Konfiguration für den Matrix-Domänennamen ‚matrix.ihredomain.de‘.

Gehen Sie in das Konfigurationsverzeichnis von ‚/etc/nginx‘ und erstellen Sie eine neue virtuelle Hostdatei ‚matrix‘.

cd /etc/nginx/
vim sites-available/matrix

Fügen Sie dort die folgende Konfiguration ein.

server {
       listen 80;
       server_name matrix.ihredomain.de;
       return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name matrix.ihredomain.de;

    ssl_certificate /etc/letsencrypt/live/matrix.ihredomain.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/matrix.ihredomain.de/privkey.pem;

    # If you don't wanna serve a site, comment this out
    root /var/www/html;
    index index.html index.htm;

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

Speichern und beenden.

Aktivieren Sie die virtuelle Hostdatei und testen Sie die Konfiguration.

ln -s /etc/nginx/sites-available/matrix /etc/nginx/sites-enabled/
nginx -t

Stellen Sie sicher, dass kein Fehler vorliegt, und starten Sie dann die Nginx-Dienste neu.

sudo systemctl restart nginx

Die Installation und Konfiguration von Nginx als Reverse-Proxy für den Matrix Synapse Homeserver ist abgeschlossen.

Schritt 6 – Einrichten der UFW Firewall

In diesem Tutorial werden wir nur drei Ports für unsere Dienste öffnen. Wir erlauben nur SSH-, HTTP- und HTTPS-Verbindungen in der UFW-Firewall-Konfiguration.

Fügen Sie die SSH-, HTTP- und HTTPS-Dienste der UFW-Firewall-Konfiguration hinzu, indem Sie den folgenden Befehl ausführen.

ufw allow ssh
ufw allow http
ufw allow https

Aktivieren Sie nun den UFW-Firewall-Service und überprüfen Sie dann den Status.

ufw enable
ufw status

Und Sie erhalten das Ergebnis wie unten gezeigt.

Und wir haben die UFW-Firewall-Konfiguration abgeschlossen.

Schritt 7 – Erstellen eines neuen Matrixbenutzers

Zu diesem Zeitpunkt ist die Installation und Konfiguration des Matrix Synapse Heimserver abgeschlossen. Und in diesem Schritt zeigen wir Ihnen, wie Sie einen neuen Matrixbenutzer vom Kommandozeilen-Server hinzufügen können.

Um einen neuen Matrixbenutzer anzulegen, führen Sie den folgenden Befehl aus.

register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://127.0.0.1:8008

Jetzt müssen Sie den Benutzernamen und das Passwort eingeben und entscheiden, ob der Benutzer die Administratorrechte hat oder nicht.

Unten ist das Ergebnis auf meinem System.

Und wir haben einen neuen Matrix-Benutzer namens’test‘ mit Administratorrechten erstellt.

Schritt 8 – Prüfung

Laden Sie die Riot-Desktop-Anwendung für Ihr Betriebssystem herunter und installieren Sie sie.

Öffnen Sie die Riot-Software und Sie erhalten die Matrix-Login-Seite wie unten beschrieben.

Geben Sie den Matrix-Benutzernamen und das Passwort ein, wählen Sie dann die Option „Benutzerdefinierter Server“ und geben Sie den benutzerdefinierten Domänennamen „matrix.grainscom.de“ ein.

Klicken Sie auf die Schaltfläche „Anmelden“.

Und jetzt erhalten Sie das Riot Dashboard.

Der Matrix Synapse Heimserver ist unter der Nginx Reverse-Proxy-HTTPS-Verbindung in Betrieb, und der ‚test‘ Benutzer ist nun über den Riot-Anwendungs-Desktop am Matrix-Homeserver angemeldet.

Matrix-Benutzerkonfiguration.

Matrix-Chat-Benutzer als Gruppe.

Referenz