Web interfaces
Веб
Gateway віддає невеликий browser Control UI (Vite + Lit) з того самого порту, що й WebSocket Gateway:
- за замовчуванням:
http://<host>:18789/ - з
gateway.tls.enabled: true:https://<host>:18789/ - необов’язковий префікс: задайте
gateway.controlUi.basePath(наприклад,/openclaw)
Можливості описано в Control UI. Решта цієї сторінки зосереджена на режимах прив’язки, безпеці та вебповерхнях.
Webhook
Коли hooks.enabled=true, Gateway також відкриває невеликий ендпойнт Webhook на тому самому HTTP-сервері.
Див. Конфігурація Gateway → hooks щодо автентифікації та payload.
Конфігурація (увімкнено за замовчуванням)
Control UI увімкнено за замовчуванням, коли наявні ресурси (dist/control-ui).
Керувати ним можна через конфігурацію:
{
gateway: {
controlUi: { enabled: true, basePath: "/openclaw" }, // basePath optional
},
}
Доступ через Tailscale
Інтегрований Serve (рекомендовано)
Залиште Gateway на loopback і дозвольте Tailscale Serve проксувати його:
{
gateway: {
bind: "loopback",
tailscale: { mode: "serve" },
},
}
Потім запустіть gateway:
openclaw gateway
Відкрийте:
https://<magicdns>/(або ваш налаштованийgateway.controlUi.basePath)
Прив’язка до tailnet + токен
{
gateway: {
bind: "tailnet",
controlUi: { enabled: true },
auth: { mode: "token", token: "your-token" },
},
}
Потім запустіть gateway (цей приклад без loopback використовує автентифікацію токеном зі спільним секретом):
openclaw gateway
Відкрийте:
http://<tailscale-ip>:18789/(або ваш налаштованийgateway.controlUi.basePath)
Публічний інтернет (Funnel)
{
gateway: {
bind: "loopback",
tailscale: { mode: "funnel" },
auth: { mode: "password" }, // or OPENCLAW_GATEWAY_PASSWORD
},
}
Примітки щодо безпеки
- Автентифікація Gateway за замовчуванням обов’язкова (токен, пароль, trusted-proxy або заголовки identity Tailscale Serve, якщо вони ввімкнені).
- Прив’язки без loopback усе одно вимагають автентифікації gateway. На практиці це означає автентифікацію токеном/паролем або reverse proxy з урахуванням identity з
gateway.auth.mode: "trusted-proxy". - Майстер за замовчуванням створює автентифікацію зі спільним секретом і зазвичай генерує токен gateway (навіть для loopback).
- У режимі спільного секрету UI надсилає
connect.params.auth.tokenабоconnect.params.auth.password. - Коли
gateway.tls.enabled: true, локальні помічники dashboard і status відображають URL dashboard якhttps://, а URL WebSocket — якwss://. - У режимах із передаванням identity, таких як Tailscale Serve або
trusted-proxy, перевірка автентифікації WebSocket натомість задовольняється з заголовків запиту. - Для розгортань Control UI без loopback явно задайте
gateway.controlUi.allowedOrigins(повні origins). Без цього запуск gateway за замовчуванням буде відхилено. gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=trueвмикає резервний режим визначення origin через заголовок Host, але це небезпечне послаблення безпеки.- Із Serve заголовки identity Tailscale можуть задовольняти автентифікацію Control UI/WebSocket,
коли
gateway.auth.allowTailscaleмає значенняtrue(токен/пароль не потрібні). Ендпойнти HTTP API не використовують ці заголовки identity Tailscale; вони натомість дотримуються звичайного режиму HTTP-автентифікації gateway. Установітьgateway.auth.allowTailscale: false, щоб вимагати явні облікові дані. Див. Tailscale і Безпека. Цей безтокенний потік передбачає, що хост gateway є довіреним. gateway.tailscale.mode: "funnel"вимагаєgateway.auth.mode: "password"(спільний пароль).
Збирання UI
Gateway віддає статичні файли з dist/control-ui. Зберіть їх за допомогою:
pnpm ui:build