So installieren Sie Matrix Synapse unter Ubuntu 16.04

Einführung

Matrix ist ein offener Standard für die dezentrale Kommunikation. Hierbei handelt es sich um eine Sammlung von Servern und Diensten, die für Online-Nachrichten verwendet werden und eine standardisierte API verwenden, die in Echtzeit synchronisiert wird.

Matrix verwendet homeservers zum Speichern Ihrer Kontoinformationen und des Chat-Verlaufs. Sie funktionieren ähnlich wie ein E-Mail-Client über IMAP / SMTP eine Verbindung zu E-Mail-Servern herstellt. Wie bei E-Mails können Sie entweder einen von jemand anderem gehosteten Matrix-Homeserver verwenden oder Ihren eigenen Host einrichten und die Kontrolle über Ihre eigenen Informationen und Kommunikationen haben.

Wenn Sie dieser Anleitung folgen, installieren Sie Synapse, die Referenz-Homeserver-Implementierung von Matrix. Wenn Sie fertig sind, können Sie über einen beliebigen Matrix-Client eine Verbindung zu Ihrem Homeserver herstellen und mit anderen Benutzern über andere zusammengeschlossene Matrix-Homeserver kommunizieren.

Voraussetzungen

Bevor Sie mit diesem Handbuch beginnen, benötigen Sie Folgendes:

  • Ein Ubuntu 16.04-Server, der unter https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 eingerichtet wurde, einschließlich eines sudo-Benutzers ohne Rootberechtigung und eine Firewall.

  • Nginx auf Ihrem Server installiert (unter Berücksichtigung von HTTPS-Verkehr); Sie können dies tun, indem Sie this Nginx on Ubuntu 16.04 tutorial folgen.

  • Ein registrierter Domainname, der mit den entsprechenden DNS-Einträgen eingerichtet wurde (siehe this hostname tutorial). Welche DNS-Einträge Sie benötigen, hängt davon ab, wie Sie Ihre Domain nutzen.

  • Wenn Sie Ihre Domain ausschließlich für Synapse verwenden oder denselben Server zum Hosten Ihrer Website und von Synapse verwenden, benötigen Sie nur einen A-Datensatz mit dem Hostnamen "+ @ +".

  • Wenn Sie Synapse auf einem separaten Server installieren, benötigen Sie einen A-Eintrag mit dem Hostnamen, der auf die zu verwendende Unterdomäne festgelegt ist, z. B. "+ matrix. ", Und einen SRV-Eintrag mit dem Hostnamen " _matrix._tcp " auf die gleiche Subdomain am Port " 8448 +" zeigen, mit der Standardpriorität und Gewichten von 10 bzw. 100. Dadurch erfahren Matrix-Clients und -Homeserver, wo sich Ihre Synapse-Installation befindet.

Schritt 1 - Installieren von Matrix Synapse

Melden Sie sich als Benutzer ohne Rootberechtigung bei Ihrem Server an, um zu beginnen.

Stellen Sie vor der Installation sicher, dass Ihr lokaler Paketindex auf dem neuesten Stand ist.

sudo apt-get update

Fügen Sie als Nächstes das offizielle Matrix-Repository zu APT hinzu.

sudo add-apt-repository https://matrix.org/packages/debian/

Um sicherzustellen, dass Ihr Server sicher bleibt, sollten Sie den Repository-Schlüssel hinzufügen. Dadurch wird überprüft, ob Installationen und Updates von den Entwicklern signiert wurden, und es wird verhindert, dass nicht autorisierte Pakete auf Ihrem Server installiert werden.

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

Sie sehen die folgende Ausgabe:

OutputOK

Aktualisieren Sie nach dem Hinzufügen des Repositorys den lokalen Paketindex, damit er das neue Repository enthält.

sudo apt-get update

Mit dem hinzugefügten Repository ist die Installation von Synapse so einfach wie die Ausführung eines einzelnen APT-Befehls.

sudo apt-get install matrix-synapse

Während der Installation werden Sie aufgefordert, einen Servernamen einzugeben, der Ihr Domänenname sein sollte. Sie werden auch gefragt, ob Sie anonymisierte Statistiken über Ihren Homeserver an Matrix zurücksenden möchten. Dann wird Synapse installiert.

Wenn Sie fertig sind, verwenden Sie "+ systemctl +", um Synapse automatisch zu starten, wenn Ihr Server startet.

sudo systemctl enable matrix-synapse

Dieser Befehl startet Synapse nur, wenn der gesamte Server gestartet wird. Ihr Server läuft bereits, benutzen Sie also "+ systemctl +" manuell, um Synapse jetzt zu starten.

sudo systemctl start matrix-synapse

Synapse ist jetzt installiert und wird auf Ihrem Server ausgeführt. Sie müssen jedoch einen Benutzer erstellen, bevor Sie es verwenden können.

Schritt 2 - Erstellen eines Benutzers für Synapse

Bevor Sie Synapse verwenden können, müssen Sie ein Benutzerkonto hinzufügen. Bevor Sie einen neuen Benutzer hinzufügen können, müssen Sie ein gemeinsames Geheimnis einrichten. Ein shared secret ist eine Zeichenfolge, die von jedem verwendet werden kann, der es kennt, um sich zu registrieren, selbst wenn die Registrierung deaktiviert ist.

Verwenden Sie den folgenden Befehl, um eine Zeichenfolge mit 32 Zeichen zu generieren.

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

Kopieren Sie den erstellten String und öffnen Sie die Synapse-Konfigurationsdatei mit + nano + oder Ihrem bevorzugten Texteditor.

sudo nano /etc/matrix-synapse/homeserver.yaml

Suchen Sie im Registrierungsbereich nach dem Schlüssel "+ registration_shared_secret ". Aktualisieren Sie den Wert der von Ihnen kopierten Zufallszeichenfolge, indem Sie ihn zwischen Anführungszeichen ("" "") einfügen. Denken Sie daran, die Taste zu aktivieren, indem Sie die Zeile auskommentieren (d. H. Löschen des " # +" am Zeilenanfang).

Wenn Sie auch die öffentliche Registrierung aktivieren möchten, können Sie den Wert von "+ enable_registration " hier auf " True +" aktualisieren.

/etc/matrix-synapse/homeserver.yaml

. . .

## Registration ##

# Enable registration for new users.
enable_registration:

# If set, allows registration by anyone who also has the shared
# secret, even if registration is otherwise disabled.
registration_shared_secret: ""

. . .

Speichern und schließen Sie die Datei.

Nach dem Ändern der Konfiguration müssen Sie Synapse neu starten, damit die Änderungen wirksam werden.

sudo systemctl restart matrix-synapse

Verwenden Sie nach dem Neustart die Befehlszeile, um einen neuen Benutzer zu erstellen. Das Flag "+ -c " gibt die Konfigurationsdatei an und verwendet die lokale Synapse-Instanz, die den Port " 8448 +" überwacht.

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

Sie werden aufgefordert, einen Benutzernamen und ein Passwort zu wählen. Sie werden auch gefragt, ob Sie den Benutzer zum Administrator machen möchten oder nicht. Es liegt an Ihnen, aber für dieses Lernprogramm ist kein Administrator erforderlich.

Vergewissern Sie sich nach der Erstellung Ihres Benutzers, dass der Webserver Synapse-Anforderungen verarbeiten kann.

Schritt 3 - Konfigurieren von Nginx und SSL

Matrix-Clients senden Anforderungen an "+ https: /// _ matrix / ", um eine Verbindung zu Synapse herzustellen. Sie müssen Nginx so konfigurieren, dass es auf diese Anforderungen wartet und sie an Synapse weiterleitet, die lokal auf Port " 8008 +" lauscht. Sie sichern Ihr Setup auch durch using SSL, das von Let’s Encrypt unterstützt wird.

Dazu erstellen Sie eine benutzerdefinierte Nginx-Konfigurationsdatei für Ihre Website. Erstellen Sie diese neue Konfigurationsdatei.

sudo nano /etc/nginx/sites-available/

Der Block + location / _matrix + unten gibt an, wie Nginx Anforderungen von Matrix-Clients behandeln soll. Zusätzlich zur Anforderungsbearbeitung stellt der bekannte + -Block das gleichnamige Verzeichnis Let’s Encrypt zur Verfügung.

Kopieren Sie das Folgende und fügen Sie es in die Datei ein.

/etc/nginx/sites-available/example.com

server {
   listen 80;
   listen [::]:80;

   root /var/www/html;
   index index.html index.htm index.nginx-debian.html;

   server_name  www.;

   location /_matrix {
       proxy_pass http://localhost:8008;
   }

   location ~ /.well-known {
       allow all;
   }
}

Dieses Nginx-Serverblock-Tutorial enthält weitere Informationen zu Wie funktionieren solche Dateien? Wenn Sie den Server konfiguriert haben, können Sie die Datei speichern und schließen.

Um diese Konfiguration zu aktivieren, erstellen Sie einen Symlink für diese Datei im Verzeichnis "+ / etc / nginx / sites-enabled +".

sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

Testen Sie Ihre Konfigurationsdatei auf Syntaxfehler, indem Sie den Befehl ausführen.

sudo nginx -t

Korrigieren Sie die Syntax gegebenenfalls basierend auf der Fehlerausgabe. Wenn keine Fehler gemeldet werden, verwenden Sie "+ systemctl +", um Nginx neu zu laden, damit die Änderungen wirksam werden.

sudo systemctl reload nginx

Folgen Sie https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04, um die Sicherung von Nginx mit einem Let’s Encrypt-Zertifikat abzuschließen Lassen Sie uns für Nginx auf Ubuntu 16.04 Tutorial verschlüsseln]. Denken Sie daran, "+ / etc / nginx / sites-available / " anstelle der Standardkonfigurationsdatei zu verwenden. Sie haben bereits den in Schritt 2 dieses Tutorials erwähnten " ~ / .well-known +" - Block hinzugefügt.

Sobald Let’s Encrypt eingerichtet ist, können Sie die Firewall so konfigurieren, dass der erforderliche Datenverkehr für die Kommunikation von Synapse mit anderen Homeservern bereitgestellt wird.

Schritt 4 - Ermöglichen von Synapse durch die Firewall

Der Client-Datenverkehr stellt über den HTTPS-Port "+ 443 " (der bereits in Ihrer Firewall aus dem Nginx-Handbuch geöffnet ist) eine Verbindung zu Synapse her. Der Datenverkehr von anderen Servern stellt jedoch eine direkte Verbindung zu Synapse über Port " 8448 +" her, ohne den Nginx-Proxy zu passieren. Daher müssen Sie diesen Datenverkehr auch über die Firewall zulassen.

sudo ufw allow 8448

Überprüfen Sie den Status von UFW.

sudo ufw status

Es sollte so aussehen:

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
8448                       ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)
8448 (v6)                  ALLOW       Anywhere (v6)

Dies bedeutet, dass der gesamte erforderliche Datenverkehr durch Ihre Firewall zugelassen wird. Als letzten Schritt sollten Sie die Sicherheit von Synapse verbessern, indem Sie die SSL-Zertifikate aktualisieren.

Schritt 5 - Sichern des Verbunds mit SSL (empfohlen)

Jetzt, da Synapse konfiguriert ist und mit anderen Heimservern kommunizieren kann, können Sie die Sicherheit erhöhen, indem Sie dieselben SSL-Zertifikate verwenden, die Sie am Ende von Schritt 3 von Let’s Encrypt angefordert haben. Standardmäßig verwendet Synapse selbstsignierte Zertifikate, die diese Aufgabe übernehmen. Da Sie jedoch bereits die Let’s Encrypt-Zertifikate angefordert haben, können Sie diese einfach verwenden und die Sicherheit verbessern.

Kopieren Sie die Zertifikate in Ihr Synapse-Verzeichnis:

sudo cp /etc/letsencrypt/live//fullchain.pem /etc/matrix-synapse/fullchain.pem
sudo cp /etc/letsencrypt/live//privkey.pem /etc/matrix-synapse/privkey.pem

Damit diese Zertifikate bei ihrer Erneuerung aktualisiert werden, müssen Sie diese Befehle zu Ihrer Cron-Registerkarte hinzufügen. Öffnen Sie es zum Bearbeiten.

sudo crontab -e

Und fügen Sie die folgenden Zeilen hinzu:

crontab entry35 2 * * 1 sudo cp /etc/letsencrypt/live//fullchain.pem /etc/matrix-synapse/fullchain.pem
35 2 * * 1 sudo cp /etc/letsencrypt/live//privkey.pem /etc/matrix-synapse/privkey.pem
36 2 * * 1 sudo systemctl restart matrix-synapse

Speichern und schließen Sie dann die Datei. Öffnen Sie anschließend Ihre Synapse-Konfigurationsdatei mit "+ nano +" oder Ihrem bevorzugten Texteditor.

sudo nano /etc/matrix-synapse/homeserver.yaml

Ersetzen Sie die Pfade in der Konfigurationsdatei, indem Sie dasselbe Zertifikat verwenden, das Sie in Schritt 3 von Lets Encrypt angefordert haben.

/etc/matrix-synapse/homeserver.yaml

. . .

tls_certificate_path: ""

# PEM encoded private key for TLS
tls_private_key_path: ""

# PEM dh parameters for ephemeral keys
tls_dh_params_path: ""

. . .

Starten Sie Synapse neu, damit die Konfigurationsänderungen wirksam werden.

sudo systemctl restart matrix-synapse

Alles ist eingerichtet, sodass Sie jetzt mit jedem Matrix-Client eine Verbindung zu Ihrem Homeserver herstellen und mit anderen kommunizieren können. Beispielsweise können Sie den Client auf der Matrix-Website verwenden.

Geben Sie Folgendes in die entsprechenden Felder ein:

  • Ihre * Matrix ID * hat das Format "+ @ Benutzer: Servername " (z. ` @ sammy: example.com +`). Andere Server mit zusammengeschlossenen Datenbanken verwenden diese Option, um herauszufinden, wo sich Ihr Homeserver befindet.

  • Ihr * Passwort * ist das sichere Passwort, das Sie beim Erstellen dieses Benutzers festgelegt haben.

  • Ihr * Home Server * ist der Servername, den Sie in Schritt 1 gewählt haben.

Wenn Sie in Schritt 2 die öffentliche Registrierung aktiviert haben, können Sie auch auf den Link * Konto erstellen * klicken, um ein neues Konto zu erstellen, oder anderen das Erstellen eines neuen Kontos auf Ihrem Homeserver ermöglichen.

Von dort aus können Sie sich in Räume einloggen und mit dem Chatten beginnen. Der offizielle Supportraum für Matrix ist "+ # matrix: matrix.org +".

Fazit

In diesem Handbuch haben Sie Matrix Synapse mit Nginx sicher installiert und dabei SSL-Zertifikate von Let’s Encrypt verwendet. Es gibt many Matrix-Clients, mit denen Sie eine Verbindung zu Ihrem Homeserver herstellen können, und Sie können sogar http://matrix.org/docs /guides/client-server.html togetwrite your own Matrix client] oder get, die auf andere Weise am Projekt beteiligt sind.