Zum Hauptinhalt springen Skip to page footer

Element Web - Der einfachste Weg, Element zu hosten und konfigurieren

| Tutorial | Matrix Synapse

Erfahren Sie, wie Sie Element Web hosten und konfigurieren können. Nutzen Sie den gehosteten Service oder laden Sie eine vorgefertigte Version herunter. Beachten Sie die Sicherheitshinweise und entdecken Sie verschiedene Konfigurationsoptionen für eine benutzerfreundliche Erfahrung. Erfahren Sie auch mehr über Labs-Flags und die Anpassungsmöglichkeiten von Element.

Element Web

Der einfachste Weg, Element zu testen, ist die Verwendung der gehosteten Kopie auf https://app.element.io. Der Entwicklungszweig wird ständig auf https://develop.element.io zur Verfügung gestellt, für diejenigen, die das Risiko lieben.

Um Ihre eigene Kopie von Element zu hosten, ist es am schnellsten, eine vorgefertigte, veröffentlichte Version von Element zu verwenden:

  1. Laden Sie die aktuelle Version von https://github.com/vector-im/element-web/releases herunter.
  2. Entpacken Sie das Archiv auf Ihrem Webserver.
  3. Verschieben Sie das Verzeichnis element-x.x.x auf einen geeigneten Namen (oder setzen Sie einen Symlink).
  4. Konfigurieren Sie die richtigen Caching-Header auf Ihrem Webserver (siehe unten).
  5. Konfigurieren Sie die Anwendung, indem Sie die config.sample.json in die config.json kopieren und ändern. Details siehe unten.
  6. Geben Sie die URL in Ihren Browser ein und melden Sie sich bei Element! an.

Releases sind mit gpg und dem OpenPGP-Standard signiert und können mit dem öffentlichen Schlüssel unter https://packages.riot.im/element-release-key.asc verifiziert werden.

Hinweis

Bitte beachten Sie, dass Sie Element aus Sicherheitsgründen über HTTPS zur Verfügung stellen müssen. Die gängigen Browser erlauben auch keine VoIP/Video-Chats über HTTP, da WebRTC nur über HTTPS nutzbar ist. Es gibt einige Ausnahmen, wie z.B. die Verwendung von localhost, der als sicherer Kontext gilt und daher erlaubt ist.

Wichtige Sicherheitshinweise

Getrennte Domänen

Wir raten davon ab, Element unter demselben Domainnamen wie Ihren Matrix-Homeserver laufen zu lassen. Der Grund dafür ist das Risiko von XSS-Schwachstellen (Cross-Site-Scripting), die auftreten können, wenn jemand Element dazu bringt, bösartige benutzergenerierte Inhalte von einer Matrix-API zu laden und anzuzeigen, die dann aufgrund der gemeinsamen Nutzung derselben Domäne vertrauenswürdigen Zugriff auf Element (oder andere Anwendungen) hat.

Wir haben einige grobe Abhilfemaßnahmen getroffen, um diese Situation zu verhindern, aber es ist immer noch keine gute Praxis, dies von vornherein zu tun. Siehe #1977 für weitere Details.

Gute Konfigurationspraxis

Wenn Sie keine besonderen Anforderungen haben, sollten Sie die folgenden Punkte zu Ihrer Webserverkonfiguration hinzufügen, wenn Sie Element Web hosten:

  • Die X-Frame-Optionen: SAMEORIGIN-Header, um zu verhindern, dass Element Web geframt wird, und um sich vor Clickjacking zu schützen.
  • Die frame-ancestors 'self'-Direktive in Ihrem Content Security Policy Header, als moderner Ersatz für X-Frame-Options (obwohl beide enthalten sein sollten, da noch nicht alle Browser dies unterstützen, siehe hier).
  • Die X-Content-Type-Options: nosniff-Header, um MIME-Sniffing zu deaktivieren.
  • Der X-XSS-Schutz: 1; mode=block; header, für einen grundlegenden XSS-Schutz in älteren Browsern.
     

Wenn Sie nginx verwenden, würde dies wie folgt aussehen:

add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "frame-ancestors 'self'";

Für Apache sieht die Konfiguration wie folgt aus:

Header set X-Frame-Options SAMEORIGIN
Header set X-Content-Type-Options nosniff
Header set X-XSS-Protection "1; mode=block"
Header set Content-Security-Policy "frame-ancestors 'self'"

Hinweis:

Falls Sie bereits an anderer Stelle einen Content-Security-Policy-Header setzen, sollten Sie diesen so ändern, dass er die frame-ancestors-Direktive enthält, anstatt diese letzte Zeile hinzuzufügen.

Konfiguration

Sie können die Anwendung konfigurieren, indem Sie config.sample.json nach config.json oder config.$domain.json kopieren und anpassen. Das Element wird versuchen, zuerst config.$domain.json zu laden und wenn dies fehlschlägt, config.json. Dieser Mechanismus ermöglicht unterschiedliche Konfigurationsoptionen, je nachdem, ob z.B. app1.example.com oder app2.example.com angesprochen wird. Die Konfigurationen werden in keiner Weise gemischt, es wird entweder ausschließlich die Domänenkonfiguration oder die config.json verwendet.
Die möglichen Konfigurationsoptionen sind hier beschrieben. Wenn Sie Probleme haben, besuchen Sie bitte #element-web:matrix.org auf Matrix.
Ein gutes Beispiel für eine produktive Konfiguration finden Sie unter https://app.element.io/config.json.
Ein Beispiel für eine Entwicklung/Beta-Konfiguration finden Sie unter https://develop.element.io/config.json.
Nach der Änderung der Konfiguration muss die Anwendung neu geladen werden. Bei Webbrowsern ist dies ein einfaches Aktualisieren der Seite, bei Desktopanwendungen muss die Anwendung vollständig beendet (auch über die Taskleiste) und neu gestartet werden.
 

Homeserver configuration

Damit Element starten kann, müssen Sie ihm mitteilen, mit welchem Homeserver es sich standardmäßig verbinden soll. Benutzer können einen anderen Homeserver verwenden, wenn sie möchten, obwohl dies mit "disable_custom_urls": true in Ihrer Konfiguration deaktiviert werden kann.
Eine der folgenden Optionen muss angegeben werden:
1. default_server_config: Die bevorzugte Methode, um die Homeserver-Verbindungsinformationen festzulegen. Kopieren Sie einfach Ihre /.well-known/matrix/client in dieses Feld. Zum Beispiel:

{
    "default_server_config": {
        "m.homeserver": {
            "base_url": "https://matrix-client.matrix.org"
        },
        "m.identity_server": {
            "base_url": "https://vector.im"
        }
    }
}

2. default_server_name: Eine andere Methode, sich mit dem Homeserver zu verbinden, indem die Verbindungsinformationen mit .well-known gesucht werden. Bei dieser Option verwenden Sie einfach den Domainnamen Ihres Servers (der Teil am Ende der User-ID): "default_server_name": "matrix.org".

3. default_hs_url und (optional) default_is_url: Eine sehr veraltete Methode, um Verbindungsinformationen zu definieren. Dies sind die gleichen Werte wie base_url im Beispiel von default_server_config, wobei default_is_url optional ist.

Wenn eine Kombination dieser drei Methoden verwendet wird, kann Element nicht geladen werden. Dies liegt daran, dass nicht klar ist, welche Methode als "zuerst" zu betrachten ist.
 

Labs-Flags

Labs-Flags sind optionale Funktionen, typischerweise Beta oder in Entwicklung, die aktiviert oder deaktiviert werden können. Die gesamte Palette der Labs-Flags und ihr Entwicklungsstatus sind hier dokumentiert. Wenn Sie interessiert sind, können Sie sich hier über den Prozess der Kennzeichnung von Funktionen informieren.

Um ein Labs-Flag zu aktivieren oder zu deaktivieren, gehen Sie wie folgt vor

{
    "features": {
        "feature_you_want_to_turn_on": true,
        "feature_you_want_to_keep_off": false
    }
}

Wenn Sie möchten, dass der Benutzer selbst auswählen kann, welche Labs-Flags er aktivieren möchte, fügen Sie "show_labs_settings": true zu Ihrer Konfiguration hinzu. Dadurch wird der Tab in den Benutzereinstellungen aktiviert.

Hinweis:

Die Unterstützung von Funktionen variiert von Release zu Release. Überprüfen Sie regelmäßig die Dokumentation der Labs-Flags, wenn Sie die Funktionalität aktivieren.

Standard-Einstellungen

Einige Einstellungen können zusätzlich auf Konfigurationsebene vorgenommen werden, um die Benutzerfreundlichkeit Ihrer Element Web-Instanz zu beeinflussen. Zum Zeitpunkt der Erstellung dieses Artikels sind diese Einstellungen noch nicht vollständig dokumentiert:

1. default_federate: Wenn true (Standard), werden Räume bei der Erstellung als "federatable" markiert. Normalerweise sollte diese Einstellung nicht verwendet werden, da die Föderationsfähigkeit eines Raums nach der Erstellung nicht mehr geändert werden kann.

2. default_country_code: Ein optionaler ISO 3166 alpha2 Ländercode (z.B.: GB, der Standard), der bei der Anzeige von Telefonnummern verwendet wird.

3. room_directory: Definiert optional das Verhalten der Raumverzeichnis-Komponente. Derzeit wird nur eine Eigenschaft, server, unterstützt, um zusätzliche Server zur Dropdown-Liste hinzuzufügen. Zum Beispiel:
 

{
    "room_directory": {
        "servers": ["matrix.org", "example.org"]
    }
}

4. setting_defaults: Optionale Konfiguration für Einstellungen, die nicht in diesem Dokument beschrieben sind und die Konfigurationsebene unterstützen. Diese Liste ist nicht vollständig. Zum Beispiel:

{
    "setting_defaults": {
        "MessageComposerInput.showStickersButton": false,
        "MessageComposerInput.showPollsButton": false
    }
}

Diese Werte haben Vorrang vor den Standardeinstellungen. Eine Liste der verfügbaren Parameter ist in der Datei Settings.tsx enthalten.

Anpassung & Branding

Element unterstützt eine gewisse Anpassung der Benutzererfahrung durch verschiedene Branding- und Theme-Optionen. Es unterstützt kein vollständiges Re-Branding/Private-Labeling, aber Sie können Ihren Benutzern eine individuellere Erfahrung bieten.

  1. standard_theme: Dies ist der optionale Name des zu verwendenden Farbthemas, normalerweise entweder light (Standardeinstellung) oder dark. Wenn benutzerdefinierte Themen verwendet werden, kann dies auch der Name eines Themas sein.
  2. default_device_display_name: Optionaler öffentlicher Name für Geräte, der bei der Anmeldung und Registrierung anstelle der Standardvorlage verwendet wird. Beachten Sie, dass diese Option derzeit keine Vorlagen unterstützt.
  3. brand: Optionaler Name für die Anwendung. Der Standardwert ist Element. Dieser wird in der gesamten Anwendung an verschiedenen Stellen verwendet.
  4. permalink_prefix: Eine optionale URL, die auf eine Element-Website verweist. Zum Beispiel: app.element.io. Dadurch werden alle Permalinks (über die "Teilen"-Menüs) so geändert, dass sie auf die Element-Webbereitstellung verweisen und nicht auf matrix.to.
  5. desktop_builds: Optional. Wo die Desktop-Builds für die Anwendung liegen, falls vorhanden. Dies wird weiter unten erklärt.
  6. mobile_builds: Optional. Wie desktop_builds, außer für mobile Anwendungen. Wird ebenfalls weiter unten genauer beschrieben.
  7. mobile_guide_toast: Wenn auf true gesetzt (Standard), werden Benutzer, die von einem mobilen Gerät auf die Element-Webinstanz zugreifen, aufgefordert, stattdessen die Anwendung herunterzuladen.
  8. update_base_url: Nur für die Desktop-Anwendung, die URL, unter der Update-Pakete bezogen werden können. Falls angegeben, muss es sich um einen Pfad zu einem Verzeichnis handeln, das MacOS- und Win32-Verzeichnisse enthält, in denen sich die Update-Pakete befinden. Der Standardwert für die Produktion ist https://packages.element.io/desktop/update/.
  9. map_style_url: URL im Stil des Kachelservers für die Standortfreigabe. z.B. api.maptiler.com/maps/streets/style.json. Diese Einstellung wird ignoriert, wenn Ihr Homeserver /.well-known/matrix/client an seinem bekannten Speicherort bereitstellt und die JSON-Datei an diesem Speicherort den Schlüssel m.tile_server (oder die instabile Version org.matrix.msc3488.tile_server) hat. In diesem Fall wird stattdessen die am bekannten Speicherort gefundene Konfiguration verwendet.
  10. welcome_user_id: Eine optionale Benutzer-ID, mit der ein DM nach der Erstellung eines Kontos gestartet wird. Der Standardwert ist None (es wird kein DM erstellt).
  11. custom_translations_url: Eine optionale URL, die das Überschreiben von übersetzbaren Zeichenketten ermöglicht. Die JSON-Datei muss folgendes Format haben: {"affected string": {"languageCode": "new string"}}. Siehe matrix-org/matrix-react-sdk#7886 für Einzelheiten.
  12. branding: Optionen für die Konfiguration verschiedener Assets, die in der Anwendung verwendet werden. Wird weiter unten genauer beschrieben.
  13. embedded_pages: Weitere optionale URLs für verschiedene Assets, die in der App verwendet werden. Nähere Beschreibung weiter unten.
  14. disable_3pid_login: Wenn auf false gesetzt (Voreinstellung), werden die Optionen für die Anmeldung mit E-Mail-Adresse oder Telefonnummer deaktiviert. Setzen Sie den Wert auf true, um diese Optionen zu deaktivieren.
  15. disable_login_language_selector: Wenn false (Voreinstellung), ist die Sprachauswahl auf den Anmeldeseiten aktiviert. Setzen Sie den Wert auf true, um dieses Auswahlfeld auszublenden.
  16. disable_guests: Wenn false (Voreinstellung), wird die Gastfunktionalität (Räume ansehen/vorschauen etc.) für nicht registrierte Benutzer aktiviert. Setzen Sie diesen Wert auf true, um diese Funktion zu deaktivieren.
  17. user_notice: Optionale Nachricht an den Benutzer, z. B. um eine Bereitstellung zu beenden und den Benutzer zu veranlassen, den Umzug innerhalb seiner eigenen Zeit durchzuführen. Verwendet ein Konfigurationsobjekt wie unten:
    • title: Erforderlich. Titel, der oben in der Benachrichtigung angezeigt wird.
    • description: Erforderlich. Die Beschreibung, die für die Benachrichtigung verwendet werden soll.
    • show_once: Optional. Wenn true, wird der Hinweis nur einmal pro Gerät angezeigt.
       

desktop_builds und mobile_builds

Diese beiden Optionen beschreiben die unterschiedlichen Verfügbarkeiten der Anwendung. Wenn die Anwendung für einen alternativen Download werben muss, z.B. um den Benutzer dazu zu bewegen, eine Android-Anwendung oder die Desktop-Anwendung für die verschlüsselte Suche zu verwenden, werden die Konfigurationsoptionen überprüft, um festzustellen, ob der Link zu einem anderen Ort führen soll.

Beginnend mit desktop_builds sind die folgenden Untereigenschaften verfügbar:

1. available: Erforderlich. Wenn true, kann die Desktop-Anwendung von überall heruntergeladen werden.
2. logo: Erforderlich. Eine URL zu einem Logo (SVG), das im Format 24x24 Pixel angezeigt werden soll.
3. url: Erforderlich: Erforderlich. Die URL zum Herunterladen der Anwendung. Diese wird als Hyperlink verwendet.

Wenn desktop_builds nicht angegeben wird, geht die Anwendung davon aus, dass Desktop-Downloads unter element.io verfügbar sind.

Die folgenden Untereigenschaften sind für mobile_builds verfügbar:

1. ios: Die URL, unter der die iOS-App heruntergeladen werden kann, z.B. ein App Store-Link. Wenn explizit null angegeben wird, geht die Anwendung davon aus, dass die iOS-App nicht heruntergeladen werden kann. Wenn nichts angegeben wird, wird angenommen, dass die Standard-Element-App verfügbar ist.
2. android: Wie ios, nur für Android.
3. fdroid: Wie android, nur ohne FDroid.

Zusammen könnten diese beiden Optionen in Ihrer Konfiguration wie folgt aussehen:
 

{
    "desktop_builds": {
        "available": true,
        "logo": "https://example.org/assets/logo-small.svg",
        "url": "https://example.org/not_element/download"
    },
    "mobile_builds": {
        "ios": null,
        "android": "https://example.org/not_element/android",
        "fdroid": "https://example.org/not_element/fdroid"
    }
}

branding und embedded_pages

Diese beiden Optionen verweisen auf verschiedene URLs, um verschiedene interne Seiten (wie z.B. die Startseite) und Logos innerhalb der Anwendung zu ändern.

Beginnend mit branding sind die folgenden Untereigenschaften verfügbar:

1. welcome_background_url: Handelt es sich um einen String, so ist dies die URL für den ganzseitigen Bildhintergrund der Login-, Registrierungs- und Willkommensseiten. Diese Eigenschaft kann auch ein Array sein, damit die Anwendung zufällig ein Bild aus der Auswahl auswählt.
2. auth_header_logo_url: Eine URL für das Logo, das auf Anmelde-, Registrierungsseiten usw. verwendet wird.
3. auth_footer_links: Eine Liste von Links, die in der Fußzeile der Anmeldungs-, Registrierungsseite usw. angezeigt werden sollen. Jeder Eintrag muss eine Text- und eine URL-Eigenschaft haben.

Eingebettete Seiten können als solche konfiguriert werden:

1. welcome_url: Eine URL zu einer HTML-Seite, die als Willkommensseite angezeigt wird (Landing auf #/welcome). Wenn nichts angegeben wird, wird stattdessen die mit dem Element mitgelieferte Standardeinstellung welcome.html verwendet.
2. home_url: Eine URL zu einer HTML-Seite, die innerhalb der Anwendung als Startseite angezeigt werden soll. Wenn die Anwendung keinen Raum/Bildschirm hat, der dem Benutzer angezeigt werden kann, wird stattdessen die Startseite verwendet. Auf die Startseite kann auch über das Benutzermenü zugegriffen werden. Standardmäßig ist keine Startseite definiert und daher wird ein fest codierter Startbildschirm verwendet.
3. login_for_welcome: Wenn diese Option auf "true" gesetzt ist (Standard: "false"), verwendet die Anwendung das Anmeldeformular als Willkommensseite anstelle der eigentlichen Willkommensseite. Dies deaktiviert die Verwendung von welcome_url und alle Funktionen der Willkommensseite.

Zusammen könnten die Optionen in Ihrer Konfiguration wie folgt aussehen
 

{
    "branding": {
        "welcome_background_url": "https://example.org/assets/background.jpg",
        "auth_header_logo_url": "https://example.org/assets/logo.svg",
        "auth_footer_links": [
            { "text": "FAQ", "url": "https://example.org/faq" },
            { "text": "Donate", "url": "https://example.org/donate" }
        ]
    },
    "embedded_pages": {
        "welcome_url": "https://example.org/assets/welcome.html",
        "home_url": "https://example.org/assets/home.html"
    }
}

Hinweis:

Beachten Sie, dass index.html auch einen og:image-Meta-Tag hat, der auf ein Bild verweist, das auf element.io gehostet wird. Dies ist das Bild, das verwendet wird, wenn Links zu Ihrer Kopie von Element auf einigen Websites wie Facebook und sogar Element selbst erscheinen. Dies muss statisch in HTML und eine absolute URL sein (und HTTP statt HTTPS), daher ist es nicht möglich, dies als Option in config.json zu setzen. Wenn Sie dies ändern möchten, können Sie Element bauen, aber RIOT_OG_IMAGE_URL="http://example.com/logo.png" yarn build ausführen. Alternativ können Sie den og:image Meta-Tag in index.html direkt ändern, wenn Sie eine neue Version von Element herunterladen.

SSO-Einrichtung

Wenn Element zusammen mit einem Homeserver mit SSO-Anmeldung eingesetzt wird, sollten einige Optionen zur Vereinfachung der Benutzererfahrung festgelegt werden:

1. logout_redirect_url: Optionale URL, zu der der Benutzer nach der Abmeldung umgeleitet wird. Einige SSO-Systeme unterstützen eine Seite, auf die der Benutzer umgeleitet werden kann, um ihn aus dem System abzumelden, so dass die Abmeldung zwischen Element und dem SSO-System symmetrisch ist.
2. sso_redirect_options: Optionen, die festlegen, wie nicht authentifizierte Benutzer behandelt werden sollen. Wenn das Objekt "immediate": true enthält, dann werden alle nicht authentifizierten Benutzer automatisch zum SSO-System umgeleitet, um ihre Anmeldung zu starten. Wenn Sie stattdessen möchten, dass nur Benutzer, die auf der Willkommensseite landen, weitergeleitet werden, verwenden Sie "on_welcome_page": true. Ein Beispiel:
 

{
    "sso_redirect_options": {
        "immediate": false,
        "on_welcome_page": true
    }
}

In den meisten Fällen wird anstelle von on_welcome_page das Flag immediate verwendet.

VoIP / Jitsi Anrufe

Element verwendet derzeit Jitsi, um Telefonkonferenzen in Räumen anzubieten, eine experimentelle Element Call-Implementierung ist in Arbeit. Es gibt eine Reihe von Standardeinstellungen, die auf unsere Jitsi und Element Call Instanzen verweisen, um sicherzustellen, dass Telefonkonferenzen funktionieren. Sie können Element aber auch auf Ihre eigenen Instanzen verweisen, wenn Sie das bevorzugen.

Die VoIP- und Jitsi-Optionen sind

1. jitsi: Optionale Konfiguration, wie Jitsi-Konferenzen gestartet werden sollen. Zur Zeit kann nur ein Wert für preferred_domain angegeben werden, der auf die Domäne der Jitsi-Instanz verweist (Standard: meet.element.io). Dieser Wert wird nicht verwendet, wenn das Jitsi Widget von einem Integration Manager erstellt wurde oder wenn der Homeserver Jitsi Informationen in  zur Verfügung stellt. Zum Beispiel:
 

{
    "jitsi": {
        "preferred_domain": "meet.jit.si"
    }
}

2. jitsi_widget: Optionale Konfiguration für das eingebaute Jitsi-Widget. Kann derzeit nur einen skip_built_in_welcome_screen Wert enthalten, der angibt, ob der "Join Conference" Button angezeigt werden soll. Wenn dieser Wert auf true gesetzt ist (Standardwert false), wird bei Jitsi-Anrufen der Anruf übersprungen, anstatt einen Bildschirm mit einem einzelnen Button anzuzeigen. Dies ist vor allem dann sinnvoll, wenn die verwendete Jitsi-Instanz bereits über eine Landing-Page verfügt, auf der die Benutzer Audio und Video testen können, bevor sie sich in die Konferenz einwählen; andernfalls werden die Benutzer automatisch in die Konferenz eingewählt. Zum Beispiel:
 

{
    "jitsi_widget": {
        "skip_built_in_welcome_screen": true
    }
}

3. voip: Optionale Konfiguration für verschiedene VoIP-Funktionen. Kann derzeit nur einen einzigen obey_asserted_identity-Wert enthalten, um bei VoIP-Anrufen in dem Raum, der der behaupteten Identität entspricht, Meldungen über die behauptete Identität im Stil von MSC3086 zu senden. Diese Option sollte nur in vertrauenswürdigen Umgebungen gesetzt werden. Standardmäßig ist diese Option auf false gesetzt. Zum Beispiel:

{
    "voip": {
        "obey_asserted_identity": false
    }
}

4. widget_build_url: Optionale URL, die das Element anfordert, wenn ein Benutzer die Sprach-/Videoanrufschaltflächen in der Anwendung drückt, wenn diese Aktion normalerweise einen Anruf auslöst. Die URL wird mit einem Abfrageparameter roomId aufgerufen, um den Raum zu identifizieren, in dem der Anruf getätigt wird. Die URL sollte mit einem JSON-Objekt ähnlich dem folgenden antworten

{
    "widget_id": "$arbitrary_string",
    "widget": {
        "creatorUserId": "@user:example.org",
        "id": "$the_same_widget_id",
        "type": "m.custom",
        "waitForIframeLoad": true,
        "name": "My Widget Name Here",
        "avatar_url": "mxc://example.org/abc123",
        "url": "https://example.org/widget.html",
        "data": {
            "title": "Subtitle goes here"
        }
    },
    "layout": {
        "container": "top",
        "index": 0,
        "width": 65,
        "height": 50
    }
}

Das widget ist der content eines normalen Widget-Zustandsereignisses. Das Layout ist der Layout-Spezifizierer für das zu erstellende Widget, wie durch das io.element.widgets.layout Zustandsereignis definiert. Standardmäßig gilt dies für alle Räume, aber das Verhalten kann für DMs übersprungen werden, indem die Option widget_build_url_ignore_dm auf true gesetzt wird.

5. audio_stream_url: Optionale URL, die an Jitsi übergeben wird, um Live-Streaming zu aktivieren. Diese Option ist experimentell und kann jederzeit ohne Vorankündigung entfernt werden.

6. element_call: Optionale Konfiguration für systemeigene Gruppenanrufe über Element Call mit folgenden Subkeys:
 

  • url: Die URL der Element Call Instanz, die für native Gruppenaufrufe verwendet werden soll. Diese Option wird als experimentell betrachtet und kann jederzeit ohne Vorankündigung entfernt werden. Die Voreinstellung ist call.element.io.
  • use_exclusively: Ein boolscher Wert, der angibt, ob Element Call ausschließlich als einziger VoIP-Stack in der Anwendung verwendet werden soll, wodurch die Möglichkeit entfällt, ältere 1:1-Anrufe oder Jitsi-Anrufe zu starten. Der Standardwert ist false.
  • participant_limit: Die maximale Anzahl von Benutzern, die an einem Anruf teilnehmen können; wenn diese Anzahl überschritten wird, kann der Benutzer nicht an einem bestimmten Anruf teilnehmen.
  • brand: Optionaler Name für die Anwendung. Die Vorgabe ist Element Call. Dieser Name wird in der gesamten Anwendung an verschiedenen Stellen verwendet.
     

Fehlerberichte

Wenn Sie einen eigenen Rageshake-Server betreiben, um Fehlerberichte zu sammeln, könnten die folgenden Optionen von Interesse sein:

1. bug_report_endpoint_url: URL für den Ort, an den Rageshake-Protokolle gesendet werden sollen. Rageshakes enthalten Feedback und Fehlerberichte. Wenn diese Option nicht in der Konfiguration vorhanden ist, deaktiviert die Anwendung alle Rageshake-Funktionen. Setzen Sie diese Option auf element.io/bugreports/submit, um Rageshakes an uns zu senden, oder verwenden Sie Ihren eigenen Rageshake-Server.
2. uisi_autorageshake_app: Wenn ein Benutzer die Option "Automatisches Senden von Debug-Protokollen bei Entschlüsselungsfehlern" aktiviert hat, wird diese Option zusammen mit dem Rageshake gesendet, so dass der Rageshake-Server sie nach App-Namen filtern kann. Standardmäßig ist dies element-auto-uisi (im Gegensatz zu anderen Rageshakes, die von der Anwendung gesendet werden, die element-web verwendet).

Wenn Sie Sentry für Rageshake-Daten verwenden möchten, fügen Sie Ihrer Konfiguration ein Sentry-Objekt mit den folgenden Werten hinzu:

1. dsn: Der Sentry-DSN.
2. environment: Optionale Umgebung, die an Sentry übergeben wird.

Zum Beispiel

{
    "sentry": {
        "dsn": "dsn-goes-here",
        "environment": "production"
    }
}

Integrationsmanager

Integrationsmanager sind in Element eingebettete Anwendungen, die den Benutzer bei der Konfiguration von Bots, Bridges und Widgets unterstützen. Ein Integrationsmanager ist eine separate Software, die normalerweise nicht mit Ihrem Homeserver mitgeliefert wird. Um Integrationen zu deaktivieren, setzen Sie die hier definierten Optionen auf Null.

1. integrationen_ui_url: Die UI-URL des Integrationsmanagers.
2. integrations_rest_url: Die URL der REST-Schnittstelle für den Integration Manager.
3. integrations_widgets_urls: Eine Liste von URLs, die der Integration-Manager zum Hosten von Widgets verwendet.

Wenn Sie Scalar, den von Element verwalteten Integrationsmanager, verwenden möchten, gelten die folgenden Optionen:

{
    "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"
    ]
}

Administrative Optionen

Wenn Sie eine benutzerdefinierte Nachricht einfügen möchten, wenn jemand ein Ereignis meldet, setzen Sie das folgende Markierungsfeld:

{
    "report_event": {
        "admin_message_md": "Please be sure to review our [terms of service](https://example.org/terms) before reporting a message."
    }
}

Verwenden Sie die folgende Vorlage, um in der gesamten App zusätzliche Links zu den Nutzungsbedingungen hinzuzufügen:

{
    "terms_and_conditions_links": [{ "text": "Code of conduct", "url": "https://example.org/code-of-conduct" }]
}

Analyse

Um osthog zu konfigurieren, fügen Sie unter posthog in Ihrer Konfiguration folgendes hinzu:

1. api_host: Der Hostname des Posthog-Servers.
2. project_api_key: Der API-Schlüssel von posthog.

Wenn diese Konfigurationsoptionen nicht vorhanden sind, wird die Analyse als nicht möglich angesehen und der Benutzer wird nicht aufgefordert, sich in das System einzuloggen.

Zusätzliche Optionen können auf Root-Ebene angegeben werden:

1. analytics_owner: der Firmenname, der in Dialogen verwendet wird, die sich auf Analysen beziehen - dies ist der Standardwert für brand und nützlich, wenn der Anbieter der Analysen nicht mit dem Anbieter der Element-Instanz identisch ist.
2. privacy_policy_url: URL zu den Datenschutzrichtlinien, einschließlich der Richtlinien zur Datenerhebung.
 

Sonstiges

Element unterstützt weitere Optionen, die nicht vollständig in andere Abschnitte dieses Dokuments passen.
Um zu konfigurieren, ob die Benutzeroberfläche für einen bestimmten Homeserver angezeigt wird, setzen Sie enable_presence_by_hs_url. Es wird empfohlen, diesen Wert mindestens auf den folgenden Wert zu setzen

{
    "enable_presence_by_hs_url": {
        "https://matrix.org": false,
        "https://matrix-client.matrix.org": false
    }
}

Identitätsserver

Der Identitätsserver wird verwendet, um andere Benutzer in einen Raum einzuladen, indem Identifikatoren Dritter wie E-Mail-Adressen und Telefonnummern verwendet werden. Er wird nicht verwendet, um Ihr Passwort oder Ihre Kontoinformationen zu speichern.

Ab Element 1.4.0 sind alle Funktionen des Identitätsservers optional und Sie werden aufgefordert, den Bedingungen zuzustimmen, bevor Daten an den Identitätsserver gesendet werden.

Element prüft bei der Suche nach einem zu verwendenden Identitätsserver mehrere Quellen in der folgenden Reihenfolge:

1. Der Identitätsserver, der in den Kontodaten des Benutzers angegeben ist

  • Für einen neuen Benutzer gibt es keinen Wert in seinen Kontodaten. Er wird erst gesetzt, wenn der Benutzer die Einstellungen aufruft und seinen Identitätsserver manuell ändert.

2. Der Identitätsserver, der von der .well-known-Suche geliefert wird, die bei der Anmeldung durchgeführt wird.

3. Der Identitätsserver, der in der Riot-Konfigurationsdatei angegeben ist.

Wenn in keiner dieser Quellen ein Identitätsserver angegeben ist, fordert Element den Benutzer auf, zuerst einen Identitätsserver anzugeben, wenn er versucht, Funktionen zu verwenden, die einen Identitätsserver erfordern.

Derzeit sind die einzigen beiden öffentlichen Identitätsserver vector.im und matrix.org. In Zukunft werden die Identitätsserver jedoch dezentralisiert sein.
 

UI-Funktionen

Teile der Benutzeroberfläche können mit Hilfe von UI-Funktionen deaktiviert werden. Dies sind Parameter, die unter setting_defaults erscheinen und nur true (default) oder false sein können. Wenn sie auf false gesetzt sind, werden Teile der Benutzeroberfläche, die sich auf dieses Feature beziehen, unabhängig von den Einstellungen des Benutzers deaktiviert.

Derzeit werden folgende UI-Feature-Flags unterstützt:

  • UIFeature.urlPreviews - Ob URL-Vorschauen in der gesamten Anwendung aktiviert sind.
  • UIFeature.feedback - ob Eingabeaufforderungen für Feedback angezeigt werden.
  • UIFeature.voip - Ob VoIP für den Benutzer sichtbar ist oder nicht. Wenn diese Option deaktiviert ist, funktionieren die Jitsi-Widgets trotzdem, aber sie können nicht einfach hinzugefügt werden.
  • UIFeature.widgets - Ob Widgets angezeigt werden oder nicht.
  • UIFeature.advancedSettings - Ob Abschnitte mit dem Titel "advanced" in den Raum- und Benutzereinstellungen dem Benutzer angezeigt werden oder nicht.
  • UIFeature.shareQrCode - Ob der QR-Code im Dialog zum Teilen von Räumen/Veranstaltungen angezeigt wird oder nicht.
  • UIFeature.shareSocial - Ob die sozialen Symbole im Dialog zum Teilen von Räumen/Veranstaltungen angezeigt werden oder nicht.
  • UIFeature.identityServer - ob die Funktionalität, die einen Identitätsserver benötigt, angezeigt wird oder nicht. Wenn diese Option deaktiviert ist, kann der Benutzer nicht mit dem Identitätsserver interagieren (Freigabe von E-Mail-Adressen, 3PID-Einladungen usw.).
  • UIFeature.thirdPartyId - Gibt an, ob die Benutzeroberfläche in Bezug auf Drittanbieteridentifikatoren (3PIDs) angezeigt wird oder nicht. Normalerweise wird dies als "Kontaktinformation" auf dem Homeserver betrachtet und hat keinen direkten Bezug zum Identitätsserver.
  • UIFeature.registration - Gibt an, ob die Registrierungsseite zugänglich ist. Typischerweise nützlich, wenn Konten extern verwaltet werden.
  • UIFeature.passwordReset - Ob die Seite zum Zurücksetzen des Passworts zugänglich ist oder nicht. Typischerweise nützlich, wenn Konten extern verwaltet werden.
  • UIFeature.deactivate - Ob die Schaltfläche "Konto deaktivieren" zugänglich ist oder nicht. Typischerweise nützlich, wenn Konten extern verwaltet werden.
  • UIFeature.advancedEncryption - Ob dem Benutzer erweiterte Verschlüsselungsoptionen angezeigt werden oder nicht.
  • UIFeature.roomHistorySettings - Ob die Einstellungen für die Raumhistorie dem Benutzer angezeigt werden oder nicht. Dies sollte nur verwendet werden, wenn die Optionen für die Sichtbarkeit der Raumhistorie vom Server verwaltet werden.
  • UIFeature.TimelineEnableRelativeDates - Zeigt relative Datumstrennzeichen (z.B.: 'Heute', 'Gestern') in der Zeitleiste für aktuelle Nachrichten an. Bei false werden Tagesdaten verwendet.
  • UIFeature.BulkUnverifiedSessionsReminder - Zeigt Popup-Erinnerungen an, um nicht verifizierte Sitzungen zu verifizieren oder zu entfernen. Standardmäßig auf true gesetzt.
  • UIFeature.locationSharing - Bestimmt, ob die Menüs zur Standortfreigabe angezeigt werden.

Undokumentierte Optionen / Entwickleroptionen

Die folgenden Optionen sind undokumentiert oder nur für Entwickler gedacht.

1. fallback_hs_url
2. sync_timeline_limit
3. dangerously_allow_unsafe_and_insecure_passwords
4. latex_maths_delims: Eine optionale Einstellung, um die Standard-Mathematikbegrenzer zu überschreiben. Siehe matrix-org/matrix-react-sdk#5939 für Einzelheiten. Wird nur verwendet, wenn feature_latex_maths aktiviert ist.
5. voice_broadcast.chunk_length: Ziel-Chunk-Länge in Sekunden für die in Entwicklung befindliche Voice-Broadcast-Funktion.