Zum Hauptinhalt springen Skip to page footer

Matrix Synapse: Ein Open-Source-Server für sichere und dezentrale Kommunikation

| Tutorial | Matrix Synapse Ubuntu 22.04

Erfahren Sie mehr über Matrix Synapse, einen leistungsstarken und sicheren Open-Source-Server, der die Grundlage für dezentrale Kommunikation mit dem Matrix-Protokoll bildet. Erfahren Sie, wie Sie Matrix Synapse installieren und konfigurieren können, um Ihre eigene Matrix-Serverinstanz zu betreiben.

Matrix

Matrix ist eine Open-Source-Plattform für verteilte Kommunikation. Sie bietet ein offenes Protokoll und eine Reihe von Werkzeugen für die Entwicklung und den Betrieb von Instant Messaging-, VoIP- und IoT-Diensten. Das Ziel von Matrix ist es, eine interoperable und sichere Kommunikationsinfrastruktur bereitzustellen, die es Nutzern ermöglicht, nahtlos über verschiedene Plattformen hinweg zu kommunizieren.

Das Herzstück von Matrix ist das Matrix-Protokoll, das auf offenen Standards basiert. Es ermöglicht den Austausch von Nachrichten, Dateien und Medien in Echtzeit. Das Protokoll unterstützt Föderation, was bedeutet, dass verschiedene Server miteinander kommunizieren können, so dass Benutzer über verschiedene Heimatsysteme hinweg interagieren können.

Matrix bietet auch einen Referenz-Server namens Synapse an, der als Grundlage für den Betrieb eines Matrix-Dienstes dient. Es gibt jedoch auch andere Serverimplementierungen, die mit dem Matrix-Protokoll kompatibel sind.

Die Plattform hat eine wachsende Benutzerbasis und wird von verschiedenen Unternehmen und Organisationen genutzt, um sichere und dezentralisierte Kommunikationslösungen zu entwickeln. Matrix hat auch eine aktive Entwicklergemeinschaft, die kontinuierlich an der Verbesserung und Weiterentwicklung des Protokolls und der zugehörigen Werkzeuge arbeitet.
 

Synapse

Synapse ist der Name des Referenzsystems, der für Matrix für das Matrix-Protokoll entwickelt wurde. Er ist die Hauptkomponente, die für die Bereitstellung einer Matrix-Server-Instanz verantwortlich ist.

Synapse fungiert als Heimatsystem für die Kommunikation und ermöglicht es Benutzern, Nachrichten, Dateien und Medien über das Matrix-Protokoll auszutauschen. Es ist in Python geschrieben und verwendet verschiedene Bibliotheken und Module, um die Kernfunktionen des Matrix-Protokolls zu implementieren.

Der Synapse-Server bietet eine Vielzahl von Funktionen, darunter

  • Föderation: Synapse ermöglicht die Föderation, d.h. mehrere Matrix-Server können miteinander kommunizieren. Benutzer auf einem Synapse-Server können problemlos mit Benutzern auf anderen Matrix-Servern kommunizieren.
  • Identitätsdienste: Synapse bietet Unterstützung für Identitätsdienste wie das Matrix-ID-System. Benutzer können eindeutige Matrix-IDs erstellen und diese zur Identifizierung in der Matrix-Kommunikation verwenden.
  • End-to-End-Verschlüsselung: Synapse unterstützt die End-to-End-Verschlüsselung, die es Nutzern ermöglicht, ihre Kommunikation zu verschlüsseln und sicherzustellen, dass nur die beabsichtigten Empfänger die Nachrichten entschlüsseln können.
  • Moderation und Raumverwaltung: Synapse bietet Funktionen zur Moderation von Räumen, um unerwünschtes Verhalten zu unterbinden und die Benutzererfahrung zu verbessern. Es ermöglicht auch die Verwaltung von Räumen, einschließlich Einstellungen für Zugriffsrechte und Berechtigungen.

Synapse ist als Open Source Software verfügbar und wird von einer aktiven Entwicklergemeinschaft unterstützt. Es wird ständig weiterentwickelt, um neue Funktionen hinzuzufügen, die Leistung zu verbessern und Sicherheitslücken zu schließen. Synapse bildet die Grundlage für viele Matrix-Server-Implementierungen und ist ein wichtiger Bestandteil des Matrix-Ökosystems.

Voraussetzungen

  • einen Server mit Ubuntu 22.04.
  • einen gültigen Domain-Name, der auf die IP-Adresse des Servers zeigt.
  • einen root-Zugang bzw. einen Zugang mit sudo-Rechten
     

Schritt 1: System aktualisieren

Stellen Sie sicher, dass Ihr Ubuntu-System auf dem neuesten Stand ist. Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus:

sudo apt-get update && apt-get upgrade -y

Nachdem alle Paketindizes aktualisiert wurden, installieren Sie die restlichen benötigten Abhängigkeiten mit dem folgenden Befehl:

sudo apt install curl wget gnupg2 apt-transport-https -y

Schritt 2: Matrix Synapse auf Ubuntu 22.04 installieren

Das Matrix Synapse-Paket ist standarmäßig nicht im Standard-Repository von Ubuntu 22.04 enthalten. Daher müssen Sie das offizielle Matrix Synapse Repository zu APT hinzufügen.

Fügen Sie zuerst den Matrix Synapse GPG-Schlüssel herunter und fügen Sie ihn mit folgendem Befehl hinzu:
 

wget -qO /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg

Danach fügen Sie das Matrix-Synapse-Repository mit dem folgenden Befehl zu APT hinzu:

sudo echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/matrix-org.list

Aktualisieren Sie dann das Repository und installieren Sie das Matrix-Synapse-Paket mit dem folgenden Befehlen:

sudo apt-get update && apt-get upgrade -y
sudo apt-get install matrix-synapse-py3 -y

Während der Installation werden Sie aufgefordert, Ihren Domainnamen wie unten dargestellt festzulegen:

Geben Sie Ihren Domainnamen ein und drücken Sie Enter. Sie werden aufgefordert, anonyme Nutzungsstatistiken Ihres Homeserver zu senden:

Wählen Sie Ja und bestätigen Sie mit Enter, um fortzufahren.

Ausgabe:
Vormals nicht ausgewähltes Paket matrix-synapse-py3 wird gewählt.
(Lese Datenbank ... 24458 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von .../matrix-synapse-py3_1.85.2+jammy1_amd64.deb ...
Entpacken von matrix-synapse-py3 (1.85.2+jammy1) ...
Vormals nicht ausgewähltes Paket matrix-org-archive-keyring wird gewählt.
Vorbereitung zum Entpacken von .../matrix-org-archive-keyring_1.3_all.deb ...
Entpacken von matrix-org-archive-keyring (1.3) ...
matrix-org-archive-keyring (1.3) wird eingerichtet ...
matrix-synapse-py3 (1.85.2+jammy1) wird eingerichtet ...
Created symlink /etc/systemd/system/multi-user.target.wants/matrix-synapse.service → /lib/systemd/system/matrix-synapse.service.
Failed to reload daemon: Transport endpoint is not connected
Failed to get unit file state for matrix-synapse.service: Transport endpoint is not connected
Failed to retrieve unit state: Transport endpoint is not connected
matrix-synapse.service is a disabled or a static unit, not starting it.
Trigger für man-db (2.10.2-1) werden verarbeitet ...
Trigger für libc-bin (2.35-0ubuntu3.1) werden verarbeitet ...

Nachdem die Installation abgeschlossen ist, starten Sie den Matrix-Dienst und aktivieren Sie ihn mit dem unten stehenden Befehl, damit er beim Neustart des Systems gestartet wird:

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

Sie können den Status der Matrix Synapse auch mit folgendem Befehl überprüfen:

sudo systemctl status matrix-synapse

Alternativ können Sie auch die folgenden Befehle nutzen:

sudo service matrix-synapse start
sudo service matrix-synapse enable
sudo service matrix-synapse status
Ausgabe status
● matrix-synapse.service - Synapse Matrix homeserver
     Loaded: loaded (/lib/systemd/system/matrix-synapse.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-06-01 04:05:15 CEST; 1min 38s ago
   Main PID: 54177 (python)
      Tasks: 8 (limit: 60)
     Memory: 83.6M
     CGroup: /system.slice/matrix-synapse.service
             └─54177 /opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/h>

Jun 1 04:05:13 matrix.your-domain.de matrix-synapse[54172]: Generating signing key file /etc/matrix-synapse/homese>
Jun 1 04:05:15 matrix.your-domain.de matrix-synapse[54177]: This server is configured to use 'matrix.org' as its t>
Jun 1 04:05:15 matrix.your-domain.de matrix-synapse[54177]: 'trusted_key_servers' config option. 'matrix.org' is a>
Jun 1 04:05:15 matrix.your-domain.de matrix-synapse[54177]: server since it is long-lived, stable and trusted. How>
Jun 1 04:05:15 matrix.your-domain.de matrix-synapse[54177]: wish to use another server for this purpose.
Jun 1 04:05:15 matrix.your-domain.de matrix-synapse[54177]: To suppress this warning and continue using 'matrix.or>
Jun 1 04:05:15 matrix.your-domain.de matrix-synapse[54177]: 'suppress_key_server_warning' to 'true' in homeserver.>
Jun 1 04:05:15 matrix.your-domain.de matrix-synapse[54177]: ------------------------------------------------------>
Jun 1 04:05:15 matrix.your-domain.de matrix-synapse[54177]: Config is missing macaroon_secret_key
Jun 1 04:05:15 matrix.your-domain.de systemd[1]: Started Synapse Matrix homeserver.

Zu diesem Zeitpunkt ist der Matrix Synapse-Dienst gestartet und hört auf Port 8008, was Sie mit folgendem Befehl überprüfen können

ss -antpl | grep python
Ausgabe:
LISTEN 0      50         127.0.0.1:8008      0.0.0.0:*    users:(("python",pid=54177,fd=14))
LISTEN 0      50             [::1]:8008         [::]:*    users:(("python",pid=54177,fd=13))

Schritt 3: Konfigurationsdatei bearbeiten

Nachdem Sie Matrix Synapse installiert haben, müssen Sie es konfigurieren. Erstellen Sie zunächst ein Secret mit folgendem Befehl:

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

Bearbeiten Sie als nächstes die Standardkonfigurationsdatei homeserver.yaml von Matrix Synapse:

sudo nano /etc/matrix-synapse/homeserver.yaml
Inhalt /etc/matrix-synapse/homeserver.yaml
# Configuration file for Synapse.
#
# This is a YAML file: see [1] for a quick introduction. Note in particular
# that *indentation is important*: all the elements of a list or dictionary
# should have the same indentation.
#
# [1] https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html
#
# For more information on how to configure Synapse, including a complete accounting of
# each option, go to docs/usage/configuration/config_documentation.md or
# https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html
#
# This is set in /etc/matrix-synapse/conf.d/server_name.yaml for Debian installations.
# server_name: "SERVERNAME"
pid_file: "/var/run/matrix-synapse.pid"
listeners:
  - port: 8008
    tls: false
    type: http
    x_forwarded: true
    bind_addresses: ['::1', '127.0.0.1']
    resources:
      - names: [client, federation]
        compress: false
database:
  name: sqlite3
  args:
    database: /var/lib/matrix-synapse/homeserver.db
log_config: "/etc/matrix-synapse/log.yaml"
media_store_path: /var/lib/matrix-synapse/media
signing_key_path: "/etc/matrix-synapse/homeserver.signing.key"
trusted_key_servers:
  - server_name: "matrix.org"

Deaktivieren Sie die Registrierung und definieren Sie Ihr Secret:

enable_registration: false
registration_shared_secret: "CYVeMwmKPUUsKiq4mOxWghbcBtfqYoso"
Neuer Inhalt /etc/matrix-synapse/homeserver.yaml (ohne Kommentare)
pid_file: "/var/run/matrix-synapse.pid"
listeners:
  - port: 8008
    tls: false
    type: http
    x_forwarded: true
    bind_addresses: ['::1', '127.0.0.1']
    resources:
      - names: [client, federation]
        compress: false
database:
  name: sqlite3
  args:
    database: /var/lib/matrix-synapse/homeserver.db
log_config: "/etc/matrix-synapse/log.yaml"
media_store_path: /var/lib/matrix-synapse/media
signing_key_path: "/etc/matrix-synapse/homeserver.signing.key"
trusted_key_servers:
  - server_name: "matrix.org"
enable_registration: false
registration_shared_secret: "CYVeMwmKPUUsKiq4mOxWghbcBtfqYoso"

Speichern und schließen Sie die Datei homeserver.yaml und starten Sie anschließende den Matrix Synapse-Dienst neu, um die Änderungen zu übernehmen:

sudo systemctl restart matrix-synapse

oder alternativ mit

service synapse restart
sudo service synapse restart

Schritt 4: Installieren und Konfigurieren von Nginx als Reverse-Proxy für Matrix Synapse

Installieren Sie zunächst das Webserver-Paket Nginx mit folgendem Befehl:

sudo apt-get install nginx -y

Sobald Nginx installiert ist, erstellen Sie eine Konfigurationsdatei für den virtuellen Nginx-Host:
 

sudo nano /etc/nginx/conf.d/matrix.conf

Folgende Konfiguration hinzufügen:

server {
    listen 80;
    server_name matrix.your-domain.de;
    location / {
        proxy_pass http://localhost:8008;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

Speichern und schließen Sie die Datei und überprüfen Sie die Nginx-Konfiguration mit folgendem Befehl

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starten Sie anschließend den Nginx-Dienst neu, damit die Änderungen wirksam werden:

sudo systemctl restart nginx

Sie können den Status des Nginx-Dienstes auch mit folgendem Befehl überprüfen:

sudo systemctl status nginx
Ausgabe:
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-06-01 04:28:20 CEST; 32s ago
       Docs: man:nginx(8)
    Process: 54864 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 54865 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 54866 (nginx)
      Tasks: 5 (limit: 60)
     Memory: 6.6M
     CGroup: /system.slice/nginx.service
             ├─54866 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ├─54867 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ├─54868 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ├─54869 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             └─54870 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Jun 1 04:28:20 matrix.your-domain.de systemd[1]: Starting A high performance web server and a reverse proxy server...
Jun 1 04:28:20 matrix.your-domain.de systemd[1]: Started A high performance web server and a reverse proxy server...

Schritt 5: Ein Administratoren-Konto erstellen

Als nächstes müssen Sie einen Administrator-Account erstellen und ein Passwort für den Zugang zu Matrix Synapse festlegen.

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

Geben Sie die Daten für das Administrator-Benutzerkonto ein und wählen Sie ein Passwort:

New user localpart [root]: matrixadmin
Password:
Confirm password:
Make admin [no]: yes
Sending registration request...
Success!

Schritt 6: Erstellen Sie für Matrix Synapse ein SSL-Zertifikat mit Let's Encrypt ein

Installieren Sie zuerst das Certbot-Client-Paket mit dem folgenden Befehl:

sudo apt-get install certbot python3-certbot-nginx -y
Sobald das Certbot-Paket installiert ist, führen Sie den folgenden Befehl aus, um Let's Encrypt SSL zu installieren:

Nachdem das Certbot-Paket vollständig installiert ist, führen Sie den folgenden Befehl aus, um Let's Encrypt SSL zu erstellen und einzurichten:
 

sudo certbot

Im Anschluss werden Sie aufgefordert, Ihre E-Mail-Adresse anzugeben und die Nutzungsbedingungen zu akzeptieren:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): tm@openhow2.de

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Account registered.

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: matrix.your-domain.de
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1
Requesting a certificate for matrix.your-domain.de

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/matrix.your-domain.de/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/matrix.your-domain.de/privkey.pem
This certificate expires on 2023-09-09.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for matrix.your-domain.de to /etc/nginx/conf.d/matrix.conf
Congratulations! You have successfully enabled HTTPS on https://matrix.your-domain.de

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Sie können nun die Installation von Matrix Synapse überprüfen, indem Sie die URL matrix.your-domain.de in Ihrem Webbrowser eingeben. Sie sollten den folgenden Bildschirm sehen:

Sie können Ihre Matrix Synapse auch mit dem webbasierten Riot-Client riot.im/app/ überprüfen. Sie sollten den folgenden Bildschirm sehen:

Klicken Sie auf die Schaltfläche Editieren. Der folgende Bildschirm sollte erscheinen:

Geben Sie die URL Ihres Matrix-Servers ein und klicken Sie auf Weiter. Die Matrix-Anmeldeseite wird angezeigt:

Geben Sie Ihren Administrator-Benutzernamen und Ihr Passwort ein und klicken Sie auf die Schaltfläche Anmelden. Nun sind Sie mit dem Matrix Synapse Server verbunden. Sie sollten den folgenden Bildschirm sehen: