Matrix Synapse installieren: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 164: Zeile 164:
* https://github.com/matrix-org/synapse
* https://github.com/matrix-org/synapse
* https://github.com/matrix-org/synapse/blob/master/INSTALL.md
* https://github.com/matrix-org/synapse/blob/master/INSTALL.md
* https://matrix.org/docs/spec/

Version vom 26. Juni 2019, 19:54 Uhr

Der Matrix Server Synapse, der sogenannte 'Homeserver', ist aktuell die einzige vollständige serverseitige Implementierung des Matrix-Protokolls.

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:

  1. Ein User als Service-User mit /bin/bash als Shell, zum Beispiel Beispiel: xyz00-matrix
  2. Eine Domain mit xyz00-matrix als Domain-Administrator, zum Beispiel matrix.beispiel.de
  3. Einen Postgresql-User xyz00_matrixuser mit Passwort meinPasswort
  4. Eine Postgresql-Datenbank xyz00_matrixdb mit Datenbank-Owner xyz00_matrixuser

Verwendete IP-Ports der Server-Dienste:

  1. Monit: xyz00.hostsharing.net:32800
  2. 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 jinja2 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

TODO

Links