In diesem Tutorial zeige ich wie man seinen eigenen Matrix Chat Server in Docker aufsetzten kann und diesen über den Nginx Reverse Proxy sicher aus dem Internet erreichbar machen kann um diesen mit Freunde und Familie zu nutzen.
Was ist Matrix?
Matrix ist ein Open source. Kommunikationsprotokoll. Man installiert den Server auf einem beliebigen Gerät und kann sich dann mit den sogenannten clients verbinden wie z.b element oder fluffy chat. Diese Clients gibt es für das alle Betriebssysteme. Außerdem gibt es verschiedene Server Software. In diesem Tutorial installieren wir den Matrix Synapse Server in Docker
Vorraussetzungen
Du benötigst:
- Einen Computer mit Linux z.B. ein Raspberry Pi oder ein gebrauchter Thin Client. Kann aber auch ein gemieteter Cloud Server sein(am besten mit Ubuntu Server oder Debian 12).
- Ein paar Vorkenntnisse in Linux.
- Ein Router der Portfreigaben unterstützt falls du das ganze von zu Hause aus betreibst.
- Am besten eine Domain auf dem Server oder öffentliche IP vom Router (egal ob normal oder Dyndns)
- du solltest wissen, wie du eine portfreigabe an deinem Router erstellst
Installation
Schritt 1: Mit dem Server verbinden
Als erstes müssen wir uns über SSH auf den Server verbinden. Wenn du ein Computer Zuhause hast du wahrscheinlich ein Benutzer bei der Installation eingerichtet. Bei einem gemieteten Cloud Server hast du meist die Option im Verwaltungs pannel des Providers ein Haupt benutzer anzulegen.
Unter Windows öffnest du die Powershell im Administrator Modus und gibst diesen Befehl ein:
ssh benutzername@ipadresse
Ersetze „benutzername“ und „ipadresse“ durch deine Daten. Drücke dann Enter. Gebe dann dein Passwort was du bei der einrichtung festgelegt hast. Super! Du bist jetzt auf deinem Server!
Schritt 2: System vorbereiten
Als erstes Aktualisieren wir das System. Das geht mit:
sudo apt update && apt upgrade -y
Das kann schon ein paar Minuten dauern… Sobald die Aktualisierung abgeschlossen ist, können wir mit docker fortfahren. Das geht mit diesem Befehl:
sudo apt install docker.io docker-compose -y
Schritt 3: Matrix und NPM installieren
Danach können wir schon mit dem eigendlichen Installieren von dem Matrix Synapse Server starten. Dafür suchst du dir auf deinem Server ein Order aus den du für Matrix benutzen möchtest. Das geht mit cd oder sudo mc. Wenn du eine passende Stelle gefunden hast erstellen wir eine Docker Compose Datei mit der wir gleich den Container erstellen.
sudo nano docker-compose.yml
Danach sollt sich ein Editor öffnen. In diesen Editor kopierst du dann diesen Code Abschnitt:
version: '3.7'
services:
synapse:
image: matrixdotorg/synapse:latest
container_name: synapse
restart: unless-stopped
volumes:
- /dein/pfad:/data #<- Ersetze das durch dein pfad!
ports:
- "8008:8008"
npm:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
network_mode: host
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
WICHTIG! Ersetze „/dein/pfad“ mit dem pfad den du für deine konfigurations dateien, Datenbank und versendete Bilder verwenden möchtest. Es bietet sich also an das auf eine externe Festplatte auszulagern.
Speichere die Datei mit ctrl + o und schließe sie dann mit ctrl + x. Anschließend kanst du das Docker Compose mit diesem befehl ausführen:
sudo docker-compose up -d
Schritt 4: Matrix Synapse Konfigurieren
Jetzt sind die beiden Container gestartet! Zumindest fast… Der Matrix synapse Container brauch noch eine Konfigurations Datei damit er richtig starten kann.
Zuerst Navigierst du über cd zu deinem eben festgelegten pfad für die matrix dateien. Dort angekommen erstellst du im Hauptverzeichnis des Ordners eine .yaml datei
sudo nano homeserver.yaml
In diese Datei kopierst du folgendes:
server_name: "matrix.example.com" # <- Hier öffentliche domain vom Server / router eintragen
pid_file: /data/homeserver.pid
listeners:
- port: 8008
tls: false
type: http
x_forwarded: true
resources:
- names: [client, federation]
compress: false
database:
name: sqlite3
args:
database: /data/homeserver.db
#log_config: "/data/my.matrix.host.log.config"
media_store_path: /data/media_store
report_stats: true
macaroon_secret_key: "key" # <- Tausche „key“ durch eine zufällige zeichenfolge aus
form_secret: "key" # <- Tausche „key“ durch eine zufällige zeichenfolge aus
signing_key_path: "/data/my.matrix.host.signing.key"
trusted_key_servers:
- server_name: "matrix.org"
suppress_key_server_warning: true
enable_registration: true
enable_registration_without_verification: true
federation_domain_whitelist: null
admin_api_http_bind_port: 8008
Anscheinend startest du noch einmal den docker Container neu. Das geht mit:
sudo docker restart synapse
Wenn alles geklappt hat solltest du auf die Willkommensseite von dem Matrix Server kommen über die IP vom Server im Heimnetzwerk oder die Öffentliche IP Adresse vom Cloud Server:
http://ipadresse:8008
Die Seite sollte ungefähr so aussehen:

Schritt 5: Router Konfigurieren
WICHTIG! Wenn du ein Cloud Server verwendest, kanst du diesen Schritt überspringen.
Wenn das klappt müssen wir das ganze nur noch absichern und, wenn du den Server von zuhause betreibst, von außen erreichbar machen.
Als nächstes musst du dein Router so konfigurieren das der Port 80 und 443 von deinem Heimserver von außen erreichbar sind. Dafür musst du wissen wie du eine port Freigabe an deinem Router erstellst.
Schritt 6: Reverse Proxy Konfigurieren
Du gehst du über die IP vom Server im Heimnetzwerk oder die Öffentliche IP Adresse vom Cloud Server auf dem port 81 auf den NPM (Nginx Proxy Manager).
http://ipadresse:81
Du solltest dann dieses Login sehen:

Die standard Login daten sind:
E-Mail: admin@example.com
Passwort: changeme
Wenn du dich angemeldet hast wirst du aufgefordert diese Anmeldedaten zu ändern.
Danach sollte es so bei dir Aussehen:

Du klickst dann auf „Proxy Hosts“ (Bei dir sollte da eine 0 stehen)
Dort angekommen klickst du oben auf „Add Proxy Host“:

Danach füllst du folgendes aus:

Und unter „SSL“:

ACHTUNG! Ersetze folgendes mit deinen Daten:
- matrix.example.com = deine öffentliche domain
- ipadresse = entweder die IP adresse des servers oder „localhost“
- email = durch deine Email adresse
GESCHAFFT! Nun bist du mit der Installation und Einrichtung fertig!
wenn du jetzt auf deine öffentliche Domain gehst, solltest du die Matrix willkommen Seite sehen. Wenn du die siehst, hast du alles richtig gemacht!