Sieć (Gateway)¶
Gateway udostępnia niewielki przeglądarkowy Control UI (Vite + Lit) z tego samego portu co WebSocket Gateway:
- domyślnie:
http://<host>:18789/ - opcjonalny prefiks: ustaw
gateway.controlUi.basePath(np./openclaw)
Możliwości są opisane w Control UI. Ta strona koncentruje się na trybach bindowania, bezpieczeństwie oraz powierzchniach dostępnych z poziomu WWW.
Webhooki¶
Gdy hooks.enabled=true, Gateway udostępnia także niewielki endpoint webhooka na tym samym serwerze HTTP.
Zobacz Konfiguracja Gateway → hooks w zakresie uwierzytelniania i ładunków.
Konfiguracja (domyślnie włączona)¶
Control UI jest włączony domyślnie, gdy zasoby są obecne (dist/control-ui).
Można nim sterować poprzez konfigurację:
{
gateway: {
controlUi: { enabled: true, basePath: "/openclaw" }, // basePath optional
},
}
Dostęp przez Tailscale¶
Zintegrowany Serve (zalecane)¶
Pozostaw Gateway na local loopback i pozwól, aby Tailscale Serve pośredniczył w dostępie:
{
gateway: {
bind: "loopback",
tailscale: { mode: "serve" },
},
}
Następnie uruchom gateway:
openclaw gateway
Otwórz:
https://<magicdns>/(lub skonfigurowanygateway.controlUi.basePath)
Bind do tailnet + token¶
{
gateway: {
bind: "tailnet",
controlUi: { enabled: true },
auth: { mode: "token", token: "your-token" },
},
}
Następnie uruchom gateway (wymagany token dla bindów innych niż loopback):
openclaw gateway
Otwórz:
http://<tailscale-ip>:18789/(lub skonfigurowanygateway.controlUi.basePath)
Publiczny internet (Funnel)¶
{
gateway: {
bind: "loopback",
tailscale: { mode: "funnel" },
auth: { mode: "password" }, // or OPENCLAW_GATEWAY_PASSWORD
},
}
Uwagi dotyczące bezpieczeństwa¶
- Uwierzytelnianie Gateway jest wymagane domyślnie (token/hasło lub nagłówki tożsamości Tailscale).
- Bindowanie poza loopback nadal wymaga współdzielonego tokenu/hasła (
gateway.authlub zmienna środowiskowa). - Kreator generuje token gateway domyślnie (nawet na loopback).
- UI wysyła
connect.params.auth.tokenlubconnect.params.auth.password. - Control UI wysyła nagłówki anti-clickjacking i akceptuje wyłącznie połączenia WebSocket z tej samej domeny przeglądarki, chyba że ustawiono
gateway.controlUi.allowedOrigins. - Przy Serve nagłówki tożsamości Tailscale mogą spełnić wymagania uwierzytelniania, gdy
gateway.auth.allowTailscalema wartośćtrue(token/hasło nie są wymagane). Ustawgateway.auth.allowTailscale: false, aby wymagać jawnych poświadczeń. Zobacz Tailscale oraz Bezpieczeństwo. gateway.tailscale.mode: "funnel"wymagagateway.auth.mode: "password"(współdzielone hasło).
Budowanie interfejsu¶
Gateway serwuje pliki statyczne z dist/control-ui. Zbuduj je poleceniem:
pnpm ui:build # auto-installs UI deps on first run