Сеть и удалённый доступ

OpenClaw можно подключить удалённо — когда Gateway работает на сервере, а вы подключаетесь с ноутбука или телефона.

Как это работает

Gateway — это один долгоживущий процесс, который владеет подключениями каналов и WebSocket контрольной плоскостью. По умолчанию WS слушает на ws://127.0.0.1:18789 (loopback).

Для удалённого доступа вы пробрасываете этот порт через SSH или VPN (Tailscale).

Один Gateway на хост — рекомендуется. Только он может владеть сессией WhatsApp Web.

Способы подключения

SSH-туннель (самый простой)

ssh -N -L 18789:127.0.0.1:18789 user@ваш-сервер

После этого откройте http://127.0.0.1:18789/ в браузере. Тот же токен авторизации.

Tailscale Serve (рекомендуется)

Gateway остаётся на loopback, Tailscale обеспечивает HTTPS и маршрутизацию внутри tailnet:

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

Откройте https:/// — готово. Без открытия портов, всё зашифровано.

Tailscale: привязка к tailnet IP

Если хотите, чтобы Gateway слушал напрямую на IP Tailscale (без Serve/Funnel):

{
  gateway: {
    bind: "tailnet",
    auth: { mode: "token", token: "your-token" },
  },
}

Подключение: http://:18789/. Loopback в этом режиме не работает.

Tailscale Funnel (публичный доступ)

Для доступа из интернета через Tailscale:

{
  gateway: {
    bind: "loopback",
    tailscale: { mode: "funnel" },
    auth: { mode: "password", password: "replace-me" },
  },
}

Funnel требует auth.mode: "password" — иначе Gateway откажется запускаться.

Прямой доступ (осторожно!)

Если привязываете к lan:

{
  gateway: {
    bind: "lan",
    auth: { mode: "token", token: "обязательно-сильный-токен" },
  },
}

Никогда не открывайте Gateway на публичный IP без авторизации.

Авторизация с Tailscale

Когда tailscale.mode: "serve" и gateway.auth.allowTailscale: true, Control UI может использовать Tailscale identity headers (tailscale-user-login) без токена/пароля. OpenClaw проверяет личность через tailscale whois.

Что защищено Tailscale identity, а что нет
  • Защищено: Control UI и WebSocket — можно без токена при allowTailscale: true
  • НЕ защищено: HTTP API (/v1/*, /tools/invoke, /api/channels/*) — всегда требуют обычную авторизацию
  • Если на хосте может запускаться непроверенный код — отключите allowTailscale и требуйте токен/пароль.

    CLI remote defaults

    Можно сохранить удалённый адрес, чтобы CLI использовал его по умолчанию:

    {
      gateway: {
        mode: "remote",
        remote: {
          url: "ws://127.0.0.1:18789",
          token: "your-token",
        },
      },
    }
    

    Когда Gateway на loopback — URL остаётся ws://127.0.0.1:18789, а SSH-туннель открывается заранее.

    Приоритет credentials (подробно)

    При использовании --url CLI не подхватывает credentials из конфига. Нужно передавать --token или --password явно.

    Local mode:

  • token: OPENCLAW_GATEWAY_TOKENgateway.auth.tokengateway.remote.token
  • password: OPENCLAW_GATEWAY_PASSWORDgateway.auth.passwordgateway.remote.password
  • Remote mode:

  • token: gateway.remote.tokenOPENCLAW_GATEWAY_TOKENgateway.auth.token
  • password: OPENCLAW_GATEWAY_PASSWORDgateway.remote.passwordgateway.auth.password
  • Env URL override (OPENCLAW_GATEWAY_URL) может использовать только env credentials.

    Ноды и удалённый доступ

    Ноды (Mac, iPhone, Android) подключаются к Gateway по тому же WebSocket. Ноды не запускают Gateway — они периферийные устройства.

    Пример потока: Telegram → Gateway → агент → решение вызвать ноду → Gateway → нода → результат → Gateway → ответ в Telegram.

    Если Gateway на одном компьютере, а браузер нужен на другом — запустите node host на машине с браузером. Gateway проксирует действия браузера через ноду.

    Canvas

    Canvas хостится на том же порту, что и Gateway (по умолчанию 18789):

  • /__openclaw__/canvas/
  • /__openclaw__/a2ui/
  • Если gateway.auth настроен и Gateway привязан не к loopback — эти маршруты защищены авторизацией Gateway.

    Управление через CLI

    openclaw gateway status    # статус
    openclaw gateway restart   # перезапуск
    openclaw health            # проверка здоровья
    openclaw status --deep     # полная диагностика
    

    Связывание нод (pairing)

    Gateway является источником истины о том, какие ноды могут присоединиться. Ноды запрашивают связывание через WebSocket, оператор одобряет или отклоняет.

    Как работает

    1. Нода подключается к WebSocket Gateway и запрашивает связывание
    2. Gateway сохраняет ожидающий запрос + событие node.pair.requested
    3. Оператор одобряет/отклоняет (CLI или UI)
    4. При одобрении Gateway выдаёт токен (ротируется при повторном связывании)
    5. Нода переподключается с токеном

    Ожидающие запросы истекают через 5 минут.

    CLI

    openclaw nodes pending              # ожидающие запросы
    openclaw nodes approve <requestId>  # одобрить
    openclaw nodes reject <requestId>   # отклонить
    openclaw nodes status               # связанные/подключённые
    openclaw nodes rename --node <id> --name "..."  # переименовать
    

    Что дальше

  • Безопасность — защита Gateway
  • Установка на VPS — серверные развёртывания