Hier zeige ich euch, wie Matrix und den Web Client Element mittels Traefik und Docker schnell installieren könnt.
Update
06.02.2022 | Erstellung dieser Anleitung. |
Diese Anleitung ist nicht mehr aktuell. Hier findet ihr die neue Anleitung:
MATRIX CHATSERVER – MIT DOCKER UND TRAEFIK INSTALLIEREN
1. Verzeichnis erstellen
Zuerst erstellen wir uns ein passendes Verzeichnis.
mkdir -p /opt/containers/matrix
2. Docker Compose Datei erstellen
Nun erstellen wir unsere Docker Compose Datei. In dieser Datei sind bereits die passenden Einstellungen für Traefik enthalten. Wenn ihr noch kein Traefik installiert habt, dann könnt ihr dies mit dieser Anleitung tun.
nano /opt/containers/matrix/docker-compose.yml
Inhalt:
version: '3' services: postgres: image: postgres:14 container_name: matrix-db restart: unless-stopped networks: - default volumes: - ./postgresdata:/var/lib/postgresql/data environment: - POSTGRES_DB=synapse - POSTGRES_USER=synapse - POSTGRES_PASSWORD=sicheres Kennwort - POSTGRES_INITDB_ARGS= --encoding='UTF8' --lc-collate='C' --lc-ctype='C' element: image: vectorim/element-web:latest container_name: matrix-element restart: unless-stopped volumes: - ./element-config.json:/app/config.json networks: - default - proxy labels: - "traefik.enable=true" - "traefik.http.routers.element.entrypoints=http" - "traefik.http.routers.element.rule=Host(`element.euredomain.de`)" # Hier eure URL eingeben # - "traefik.http.middlewares.element-https-redirect.redirectscheme.scheme=https" - "traefik.http.routers.element.middlewares=element-https-redirect" - "traefik.http.routers.element-secure.entrypoints=https" - "traefik.http.routers.element-secure.rule=Host(`element.euredomain.de`)" # Hier eure URL eingeben # - "traefik.http.routers.element-secure.tls=true" - "traefik.http.routers.element-secure.tls.certresolver=http" - "traefik.http.routers.element-secure.service=element" - "traefik.http.services.element.loadbalancer.server.port=80" - "traefik.docker.network=proxy" - "traefik.http.routers.element-secure.middlewares=secHeaders@file" synapse: image: matrixdotorg/synapse:latest container_name: matrix-synapse restart: unless-stopped networks: - default - proxy volumes: - ./synapse:/data labels: - "traefik.enable=true" - "traefik.http.routers.synapse.entrypoints=http" - "traefik.http.routers.synapse.rule=Host(`matrix.euredomain.de`)" # Hier eure URL eingeben # - "traefik.http.middlewares.synapse-https-redirect.redirectscheme.scheme=https" - "traefik.http.routers.synapse.middlewares=synapse-https-redirect" - "traefik.http.routers.synapse-secure.entrypoints=https" - "traefik.http.routers.synapse-secure.rule=Host(`matrix.euredomain.de`)" # Hier eure URL eingeben # - "traefik.http.routers.synapse-secure.tls=true" - "traefik.http.routers.synapse-secure.tls.certresolver=http" - "traefik.http.routers.synapse-secure.service=synapse" - "traefik.http.services.synapse.loadbalancer.server.port=8008" - "traefik.docker.network=proxy" - "traefik.http.routers.synapse-secure.middlewares=secHeaders@file" networks: proxy: external: true
Notwendige Anpassungen:
- Ihr müsst noch den Hostnamen anpassen (element.euredomain.de)
- Ihr müsst noch den Hostnamen anpassen (matrix.euredomain.de)
- Ihr müsst noch ein Kennwort vergeben (POSTGRES_PASSWORD=sicheres Kennwort)
3. Element Konfiguration erstellen
Nun erstellen wir uns noch eine Konfigurationsdatei für Element. Dazu gebt ihr folgendes ein:
nano /opt/containers/matrix/element-config.json
Nun kopiert ihr folgendes in die Datei:
{ "default_server_config": { "m.homeserver": { "base_url": "https://matrix.euredomain.de", "server_name": "matrix.euredomain.de" }, "m.identity_server": { "base_url": "https://vector.im" } }, "brand": "Element", "integrations_ui_url": "https://scalar.vector.im/", "integrations_rest_url": "https://scalar.vector.im/api", "integrations_widgets_urls": [ "https://scalar.vector.im/_matrix/integrations/v1", "https://scalar.vector.im/api", "https://scalar-staging.vector.im/_matrix/integrations/v1", "https://scalar-staging.vector.im/api", "https://scalar-staging.riot.im/scalar/api" ], "hosting_signup_link": "https://element.io/matrix-services?utm_source=element-web&utm_medium=web", "bug_report_endpoint_url": "https://element.io/bugreports/submit", "uisi_autorageshake_app": "element-auto-uisi", "showLabsSettings": true, "piwik": { "url": "https://piwik.riot.im/", "siteId": 1, "policyUrl": "https://element.io/cookie-policy" }, "roomDirectory": { "servers": [ "matrix.org", "gitter.im", "libera.chat" ] }, "enable_presence_by_hs_url": { "https://matrix.org": false, "https://matrix-client.matrix.org": false }, "terms_and_conditions_links": [ { "url": "https://element.io/privacy", "text": "Privacy Policy" }, { "url": "https://element.io/cookie-policy", "text": "Cookie Policy" } ], "hostSignup": { "brand": "Element Home", "cookiePolicyUrl": "https://element.io/cookie-policy", "domains": [ "matrix.org" ], "privacyPolicyUrl": "https://element.io/privacy", "termsOfServiceUrl": "https://element.io/terms-of-service", "url": "https://ems.element.io/element-home/in-app-loader" }, "sentry": { "dsn": "https://029a0eb289f942508ae0fb17935bd8c5@sentry.matrix.org/6", "environment": "develop" }, "posthog": { "projectApiKey": "phc_Jzsm6DTm6V2705zeU5dcNvQDlonOR68XvX2sh1sEOHO", "apiHost": "https://posthog.hss.element.io" }, "features": {}, "map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx" }
Hier müsst ihr noch folgendes anpassen:
"base_url": "https://matrix.euredomain.de", "server_name": "matrix.euredomain.de"
Gebt dort die URL an, welche ihr in der Docker Compose Datei angegeben habt.
4. Synapse Konfiguration erstellen
Um die Konfiguration zu erstellen, müsst ihr erst den Befehl anpassen und dann ausführen:
Dies müsst ihr noch anpassen: SYNAPSE_SERVER_NAME=synapse.euredomain.de --> zu eure Domain, welche ihr in der Docker Compose Datei angeben habt. docker run -it --rm \ -v "/opt/containers/matrix/synapse:/data" \ -e SYNAPSE_SERVER_NAME=matrix.euredomain.de \ -e SYNAPSE_REPORT_STATS=yes \ matrixdotorg/synapse:latest generate
Wenn ihr den Befehl nun ausführt, sollte es so aussehen:
Nun müssen wir die Konfigurationsdatei noch weiter anpassen. Dazu gebt ihr folgendes ein:
nano /opt/containers/matrix/synapse/homeserver.yaml
In Zeile 773 müsst ihr folgendes aus kommentieren:
Anschließend sollte es so aussehen:
Darunter kopiert ihr nun folgenden Code:
database: name: psycopg2 args: user: synapse password: sicheres Kennwort database: synapse host: matrix-db cp_min: 5 cp_max: 10
Folgendes müsst ihr noch abändern:
- Gebt ihr bei “Password” das Kennwort ein, welches ihr in eurer Docker Compose Datei festgelegt habt.
Dann sollte es so bei euch ausehen:
5. Matrix starten
Nun könnt ihr Matrix nutzen. Gebt dazu folgendes ein:
docker-compose -f /opt/containers/matrix/docker-compose.yml up -d
Nun müsst ihr einige Minuten warten. Wenn ihr dann auf eure Webseite “matrix.euredomain.de” geht, solltet ihr folgendes sehen:
6. Benutzer anlegen
Nun legen wir einen Benutzer an. Dazu gebt ihr folgendes ein:
docker exec -it matrix-synapse /bin/bash
Nun seid ihr im Container. Dort könnt ihr euch mit folgendem Befehl einen Benutzer anlegen:
register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008
So sieht es bei mir aus:
7. Element im Browser öffnen
Nun gehen wir auf unsere Domain “element.euredomain.de”. Dort kannst du dich nun mit deinem eben erstellten Account anmelden.
Nach dem Klick auf “Anmelden” kannst du dich mit dem eben erstellten Account anmelden.
8. Benutzern erlauben sich selbst zu registrieren
Standardmäßig ist es Benutzern nicht möglich, sich selbst zu registrieren. Wenn man auf der Webseite auf “Konto erstellen” klickt, seht ihr folgendes:
Dies könnt ihr per Konfiguration ändern. Dazu öffnet ihr folgende Datei:
nano /opt/containers/matrix/synapse/homeserver.yaml
Dort fügt ihr folgende Zeile hinzu:
enable_registration: true
Nun startet ihr Matrix neu und könnt euch dann selbst per Webseite registrieren.
9. Quellen
https://linuxhandbook.com/install-matrix-synapse-docker/
https://cyberhost.uk/element-matrix-setup/
https://matrix.org/docs/projects/client/element
Hallo Christian,
vielen Dank für die Anleitung. Sie funktioniert super innerhalb des eigenen Netzwerks.
Sobald man sich jedoch außerhalb des eigenen Netzwerks befindet, wird ein Turnserver benötigt. Kannst du noch eine Ergänzung einfließen lassen, wie dieser entweder mittels Docker gleich integriert werden kann oder wie ein externer Turnserver hinterlegt wird?
Vielen Dank im Voraus.
Grüße
Christian
Hat noch wer das das mit der “enable_registration: true” im “nano /opt/containers/matrix/synapse/homeserver.yaml” nicht klappt?
Wenn ich das tue, startet der matrix server nicht.
Hab den code auch ganz unten gepostet und nicht irgendwie mittendrin, trotzdem gehts nicht.
Hatte das auch bei anderen seiten geschaut und dort scheint es zu laufen, weis jemand woran es liegt ?
Bei mir funktionieren die Sticker nicht bzw. der Sticker Picker bleibt immer leer gibt es da einen Trick?
Also irgendwie funktioniert es bei mir nur zu 50%. Synapse Server funktioniert, aber bei Schritt7 “Element im Browser öffnen” bekomme ich einen “404 Page not found”.
Ich bin exakt nach der Anleitung vorgegangen und habe meine Subdomains identisch benannt (matrix.*** element.***).
Habe auch bereits einmal alles gelöscht und von vorne begonnen.
Ich nutze Traefik, auch gemäß Anleitung von hier eingerichtet, dort sehe ich z.B. auch nicht, dass die Subdomain element.*** weitergeleitet wird.
Hat irgendjemand vielleicht eine Idee ??
Vielen Danke für diese Anleitung.
Element, Synapse-Admin, Redis laufen super.
Was muss noch angepasst werden damit Matrix den “Matrix Federation Test” besteht? https://federationtester.matrix.org/
synapse:
label:
– “traefik.http.routers.synapse.rule=Host(`matrix.${DOMAIN}`) || (Host(`${DOMAIN}`) && PathPrefix(`/_matrix/`,`/_synapse/`))”
Hallo Christian,
vielen Dank für die super Anleitung.
Kannst du eventuell noch den synapse-admin hinzufügen, das macht die Nutzerverwaltung einfacher.
Viele Grüße
Matthias
Danke dir für die Anleitung!
hat grandios funktioniert.
Allerdings habe ich Traeffik schon am laufen – hier wäre am Anfang vielleicht ein Verweis auf diese Installtion noch gut 🙂
Sonst ist auch das matrix-docker-ansible Projekt zu empfehlen. Sehr einfach erweiterbar & wird von der Community auf dem neuesten Stand gehalten (https://github.com/spantaleev/matrix-docker-ansible-deploy).