Web interfaces
Dashboard
Das Gateway-Dashboard ist die browserbasierte Control UI, die standardmäßig unter / bereitgestellt wird (Überschreibung mit gateway.controlUi.basePath).
Schnellzugriff (lokales Gateway):
- http://127.0.0.1:18789/ (oder http://localhost:18789/)
- Mit
gateway.tls.enabled: trueverwenden Siehttps://127.0.0.1:18789/undwss://127.0.0.1:18789für den WebSocket-Endpunkt.
Wichtige Referenzen:
- Control UI für Verwendung und UI-Funktionen.
- Tailscale für die Serve-/Funnel-Automatisierung.
- Weboberflächen für Bindungsmodi und Sicherheitshinweise.
Die Authentifizierung wird beim WebSocket-Handshake über den konfigurierten Gateway-Authentifizierungspfad erzwungen:
connect.params.auth.tokenconnect.params.auth.password- Tailscale-Serve-Identitätsheader bei
gateway.auth.allowTailscale: true - Identitätsheader eines vertrauenswürdigen Proxys bei
gateway.auth.mode: "trusted-proxy"
Siehe gateway.auth unter Gateway-Konfiguration.
Schnellster Weg (empfohlen)
- Nach dem Onboarding öffnet die CLI das Dashboard automatisch und gibt einen bereinigten Link (ohne Token) aus.
- Jederzeit erneut öffnen:
openclaw dashboard(kopiert den Link, öffnet nach Möglichkeit einen Browser und gibt in einer Umgebung ohne grafische Oberfläche einen SSH-Hinweis aus). - Wenn sowohl die Übergabe an die Zwischenablage als auch an den Browser fehlschlägt, gibt
openclaw dashboardweiterhin die bereinigte URL aus und weist Sie an, Ihr Token (ausOPENCLAW_GATEWAY_TOKENodergateway.auth.token) mit dem URL-Fragment-Schlüsseltokenanzuhängen; der Token-Wert wird niemals in Protokollen ausgegeben. - Wenn die UI zur Authentifizierung mit einem gemeinsamen Geheimnis auffordert, fügen Sie das konfigurierte Token oder Passwort in die Einstellungen der Control UI ein.
Authentifizierungsgrundlagen (lokal und remote)
- Localhost: Öffnen Sie
http://127.0.0.1:18789/. - Gateway-TLS: Bei
gateway.tls.enabled: trueverwenden Dashboard-/Statuslinkshttps://und WebSocket-Links der Control UIwss://. - Quelle des Tokens für das gemeinsame Geheimnis:
gateway.auth.token(oderOPENCLAW_GATEWAY_TOKEN).openclaw dashboardkann es für die einmalige Ersteinrichtung über das URL-Fragment übergeben; die Control UI speichert es für den aktuellen Tab und die ausgewählte Gateway-URL in sessionStorage, nicht in localStorage. - Laufzeit-Token bei fehlender Konfiguration: Wenn beim Start gemeldet wird, dass ein Laufzeit-Token generiert wurde, ist dieses Token flüchtig und nicht über
openclaw config get gateway.auth.tokenverfügbar. Auch Loopback erfordert eine Authentifizierung. Führen Sieopenclaw doctor --generate-gateway-tokenaus, starten Sie das Gateway neu und fügen Sie anschließend das konfigurierte Token in die Einstellungen der Control UI ein. - Wenn
gateway.auth.tokendurch SecretRef verwaltet wird, gibtopenclaw dashboardabsichtlich eine URL ohne Token aus, kopiert oder öffnet sie, damit extern verwaltete Token nicht in Shell-Protokollen, im Verlauf der Zwischenablage oder in Argumenten zum Browserstart offengelegt werden. Wenn die Referenz in Ihrer aktuellen Shell nicht aufgelöst werden kann, werden weiterhin die URL ohne Token sowie konkrete Anweisungen zur Einrichtung der Authentifizierung ausgegeben. - Passwort für das gemeinsame Geheimnis: Verwenden Sie das konfigurierte
gateway.auth.password(oderOPENCLAW_GATEWAY_PASSWORD). Das Dashboard speichert Passwörter nicht über ein erneutes Laden hinaus. - Modi mit Identitätsinformationen: Tailscale Serve erfüllt die Authentifizierung der Control UI bzw. des WebSockets über Identitätsheader bei
gateway.auth.allowTailscale: true; ein identitätsfähiger Nicht-Loopback-Reverse-Proxy erfülltgateway.auth.mode: "trusted-proxy". Für den WebSocket muss in keinem der beiden Fälle ein gemeinsames Geheimnis eingefügt werden. - Nicht localhost: Verwenden Sie Tailscale Serve, eine Nicht-Loopback-Bindung mit gemeinsamem Geheimnis, einen identitätsfähigen Nicht-Loopback-Reverse-Proxy mit
gateway.auth.mode: "trusted-proxy"oder einen SSH-Tunnel. HTTP-APIs verwenden weiterhin die Authentifizierung mit einem gemeinsamen Geheimnis, sofern Sie nicht bewusst privates Ingress mitgateway.auth.mode: "none"oder HTTP-Authentifizierung über einen vertrauenswürdigen Proxy einsetzen. Siehe Weboberflächen.
In Telegram öffnen
Telegram-Bots können das Dashboard mit /dashboard als Telegram Mini App öffnen.
Voraussetzungen:
gateway.tailscale.mode: "serve"oder"funnel", damit Telegram eine HTTPS-URL für die Mini App erhält.- Der Telegram-Absender muss der Bot-Eigentümer sein: eine numerische Telegram-Benutzer-ID in
commands.ownerAllowFromoder der effektive Wert vonchannels.telegram.allowFromdes ausgewählten Kontos. - Führen Sie
/dashboardin einer Direktnachricht an den Bot aus. Bei Aufrufen in Gruppen wird lediglich darauf hingewiesen, den Befehl in einer Direktnachricht zu öffnen; eine Schaltfläche ist nicht enthalten. - Docker-Installationen: Serve-/Funnel-Modi erfordern, dass das Gateway neben
tailscaledan Loopback gebunden wird; Bridge-Netzwerke mit veröffentlichten Ports können dies nicht erfüllen. Führen Sie den Gateway-Container mitnetwork_mode: hostaus und binden Sie den Host-Sockettailscaled(/var/run/tailscale) sowie die CLItailscalein den Container ein.
Die Mini App führt eine einmalige Übergabe durch den Eigentümer aus und leitet mit einem kurzlebigen Bootstrap-Token zur Control UI weiter. Sie legt kein gemeinsames Gateway-Token in der URL offen.
Nichtziele für v1:
- Der Telegram-Web-iFrame wird nicht unterstützt.
- Tailscale Serve/Funnel ist der einzige unterstützte Pfad für eine veröffentlichte URL.
Wenn „unauthorized“ / 1008 angezeigt wird
- Prüfen Sie, ob das Gateway erreichbar ist: lokal über
openclaw status; remote über den SSH-Tunnelssh -N -L 18789:127.0.0.1:18789 user@gateway-host, öffnen Sie anschließendhttp://127.0.0.1:18789/. - Bei
AUTH_TOKEN_MISMATCHkönnen Clients einen einzigen vertrauenswürdigen Wiederholungsversuch mit einem zwischengespeicherten Geräte-Token durchführen, wenn das Gateway Hinweise für einen Wiederholungsversuch zurückgibt; dabei werden die zwischengespeicherten genehmigten Geltungsbereiche des Tokens wiederverwendet (explizite Aufrufer vondeviceToken/scopesbehalten die von ihnen angeforderte Menge an Geltungsbereichen bei). Wenn die Authentifizierung nach diesem Wiederholungsversuch weiterhin fehlschlägt, beheben Sie die Token-Abweichung manuell. - Bei
AUTH_SCOPE_MISMATCHwurde das Geräte-Token erkannt, enthält jedoch nicht die angeforderten Geltungsbereiche; koppeln Sie das Gerät erneut oder genehmigen Sie die neue Menge an Geltungsbereichen, statt das gemeinsame Gateway-Token zu rotieren. - Außerhalb dieses Wiederholungsversuchs gilt für die Verbindungsauthentifizierung folgende Priorität: explizites gemeinsames Token/Passwort, dann explizites
deviceToken, dann gespeichertes Geräte-Token, dann Bootstrap-Token. - Im asynchronen Tailscale-Serve-Pfad werden fehlgeschlagene Versuche für dieselbe
{scope, ip}serialisiert, bevor sie vom Begrenzer für fehlgeschlagene Authentifizierungen erfasst werden. Daher kann bei einem zweiten gleichzeitig ausgeführten fehlerhaften Wiederholungsversuch bereitsretry laterangezeigt werden. - Schritte zur Behebung einer Token-Abweichung finden Sie in der Checkliste zur Wiederherstellung bei Token-Abweichungen.
- Rufen Sie das gemeinsame Geheimnis vom Gateway-Host ab oder stellen Sie es dort bereit:
- Token:
openclaw config get gateway.auth.token - Passwort: Lösen Sie das konfigurierte
gateway.auth.passwordoderOPENCLAW_GATEWAY_PASSWORDauf - Durch SecretRef verwaltetes Token: Lösen Sie den externen Geheimnis-Provider auf oder exportieren Sie
OPENCLAW_GATEWAY_TOKENin dieser Shell und führen Sieopenclaw dashboarderneut aus - Laufzeit-Token, das generiert wurde, weil kein gemeinsames Geheimnis konfiguriert war: Führen Sie
openclaw doctor --generate-gateway-tokenaus, starten Sie das Gateway neu und verwenden Sie anschließend das konfigurierte Token
- Token:
- Fügen Sie in den Dashboard-Einstellungen das Token oder Passwort in das Authentifizierungsfeld ein und stellen Sie anschließend die Verbindung her.
- Die Sprachauswahl der UI befindet sich unter Settings -> General -> Language, nicht unter Appearance.
Verwandte Themen
Was this useful?