Der sicherste Messenger der Welt: Matrix

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!

FERTIG! 🎉