Веб (Gateway)

Gateway обслуживает небольшой браузерный Control UI (Vite + Lit) с того же порта, что и Gateway WebSocket:

  • по умолчанию: http://<host>:18789/
  • опциональный префикс: установите gateway.controlUi.basePath (например /openclaw)

Возможности описаны в Control UI. Эта страница сосредоточена на режимах привязки, безопасности и веб-интерфейсах.

Вебхуки

Когда hooks.enabled=true, Gateway также предоставляет небольшую конечную точку webhook на том же HTTP-сервере. См. конфигурация Gatewayhooks для аутентификации и полезной нагрузки.

Конфигурация (включено по умолчанию)

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 при первом запуске