Hinweise zum Setup des Matrix Servers Synapse, der Webclients, Apps und des Identity- und Dimension-Servers.

Bei Matrix sind die User-IDs nach dem Schema "@user:beispiel.de" aufgebaut, der Homeserver an sich ist unter "matrix.beispiel.de" erreichbar. Diese Werte "beispiel.de" und "matrix.beispiel.de" durch die eigenen Werte in den Anleitungen weiter unten ersetzen.

!!Synapse

!Matrix Synapse bei Hostsharing installieren

[https://wiki.hostsharing.net/index.php?title=Matrix_Synapse_installieren]

!Matrix Synapse mit Docker und Ansible installieren

[https://github.com/spantaleev/matrix-docker-ansible-deploy]

!Matrix Synapse auf Ubuntu Server 18.04 manuell installieren

Kurz gefasst enthält die Anleitung folgende Punkte

* Debian-Pakete von matrix.org
* Postgres
* .well-known unter beispiel.de, Matrix-Server gehostet als matrix.beispiel.de
* Apache als Reverse Proxy

__1. Ubuntu-Packete von Matrix-Machern__

Quelle: [https://github.com/matrix-org/synapse/blob/master/INSTALL.md#debianubuntu]

Bei der Installation wird der "server name" abgefragt, hier "beispiel.de" angeben, der Teil der Account-Namen wird.

{{{
sudo apt install -y lsb-release wget apt-transport-https
sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
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
sudo apt update
sudo apt install matrix-synapse-py3
}}}

__2. Postgres 10 aus Ubuntu-Paketen installieren__

{{{
sudo apt install postgres
}}}

__3. Postgres in Synapse konfigurieren__

Quelle: [https://github.com/matrix-org/synapse/blob/master/docs/postgres.md]

Postgres Nutzer anlegen

{{{
sudo su - postgres
createuser --pwprompt synapse_user
}}}

Datenbank initial anlegen, wichtig wg. Zeichensatz:

{{{
CREATE DATABASE synapse
 ENCODING 'UTF8'
 LC_COLLATE='C'
 LC_CTYPE='C'
 template=template0
 OWNER synapse_user;
}}}

In der homeserver.yaml mit vorher vergebenem Passwort konfigurieren:

{{{
database:
    name: psycopg2
    args:
        user: synapse_user
        password: <pass>
        database: synapse
        host: localhost
        cp_min: 5
        cp_max: 10
}}}

Synapse neu starten um Konfiguration zu übernehmen

{{{
sudo systemctl restart matrix-synapse
}}}

__4. Reverse-Proxy für Synapse konfigurieren__

Quelle: [https://github.com/matrix-org/synapse/blob/master/docs/reverse_proxy.md]

Apache-VHost für matrix.beispiel.de unter /etc/apache2/sites-available/matrix.beispiel.de.conf anlegen

Die Zertifikatsconfig ist nur angedeutet, hier via präferierter Methode SSL-Zertifikate (LetsEncrypt) angeben.

{{{
<VirtualHost *:443>
        SSLEngine on
        ServerName matrix.beispiel.de;

        AllowEncodedSlashes NoDecode
        ProxyPass /_matrix http://127.0.0.1:8008/_matrix nocanon
        ProxyPassReverse /_matrix http://127.0.0.1:8008/_matrix
        
        SSLCertificateFile ...
	SSLCertificateKeyFile ...
</VirtualHost>
}}}

Sowohl "AllowEncodedSlashes NoDecode" als auch "nocanon" sind zwingend notwendig.

Dann den VHost aktivieren:

{{{
sudo a2ensite matrix.beispiel.de.conf
sudo systemctl reload apache2
}}}

Der Server sollte dann schon unter https://matrix.beispiel.de/_matrix/static/ erreichbar sein

__5. Synapse-Föderations-Konfiguration__

Quelle: [https://github.com/matrix-org/synapse/blob/master/docs/federate.md]

Unter beispiel.de im Verzeichnis .well-known/matrix folgende Dateien "server" und "client" anlegen:

.well-known/matrix/server:

{{{
{
    "m.server": "matrix.beispiel.de:443"
}
}}}

.well-known/matrix/client:

{{{
{
  "m.homeserver": {
    "base_url": "https://matrix.beispiel.de"
  }
}
}}}

Außerdem via .htaccess noch folgende Header setzen, damit die Dateien in Riot-Web ankommen:

{{{
Header set Access-Control-Allow-Origin "*"
Header set Content-Type "application/json"
}}}

Jetzt kann das Setup mit dem Federation Tester geprüft werden, dort beispiel.de eingeben:

[https://federationtester.matrix.org]



!!Riot-Webclient

Riot-Web ist eine statische html/js-Anwendung, daher keine Anforderungen außer einem Webserver (apache, nginx, ...):
* Aktuelles Release von [https://github.com/vector-im/riot-web/releases] herunterladen und im Webspace (zB /var/www/riot) auspacken
* vhost für /var/www/riot anlegen
* config.sample.json in config.json kopieren und anpassen: [https://github.com/vector-im/riot-web/blob/develop/docs/config.md]

!!Identity-Server

!!Integration-Server Dimension

* Aktueller NodeJS und NPM
* Offizielle Anleitung: [https://github.com/turt2live/matrix-dimension/blob/master/docs/installing.md]
* User "dimension" auf eigenem Homeserver anlegen, access token via riot oder aus der access_tokens Tabelle aus der Synapse-Datenbank holen.

!!Push-Server für iOS und Android

* Anleitung: [https://github.com/matrix-org/sygnal/blob/master/README.rst]