Element - Matrix-Chat-Client im Browser selbst hosten

Element - Matrix-Chat-Client im Browser selbst hosten

Element ist die offizielle Web-Oberfläche für das dezentrale Matrix-Protokoll und ermöglicht sicheres, verschlüsseltes Chatten ohne Abhängigkeit von zentralen Servern.

Was ist Element?

Matrix ist ein offenes, föderiertes Kommunikationsprotokoll, das Ende-zu-Ende-Verschlüsselung und dezentrale Serverstrukturen kombiniert. Element (früher Riot.im) ist der am weitesten verbreitete Client für dieses Netzwerk und läuft vollständig im Browser. Wer einen eigenen Matrix-Homeserver betreibt (z. B. Synapse), kann auch den Element-Webclient selbst hosten und so die vollständige Kontrolle über die gesamte Kommunikationsinfrastruktur behalten. Das Docker-Image enthält einen vorkonfigurierten Nginx, der die statischen Dateien der Anwendung ausliefert.

Voraussetzungen

  • Docker 20.10+ / Docker Compose
  • Eigener Matrix-Homeserver (z. B. Synapse) oder Nutzung von matrix.org
  • Optional: Reverse Proxy (Nginx, Traefik) für HTTPS

Compose-Beispiel

services:
  element:
    image: vectorim/element-web:latest
    container_name: element
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - ./config.json:/app/config.json:ro

Minimale config.json für einen eigenen Homeserver:

{
  "default_server_config": {
    "m.homeserver": {
      "base_url": "https://matrix.meinedomain.de",
      "server_name": "meinedomain.de"
    }
  },
  "brand": "Element"
}

Hinweise

  • Konfigurationsdatei einbinden: Die config.json muss als Read-only-Volume eingehängt werden, sonst startet Element mit den Standardeinstellungen von matrix.org.
  • HTTPS ist Pflicht: Browser erlauben Kamera, Mikrofon und Benachrichtigungen nur über sichere Verbindungen. Einen Reverse Proxy mit TLS-Terminierung vorschalten.
  • Eigener Homeserver empfohlen: Für maximale Kontrolle Synapse oder Dendrite als separaten Container betreiben und in der config.json eintragen.
  • Updates: Das latest-Tag wird regelmäßig aktualisiert. Mit docker compose pull && docker compose up -d bleibt der Client auf dem neuesten Stand.