Web interfaces
Sieć Web
Gateway udostępnia niewielki przeglądarkowy interfejs sterowania (Vite + Lit) na tym samym porcie co WebSocket Gatewaya:
- domyślnie:
http://<host>:18789/ - z
gateway.tls.enabled: true:https://<host>:18789/ - opcjonalny prefiks: ustaw
gateway.controlUi.basePath(np./openclaw)
Opis funkcji znajduje się na stronie Interfejs sterowania. Ta strona omawia tryby powiązania, zabezpieczenia i inne powierzchnie dostępne przez WWW.
Konfiguracja (domyślnie włączona)
Interfejs sterowania jest domyślnie włączony, gdy zasoby są dostępne (dist/control-ui):
{ gateway: { controlUi: { enabled: true, basePath: "/openclaw" }, // basePath opcjonalne },}Webhooki
Gdy hooks.enabled=true, Gateway udostępnia również punkt końcowy Webhooka na tym samym serwerze HTTP. Informacje o uwierzytelnianiu i ładunkach zawiera sekcja hooks w dokumentacji konfiguracji Gatewaya.
Administracyjne RPC przez HTTP
POST /api/v1/admin/rpc udostępnia wybrane metody płaszczyzny sterowania Gatewaya przez HTTP. Funkcja jest domyślnie wyłączona i rejestrowana tylko po włączeniu pluginu admin-http-rpc. Informacje o modelu uwierzytelniania, dozwolonych metodach i porównaniu z API WebSocket zawiera strona Administracyjne RPC przez HTTP.
Dostęp przez Tailscale
Zintegrowane Serve (zalecane)
Pozostaw Gateway w local loopback i pozwól usłudze Tailscale Serve działać jako serwer proxy:
{ gateway: { bind: "loopback", tailscale: { mode: "serve" }, },}Uruchom Gateway:
openclaw gatewayOtwórz https://<magicdns>/ (lub skonfigurowaną ścieżkę gateway.controlUi.basePath).
Powiązanie z tailnetem + token
{ gateway: { bind: "tailnet", controlUi: { enabled: true }, auth: { mode: "token", token: "your-token" }, },}Uruchom Gateway (ten przykład bez local loopback używa uwierzytelniania tokenem będącym współdzielonym sekretem):
openclaw gatewayOtwórz http://<tailscale-ip>:18789/ (lub skonfigurowaną ścieżkę gateway.controlUi.basePath).
Publiczny internet (Funnel)
{ gateway: { bind: "loopback", tailscale: { mode: "funnel" }, auth: { mode: "password" }, // lub OPENCLAW_GATEWAY_PASSWORD },}tailscale.mode: "funnel" wymaga gateway.auth.mode: "password"; zarówno Serve, jak i Funnel wymagają gateway.bind: "loopback".
Uwagi dotyczące bezpieczeństwa
- Uwierzytelnianie Gatewaya jest domyślnie wymagane: token, hasło, zaufany serwer proxy lub — po włączeniu — nagłówki tożsamości Tailscale Serve.
- Powiązania inne niż local loopback nadal wymagają uwierzytelniania Gatewaya: tokenem/hasłem lub przez odwrotny serwer proxy rozpoznający tożsamość z ustawieniem
gateway.auth.mode: "trusted-proxy". - Kreator wdrażania domyślnie tworzy uwierzytelnianie współdzielonym sekretem i zwykle generuje token Gatewaya, nawet w local loopback.
- W trybie współdzielonego sekretu interfejs wysyła
connect.params.auth.tokenlubconnect.params.auth.passwordpodczas uzgadniania połączenia WebSocket. - Przy
gateway.tls.enabled: truelokalne narzędzia pulpitu i stanu generują adresy URLhttps://oraz adresy URL WebSocketwss://. - W trybach przekazujących tożsamość (Tailscale Serve,
trusted-proxy) kontrola uwierzytelniania WebSocket jest realizowana na podstawie nagłówków żądania zamiast współdzielonego sekretu. - W przypadku publicznych wdrożeń interfejsu sterowania poza local loopback ustaw jawnie
gateway.controlUi.allowedOrigins(pełne źródła). Prywatne żądania z tego samego źródła są akceptowane bez tego ustawienia dla local loopback, adresów RFC1918/link-local oraz hostów.local,.ts.neti Tailscale CGNAT. gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback: truewłącza awaryjne ustalanie źródła na podstawie nagłówka Host; jest to niebezpieczne osłabienie zabezpieczeń.- W przypadku Serve nagłówki tożsamości Tailscale spełniają wymagania uwierzytelniania interfejsu sterowania/WebSocket, gdy
gateway.auth.allowTailscale: true(token ani hasło nie są wymagane). Punkty końcowe API HTTP nie używają nagłówków tożsamości Tailscale; zawsze stosują zwykły tryb uwierzytelniania HTTP Gatewaya. Ustawgateway.auth.allowTailscale: false, aby wymagać jawnych danych uwierzytelniających nawet przez Serve. Ten przepływ bez tokena zakłada, że sam host Gatewaya jest zaufany. Zobacz Tailscale i Bezpieczeństwo.
Budowanie interfejsu
Gateway udostępnia pliki statyczne z dist/control-ui:
pnpm ui:build