Zum Inhalt springen

Synapse Matrix Server

Aus superMassive

Matrix Synapse Server Setup

Installations- und Konfigurationshandbuch

1. Voraussetzungen

[Bearbeiten | Quelltext bearbeiten]

•      Docker und Docker Compose auf dem vServer

•      Plesk mit Nginx als Webserver

•      Domain mx.nanotec.org mit SSL-Zertifikat (Let's Encrypt via Plesk)

•      Postfix/Exim als Mailserver auf dem Host

2. Docker Compose Konfiguration

[Bearbeiten | Quelltext bearbeiten]

Datei: /opt/dockers/synapse/docker-compose.yml

•      postgres – PostgreSQL 16 Alpine als Datenbankbackend

•      synapse – avhost/docker-matrix Image

2.2 Volume-Mappings

[Bearbeiten | Quelltext bearbeiten]

•      /opt/dockers/synapse/data → /data

•      /opt/dockers/synapse/media_store → /media_store

•      /opt/dockers/synapse/pgdata → /var/lib/postgresql/data

2.3 Port-Mappings

[Bearbeiten | Quelltext bearbeiten]

•      3478:3478 – TURN/STUN (Coturn)

•      8008:8008 – Client-Server API (intern, Nginx leitet weiter)

Wichtig: Port 8448 wird nicht in Docker gemappt – Nginx übernimmt diesen direkt.

2.4 Extra Host für Mailserver

[Bearbeiten | Quelltext bearbeiten]

Damit der Container den Host-Mailserver erreichen kann:

extra_hosts:  - "host.docker.internal:host-gateway"

Prüfen ob der Eintrag gesetzt ist:

docker exec synapse cat /etc/hosts

3. Erstkonfiguration (einmalig)

[Bearbeiten | Quelltext bearbeiten]

3.1 homeserver.yaml generieren

[Bearbeiten | Quelltext bearbeiten]

docker run -it --rm \   -v /opt/dockers/synapse/data:/data \   -e SERVER_NAME=mx.nanotec.org \   -e REPORT_STATS=no \  avhost/docker-matrix:latest generate

3.2 Datenbank-Konfiguration

[Bearbeiten | Quelltext bearbeiten]

In homeserver.yaml den SQLite-Block ersetzen:

database:   name: psycopg2   args:    user: synapse     password: PASSWORT     database: synapse     host: postgres     cp_min: 5     cp_max: 10

3.3 Listener-Konfiguration

[Bearbeiten | Quelltext bearbeiten]

listeners:   - port: 8008     tls: false     type: http     x_forwarded: true     bind_addresses: ['0.0.0.0']     resources:       - names: [client, federation]         compress: false

4. E-Mail-Konfiguration

[Bearbeiten | Quelltext bearbeiten]

Synapse kommuniziert intern mit dem Host-Mailserver auf Port 25 ohne TLS und ohne Authentifizierung.

4.1 homeserver.yaml – E-Mail-Block

[Bearbeiten | Quelltext bearbeiten]

email:   smtp_host: "host.docker.internal"  smtp_port: 25  require_transport_security: false  notif_from: "robot@nanotec.org"   app_name: "Matrix"   enable_notifs: true   notif_for_new_users: true   validation_token_lifetime: 1h

4.2 Postfix – Docker-Subnetz freigeben

[Bearbeiten | Quelltext bearbeiten]

In /etc/postfix/main.cf das Docker-Subnetz ergänzen:

mynetworks = 127.0.0.0/8 172.16.0.0/12

Danach:

systemctl reload postfix

5. Nginx Federation-Konfiguration (Port 8448)

[Bearbeiten | Quelltext bearbeiten]

Federation erfordert Port 8448 von außen über HTTPS. Nginx übernimmt TLS-Terminierung und leitet intern auf Port 8008 weiter.

5.1 Speicherort

[Bearbeiten | Quelltext bearbeiten]

/etc/nginx/plesk.conf.d/vhosts/matrix-federation.conf

Hinweis: Nur Dateien in /etc/nginx/plesk.conf.d/vhosts/ werden von Plesk automatisch eingebunden.

5.2 Inhalt der Konfigurationsdatei

[Bearbeiten | Quelltext bearbeiten]

server {     listen 8448 ssl;     listen [::]:8448 ssl;     server_name mx.nanotec.org;      ssl_certificate     /opt/psa/var/certificates/scf4nSFAB;     ssl_certificate_key /opt/psa/var/certificates/scf4nSFAB;     location / {         proxy_pass http://127.0.0.1:8008;        proxy_set_header X-Forwarded-For $remote_addr;         proxy_set_header X-Forwarded-Proto $scheme;         proxy_set_header Host $host;         client_max_body_size 50M;         proxy_http_version 1.1;     } }

Zertifikatspfad ermitteln:

grep ssl_certificate /etc/nginx/plesk.conf.d/vhosts/mx.nanotec.org.conf

5.3 Nginx testen und neu laden

[Bearbeiten | Quelltext bearbeiten]

nginx -t && systemctl reload nginx

5.4 Lauscht Nginx auf 8448?

[Bearbeiten | Quelltext bearbeiten]

ss -tlnp | grep 8448

Erwartet: nginx als Prozess (nicht docker-proxy)

6. Federation testen

[Bearbeiten | Quelltext bearbeiten]

Online-Tester:

https://federationtester.matrix.org/#mx.nanotec.org

Direkter API-Test:

curl -v https://mx.nanotec.org:8448/_matrix/key/v2/server

7. Wartung & Hinweise

[Bearbeiten | Quelltext bearbeiten]

7.1 Zertifikat-Erneuerung

[Bearbeiten | Quelltext bearbeiten]

Plesk erneuert Let's Encrypt Zertifikate automatisch. Der Pfad in /opt/psa/var/certificates/ kann sich dabei ändern. Nach jeder Erneuerung Federation-Tester prüfen und ggf. matrix-federation.conf aktualisieren.

7.2 Offene Registrierung deaktivieren

[Bearbeiten | Quelltext bearbeiten]

enable_registration: false

7.3 Backup – diese Verzeichnisse sichern

[Bearbeiten | Quelltext bearbeiten]

•      /opt/dockers/synapse/data – Konfiguration & Signing Keys

•      /opt/dockers/synapse/media_store – Mediendateien

•      /opt/dockers/synapse/pgdata – PostgreSQL Datenbank

•      /etc/nginx/plesk.conf.d/vhosts/matrix-federation.conf

7.4 Nützliche Container-Befehle

[Bearbeiten | Quelltext bearbeiten]

•      Neustart (kein Datenverlust): docker restart synapse

•      Neu erstellen: docker compose up -d --force-recreate synapse

•      Logs: docker logs -f synapse

•      Extra-Hosts prüfen: docker inspect synapse | grep -A5 ExtraHosts

•      Hosts im Container: docker exec synapse cat /etc/hosts