Matrix-Delegation einrichten

← Alle Anleitungen

Deine Matrix-Adresse soll @name:example.com lauten, der Server läuft aber unter matrix.example.com? Dann sagt dein Webserver auf der Hauptdomain allen anderen, wo Matrix zu finden ist. Das nennt sich Delegation und besteht aus zwei kleinen Antworten.

Was du brauchst

AdresseFür wenAntwort
/.well-known/matrix/serverAndere Matrix-ServerWo dein Server für die Föderation erreichbar ist
/.well-known/matrix/clientApps wie ElementWo sich Apps anmelden

Beides gehört auf den Webserver von example.com, per HTTPS mit gültigem Zertifikat. Ersetze matrix.example.com in allen Beispielen durch die Adresse deines Matrix-Servers.

nginx

Im server-Block für Port 443:

location = /.well-known/matrix/server {
    default_type application/json;
    return 200 '{"m.server": "matrix.example.com:443"}';
}

location = /.well-known/matrix/client {
    default_type application/json;
    add_header Access-Control-Allow-Origin "*" always;
    return 200 '{"m.homeserver": {"base_url": "https://matrix.example.com"}}';
}

Danach prüfen und neu laden: nginx -t && systemctl reload nginx

Apache 2

Lege im Webroot der Hauptdomain zwei Dateien ohne Endung an.

.well-known/matrix/server:

{"m.server": "matrix.example.com:443"}

.well-known/matrix/client:

{"m.homeserver": {"base_url": "https://matrix.example.com"}}

Ergänze dann im VirtualHost für Port 443, damit die Dateien als JSON ausgeliefert werden. Dafür muss mod_headers aktiv sein (a2enmod headers):

<Location "/.well-known/matrix/">
    ForceType application/json
    Header always set Access-Control-Allow-Origin "*"
</Location>

Danach prüfen und neu laden: apachectl configtest && systemctl reload apache2

Apache 2 mit .htaccess, zum Beispiel bei WordPress

Kommst du nicht an die Server-Konfiguration, legst du dieselben zwei Dateien an und daneben eine .well-known/matrix/.htaccess:

ForceType application/json
Header always set Access-Control-Allow-Origin "*"

Testen

curl -s https://example.com/.well-known/matrix/server
curl -si https://example.com/.well-known/matrix/client

Die erste Zeile zeigt das JSON mit m.server. Die zweite zeigt zusätzlich die Header, dort müssen content-type: application/json und access-control-allow-origin: * stehen.

Zum Schluss gibst du deine Hauptdomain beim Matrix Federation Tester ein. Er prüft die Föderation von außen.

Wenn es nicht klappt

  • Föderation geht nicht: Prüfe, ob in m.server der Port :443 steht. Ohne Angabe versuchen andere Server es auf Port 8448.
  • Element im Browser findet den Server nicht: Meist fehlt der Header Access-Control-Allow-Origin bei /client.
  • Antwort ist eine HTML-Seite oder 404: Ein CMS oder eine Weiterleitung fängt den Pfad ab. Die Einträge müssen vor solchen Regeln greifen.
  • Im Browser geht es, beim Federation Tester nicht: Eine Bot-Sperre oder Firewall blockt Server-Anfragen. Nimm /.well-known/matrix/ davon aus.

Soll ich das für dich übernehmen?

Ich betreibe Matrix-Server auf Servern in Deutschland und richte die Delegation für dich ein.