Web (Gateway)
Das Gateway stellt eine kleine browserbasierte Control UI (Vite + Lit) über denselben Port wie das Gateway-WebSocket bereit:- Standard:
http://<host>:18789/ - optionales Präfix: setzen Sie
gateway.controlUi.basePath(z. B./openclaw)
Webhooks
Wennhooks.enabled=true, stellt das Gateway außerdem einen kleinen Webhook-Endpunkt auf demselben HTTP-Server bereit.
Siehe Gateway-Konfiguration → hooks für Authentifizierung und Payloads.
Konfiguration (standardmäßig aktiviert)
Die Control UI ist standardmäßig aktiviert, wenn Assets vorhanden sind (dist/control-ui).
Sie können dies über die Konfiguration steuern:
Tailscale-Zugriff
Integriertes Serve (empfohlen)
Belassen Sie das Gateway auf dem Loopback und lassen Sie Tailscale Serve als Proxy fungieren:https://<magicdns>/(oder Ihr konfiguriertesgateway.controlUi.basePath)
Tailnet-Bind + Token
http://<tailscale-ip>:18789/(oder Ihr konfiguriertesgateway.controlUi.basePath)
Öffentliches Internet (Funnel)
Sicherheitshinweise
- Gateway-Authentifizierung ist standardmäßig erforderlich (Token/Passwort oder Tailscale-Identitäts-Header).
- Nicht-Loopback-Binds erfordern weiterhin ein gemeinsames Token/Passwort (
gateway.authoder env). - Der Assistent generiert standardmäßig ein Gateway-Token (auch auf Loopback).
- Die UI sendet
connect.params.auth.tokenoderconnect.params.auth.password. - Die Control UI sendet Anti-Clickjacking-Header und akzeptiert nur Same-Origin-Browser-
WebSocket-Verbindungen, sofern
gateway.controlUi.allowedOriginsnicht gesetzt ist. - Mit Serve können Tailscale-Identitäts-Header die Authentifizierung erfüllen, wenn
gateway.auth.allowTailscaletrueist (kein Token/Passwort erforderlich). Setzen Siegateway.auth.allowTailscale: false, um explizite Anmeldedaten zu verlangen. Siehe Tailscale und Sicherheit. gateway.tailscale.mode: "funnel"erfordertgateway.auth.mode: "password"(gemeinsames Passwort).
UI bauen
Das Gateway stellt statische Dateien ausdist/control-ui bereit. Erstellen Sie diese mit: