Mein Weg zum eigenen Matrix-Server mit WhatsApp-Bridge – Teil 3

Im Matrix-Style sind Zahlen zu erkennen. Alles ist dunkel und in blau gehalten.

Über die Matrix-Brücke gehen. (Bild von wastedgeneration, Pixabay.com)

Nachdem unser Synapse-Server nun läuft, föderiert und wir via Element-Web Zugriff haben, können wir uns nun dem nächsten Schritt zuwenden. Wir wollen eine Matrix-WhatsApp-Brücke installieren.

Teil 3 – Mautrix-WhatsApp-Bridge installieren

Die richtigen Cloudflare-Einstellungen haben wir im Teil 1 schon erstellt. So müssen wir nur noch den entsprechenden Ordner erstellen und dann unseren "matrix" Stack in Portainer anpassen.

Zuerst der Ordner:
mkdir /portainer/Files/AppData/Config/Matrix/bridges/mautrix-whatsapp-bridge

Und hier der Inhalt unseres Stacks:

services:

  postgresql:
    container_name: "matrix-postgres"
    image: postgres:15-alpine
    environment:
      POSTGRES_PASSWORD: "[SupergeheimesPasswort]"
      POSTGRES_USER: "synapse-user"
      POSTGRES_DB: "synapse-db"
      POSTGRES_INITDB_ARGS: "--encoding='UTF8' --lc-collate='C' --lc-ctype='C'"
    volumes:
      - type: bind
        source: /portainer/Files/AppData/Config/Matrix/postgresdata/
        target: /var/lib/postgresql/data/
    restart: unless-stopped
    networks: ["cloudflare-tunnel"] 

  synapse:
    container_name: "matrix-synapse"
    image: "matrixdotorg/synapse:latest"
    volumes:
      - type: bind
        source: /portainer/Files/AppData/Config/Matrix/synapse/
        target: /data
    ports:
      - 7090:8008
    environment:
      SYNAPSE_SERVER_NAME: "matrix.[deineAdresse.ch]"
      SYNAPSE_REPORT_STATS: "no"
    restart: unless-stopped
    networks: ["cloudflare-tunnel"] 

  element:
    container_name: "matrix-element"
    image: "vectorim/element-web:latest"
    volumes:
      - type: bind
        source: /portainer/Files/AppData/Config/Matrix/element/element-config.json
        target: /app/config.json
    ports:
      - 7091:80
    restart: unless-stopped
    networks: ["cloudflare-tunnel"] 

  mautrix-whatsapp:
    container_name: "matrix-whatsappbridge"
    image: dock.mau.dev/mautrix/whatsapp:latest
    volumes:
      - type: bind
        source: /portainer/Files/AppData/Config/Matrix/bridges/mautrix-whatsapp-bridge
        target: /data
    ports: 
      - 7092:29318
    restart: unless-stopped
    networks: ["cloudflare-tunnel"]

networks:
    cloudflare-tunnel:
      external: true

Nach dem ersten Start des neuen Containers finden wir im erstellten Ordner die Datei "config.yaml". Bevor wir diese Datei anpassen, erstellen wir für unsere Bridge eine Postgres-Datenbank.

Dazu geben wir im Terminal folgendes ein:
docker exec -it matrix-postgres psql -U synapse-user -d postgres

Jetzt erstellen wir den neuen Mautrix-User für die Datenbank mit:
CREATE USER "mautrix-user" WITH PASSWORD '[ZweitesSupergeheimesPasswort]';

Nun erstellen wir noch eine neue Datenbank für die Bridge und weisen sie dem soeben erstellten Benutzer zu:
CREATE DATABASE "database-whatsapp" WITH OWNER "mautrix-user";

Du kannst nun die psql-Shell wieder verlassen.
\q

Jetzt können wir uns der config.yaml der Mautrix Bridge zuwenden und dort folgende Zeilen anpassen:

relay:
    permissions:
        "*": relay
        "matrix.thepipes.ch": user
        "@simon:matrix.thepipes.ch": admin

database:
    uri: "postgres://mautrix-user:[ZweitesSupergeheimesPasswort]@matrix-postgres/database-whatsapp?sslmode=disable"

homeserver:
    address: http://matrix-synapse:8008
    domain: matrix.thepipes.ch

appservice:
    address: http://matrix-whatsappbridge:29318
    public_address: https://whatsappbridge.thepipes.ch
    hostname: 0.0.0.0
    port: 29318

encryption:
    allow: true

Starte jetzt den Container "matrix-whatsappbridge" neu. Nebst der "config.yaml" solltest du nun auch noch "registration.yaml" sehen können.

Kontrolliere, ob

  1. in der "registration.yaml" unter url "http://matrix-whatsappbridge" eingetragen ist
  2. in der "config.yaml" unter "appserve" der "as_token" und "hs_token" eingetragen sind. Sollte das nicht der Fall sein, kopiere die Tokens aus der "registration.yaml" in die "config.yaml".

Nun kopieren wir die Datei "registration.yaml" in den Synapse-Ordner und benennen sie gleich noch um:

cp /portainer/Files/AppData/Config/Matrix/bridges/mautrix-whatsapp-bridge/registration.yaml /portainer/Files/AppData/Config/Matrix/synapse/mautrix-whatsapp-registration.yaml

Jetzt müssen wir diese neue Datei nur noch dem Synapse-Server bekannt machen. Dazu ergänzen wir die "homeserver-yaml" um folgende Zeilen:

# bridges
app_service_config_files:
- /data/mautrix-whatsapp-registration.yaml

Als Letztes starten wir jetzt noch die Container "matrix-whatsappbridge" und "matrix-synapse" neu.

Wenn alles klappt, können wir uns in Element-Web anmelden und dort eine neue Direktnachricht mit unserem @whatsappbot:matrix.[deineAdresse.ch] eröffnen. Am besten schreibst du mal "help" in den Chat, um eine Übersicht zu bekommen.

Um dich mit WhatsApp zu verbinden, gibst du "login qr" ein. Und scannst nun den QR-Code in WhatsApp, den du unter "Verknüpfte Geräte" "Gerät hinzufügen" findest.

Fertig oder fix und fertig?

Ich hoffe, du bist gut am Ziel angekommen und hast nun dein eigener Synapse-Server mit Element-Web und WhatsApp-Bridge am Laufen. Solltest du irgendwo anstehen, dann frag doch mal eine KI. Mir hat Google Gemini sehr geholfen.

Sollte dir diese Anleitung eine Hilfe gewesen sein, würde ich mich sehr über einen Kommentar freuen. Vielen Dank bereits im Voraus.

Kommentare: 0

Interesse an einer Diskussion? Schreibe einen Kommentar.

Image




0 / 5000

Die E-Mail-Adresse wird nicht veröffentlicht noch an Dritte weitergegeben. In deinem Text kannst du *Kursivschrift*, **Fettschrift** und [Links](http://example.org) verwenden. Der Kommentar wird moderiert und so bald wie möglich freigeschaltet.