Matrix #
Deployment #
Quelle #
Die Anwendung wird als generisches app-template Helm-Chart von BJW-S Labs bereitgestellt. Die verwendeten Docker-Images sind matrixdotorg/synapse für den Server und vectorim/element-web für den Client.
Dokumentation #
- Synapse: matrix-org.github.io/synapse
- Element: element.io/help
Funktion #
Dieser Dienst stellt eine vollständige Matrix-Infrastruktur bereit:
- Synapse: Der Homeserver, das Herzstück des Dienstes. Er speichert die Benutzerkonten, die Raum-Historie und kommuniziert mit anderen Homeservern im globalen Matrix-Netzwerk (Föderation). Er wird unter
matrix.kirchner.socialbereitgestellt. - PostgreSQL: Die Datenbank, in der Synapse alle seine Daten speichert.
- Element: Ein funktionsreicher Web-Client für Matrix, der unter
element.kirchner.socialerreichbar ist und sich mit dem lokalen Synapse-Server verbindet.
Lokale Anpassungen #
Die Konfiguration erfolgt über die values.yaml-Datei sowie Konfigurationsdateien, die auf einem persistenten Volume gespeichert sind.
Wichtige Einstellungen #
- Ingress:
- Der Element-Web-Client ist unter
element.kirchner.socialerreichbar. - Der Synapse-Homeserver ist für Client-Server- und Server-Server-Kommunikation unter
matrix.kirchner.socialerreichbar. Ein dedizierter EntryPointsynapseauf Port 8448 wird für die Föderation verwendet.
- Der Element-Web-Client ist unter
- Datenbank: Synapse verwendet eine dedizierte PostgreSQL-Datenbank, die als Sidecar-Container läuft.
- Speicher: Alle persistenten Daten (Synapse-Konfiguration und -Medien, PostgreSQL-DB, Element-Konfiguration) werden auf einem NFS-Share gespeichert. Die Konfiguration von Synapse (
homeserver.yaml) und Element (config.json) erfolgt direkt in den auf dem Volume liegenden Dateien.
Installation #
Die Anwendung wird mittels Kustomize und Helm durch ArgoCD im Kubernetes-Cluster bereitgestellt. Die Konfiguration befindet sich im apps/matrix-Verzeichnis. Eine manuelle Installation kann mit folgendem Befehl durchgeführt werden:
1kubectl kustomize --enable-helm apps/matrix | kubectl apply -n matrix -f -
Abhängigkeiten #
- Traefik: Wird als Ingress-Controller für den externen Zugriff benötigt. Es muss ein TCP-EntryPoint für den Föderations-Port (8448) konfiguriert sein.
- cert-manager: Wird für die automatische Bereitstellung von TLS-Zertifikaten benötigt.
- NFS: Ein NFS-Server wird für das persistente Speichern aller Daten benötigt.