Web (Gateway)
Gateway udostępnia mały przeglądarkowy Control UI (Vite + Lit) z tego samego portu co Gateway WebSocket:- domyślnie:
http://<host>:18789/ - opcjonalny prefiks: ustaw
gateway.controlUi.basePath(np./openclaw)
Webhooki
Gdyhooks.enabled=true, Gateway udostępnia także mały endpoint webhooka na tym samym serwerze HTTP.
Zobacz Konfigurację gateway → hooks, aby poznać auth + payloady.
Konfiguracja (domyślnie włączone)
Control UI jest domyślnie włączone, gdy obecne są zasoby (dist/control-ui).
Możesz sterować tym przez konfigurację:
Dostęp przez Tailscale
Zintegrowane Serve (zalecane)
Utrzymuj Gateway na loopback i pozwól Tailscale Serve go proxy’ować:https://<magicdns>/(albo skonfigurowanegateway.controlUi.basePath)
Bind do tailnet + token
http://<tailscale-ip>:18789/(albo skonfigurowanegateway.controlUi.basePath)
Publiczny internet (Funnel)
Uwagi dotyczące bezpieczeństwa
- Auth gateway jest domyślnie wymagane (token, hasło,
trusted-proxyalbo nagłówki tożsamości Tailscale Serve, gdy są włączone). - Bindy spoza loopback nadal wymagają auth gateway. W praktyce oznacza to auth tokenem/hasłem albo reverse proxy świadome tożsamości z
gateway.auth.mode: "trusted-proxy". - Kreator domyślnie tworzy auth współdzielonym sekretem i zwykle generuje token gateway (nawet na loopback).
- W trybie współdzielonego sekretu UI wysyła
connect.params.auth.tokenalboconnect.params.auth.password. - W trybach niosących tożsamość, takich jak Tailscale Serve albo
trusted-proxy, kontrola auth WebSocket jest spełniana z nagłówków żądania. - Dla wdrożeń Control UI spoza loopback jawnie ustaw
gateway.controlUi.allowedOrigins(pełne originy). Bez tego start gateway jest domyślnie odrzucany. gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=truewłącza tryb fallbacku origin na podstawie Host-header, ale jest to niebezpieczne obniżenie bezpieczeństwa.- Przy Serve nagłówki tożsamości Tailscale mogą spełniać auth Control UI/WebSocket,
gdy
gateway.auth.allowTailscalema wartośćtrue(token/hasło nie są wymagane). Endpointy HTTP API nie używają tych nagłówków tożsamości Tailscale; zamiast tego podążają za normalnym trybem auth HTTP gateway. Ustawgateway.auth.allowTailscale: false, aby wymagać jawnych poświadczeń. Zobacz Tailscale i Bezpieczeństwo. Ten przepływ bez tokena zakłada, że host gateway jest zaufany. gateway.tailscale.mode: "funnel"wymagagateway.auth.mode: "password"(współdzielone hasło).
Budowanie UI
Gateway serwuje pliki statyczne zdist/control-ui. Zbuduj je przez: