Веб (Gateway)
Gateway обслуживает небольшой браузерный Control UI (Vite + Lit) с того же порта, что и Gateway WebSocket:
- по умолчанию: http://<host>:18789/
- опциональный префикс: установите gateway.controlUi.basePath (например /openclaw)
Возможности описаны в Control UI. Эта страница сосредоточена на режимах привязки, безопасности и веб-интерфейсах.
Вебхуки
Когда hooks.enabled=true, Gateway также предоставляет небольшую конечную точку webhook на том же HTTP-сервере. См. конфигурация Gateway → hooks для аутентификации и полезной нагрузки.
Конфигурация (включено по умолчанию)
Control UI включён по умолчанию когда присутствуют ресурсы (dist/control-ui). Вы можете управлять им через конфигурацию:
{
gateway: {
controlUi: { enabled: true, basePath: "/openclaw" } // basePath опционально
}
}
Доступ через 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" } // или OPENCLAW_GATEWAY_PASSWORD
}
}
Примечания по безопасности
- Аутентификация Gateway требуется по умолчанию (токен/пароль или заголовки идентификации Tailscale).
- Не-loopback привязки всё равно требуют общий токен/пароль (gateway.auth или env).
- Мастер генерирует токен gateway по умолчанию (даже на loopback).
- Интерфейс отправляет connect.params.auth.token или connect.params.auth.password.
- С Serve, заголовки идентификации Tailscale могут удовлетворять аутентификации когда gateway.auth.allowTailscale равен true (токен/пароль не требуются). Установите gateway.auth.allowTailscale: false чтобы требовать явные учётные данные. См. Tailscale и Безопасность.
- gateway.tailscale.mode: "funnel" требует gateway.auth.mode: "password" (общий пароль).
Сборка UI
Gateway обслуживает статические файлы из dist/control-ui. Соберите их с помощью:
pnpm ui:build # автоматически устанавливает зависимости UI при первом запуске