Matrix Synapse installieren: Unterschied zwischen den Versionen
(→Installation von Synapse: Jinja2 ist seit 1.10 Teil der Default-Abhängigkeiten) |
K (Hsh-peterhormanns verschob die Seite Matrix Synapse bei Hostsharing nach Matrix Synapse installieren: Vereinheitlichung) |
(kein Unterschied)
|
Version vom 15. Juli 2019, 11:10 Uhr
Der Matrix Server Synapse, der sogenannte 'Homeserver', ist aktuell die einzige vollständige serverseitige Implementierung des Matrix-Protokolls.
Work in Progress
Leider funktioniert die Server-zu-Server-Kommunikation von Synapse hinter dem Apache-Proxy mit den genannten Rewrite-Rules nicht. Ausweg wären ein eigener Apache Webserver oder die Konfiguration der Server-zu-Server-Kommunikation auf einem anderen Port ohne Proxy
Synapse wird bei Hostsharing als eigener Daemon betrieben. Der Betrieb ist im Shared Hosting anmelde- und kostenpflichtig. Daher emfpehlen wir für den Betrieb einen Managed Server.
Diese Anleitung beschreibt, wie man den Matrix-Homeserver Synapse auf der Managed Hosting Plattform von Hostsharing installieren kann. Dabei sind die User-IDs nach dem Schema @user:beispiel.de aufgebaut, der Homeserver an sich ist unter matrix.beispiel.de erreichbar.
Vorbereitungen
Mit Hilfe von HSAdmin werden angelegt:
- Ein User als Service-User mit /bin/bash als Shell, zum Beispiel Beispiel: xyz00-matrix
- Eine Domain mit xyz00-matrix als Domain-Administrator, zum Beispiel matrix.beispiel.de
- Einen Postgresql-User xyz00_matrixuser mit Passwort meinPasswort
- Eine Postgresql-Datenbank xyz00_matrixdb mit Datenbank-Owner xyz00_matrixuser
Verwendete IP-Ports der Server-Dienste:
- Monit: xyz00.hostsharing.net:32800
- Synapse: localhost:32801
Installation von Synapse
Installationsanleitung basierend auf https://github.com/matrix-org/synapse/blob/master/INSTALL.md#installing-from-source
Als User xyz00-matrix" ein Python3 virtualenv erstellen
mkdir -p ~/synapse virtualenv -p python3 ~/synapse/env source ~/synapse/env/bin/activate pip install --upgrade pip pip install --upgrade setuptools
Synapse an sich installieren
pip install matrix-synapse
Jinja2 und Postgres-Python-Bindings installieren
pip install psycopg2
Initiale Konfiguration generieren, im laufenden Betrieb keine Statistiken an Matrix.org senden
cd ~/synapse python -m synapse.app.homeserver --server-name beispiel.de --config-path homeserver.yaml --generate-config --report-stats=no
Konfiguration von Synapse
In die initial generierte Konfiguration muss noch die Port- und Datenbank-Konfiguration eingetragen werden:
Port: Innerhalb der listener-section den Port 8008 auf 32801 (wie initial definiert) ändern, alles andere beibehalten:
- port: 32801 tls: false bind_addresses: ['::1', '127.0.0.1'] type: http x_forwarded: true
Postgres-Datenbank:
database: # The database engine name name: "psycopg2" # Arguments to pass to the engine args: host: "localhost" database: "xyz00_matrixdb" user: "xyz00_matrixuser" password: "meinPasswort" cp_min: 5 cp_max: 10
Starten der Dienste
Zum Start aller notwendigen Dienste wird in dieser Anleitung monit benutzt. Hier ein Beispiel für eine Datei .monitrc (überlange Zeilen werden hier im Wiki umgebrochen)
Das monitpassword auf jeden Fall durch ein sicheres Passwort ersetzen:
set daemon 60 with start delay 120 set logfile /home/pacs/xyz00/users/matrix/monit/var/monit.log set idfile /home/pacs/xyz00/users/matrix/monit/var/monit.id set statefile /home/pacs/xyz00/users/matrix/monit/var/monit.state set mailserver localhost set mail-format { from: monit@matrix.beispiel.de } set alert matrix@matrix.beispiel.de set httpd port 32800 address xyz00.hostsharing.net allow matrix:monitpassword check process synapse with pidfile /home/pacs/xyz00/users/matrix/synapse/homeserver.pid start program "/bin/bash -c 'export VIRTUAL_ENV=$HOME/synapse/env && export PATH=$VIRTUAL_ENV/bin:$PATH && cd $HOME/synapse && synctl start'" stop program "/bin/bash -c '/bin/kill $( cat $HOME/synapse/homeserver.pid )'"
Cronjobs
Cron wird für eine Aufgabe genutzt:
- Start von monit nach einem Server Reboot
Einrichten der crontab mit cronttab -e
HOME=/home/pacs/xyz00/users/matrix MAILTO=matrix@matrix.beispiel.de @reboot /usr/bin/monit -c $HOME/.monitrc
Einrichten des Apache VHost
Die ~/doms/matrix.beispiel.de/.htaccess mit dem Editor der Wahl öffnen und folgende Konfiguration einfügen:
DirectoryIndex disabled RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule .* http://localhost:32801%{REQUEST_URI} [NE,proxy] RequestHeader set X-Forwarded-Proto "https"
Well-Known unter beispiel.de
Damit die User-Accounts das Format @user:beispiel.de haben, der Server aber unter matrix.beispiel.de erreichbar ist, müssen noch folgende zwei Dateien unter der Domain beispiel.de abgelegt werden:
https://beispiel.de/.well-known/matrix/server
{ "m.server": "matrix.beispiel.de:443" }
https://beispiel.de/.well-known/matrix/client
{ "m.homeserver": { "base_url": "https://matrix.beispiel.de" }, "m.identity_server": { "base_url": "https://vector.im" } }
Für die muss noch der CORS-Header Access-Control-Allow-Origin "*" gesetzt werden, damit die Datei aus beliebigem Riot-Web im Browser abrufbar ist. Dazu in den Ordner .well-known/matrix/ folgende .htaccess anlegen:
Header set Access-Control-Allow-Origin "*"
Die Dokumentation dazu findet man unter https://matrix.org/docs/spec/server_server/r0.1.2#get-well-known-matrix-server und https://matrix.org/docs/spec/client_server/r0.5.0#get-well-known-matrix-client
Update von Synapse
source ~/synapse/env/bin/activate pip install -U matrix-synapse monit restart synapse
Riot-Web
Riot-Web ist aus Server-Seite eine rein statische html+javascript-Kombination, daher:
- Account und Domain anlegen (separat von der Synapse-Domain)
- aktuelles riot-web release .tgz herunterladen
- Symlink von htdocs-ssl auf entpacktes riot-web-Verzeichnis
- config.sample.json in config.json kopieren und Matrix-Homeserver-Einträge anpassen
- Piwik aus config.json entfernen
SAML mit Synapse
Synapse unterstützt mit Version 1.1.0 SAML. Dazu wie folgt vorgehen:
Das Paket xmlsec1 muss installiert sein:
$ xmlsec1 --version xmlsec1 1.2.23 (openssl)
Das Python-Paket pysaml2 installieren
source synapse/env/bin/activate pip install pysaml2
In der homeserver.yaml die SAML-Direktiven einkommentieren, hier mit dem Beispiel eines SAML IdP unter https://login.beispiel.de/simplesaml/saml2/idp/metadata.php:
# Once SAML support is enabled, a metadata file will be exposed at # https://<server>:<port>/_matrix/saml2/metadata.xml, which you may be able to # use to configure your SAML IdP with. Alternatively, you can manually configure # the IdP to use an ACS location of # https://<server>:<port>/_matrix/saml2/authn_response. # saml2_config: sp_config: # point this to the IdP's metadata. You can use either a local file or # (preferably) a URL. metadata: #local: ["saml2/idp.xml"] remote: - url: https://login.beispiel.de/simplesaml/saml2/idp/metadata.php
Wichtig ist außerdem, dass die public_baseurl in der homeserver.yaml gesetzt ist, damit Synapse weiß, wie es erreichbar ist und dies in seine SP-Metadaten einbauen kann:
public_baseurl: https://matrix.beispiel.de/
Die Service-Provider-Konfiguration als XML bekommt man von Synapse dann wie schon in der homeserver.yaml als Kommentar beschrieben, unter https://matrix.beispiel.de/_matrix/saml2/metadata.xml
Diese dann in den SAML-IdP-importieren und dann sollte der Single-Sign-On via SAML funktionieren.