So installieren Sie Synapse Matrix Server mit Docker Compose

Beispiel: Stellen Sie sich eine kleine Freiwilligengruppe vor, die einen eigenen Matrix-Homeserver unter [URL] einrichten möchte chat.example.com. Dies ist ein hypothetisches Setup und kein Erfahrungsbericht eines getesteten Servers. Die gleichen Schritte lassen sich auf eine reale Domain übertragen, aber wählen Sie den Namen des Matrix-Servers sorgfältig: Synapse verwendet ihn für Benutzer-IDs, und er kann später nicht mehr geändert werden.

Diese Anleitung erstellt einen Synapse-Dienst und eine PostgreSQL-Datenbank mit Docker Compose. Das offizielle Docker-Image von Synapse verwendet standardmäßig SQLite, was für einen kurzen Test praktisch ist. Die Docker-Dokumentation von Synapse empfiehlt jedoch PostgreSQL für den Produktiveinsatz. Daher generiert das Beispiel zunächst die Synapse-Konfiguration, ändert die Datenbankeinstellungen auf PostgreSQL und startet anschließend beide Container. Das offizielle Image ist [Image-Name] ghcr.io/element-hq/synapse. Die Anweisungen und Image-Details wurden am 6. Oktober 2026 anhand der aktuellen offiziellen Dokumentation geprüft. Image-Tags und unterstützte Softwareversionen können sich ändern. Überprüfen Sie daher die verlinkte Dokumentation vor einer langfristigen Bereitstellung.

Was Sie vor der Installation benötigen

  • Ein Linux-Server oder ein anderer Docker-kompatibler Host mit installierter Docker Engine und dem Docker Compose-Plugin. Stellen Sie sicher, dass Compose verfügbar ist docker compose version. Befolgen Sie die offiziellen Installationsanweisungen von Docker für Ihr Betriebssystem.
  • Eine Domäne oder Subdomäne, die auf den Server verweist. In diesem Beispiel chat.example.comist dies der Name des Synapse-Servers, daher sehen lokale Benutzer-IDs wie folgt aus @alex:chat.example.com: . Ersetzen Sie dies durch eine Domäne, die Sie kontrollieren, bevor Sie die Konfiguration generieren.
  • Ein Reverse-Proxy oder eine andere TLS-Terminierungsmethode für die öffentliche Nutzung. Der standardmäßige HTTP-Listener von Synapse auf Port 80 8008ist kein öffentlich zugänglicher HTTPS-Endpunkt. Dieses Compose-Beispiel bindet diesen Port an die Loopback-Schnittstelle des Hosts, sodass ein Reverse-Proxy auf demselben Rechner ihn erreichen kann.

Der Name SYNAPSE_SERVER_NAMEentspricht nicht unbedingt der URL jeder Clientverbindung. Wenn Sie kürzere IDs wie z. B. „example.com“ verwenden möchten, @alex:example.comwährend Sie Clients von „example.com“ bedienen chat.example.com, ist eine gezielte Domain- und Discovery-Konfiguration erforderlich. Legen Sie dies fest, bevor Sie Konten erstellen.

1. Erstellen Sie ein Arbeitsverzeichnis und ein Datenbankpasswort.

Erstellen Sie auf dem Server ein Verzeichnis für das Compose-Projekt und die persistenten Synapse-Dateien:

mkdir -p ~/matrix-synapse/data
cd ~/matrix-synapse

Erstellen Sie eine lokale .envDatei, die von Docker Compose gelesen wird. Generieren Sie ein langes, zufälliges Passwort mithilfe eines Passwortmanagers oder eines lokalen, sicheren Passwortgenerators und fügen Sie es nach dem </body>-Tag ein POSTGRES_PASSWORD=. Verwenden Sie in diesem Beispiel Buchstaben und Zahlen, um spätere Probleme mit der YAML-Formatierung zu vermeiden. Laden Sie diese Datei nicht in ein öffentliches Repository hoch und beschränken Sie deren Berechtigungen.

umask 077
nano .env

Die Datei sollte beispielsweise nur eine Zeile enthalten POSTGRES_PASSWORD=replace-with-a-long-random-value. Der Text dient als Platzhalter und ist kein wiederverwendbares Passwort. Bewahren Sie das Passwort für die Synapse-Datenbankkonfiguration in Schritt 3 auf.

2. Definieren Sie die Synapse- und PostgreSQL-Dienste.

compose.yamlIm Projektverzeichnis erstellen :

services:
  postgres:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_USER: synapse
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}
      POSTGRES_DB: synapse
      POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U synapse -d synapse"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 20s

  synapse:
    image: ghcr.io/element-hq/synapse:latest
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      SYNAPSE_SERVER_NAME: chat.example.com
      SYNAPSE_REPORT_STATS: "no"
    volumes:
      - ./data:/data
    ports:
      - "127.0.0.1:8008:8008"

volumes:
  postgres_data:

Ersetzen Sie dies chat.example.comdurch den von Ihnen gewählten Servernamen. Der PostgreSQL-Integritätscheck veranlasst Compose, auf die Bereitschaft der Datenbank zu warten, bevor Synapse gestartet wird. Das benannte Datenbank-Volume und das eingebundene ./dataVerzeichnis bleiben auch nach dem Austausch des Containers erhalten; das bloße Entfernen von Containern löscht sie nicht. Vermeiden Sie dies docker compose down -v, es sei denn, Sie möchten das Datenbank-Volume absichtlich löschen.

Das Beispiel dient :latestdazu, den ersten Pull zu vereinfachen. Wählen Sie für einen verwalteten Server ein bestimmtes Synapse-Release-Tag oder einen Image-Digest aus, notieren Sie diesen und aktualisieren Sie ihn anschließend im Rahmen eines geplanten Upgrade-Prozesses, nachdem Sie die Release Notes geprüft haben. Gehen Sie nicht davon aus, dass das veränderliche latestTag die gleiche Version beibehält.

3. Generieren Sie die Synapse-Konfiguration und verweisen Sie sie auf PostgreSQL.

Führen Sie das offizielle Image einmal im Konfigurationsgenerierungsmodus aus. Da Compose ./dataunter /usr/local/bin einbindet /data, bleiben die generierte Konfiguration und der Signaturschlüssel auf dem Host.

docker compose run --rm synapse generate

Dieser Befehl verwendet den Servernamen und die Option für anonyme Statistiken aus der Compose-Umgebung. Synapse erstellt außerdem einen Signaturschlüssel; bewahren Sie diesen im Datenverzeichnis auf und fügen Sie ihn geschützten Backups hinzu. Generieren oder verwerfen Sie ihn nicht bei einem normalen Container-Update.

Öffnen Sie data/homeserver.yamlden generierten Abschnitt und ersetzen Sie ihn durch die folgenden Einstellungen. Verwenden Sie anstelle des Platzhalters database:das exakte Passwort aus dem Abschnitt „Passwort“ ..env

database:
  name: psycopg2
  args:
    user: synapse
    password: 'replace-with-the-same-random-value'
    dbname: synapse
    host: postgres
    port: 5432
    cp_min: 5
    cp_max: 10

Behalten Sie die umgebende YAML-Einrückung bei und stellen Sie sicher, dass nur ein database:Abschnitt aktiv ist. Der Hostname postgresist der Name des Compose-Dienstes, den Container in ihrem gemeinsamen Standardnetzwerk auflösen können. Die Konfiguration verwendet den in Synapse dokumentierten PostgreSQL-Engine-Namen psycopg2und Datenbankargumentnamen, einschließlich dbname.

In diesem kleinen Beispiel erscheint das Datenbankpasswort sowohl in der Synapse-Konfiguration als auch in der geschützten .envDatei. Behandeln Sie beide Dateien als Geheimnisse, beschränken Sie den Hostzugriff und verwenden Sie ein dediziertes Geheimnismanagement, falls Ihre Bereitstellungsumgebung dies erfordert. Fügen Sie das echte Passwort niemals in Protokolle, Screenshots oder Supportanfragen ein.

4. Synapse mit Docker Compose starten

Den Stack im Hintergrund starten:

docker compose up -d

Überprüfen Sie den Dienststatus und lesen Sie die Startprotokolle:

docker compose ps
docker compose logs --tail=100 synapse

Warten Sie, bis Synapse die Ersteinrichtung der Datenbank abgeschlossen hat. Ein laufender Container bedeutet lediglich, dass sein Prozess aktiv ist. Überprüfen Sie die Protokolle auf Konfigurations-, Datenbank- oder Berechtigungsfehler, bevor Sie fortfahren. Um die Protokolle in Echtzeit zu verfolgen, verwenden Sie die entsprechende Taste docker compose logs -f synapseund drücken Sie die entsprechende Taste Ctrl+C, um die Protokollverfolgung zu beenden, ohne den Container zu stoppen.

5. Lokale API überprüfen und öffentlichen Zugriff konfigurieren

Vom Docker-Host aus fordern Sie den Synapse-Client-API-Versionsendpunkt an:

curl -fsS http://127.0.0.1:8008/_matrix/client/versions

Eine erfolgreiche Antwort ist JSON, das die unterstützten Matrix-Client-API-Versionen beschreibt. Dies bestätigt, dass der HTTP-Listener lokal antwortet; es beweist jedoch nicht, dass DNS, HTTPS oder die Föderation korrekt konfiguriert sind.

Konfigurieren Sie den Reverse-Proxy des Hosts so, dass er Anfragen für die gewählte Domain weiterleitet http://127.0.0.1:8008und ein gültiges TLS-Zertifikat erhält. Behalten Sie den Matrix-Anfragepfad beim Proxying bei. Überprüfen Sie anschließend den öffentlichen Endpunkt:

curl -fsS https://chat.example.com/_matrix/client/versions

Ersetzen Sie den Beispiel-Hostnamen durch Ihren tatsächlichen. Falls Clients den Homeserver über eine separate Benutzer-ID-Domäne finden müssen, veröffentlichen Sie die entsprechenden Matrix-Einträge für diese Konfiguration. Für die Föderation sind außerdem korrektes öffentliches Routing und DNS erforderlich; die 8008alleinige Öffnung eines lokalen Ports reicht für eine vollständige öffentliche Bereitstellung nicht aus. Lesen Sie die Synapse-Richtlinien zu Reverse-Proxy und Föderation, bevor Sie den Dienst freigeben.

6. Erstellen Sie das erste Administratorkonto.

Synapse deaktiviert die öffentliche Registrierung standardmäßig. Für einen privaten Server sollte diese Standardeinstellung beibehalten und Konten über die Kommandozeile erstellt werden. Fügen Sie vorübergehend einen starken registration_shared_secretWert zu hinzu data/homeserver.yamlund starten Sie Synapse anschließend neu, damit die Änderung übernommen wird.

docker compose restart synapse

Führen Sie das Registrierungstool innerhalb des Containers aus. Es fordert einen Benutzernamen und ein Passwort an; die Einstellung --adminerstellt den ersten Administrator:

docker compose exec synapse register_new_matrix_user \
  http://localhost:8008 \
  -c /data/homeserver.yaml \
  --admin

Nachdem das Konto erstellt wurde, entfernen Sie es registration_shared_secretaus der Konfiguration und starten Sie Synapse neu. Wenn das Geheimnis konfiguriert bleibt, kann jeder, der es erhält, Standard- oder Administratorkonten über die Registrierungsoberfläche erstellen. Melden Sie sich über einen Matrix-Client an, der benutzerdefinierte Homeserver unterstützt, und verwenden Sie dabei die Server-URL, die Ihnen Ihr Reverse-Proxy bereitstellt.

Datensicherungen, Upgrades und häufige Fehlerbehebungen

  • Sichern Sie die richtigen Daten: Stoppen Sie die PostgreSQL-Datenbank oder erstellen Sie regelmäßig Snapshots der Daten und sichern Sie diese ./data, einschließlich Konfiguration, Medien und Signaturschlüssel. Eine compose.yamleinzelne Kopie reicht nicht aus, um den Homeserver wiederherzustellen. Speichern Sie die Backups an einem separaten Ort und überprüfen Sie regelmäßig, ob Sie darauf zugreifen können.
  • Synapse kann nicht in das Verzeichnis schreiben /data: Überprüfen Sie die Host-Zugriffsrechte und Berechtigungen ./data. Der Laufzeitbenutzer des offiziellen Images benötigt Lese- und Schreibrechte für die Konfiguration. Passen Sie die Host-Zugriffsrechte sorgfältig an, anstatt das Verzeichnis für alle Benutzer beschreibbar zu machen.
  • Die Datenbankverbindung schlägt fehl: Überprüfen Sie, ob die Datenbankkonfiguration korrekt konfiguriert ist host: postgres, das Passwort übereinstimmt .envund docker compose logs postgresdie Datenbank fehlerfrei funktioniert. depends_onDie Bereitschaftsbedingung von Compose reduziert zwar Startkonflikte, behebt aber keine fehlerhaften Anmeldeinformationen.
  • Die lokale API funktioniert, aber Clients können keine Verbindung herstellen: Überprüfen Sie den DNS-Eintrag, das TLS-Zertifikat, den Reverse-Proxy-Upstream und die Discovery-Einträge für Ihre gewählte Domain-Konfiguration. Die ausschließliche Verwendung von Loopback-Ports ist für einen Proxy auf demselben Host beabsichtigt; ein Proxy in einem anderen Container benötigt ein gemeinsames Docker-Netzwerk und ein anderes Routing-Design.
  • Aktualisierung: Erstellen Sie zunächst ein Backup, lesen Sie die Synapse-Versionshinweise, aktualisieren Sie das angeheftete Image-Tag und erstellen Sie den Dienst docker compose pullneu docker compose up -d. Behalten Sie dabei das Datenverzeichnis, das Datenbankvolume, den Servernamen und den Signaturschlüssel bei.

Im beispielhaften Setup einer Freiwilligengruppe ist die Installation erst dann abgeschlossen, wenn der lokale Versionsendpunkt antwortet, der HTTPS-Endpunkt über den Proxy erreichbar ist und sich der Administrator mit der vorgesehenen Matrix-ID-Domäne anmelden kann. Diese Prüfungen sind praktische Indikatoren für eine funktionierende erste Bereitstellung; sie ersetzen jedoch nicht die Überprüfung von Sicherheit, Datensicherung, Verbundauthentifizierung und Betriebsanforderungen, bevor eine größere Community eingeladen wird.

Offizielle Referenzen

Einen Kommentar hinterlassen

So konfigurieren Sie die LDAP-Authentifizierung in ownCloud Infinite Scale

So konfigurieren Sie die LDAP-Authentifizierung in ownCloud Infinite Scale

Konfigurieren Sie die LDAP-gestützte Anmeldung für ownCloud Infinite Scale, ordnen Sie Benutzer und Gruppen zu, wählen Sie zwischen integriertem und externem OIDC, schützen Sie Anmeldeinformationen und überprüfen Sie die Authentifizierung sicher.

So migrieren Sie von ownCloud 10 Classic zu ownCloud Infinite Scale

So migrieren Sie von ownCloud 10 Classic zu ownCloud Infinite Scale

Planen Sie eine Migration von ownCloud Classic 10 zu Infinite Scale mit der unterstützten Anwendung „migrate-to-ocis“. Erfahren Sie, welche Daten übertragen werden, welche nicht, welche LDAP-Voraussetzungen gelten, welche Befehle benötigt werden und welche Prüfungen beim Übergang durchzuführen sind.

So richten Sie benutzerdefinierte SpamAssassin-Regeln in Zimbra ein (sicher)

So richten Sie benutzerdefinierte SpamAssassin-Regeln in Zimbra ein (sicher)

Erfahren Sie, wo Zimbra benutzerdefinierte SpamAssassin-Regeln lädt, wie man eine .cf-Regel schreibt und validiert, wie man Amavis neu startet, wie man Nachrichtenkopfzeilen testet und wie man sicher ein Rollback durchführt.

So sichern und stellen Sie einzelne Postfächer in Zimbra CE wieder her

So sichern und stellen Sie einzelne Postfächer in Zimbra CE wieder her

Sichern und stellen Sie ein einzelnes Zimbra CE-Postfach mit zmmailbox wieder her. Exportieren Sie ein ZIP-Archiv mit Metadaten, überprüfen Sie es und testen Sie die Wiederherstellung sicher in einem Testkonto.

So konfigurieren Sie Speicherkontingente für Benutzer in ownCloud oCIS

So konfigurieren Sie Speicherkontingente für Benutzer in ownCloud oCIS

Erfahren Sie, wie Sie ein persönliches Speicherplatzkontingent für einen ownCloud Infinite Scale-Benutzer festlegen, dieses von Projektbereichs- und globalen Limits unterscheiden und neuen Benutzern rollenbasierte Standardeinstellungen zuweisen.

Behebung von BigBlueButton FreeSWITCH SIP-Registrierungs-Timeouts: Ein praktischer Diagnoseleitfaden

Behebung von BigBlueButton FreeSWITCH SIP-Registrierungs-Timeouts: Ein praktischer Diagnoseleitfaden

Diagnostizieren Sie BigBlueButton FreeSWITCH SIP-Registrierungstimeouts, indem Sie den Dienststatus, SIP- und ESL-Listener, NAT-Adressen, Firewall-Regeln und Protokolle überprüfen.

So beheben Sie den Fehler „Verbindung abgelehnt“ in der ownCloud Mobile App

So beheben Sie den Fehler „Verbindung abgelehnt“ in der ownCloud Mobile App

Beheben Sie Verbindungsfehler der ownCloud-Mobil-App, indem Sie die Server-URL, den HTTPS-Port, den Webserver, die Firewall, den Proxy, TLS und die vertrauenswürdigen Domänen überprüfen.

So schränken Sie die Benutzerregistrierung auf einem selbstgehosteten Matrix-Server ein

So schränken Sie die Benutzerregistrierung auf einem selbstgehosteten Matrix-Server ein

Vergleichen Sie die Möglichkeiten zur Kontrolle neuer Matrix-Konten auf Synapse, von der Deaktivierung der öffentlichen Registrierung bis zur Ausstellung von Token mit begrenzter Nutzungsdauer, mit Konfigurationsbeispielen und Prüfungen.

Fix the ownCloud Blank Page / White Screen of Death: Choose the Right Recovery Path

Fix the ownCloud Blank Page / White Screen of Death: Choose the Right Recovery Path

Fix an ownCloud blank page by separating browser, PHP, app, permissions, upgrade, and proxy failures, then choose the least disruptive recovery path.

So beheben Sie den Zimbra-Fehler „Nginx-Proxy-Dienst wurde gestoppt“.

So beheben Sie den Zimbra-Fehler „Nginx-Proxy-Dienst wurde gestoppt“.

Diagnostizieren Sie den gestoppten NGINX-Proxy von Zimbra, lesen Sie die entsprechenden Protokolle, starten Sie ihn sicher neu und überprüfen Sie gezielte Korrekturen für fehlende Konfigurationen, ungültige Ports, Zertifikate und Upstream-Fehler.