So installierst und erstellst du einen Chat-Server mit Matrix Synapse und Element unter Ubuntu 22.04
Matrix ist ein offener Standard für dezentrale und Ende-zu-Ende-verschlüsselte Kommunikation. Es ist eine Sammlung von Servern und Diensten, die über eine standardisierte API miteinander kommunizieren und sich in Echtzeit synchronisieren. Es verwendet Heimserver, um Kontoinformationen und Chatverläufe zu speichern. Wenn ein Homeserver ausfällt, können die anderen Server aufgrund der Dezentralisierung die Kommunikation ohne Probleme fortsetzen. Du kannst einen Matrix Homeserver verwenden, der von einem anderen Anbieter gehostet wird, oder deinen eigenen hosten, um die Kontrolle über deine Daten zu behalten.
In diesem Lernprogramm erfährst du, wie du einen Chatserver mit Synapse, einer Heimserver-Implementierung von Matrix, installierst und einrichtest. 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 deiner Wahl verwenden. Wir werden auch den Coturn-Server installieren, um Sprach- und Videoanrufe zu ermöglichen. Der Coturn-Dienst ist optional, wenn du ihn nicht nutzen möchtest.
Voraussetzungen
- Ein Server, auf dem Ubuntu 22.04 läuft.
- Ein Nicht-Sudo-Benutzer mit Root-Rechten.
- Die Unkomplizierte Firewall (UFW) ist aktiviert und läuft.
- Fully Qualified Domain Names(FQDN) für Matrix, Element und Coturn, die auf deinen Server zeigen. Wir werden
matrix.example.com
,element.example.com
undcoturn.example.com
für die drei Dienste verwenden. - Vergewissere dich, dass alles auf dem neuesten Stand ist.
$ sudo apt update && sudo apt upgrade
Schritt 1 – Firewall konfigurieren
Bevor du die Pakete installierst, musst du als erstes die Firewall so konfigurieren, dass sie die Ports für HTTP, HTTPS und Synapse öffnet.
Überprüfe den Status der Firewall.
$ sudo ufw status
Du solltest etwas wie das Folgende sehen.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Öffne die HTTP-, HTTPS- und Synapse-Ports in der Firewall.
$ sudo ufw allow 8448 $ sudo ufw allow http $ sudo ufw allow https
Überprüfe den Status zur Bestätigung erneut.
$ sudo ufw status Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 8448 ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 8448 (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
Schritt 2 – Installiere Matrix Synapse
Füge den Matrix GPG-Schlüssel hinzu.
$ sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
Füge das Matrix APT-Repository hinzu.
$ echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/matrix-org.list
Aktualisiere die Liste der System-Repositorys.
$ sudo apt update
Installiere Matrix Synapse.
$ sudo apt install matrix-synapse-py3
Während der Installation wirst du nach dem Servernamen gefragt, der Teil deiner Matrix ID ist. Gib an seiner Stelle deinen Matrix-Domänennamen ein. Dieser dient als deine Homeserver-Adresse.
Du wirst auch gefragt, ob du anonymisierte Statistiken über deinen Homeserver an Matrix senden möchtest. Gib N
ein, um dies abzulehnen.
Du kannst diese Einstellungen später in der Datei /etc/matrix-synapse/conf.d/server_name.yaml
ändern.
Der Dienst von Matrix Synapse wird während der Installation aktiviert und gestartet. Überprüfe den Status des Dienstes.
$ sudo systemctl status matrix-synapse ? matrix-synapse.service - Synapse Matrix homeserver Loaded: loaded (/lib/systemd/system/matrix-synapse.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2022-09-26 09:38:38 UTC; 1min 19s ago Process: 12926 ExecStartPre=/opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ --generate-key> Main PID: 12931 (python) Tasks: 8 (limit: 2238) Memory: 87.3M CPU: 4.180s CGroup: /system.slice/matrix-synapse.service ??12931 /opt/venvs/matrix-synapse/bin/python -m synapse.app.homeserver --config-path=/etc/matrix-synapse/homeserver.yaml --config-path=/etc/matrix-synapse/conf.d/ Sep 26 09:38:36 matrix matrix-synapse[12926]: Generating signing key file /etc/matrix-synapse/homeserver.signing.key Sep 26 09:38:37 matrix matrix-synapse[12931]: This server is configured to use 'matrix.org' as its trusted key server via the Sep 26 09:38:37 matrix matrix-synapse[12931]: 'trusted_key_servers' config option. 'matrix.org' is a good choice for a key Sep 26 09:38:37 matrix matrix-synapse[12931]: server since it is long-lived, stable and trusted. However, some admins may Sep 26 09:38:37 matrix matrix-synapse[12931]: wish to use another server for this purpose. Sep 26 09:38:37 matrix matrix-synapse[12931]: To suppress this warning and continue using 'matrix.org', admins should set Sep 26 09:38:37 matrix matrix-synapse[12931]: 'suppress_key_server_warning' to 'true' in homeserver.yaml. Sep 26 09:38:37 matrix matrix-synapse[12931]: -------------------------------------------------------------------------------- Sep 26 09:38:38 matrix matrix-synapse[12931]: Config is missing macaroon_secret_key Sep 26 09:38:38 matrix systemd[1]: Started Synapse Matrix homeserver.
Schritt 3 – PostgreSQL installieren und konfigurieren
Wir verwenden das offizielle APT-Repository von PostgreSQL für die Installation. Führe den folgenden Befehl aus, um den PostgreSQL GPG-Schlüssel hinzuzufügen.
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
Füge das APT-Repository zu deiner Quellenliste hinzu.
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Aktualisiere das System-Repository.
$ sudo apt update
Jetzt kannst du PostgreSQL mit dem folgenden Befehl installieren.
$ sudo apt install postgresql postgresql-contrib
Überprüfe den Status des PostgreSQL-Dienstes.
$ sudo systemctl status postgresql ? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Mon 2022-09-26 09:41:36 UTC; 2min 14s ago Process: 15586 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 15586 (code=exited, status=0/SUCCESS) CPU: 1ms Sep 26 09:41:36 matrix systemd[1]: Starting PostgreSQL RDBMS... Sep 26 09:41:36 matrix systemd[1]: Finished PostgreSQL RDBMS.
Du kannst sehen, dass der Dienst aktiviert ist und standardmäßig läuft.
Melde dich mit dem Systemkonto postgres
an.
$ sudo -su postgres
Erstelle einen neuen Datenbankbenutzer und eine Datenbank für PostgreSQL.
$ createuser --pwprompt synapse $ createdb --encoding=UTF8 --locale=C --template=template0 --owner=synapse synapse
Beende das postgres
Konto.
$ exit
Schritt 4 – Nginx installieren
Für die Produktionsumgebung wird empfohlen, den Synapse-Server mit einem Nginx-Proxy zu betreiben.
Ubuntu 22.04 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, musst du das offizielle Nginx-Repository herunterladen.
Importiere den Signierschlüssel von Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Füge das Repository für die stabile Version von Nginx hinzu.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Aktualisiere die System-Repositories.
$ sudo apt update
Installiere Nginx.
$ sudo apt install nginx
Überprüfe die Installation.
$ nginx -v nginx version: nginx/1.22.0
Starte den Nginx-Server.
$ sudo systemctl start nginx
Schritt 5 – SSL installieren
Wir müssen Certbot installieren, um das SSL-Zertifikat zu erstellen. Du kannst Certbot entweder über das Repository von Ubuntu installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden.
Bei Ubuntu 22.04 ist Snapd standardmäßig installiert. Führe die folgenden Befehle aus, um sicherzustellen, dass deine Version von Snapd auf dem neuesten Stand ist.
$ sudo snap install core $ sudo snap refresh core
Installiere Certbot.
$ sudo snap install --classic certbot
Verwende den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem du einen symbolischen Link zum Verzeichnis /usr/bin
erstellst.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Führe den folgenden Befehl aus, um ein SSL-Zertifikat zu erzeugen.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d matrix.example.com
Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/matrix.example.com
auf deinem Server heruntergeladen.
Erstelle ein Diffie-Hellman-Gruppenzertifikat.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert, führe einen Probelauf des Prozesses durch.
$ sudo certbot renew --dry-run
Wenn du keine Fehler siehst, ist alles in Ordnung. Dein Zertifikat wird automatisch erneuert.
Schritt 6 – Matrix Synapse konfigurieren
Du kannst den Matrix-Server über die Datei /etc/matrix-synapse/homeserver.yaml
konfigurieren, aber das ist nicht empfehlenswert, da sie nach jedem Upgrade überschrieben wird. Für den produktiven Einsatz solltest du die Konfigurationsdateien in den Ordner /etc/matrix-synapse/conf.d
legen.
Bei der Installation von Synapse wurden zwei Konfigurationsdateien im Ordner /etc/matrix-synapse/conf.d
erstellt.
$ ls /etc/matrix-synapse/conf.d report_stats.yaml server_name.yaml
Erstelle eine neue Konfigurationsdatei für die Datenbank und öffne sie zur Bearbeitung.
$ sudo nano /etc/matrix-synapse/conf.d/database.yaml
Füge die folgenden Zeilen in den Editor ein. Ersetze das Feld your-password
durch das PostgreSQL-Benutzerpasswort, das du in Schritt 3 erstellt hast. Ersetze localhost
durch die IP-Adresse deines Servers, wenn du die Datenbank woanders hostest.
database: name: psycopg2 args: user: synapse password: 'your-password' database: synapsedb host: localhost cp_min: 5 cp_max: 10
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Erstelle einen geheimen Registrierungsschlüssel. Der Schlüssel sollte sicher sein, da er es jedem ermöglicht, einen neuen Benutzer zu registrieren, auch wenn die Registrierung deaktiviert ist.
$ echo "registration_shared_secret: '$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)'" | sudo tee /etc/matrix-synapse/conf.d/registration_shared_secret.yaml
Standardmäßig aktiviert Synapse Präsenzanzeigen, die anzeigen, ob eine Person online ist. Das kann zu einer hohen CPU-Belastung führen, deshalb kannst du es deaktivieren. Erstelle eine neue Konfigurationsdatei für diese Funktion.
$ sudo nano /etc/matrix-synapse/conf.d/presence.yaml
Füge die folgende Zeile in den Editor ein.
presence: enabled: false
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Starte den Synapse-Dienst neu, um die Änderungen zu übernehmen.
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.
$ register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml http://localhost:8008 New user localpart [navjot]: navjot Password: Confirm password: Make admin [no]: yes Sending registration request... Success!
Wenn du die öffentliche Registrierung öffnen willst, erstelle eine neue Konfigurationsdatei.
$ sudo nano /etc/matrix-synapse/conf.d/registration.yaml
Füge die folgenden Zeilen in diese Datei ein.
enable_registration: true
In der Standardeinstellung lässt Synapse keine Registrierungen ohne E-Mail-Verifizierung zu. Um die E-Mail-Überprüfung zu aktivieren, füge die folgenden Zeilen ein.
registrations_require_3pid: - email email: smtp_host: mail.example.com smtp_port: 587 # If mail server has no authentication, skip these 2 lines smtp_user: 'noreply@example.com' smtp_pass: 'password' # Optional, require encryption with STARTTLS require_transport_security: true app_name: 'HowtoForge Example Chat' # defines value for %(app)s in notif_from and email subject notif_from: "%(app)s <noreply@example.com>"
Um die E-Mail-Überprüfung zu deaktivieren, füge stattdessen die folgende Zeile ein.
enable_registration_without_verification: true
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Starte Synapse neu, um die Konfiguration zu übernehmen.
$ sudo systemctl restart matrix-synapse
Schritt 7 – Nginx konfigurieren
Öffne die Datei /etc/nginx/nginx.conf
zum Bearbeiten.
$ sudo nano /etc/nginx/nginx.conf
Füge die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf;
ein.
server_names_hash_bucket_size 64;
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Erstelle und öffne die Datei /etc/nginx/conf.d/synapse.conf
zum Bearbeiten.
$ sudo nano /etc/nginx/conf.d/synapse.conf
Füge den folgenden Code in die Datei ein.
# enforce HTTPS server { # Client port listen 80; listen [::]:80; server_name matrix.example.com; return 301 https://$host$request_uri; } server { server_name matrix.example.com; # Client port listen 443 ssl http2; listen [::]:443 ssl http2; # Federation port listen 8448 ssl http2 default_server; listen [::]:8448 ssl http2 default_server; access_log /var/log/nginx/synapse.access.log; error_log /var/log/nginx/synapse.error.log; # TLS configuration ssl_certificate /etc/letsencrypt/live/matrix.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/matrix.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/matrix.example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; location ~ ^(/_matrix|/_synapse/client) { proxy_pass http://localhost:8008; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; # Nginx by default only allows file uploads up to 1M in size # Increase client_max_body_size to match max_upload_size defined in homeserver.yaml client_max_body_size 50M; } }
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Überprüfe die Syntax der Nginx-Konfigurationsdatei.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Starte den Nginx-Dienst neu.
$ sudo systemctl restart nginx
Schritt 8 – Coturn installieren
Du musst einen TURN-Server (Traversal Using Relays around NAT) installieren, um Sprach- und Videoanrufe zu ermöglichen. Zu diesem Zweck installieren wir das Paket Coturn. Wenn du diese Funktion nicht brauchst, kannst du diesen Schritt überspringen.
Ubuntu 22.04 wird nicht mit dem Coturn-Paket ausgeliefert, weil ein Fehler aufgetreten ist, der inzwischen behoben wurde. Es gibt jedoch eine andere Möglichkeit, Coturn über ein inoffizielles Repository zu installieren. Optional kannst du Coturn auch mit Docker installieren, aber wir werden diese Methode nicht verwenden, da sie den Rahmen dieses Tutorials sprengen würde.
Füge das inoffizielle Coturn-Repository hinzu.
$ sudo add-apt-repository ppa:ubuntuhandbook1/coturn
Installiere Coturn.
$ sudo apt install coturn
Öffne die TURN- und UDP-Ports.
$ sudo ufw allow 3478 $ sudo ufw allow 5349 $ sudo ufw allow 49152:65535/udp
Erstelle ein SSL-Zertifikat für Turn (turn.example.com
).
$ sudo certbot certonly --nginx -d turn.example.com
Erstelle ein Authentifizierungsgeheimnis und speichere es in der Konfigurationsdatei.
$ echo "static-auth-secret=$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)" | sudo tee /etc/turnserver.conf
Öffne die Konfigurationsdatei zum Bearbeiten.
$ sudo nano /etc/turnserver.conf
Füge die folgenden Zeilen unter dem Authentifizierungsgeheimnis in die Datei ein.
use-auth-secret realm=turn.example.com cert=/etc/letsencrypt/live/turn.example.com/fullchain.pem pkey=/etc/letsencrypt/live/turn.example.com/privkey.pem # VoIP is UDP, no need for TCP no-tcp-relay # Do not allow traffic to private IP ranges no-multicast-peers denied-peer-ip=0.0.0.0-0.255.255.255 denied-peer-ip=10.0.0.0-10.255.255.255 denied-peer-ip=100.64.0.0-100.127.255.255 denied-peer-ip=127.0.0.0-127.255.255.255 denied-peer-ip=169.254.0.0-169.254.255.255 denied-peer-ip=172.16.0.0-172.31.255.255 denied-peer-ip=192.0.0.0-192.0.0.255 denied-peer-ip=192.0.2.0-192.0.2.255 denied-peer-ip=192.88.99.0-192.88.99.255 denied-peer-ip=192.168.0.0-192.168.255.255 denied-peer-ip=198.18.0.0-198.19.255.255 denied-peer-ip=198.51.100.0-198.51.100.255 denied-peer-ip=203.0.113.0-203.0.113.255 denied-peer-ip=240.0.0.0-255.255.255.255 denied-peer-ip=::1 denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255 denied-peer-ip=100::-100::ffff:ffff:ffff:ffff denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff # Limit number of sessions per user user-quota=12 # Limit total number of sessions total-quota=1200
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Starte Coturn neu, um die Konfiguration zu übernehmen.
$ sudo systemctl restart coturn
Erstelle eine neue Synapse-Konfigurationsdatei für Coturn.
$ sudo nano /etc/matrix-synapse/conf.d/turn.yaml
Füge die folgenden Zeilen in die Datei ein. Ersetze den Wert von turn_shared_secret
durch den Wert von static-auth-secret
aus der Datei \etc\turnserver.conf
.
turn_uris: [ "turn:turn.example.com?transport=udp", "turn:turn.example.com?transport=tcp" ] turn_shared_secret: 'static-auth-secret' turn_user_lifetime: 86400000 turn_allow_guests: True
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Starte Synapse neu, um die Änderungen zu übernehmen.
$ sudo systemctl restart matrix-synapse
Schritt 9 – Zugriff auf Matrix
Du kannst auf den Matrix-Chat über den Web-Client von Element unter https://app.element.io
zugreifen. Klicke auf die Schaltfläche Anmelden, um fortzufahren.
Klicke auf den Link Bearbeiten unter Homeserver. Gib matrix.example.com
als deinen Homeserver ein.
Wenn der Client deinen Homeserver richtig erkennt, werden die Begrenzung und der Text grün, andernfalls wird er rot angezeigt. Klicke auf Weiter, um fortzufahren.
Klicke auf die Schaltfläche Anmelden, um dich einzuloggen. Du wirst aufgefordert, ein sicheres und verschlüsseltes Backup zu erstellen.
Wähle die Option Sicherheitsphrase eingeben, um eine Sicherheitsphrase zu erstellen, die bei jeder Anmeldung verlangt wird. Klicke auf Weiter, um fortzufahren.
Gib eine Sicherheitsphrase ein und klicke auf “ Weiter „, um fortzufahren. Auf dem nächsten Bildschirm wirst du erneut aufgefordert, die Eingabe zu bestätigen.
Gib die Phrase erneut ein und klicke auf Weiter, um fortzufahren.
Du erhältst eine Reihe von Sicherheitsschlüsseln, die du verwenden kannst, wenn du deine Sicherheitsphrase vergessen hast. Klicke auf die Schaltfläche Herunterladen, um sie zu speichern.
Klicke auf die Schaltfläche Weiter, um fortzufahren.
Du wirst nach dem Passwort für dein Konto gefragt. Gib das Passwort ein und klicke auf die Schaltfläche Weiter, um die verschlüsselte Datensicherung einzurichten.
Wir haben einen Gruppenchatraum mit dem Namen Howtoforge eingerichtet, wie oben gezeigt.
Schritt 10 – Element installieren
Installiere das Paket jq
, um den JSON-Textprozessor zu installieren.
$ sudo apt install jq
Erstelle ein Verzeichnis für Element.
$ sudo mkdir -p /var/www/element
Erstelle eine neue Datei, um die neueste Element-Version zu holen.
$ sudo nano /var/www/element/update.sh
Füge die folgenden Zeilen hinzu.
#!/bin/sh set -e install_location="/var/www/element" latest="$(curl -s https://api.github.com/repos/vector-im/element-web/releases/latest | jq -r .tag_name)" cd "$install_location" [ ! -d "archive" ] && mkdir -p "archive" [ -d "archive/element-${latest}" ] && rm -r "archive/element-${latest}" [ -f "archive/element-${latest}.tar.gz" ] && rm "archive/element-${latest}.tar.gz" wget "https://github.com/vector-im/element-web/releases/download/${latest}/element-${latest}.tar.gz" -P "archive" tar xf "archive/element-${latest}.tar.gz" -C "archive" [ -L "${install_location}/current" ] && rm "${install_location}/current" ln -sf "${install_location}/archive/element-${latest}" "${install_location}/current" ln -sf "${install_location}/config.json" "${install_location}/current/config.json"
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Mache die Datei ausführbar.
$ sudo chmod +x /var/www/element/update.sh
Führe das Skript aus, um Element herunterzuladen.
$ sudo /var/www/element/update.sh
Schritt 11 – Element konfigurieren
Kopiere die gleiche Element-Konfigurationsdatei.
$ sudo cp /var/www/element/current/config.sample.json /var/www/element/config.json
Öffne die Konfigurationsdatei zur Bearbeitung.
$ sudo nano /var/www/element/config.json
Suche die folgenden Zeilen.
"m.homeserver": { "base_url": "https://matrix-client.matrix.org", "server_name": "matrix.org" },
Ändere die Standardadresse des Matrix Homeservers in deinen Homeserver und entferne die Variable server_name
.
"m.homeserver": { "base_url": "https://matrix.example.com", "server_name": "matrix.element.com" },
Wenn du deinen eigenen Namen anstelle von Element im Titel der Website verwenden willst, ändere den Markennamen.
"brand": "Howtoforge Example Chat",
Setze die Variable disable_guests
auf true, um zu verhindern, dass Gäste Element verwenden.
"disable_guests": true,
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Erstelle ein SSL-Zertifikat für den Element-Client.
$ sudo certbot certonly --nginx -d element.example.com
Erstelle und öffne die Datei /etc/nginx/conf.d/element.conf
zur Bearbeitung.
$ sudo nano /etc/nginx/conf.d/element.conf
Füge die folgenden Zeilen in die Datei ein.
server { listen 80; listen [::]:80; server_name element.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name element.example.com; root /var/www/element/current; index index.html; access_log /var/log/nginx/element.access.log; error_log /var/log/nginx/element.error.log; add_header Referrer-Policy "strict-origin" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Frame-Options "SAMEORIGIN" always; # TLS configuration ssl_certificate /etc/letsencrypt/live/element.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/element.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/element.example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; }
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Überprüfe die Syntax der Nginx-Konfigurationsdatei.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Starte den Nginx-Dienst neu.
$ sudo systemctl restart nginx
Du kannst den Element-Client über die URL https://element.example.com
in deinem Browser aufrufen. Logge dich ein und du gelangst zum Dashboard der App.
Fazit
Damit ist unsere Anleitung zur Installation des Matrix Synapse Chat-Servers zusammen mit Coturn und dem Element Web-Client unter Verwendung von Nginx als Proxy-Server abgeschlossen. Wenn du Fragen hast, schreibe sie unten in die Kommentare.