Kategorie: Tutorial

  • 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! 🎉