Web interfaces

Веб

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

  • по умолчанию: http://<host>:18789/
  • с gateway.tls.enabled: true: https://<host>:18789/
  • необязательный префикс: задайте gateway.controlUi.basePath (например, /openclaw)

Возможности описаны в разделе Интерфейс управления. На этой странице рассматриваются режимы привязки, безопасность и другие веб-интерфейсы.

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

Интерфейс управления включён по умолчанию, когда ресурсы доступны (dist/control-ui):

json5
{  gateway: {    controlUi: { enabled: true, basePath: "/openclaw" }, // basePath необязателен  },}

Webhook

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

Административный HTTP RPC

POST /api/v1/admin/rpc предоставляет выбранные методы плоскости управления Gateway через HTTP. По умолчанию отключён; регистрируется только при включённом плагине admin-http-rpc. Модель аутентификации, разрешённые методы и сравнение с API WebSocket см. в разделе Административный HTTP RPC.

Доступ через Tailscale

Встроенный Serve (рекомендуется)

Оставьте Gateway привязанным к loopback-интерфейсу и используйте Tailscale Serve в качестве прокси:

json5
{  gateway: {    bind: "loopback",    tailscale: { mode: "serve" },  },}

Запустите Gateway:

bash
openclaw gateway

Откройте https://<magicdns>/ (или настроенный вами gateway.controlUi.basePath).

Привязка к tailnet + токен

json5
{  gateway: {    bind: "tailnet",    controlUi: { enabled: true },    auth: { mode: "token", token: "your-token" },  },}

Запустите Gateway (в этом примере с привязкой не к loopback-интерфейсу используется аутентификация по токену с общим секретом):

bash
openclaw gateway

Откройте http://<tailscale-ip>:18789/ (или настроенный вами gateway.controlUi.basePath).

Публичный интернет (Funnel)

json5
{  gateway: {    bind: "loopback",    tailscale: { mode: "funnel" },    auth: { mode: "password" }, // или OPENCLAW_GATEWAY_PASSWORD  },}

Для tailscale.mode: "funnel" требуется gateway.auth.mode: "password"; для Serve и Funnel требуется gateway.bind: "loopback".

Примечания по безопасности

  • По умолчанию требуется аутентификация Gateway: токен, пароль, доверенный прокси-сервер или, если они включены, заголовки идентификации Tailscale Serve.
  • При привязке не к loopback-интерфейсу аутентификация Gateway также обязательна: аутентификация по токену/паролю или обратный прокси-сервер с проверкой идентификации и gateway.auth.mode: "trusted-proxy".
  • Мастер первоначальной настройки по умолчанию создаёт аутентификацию с общим секретом и обычно генерирует токен Gateway даже при привязке к loopback-интерфейсу.
  • В режиме общего секрета интерфейс отправляет connect.params.auth.token или connect.params.auth.password во время установления соединения WebSocket.
  • При использовании gateway.tls.enabled: true локальные вспомогательные средства панели управления и состояния формируют URL-адреса https:// и URL-адреса WebSocket wss://.
  • В режимах с передачей идентификационных данных (Tailscale Serve, trusted-proxy) проверка аутентификации WebSocket выполняется на основе заголовков запроса, а не общего секрета.
  • При публичном развёртывании интерфейса управления с привязкой не к loopback-интерфейсу явно задайте gateway.controlUi.allowedOrigins (полные источники). Для loopback, RFC1918/link-local, .local, .ts.net и узлов Tailscale CGNAT частные загрузки из того же источника принимаются без этого параметра.
  • gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback: true включает резервное определение источника по заголовку Host; это опасное ослабление безопасности.
  • При использовании Serve заголовки идентификации Tailscale обеспечивают аутентификацию интерфейса управления/WebSocket, если gateway.auth.allowTailscale: true (токен или пароль не требуется). Конечные точки HTTP API не используют заголовки идентификации Tailscale; они всегда следуют обычному режиму HTTP-аутентификации Gateway. Задайте gateway.auth.allowTailscale: false, чтобы требовать явные учётные данные даже при использовании Serve. Этот режим без токена предполагает, что сам узел Gateway является доверенным. См. разделы Tailscale и Безопасность.

Сборка интерфейса

Gateway предоставляет статические файлы из dist/control-ui:

bash
pnpm ui:build
Was this useful?
On this page

On this page