Skip to main content
OpenClaw может автоматически настроить Tailscale Serve (для tailnet) или Funnel (для публичного доступа) для панели управления Gateway и порта WebSocket. При этом Gateway остаётся привязанным к интерфейсу обратной петли, а Tailscale обеспечивает HTTPS, маршрутизацию и (для Serve) заголовки идентификации.

Режимы

gateway.tailscale.mode: В выводе состояния и аудита для этого режима OpenClaw Serve/Funnel используется термин доступ через Tailscale. off означает, что OpenClaw не управляет Serve или Funnel; это не означает, что локальный демон Tailscale остановлен или вышел из системы.

Примеры конфигурации

Только tailnet (Serve)

Откройте: https://<magicdns>/ (или настроенный вами gateway.controlUi.basePath) Чтобы предоставить доступ к интерфейсу управления через именованную службу Tailscale вместо имени хоста устройства, задайте для gateway.tailscale.serviceName имя службы:
После этого при запуске вместо имени хоста устройства отображается URL службы: https://openclaw.<tailnet-name>.ts.net/. Для Tailscale Services хост должен быть одобренным маркированным узлом в вашей tailnet — настройте тег и одобрите службу в Tailscale перед включением этой функции, иначе tailscale serve --service=... завершится ошибкой при запуске Gateway.

Только tailnet (привязка к IP-адресу Tailnet)

Используйте этот вариант, чтобы Gateway напрямую прослушивал IP-адрес Tailnet без Serve/Funnel:
Подключение с другого устройства Tailnet:
  • Интерфейс управления: http://<tailscale-ip>:18789/
  • WebSocket: ws://<tailscale-ip>:18789
Если доступен пригодный для привязки IPv4-адрес Tailnet, Gateway также требует http://127.0.0.1:18789 для аутентифицированных клиентов на том же хосте. Если при запуске адрес Tailnet недоступен, используется только интерфейс обратной петли; перезапустите Gateway после появления Tailscale, чтобы добавить прямой доступ через Tailnet. Ни один из этих вариантов не предоставляет доступ из локальной сети или интернета.

Публичный интернет (Funnel + общий пароль)

Вместо сохранения пароля на диске рекомендуется использовать OPENCLAW_GATEWAY_PASSWORD.

Примеры CLI

Аутентификация

gateway.auth.mode управляет рукопожатием:

Заголовки идентификации Tailscale (только Serve)

Если tailscale.mode: "serve" и gateway.auth.allowTailscale имеет значение true, аутентификация интерфейса управления/WebSocket может использовать заголовки идентификации Tailscale (tailscale-user-login) вместо токена или пароля. Перед принятием запроса OpenClaw проверяет заголовок: определяет адрес x-forwarded-for запроса через локальный демон Tailscale (tailscale whois) и сопоставляет его с именем входа в заголовке. Этот способ применяется к запросу только в том случае, если он поступает с интерфейса обратной петли и содержит заголовки Tailscale x-forwarded-for, x-forwarded-proto и x-forwarded-host. Этот процесс без токена предполагает, что хост Gateway является доверенным. Если на том же хосте может выполняться недоверенный локальный код, задайте gateway.auth.allowTailscale: false и вместо этого требуйте аутентификацию с помощью токена или пароля. Область действия обхода:
  • Применяется только к аутентификации WebSocket интерфейса управления. Конечные точки HTTP API (/v1/*, /tools/invoke, /api/channels/* и т. д.) никогда не используют аутентификацию по заголовкам идентификации Tailscale; они всегда следуют обычному режиму HTTP-аутентификации Gateway.
  • Для операторских сеансов интерфейса управления, которые уже содержат идентификационные данные устройства браузера, подтверждённая идентификация Tailscale позволяет пропустить обмен начальным токеном или QR-кодом для сопряжения.
  • Идентификация самого устройства не обходится: клиенты без идентификации устройства по-прежнему отклоняются, а подключения с ролью узла всё равно проходят обычные проверки сопряжения и аутентификации.

Примечания

  • Для Tailscale Serve/Funnel требуется установленный CLI tailscale с выполненным входом.
  • tailscale.mode: "funnel" не запускается, если режим аутентификации не равен password, чтобы избежать публичного доступа.
  • gateway.tailscale.serviceName применяется только к режиму Serve и передаётся в tailscale serve --service=<name>. Значение должно использовать формат Tailscale svc:<dns-label>, например svc:openclaw. Tailscale требует, чтобы хосты службы были маркированными узлами, а перед публикацией службы через Serve может потребоваться её одобрение в консоли администратора.
  • gateway.tailscale.resetOnExit отменяет конфигурацию tailscale serve/tailscale funnel при завершении работы.
  • gateway.tailscale.preserveFunnel: true сохраняет внешне настроенный маршрут tailscale funnel при перезапусках Gateway. При mode: "serve" OpenClaw проверяет tailscale funnel status перед повторным применением Serve и пропускает его, если маршрут Funnel уже охватывает порт Gateway. Политика Funnel под управлением OpenClaw, допускающая только пароль, остаётся неизменной.
  • gateway.bind: "tailnet" использует прямую привязку к Tailnet (без HTTPS и Serve/Funnel) вместе с обязательным локальным 127.0.0.1, если доступен IPv4-адрес Tailnet; в противном случае используется только интерфейс обратной петли.
  • gateway.bind: "auto" предпочитает интерфейс обратной петли; используйте tailnet, чтобы ограничить сетевой доступ Tailnet, сохранив доступ через интерфейс обратной петли на том же хосте.
  • Serve/Funnel предоставляют доступ только к интерфейсу управления Gateway и WS. Узлы подключаются через ту же конечную точку WS Gateway, поэтому Serve также подходит для доступа узлов.

Требования и ограничения Tailscale

  • Для Serve в вашей tailnet должен быть включён HTTPS; если он отсутствует, CLI предложит включить его.
  • Serve добавляет заголовки идентификации Tailscale, а Funnel — нет.
  • Для Funnel требуются Tailscale v1.38.3+, MagicDNS, включённый HTTPS и атрибут узла Funnel.
  • Funnel поддерживает через TLS только порты 443, 8443 и 10000.
  • Для Funnel в macOS требуется вариант приложения Tailscale с открытым исходным кодом.

Управление браузером (удалённый Gateway + локальный браузер)

Чтобы запустить Gateway на одном компьютере, но управлять браузером на другом, запустите хост узла на компьютере с браузером и подключите оба компьютера к одной tailnet. Gateway проксирует действия браузера на узел; отдельный сервер управления или URL Serve не требуется. Не используйте Funnel для управления браузером; относитесь к сопряжению узла как к операторскому доступу.

Дополнительные сведения

Связанные материалы