Web interfaces
Web
De Gateway serveert een kleine browser-Control UI (Vite + Lit) vanaf dezelfde poort als de Gateway-WebSocket:
- standaard:
http://<host>:18789/ - met
gateway.tls.enabled: true:https://<host>:18789/ - optioneel prefix: stel
gateway.controlUi.basePathin (bijv./openclaw)
Mogelijkheden staan in Control UI. De rest van deze pagina richt zich op bind-modi, beveiliging en webgerichte oppervlakken.
Webhooks
Wanneer hooks.enabled=true, exposeert de Gateway ook een klein Webhook-eindpunt op dezelfde HTTP-server.
Zie Gateway-configuratie → hooks voor auth + payloads.
Admin HTTP RPC
Admin HTTP RPC exposeert geselecteerde Gateway-control-plane-methoden op POST /api/v1/admin/rpc.
Het staat standaard uit en wordt alleen geregistreerd wanneer de admin-http-rpc Plugin is ingeschakeld.
Zie Admin HTTP RPC voor het auth-model, toegestane methoden en de WebSocket-vergelijking.
Configuratie (standaard aan)
De Control UI is standaard ingeschakeld wanneer assets aanwezig zijn (dist/control-ui).
Je kunt dit beheren via configuratie:
{ gateway: { controlUi: { enabled: true, basePath: "/openclaw" }, // basePath optional },}Tailscale-toegang
Geintegreerde Serve (aanbevolen)
Houd de Gateway op local loopback en laat Tailscale Serve deze proxyen:
{ gateway: { bind: "loopback", tailscale: { mode: "serve" }, },}Start daarna de gateway:
openclaw gatewayOpen:
https://<magicdns>/(of je geconfigureerdegateway.controlUi.basePath)
Tailnet-bind + token
{ gateway: { bind: "tailnet", controlUi: { enabled: true }, auth: { mode: "token", token: "your-token" }, },}Start daarna de gateway (dit non-loopback-voorbeeld gebruikt shared-secret-tokenauth):
openclaw gatewayOpen:
http://<tailscale-ip>:18789/(of je geconfigureerdegateway.controlUi.basePath)
Openbaar internet (Funnel)
{ gateway: { bind: "loopback", tailscale: { mode: "funnel" }, auth: { mode: "password" }, // or OPENCLAW_GATEWAY_PASSWORD },}Beveiligingsopmerkingen
- Gateway-auth is standaard vereist (token, wachtwoord, trusted-proxy, of Tailscale Serve-identiteitsheaders wanneer ingeschakeld).
- Non-loopback-binds vereisen nog steeds gateway-auth. In de praktijk betekent dit token-/wachtwoordauth of een identiteitsbewuste reverse proxy met
gateway.auth.mode: "trusted-proxy". - De wizard maakt standaard shared-secret-auth aan en genereert meestal een gateway-token (zelfs op loopback).
- In shared-secret-modus stuurt de UI
connect.params.auth.tokenofconnect.params.auth.password. - Wanneer
gateway.tls.enabled: true, renderen lokale dashboard- en statushelpershttps://-dashboard-URL's enwss://-WebSocket-URL's. - In modi met identiteit, zoals Tailscale Serve of
trusted-proxy, wordt de WebSocket-authcontrole in plaats daarvan voldaan via requestheaders. - Voor openbare non-loopback-Control UI-implementaties stel je
gateway.controlUi.allowedOriginsexpliciet in (volledige origins). Private same-origin LAN-/Tailnet-loads worden geaccepteerd voor loopback, RFC1918/link-local,.local,.ts.neten Tailscale-CGNAT-hosts. gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=trueschakelt Host-header-origin-fallbackmodus in, maar is een gevaarlijke beveiligingsverlaging.- Met Serve kunnen Tailscale-identiteitsheaders voldoen aan Control UI-/WebSocket-auth
wanneer
gateway.auth.allowTailscaletrueis (geen token/wachtwoord vereist). HTTP API-eindpunten gebruiken die Tailscale-identiteitsheaders niet; ze volgen in plaats daarvan de normale HTTP-authmodus van de gateway. Stelgateway.auth.allowTailscale: falsein om expliciete inloggegevens te vereisen. Zie Tailscale en Beveiliging. Deze tokenloze flow gaat ervan uit dat de gateway-host vertrouwd is. gateway.tailscale.mode: "funnel"vereistgateway.auth.mode: "password"(gedeeld wachtwoord).
De UI bouwen
De Gateway serveert statische bestanden vanuit dist/control-ui. Bouw ze met:
pnpm ui:build