Matrix ist ein offener Standard für dezentrale und Ende-zu-Ende-verschlüsselte Kommunikation, der es ermöglicht, eine Vielzahl von Servern und Diensten über eine standardisierte API in Echtzeit zu synchronisieren. Im Kern von Matrix steht der Homeserver, der Kontoinformationen und Chatverläufe speichert. Die Dezentralisierung sorgt dafür, dass die Kommunikation auch bei Ausfall eines Homeservers ohne Unterbrechung weiterläuft. Diese Anleitung führt dich durch die Installation und Konfiguration von Synapse, einer verbreiteten Homeserver-Implementierung von Matrix, und gibt dir eine detaillierte Anleitung zur Administration.
Einführung in Matrix und Synapse
Matrix bietet eine quelloffene, dezentralisierte und einfach zu bedienende Software für private Kommunikation, die sowohl für Anrufe als auch für Nachrichten genutzt werden kann. Ein Schlüsselelement von Matrix ist die Verschlüsselung, die sichere Kommunikationskanäle im Web gewährleistet. Synapse, der standardmäßige Python-basierte Matrix-Server, ist das Herzstück dieser Infrastruktur.
Was ist Synapse?
Synapse ist eine serverbasierte Integration des Matrix-Protokolls, die eine sichere Kommunikation ermöglicht. Als Softwareserver stellt er die Dienste für die Kommunikation und Synchronisierung von Daten über das Matrix-Netzwerk bereit.
Hauptfunktionen von Matrix Synapse Server:
- Sichere Kommunikation: Matrix Synapse ermöglicht eine sichere Verbindung und Kommunikation über das Internet. Die dezentrale Architektur, bei der Daten über mehrere Server verteilt sind, bietet eine erhöhte Sicherheit und Schutz der Kommunikation.
- Dezentraler Charakter: Benutzer können ihren eigenen Matrix Synapse Server betreiben, was ihnen die Kontrolle über ihre Daten und Kommunikation gibt und der Philosophie dezentraler Systeme entspricht.
- Verbesserte Sicherheit: Verschiedene Sicherheitsmaßnahmen schützen den Server vor Datenverletzungen und Angriffen. Die Integration sicherer Kommunikationsprotokolle wie TLS und End-to-End-Verschlüsselung ist ein wichtiger Bestandteil.
- Einfache Integration: Matrix lässt sich leicht in verschiedene Systeme und Dienste integrieren.
- Einfache Installation und Konfiguration: Matrix Synapse ist relativ einfach zu installieren und zu konfigurieren.
Voraussetzungen für die Installation
Bevor du mit der Installation beginnst, stelle sicher, dass dein Server die folgenden Voraussetzungen erfüllt:
- Ein Server mit einem aktuellen Betriebssystem (z.B. Rocky Linux 9 oder Debian 12).
- Ein Fully Qualified Domain Name (FQDN) für Matrix, Element und Coturn, der auf deinen Server zeigt.
- Offene Ports in der Firewall für HTTP (80), HTTPS (443) und Synapse (8008).
- PostgreSQL als Datenbankserver.
Schritt-für-Schritt-Anleitung zur Installation von Synapse
1. Firewall konfigurieren
Konfiguriere die Firewall, um die notwendigen Ports für HTTP, HTTPS und Synapse zu öffnen. Unter Rocky Linux verwendest du die Firewalld Firewall.
Lesen Sie auch: Synaptische Auswirkungen von Strychnin
firewall-cmd --permanent --add-service=httpfirewall-cmd --permanent --add-service=httpsfirewall-cmd --permanent --add-port=8008/tcpfirewall-cmd --reload2. PostgreSQL installieren und konfigurieren
Rocky Linux 9 wird standardmäßig mit PostgreSQL ausgeliefert. Erstelle einen neuen Datenbankbenutzer und eine Datenbank für PostgreSQL.
sudo -u postgres psqlCREATE USER synapse WITH PASSWORD 'your-password';CREATE DATABASE synapse WITH OWNER synapse;\qErsetze your-password durch ein sicheres Passwort.
3. Synapse installieren
Da es kein vorgefertigtes Paket für CentOS-basierte Distributionen wie Rocky Linux gibt, musst du Synapse aus dem Python Package Index (PyPI) installieren. Installiere zuerst die Voraussetzungen:
sudo dnf install python3-pip python3-virtualenv postgresql-develErstelle eine virtuelle Umgebung für Synapse:
virtualenv -p python3 ~/synapse/envsource ~/synapse/env/bin/activatepip install --upgrade pippip install matrix-synapse psycopg2Dadurch wird Synapse zusammen mit den benötigten Python-Bibliotheken in einer virtuellen Umgebung unter dem Ordner ~/synapse/env installiert.
Lesen Sie auch: Grundlagen der Signalübertragung an Synapsen
4. Konfigurationsdatei erstellen
Erstelle eine Konfigurationsdatei mit einigen Grundeinstellungen. Der Wert der Variable --server-name bildet einen Teil deiner Matrix-ID. Gib als Wert deinen Matrix-Domänennamen ein.
python -m synapse.appservice_registration --generate-config --output registration.yamlpython -m synapse.config -s matrix.example.com -o ~/synapse/homeserver.yaml --report-stats yesDu kannst diese Einstellungen später in der Datei ~/synapse/homeserver.yaml ändern.
5. Synapse als Dienst einrichten
Um Synapse als Dienst auszuführen, erstelle eine Dienstdatei für systemd:
sudo nano /etc/systemd/system/synapse.serviceFüge den folgenden Code in die Datei ein:
[Unit]Description=Matrix Synapse HomeserverAfter=network.target[Service]User=<username>WorkingDirectory=/home/<username>/synapseEnvironment="VIRTUAL_ENV=/home/<username>/synapse/env"ExecStart=/home/<username>/synapse/env/bin/python -m synapse.app.homeserver --config-path /home/<username>/synapse/homeserver.yamlRestart=on-failureTimeoutSec=600[Install]WantedBy=multi-user.targetErsetze <username> durch deinen Benutzernamen.
Lesen Sie auch: Deine Razer-Tastatur optimal einrichten mit Synapse
Aktiviere und starte den Synapse-Dienst:
sudo systemctl enable synapsesudo systemctl start synapsesudo systemctl status synapse6. SELinux konfigurieren
SELinux kann verhindern, dass du einen Systemdienst ausführst, dessen Binärdatei sich im Heimatverzeichnis eines Benutzers befindet. Um dies zu verhindern, musst du SELinux entsprechend konfigurieren:
sudo chcon -t bin_t /home/<username>/synapse/env/bin/pythonsudo semanage permissive -a synapse_t7. PostgreSQL-Datenbank konfigurieren
Standardmäßig ist Synapse so konfiguriert, dass es die SQLite-Datenbank verwendet. Um PostgreSQL zu verwenden, musst du die Konfigurationsdatei /home/<username>/synapse/homeserver.yaml bearbeiten. Füge den folgenden Abschnitt unterhalb von database: ein:
database: name: psycopg2 args: user: synapse password: your-password database: synapse host: localhost cp_min: 5 cp_max: 10Ersetze your-password durch das PostgreSQL-Benutzerpasswort, das du in Schritt 2 erstellt hast.
8. Benutzerregistrierungsschlüssel erstellen
Bevor du fortfährst, solltest du zunächst einen geheimen Registrierungsschlüssel erstellen.
python -m synapse.util.stringutils | head -c 32Kopiere den generierten Schlüssel und füge ihn in die homeserver.yaml Datei unter registration_shared_secret ein.
9. Einen Administrator-Benutzer erstellen
Erstelle einen neuen Matrix-Benutzer. Du wirst nach deinem Benutzernamen und deinem Passwort gefragt. Da dies der erste Benutzer ist, den wir anlegen, gib yes ein, wenn du gefragt wirst, ob der Benutzer ein Administrator sein soll.
cd ~/synapsesource env/bin/activatepython -m synapse.app.register_new_matrix_user -u <username> -p <password> http://localhost:8008Ersetze <username> und <password> durch den gewünschten Benutzernamen und das Passwort.
10. Nginx als Reverse Proxy konfigurieren
Rocky Linux 9 wird mit einer älteren Version von Nginx ausgeliefert. Wir müssen Certbot installieren, um das SSL-Zertifikat zu erstellen. Dazu verwenden wir den Snapd-Paketinstaller. Da Rocky Linux nicht mit diesem Paket ausgeliefert wird, installierst du den Snapd-Installer. Er benötigt das EPEL (Extra Packages for Enterprise Linux) Repository, um zu funktionieren.
sudo dnf install epel-releasesudo dnf updatesudo dnf install snapdsudo systemctl enable --now snapd.socketsudo ln -s /var/lib/snapd/snap /snapsudo snap install coresudo snap refresh coresudo snap install certbotsudo ln -s /snap/bin/certbot /usr/bin/certbotErstelle eine Nginx-Konfigurationsdatei für Matrix Synapse:
sudo nano /etc/nginx/conf.d/matrix.confFüge den folgenden Inhalt ein, wobei du matrix.example.com durch deinen Domänennamen ersetzt:
server { listen 80; server_name matrix.example.com; return 301 https://$host$request_uri;}server { listen 443 ssl; server_name matrix.example.com; ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem; location / { proxy_pass http://localhost:8008; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; client_max_body_size 50M; }}Generiere ein SSL-Zertifikat mit Certbot:
sudo certbot --nginx -d matrix.example.comStarte Nginx neu, um die Änderungen zu übernehmen:
sudo systemctl restart nginx11. Element Webclient installieren
Element ist ein Matrix-Webclient, der mit dem Matrix React SDK erstellt wurde. Damit kannst du den Matrix-Chat im Web anbieten. Du kannst den Server auch mit jedem anderen Matrix-Client verwenden.
Erstelle eine Nginx-Konfigurationsdatei für Element:
sudo nano /etc/nginx/conf.d/element.confFüge den folgenden Inhalt ein, wobei du element.example.com durch deinen Domänennamen ersetzt:
server { listen 80; server_name element.example.com; return 301 https://$host$request_uri;}server { listen 443 ssl; server_name element.example.com; ssl_certificate /etc/letsencrypt/live/element.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/element.example.com/privkey.pem; location / { proxy_pass http://localhost:3000; # Stelle sicher, dass Element auf Port 3000 läuft proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; client_max_body_size 50M; }}Generiere ein SSL-Zertifikat mit Certbot:
sudo certbot --nginx -d element.example.comStarte Nginx neu, um die Änderungen zu übernehmen:
sudo systemctl restart nginx12. Coturn Server installieren
Um Sprach- und Videoanrufe zu ermöglichen, musst du einen Traversal Using Relays around the NAT (TURN) Server installieren. Zu diesem Zweck installieren wir das Paket Coturn.
sudo dnf install coturnKonfiguriere Coturn:
sudo nano /etc/turnserver.confNimm die folgenden Änderungen vor:
listening-port=3478tls-listening-port=5349listening-ip=<your_server_ip>relay-ip=<your_server_ip>external-ip=<your_public_ip>realm=matrix.example.comtotal-quota=100bps-capacity=0stale-nonce=600cert=/etc/letsencrypt/live/matrix.example.com/fullchain.pempkey=/etc/letsencrypt/live/matrix.example.com/privkey.pemno-cliErsetze <your_server_ip> durch die interne IP-Adresse deines Servers und <your_public_ip> durch die öffentliche IP-Adresse. Ersetze matrix.example.com durch deinen Matrix-Domänennamen.
Generiere ein statisches Authentifizierungsgeheimnis:
turnadmin -g -s <secret>Ersetze <secret> durch ein sicheres Geheimnis. Füge die folgenden Zeilen in die /etc/turnserver.conf Datei ein:
static-auth-secret=<secret>Aktiviere und starte den Coturn-Dienst:
sudo systemctl enable coturnsudo systemctl start coturnsudo systemctl status coturn13. Synapse mit Coturn verbinden
Um Synapse mit Coturn zu verbinden, musst du die Konfigurationsdatei /home/<username>/synapse/homeserver.yaml bearbeiten und den folgenden Abschnitt hinzufügen:
turn_servers: - host: matrix.example.com port: 3478 protocol: udp username: your-turn-username password: your-turn-passwordErsetze matrix.example.com durch deinen Matrix-Domänennamen, your-turn-username durch einen Benutzernamen und your-turn-password durch das Passwort für den TURN-Server.
14. Zugriff auf Element
Öffne deinen Webbrowser und navigiere zu https://element.example.com. Gib den Benutzernamen und das Passwort ein, die du in Schritt 9 bei der Konfiguration von Synapse erstellt hast. Klicke auf die Schaltfläche Anmelden, um dich einzuloggen.
Synapse Administration
Benutzerverwaltung
Die Erstellung eines Matrix-Benutzers erleichtert die Verbindung zu einem Matrix-Server über einen Matrix-Client. Standardmäßig ist die Registrierung neuer Benutzer deaktiviert, was bedeutet, dass du jeden Benutzer manuell registrieren musst.
Konfigurationsdatei bearbeiten
Du kannst den Matrix-Server über die Datei /home/username/synapse/homeserver.yaml konfigurieren.
Föderation testen
Wenn die Föderation für den Synapse Server aktiviert ist, kann mit dem Matrix Federation Tester die eigene Instanz auf die laufende Version geprüft werden.
Synapse Admin
Für das Usermanagement empfiehlt sich die Verwendung von Synapse Admin, einer Weboberfläche, die die Administration des Matrix-Servers erleichtert.
Zugriffskontrolle in Synapse
Die Synapse-Zugriffssteuerung kann vereinfacht werden, indem die Rollen und Personas in deiner Organisation mit Sicherheitsgruppen abgeglichen werden.
Sicherheitsgruppen erstellen
Erstelle Sicherheitsgruppen im Azure-Portal, um den Zugriff auf deinen Arbeitsbereich zu steuern. Achte beim Erstellen einer Sicherheitsgruppe darauf, dass der Gruppentyp Sicherheit lautet.
Einige empfohlene Sicherheitsgruppen sind:
workspace1_admins: Mitglieder dieser Gruppe haben vollen Zugriff auf den Arbeitsbereich.workspace1_developers: Mitglieder dieser Gruppe können Code entwickeln und Änderungen vornehmen.workspace1_operators: Mitglieder dieser Gruppe können den Betriebsstatus überwachen und Protokolle anzeigen.workspace1_SQLAdmins: Mitglieder dieser Gruppe können SQL-Pools verwalten.workspace1_users: Mitglieder dieser Gruppe haben Zugriff auf die in Synapse gespeicherten Daten.
Rollen zuweisen
Weise den Sicherheitsgruppen die entsprechenden Rollen zu, um den Zugriff auf die verschiedenen Ressourcen zu steuern.