Руководство по развёртыванию 2026-04-20

2026: OpenClaw Telegram — длинный опрос или webhook на удалённом физическом Mac? HTTPS-обратный прокси, регистрация и runbook по 409 / TLS (openclaw.json + FAQ)

Команды, которые подключают OpenClaw к боту Telegram на удалённом физическом Mac ZoneMac, часто выбирают между длинным опросом (getUpdates) и webhook: первый обходится без публичного TLS; второй даёт меньшую задержку и лучше подходит для 7×24. В материале — матрица решений, основы HTTPS reverse proxy, безопасная последовательность setWebhook и воспроизводимый разбор HTTP 409 и таймаутов TLS, с готовой структурой openclaw.json и FAQ. О путях авторизации вебхуков см. вебхуки и hooks OpenClaw на удалённом Mac.

OpenClaw Telegram webhook и HTTPS reverse proxy на удалённом Mac

1. Введение и область

Telegram Bot API доставляет входящие обновления двумя путями: длинный опрос (клиент вызывает getUpdates и держит соединение) и webhook (Telegram шлёт POST на ваш HTTPS). OpenClaw требует предсказуемой семантики транспорта и наблюдаемых сбоев — особенно когда обратный прокси стоит перед удалённым физическим Mac: TLS, SNI и цепочка сертификатов проявляются в getWebhookInfo в полях last_error_*.

Дальше предполагается SSH-доступ и правки openclaw.json. Прежде чем в одном окне менять транспорт и версию шлюза, согласуйте дисциплину релизов с материалом сравнение вариантов глобального развёртывания OpenClaw (2026).

2. Типичные боли

  1. Недооценка публичного HTTPS для webhook. Telegram ждёт проверяемую цепочку и доступный HTTPS (часто порт 443). Самоподписанные сертификаты, отсутствие промежуточных или DNS только в LAN дают ошибки TLS или «тихую» недоставку.
  2. HTTP 409 — не случайный шум. Общий токен между staging и prod или старый узел без deleteWebhook приводят к конфликтам setWebhook: корень — состояние регистрации, а не бизнес-логика OpenClaw.
  3. Long polling не бесплатен. Трансграничный RTT и долгоживущие соединения усиливают джиттер; у операторов возможен троттлинг. Для PoC сойдёт; в проде обычно возвращаются к webhook и здоровому периметру.

3. Матрица: long polling vs webhook

Лёгкая «архитектурная подпись» для узлов ZoneMac.

Измерение Long polling (getUpdates) Webhook (HTTPS)
Публичный DNS и сертификаты Исходящий путь; обычно не нужен публичный hostname с cert Нужны резолвящийся домен и доверенная цепочка
Задержка и backpressure Интервал опроса + джиттер сети Событийная модель; при стабильном периметре обычно ниже задержка
Форма соединений Постоянный исходящий, долгоживущий Входящий POST — сочетается с таймаутами и лимитами прокси
Сигналы отладки Логи клиента, ошибки getUpdates getWebhookInfo (last_error_date и др.)
Типичное применение PoC, жёсткий NAT, короткие эксперименты Продакшен 7×24, несколько воркеров, предсказуемая задержка

4. Фрагменты openclaw.json (иллюстративно)

Только структурный пример — имена ключей и вложенность должны совпадать с вашей версией OpenClaw. Делайте резервные копии и сливайте вручную с существующими секциями gateway и учётными данными; держите локальный слушатель на loopback и согласуйте экспозицию с политикой периметра.

4.1 Канал Telegram: webhook и локальный слушатель

{
  "channels": {
    "telegram": {
      "enabled": true,
      "botTokenRef": "env:TELEGRAM_BOT_TOKEN",
      "transport": "webhook",
      "webhook": {
        "publicUrl": "https://bot.example.com/openclaw/telegram/webhook",
        "path": "/openclaw/telegram/webhook",
        "secretTokenRef": "env:TELEGRAM_WEBHOOK_SECRET",
        "maxConnections": 40,
        "dropPendingUpdates": false
      },
      "localServer": {
        "bind": "127.0.0.1",
        "port": 18789,
        "readTimeoutSeconds": 30,
        "writeTimeoutSeconds": 30
      }
    }
  },
  "gateway": {
    "reverseProxy": {
      "trustedProxies": ["10.0.0.0/8"],
      "forwardedHeaders": ["X-Forwarded-For", "X-Forwarded-Proto"]
    }
  }
}

Для long polling выставьте transport в "longPolling" (или эквивалент в вашем релизе) и задайте опции getUpdates, например timeout / allowed_updates; убедитесь, что Telegram не указывает webhook на старый URL.

4.2 Обратный прокси (набросок Caddy)

# TLS на периметре; прокси на 127.0.0.1:18789 на Mac.
# Согласуйте Host/путь с OpenClaw; лимиты тела — по рекомендациям шлюза.

bot.example.com {
  reverse_proxy 127.0.0.1:18789 {
    header_up X-Forwarded-Proto {scheme}
    header_up X-Forwarded-For {remote_host}
  }
}

5. Семишаговый runbook (удалённый физический Mac)

  1. Зафиксировать режим транспорта. Должен быть активен только один путь. При переходе с long polling на webhook сначала остановите процесс опроса, чтобы избежать двойной доставки.
  2. Проверить TLS end-to-end. Из интернета проверьте порт 443: полная цепочка, SNI, правила файрвола для диапазонов Telegram (по актуальной документации).
  3. Слить openclaw.json. cp openclaw.json openclaw.json.bak.$(date +%Y%m%d%H%M); задайте publicUrl, ссылки на секреты и локальный bind.
  4. Очистить старое состояние webhook. getWebhookInfo → при неверном URL deleteWebhooksetWebhook из одного места, чтобы реже ловить 409.
  5. Перезагрузить и проверить здоровье процесса. Перезагрузка по вашей схеме; убедитесь, что порт слушается и в логах launchd нет циклов падений.
  6. Позитивные и негативные тесты. Тестовое сообщение; запросы с неверным secret_token должны быстро отклоняться; следите за pending_update_count.
  7. Архивация. Зафиксируйте домен, владельца продления сертификата, параметры setWebhook и процедуру отката на long polling.

6. Разбор 409 и таймаутов TLS

Симптом Вероятная причина Действие
setWebhook 409 Webhook уже зарегистрирован для токена или параллельная регистрация getWebhookInfo → убрать лишнее → deleteWebhook → одна повторная попытка
last_error_message про TLS / сертификат Неполная цепочка, неверный SNI или только HTTP на периметре openssl s_client -connect; исправить промежуточные; принудительный HTTPS
Медленный handshake, редкие успехи Трансграничный RTT; короткий proxy_read_timeout Увеличить read timeout периметр→origin; ближе edge; не блокировать воркеры
401 / 403 на пути webhook Несовпадение secret_token с шлюзом Выровнять переменные окружения и setWebhook; ротировать синхронно
Задержки сообщений без ошибки TLS Очередь или перегрузка шлюза Смотреть pending_update_count; масштабировать воркеры; ограничить QPS к моделям

7. Цифры и пункты чек-листа

  • getUpdates long poll: по документации Bot API timeout обычно 0–50 секунд; на каналах с высоким RTT начните с консервативных значений.
  • Локальный HTTP: пример 127.0.0.1:18789 остаётся на loopback; TLS и публичное лицо — у прокси — в духе SSH-first узлов ZoneMac.
  • Параллелизм webhook: согласуйте maxConnections с числом воркеров и QPS к upstream-моделям, чтобы ingress не принимал быстрее, чем ядро успевает разгребать.

8. FAQ

В: Почему setWebhook возвращает 409?
О: Обычно для этого токена уже зарегистрирован другой webhook или не сделали очистку. Проверьте getWebhookInfo, вызовите deleteWebhook на неиспользуемых стеках и повторите setWebhook из одной точки входа.

В: Как ловить таймауты TLS handshake?
О: Замерьте openssl s_client и curl снаружи; проверьте SNI и промежуточные; смотрите обрывы HTTP/2 на edge. Через несколько минут снова откройте getWebhookInfo.last_error_message.

В: Когда long polling на удалённом Mac оправдан?
О: Когда ещё нельзя выдать доверенный для Telegram TLS на публичном hostname — PoC, жёсткий NAT или сырой cert automation. Платите постоянным исходящим трафиком и чувствительностью к RTT.

В: Где применяется secret_token?
О: На шлюзе или входе OpenClaw: несовпадение → 401. Меняйте синхронно с setWebhook и конфигом.

9. Итог: почему Mac mini здесь уместен

Выбор между long polling и webhook — не про «новизну», а про готовность принять продакшен-качество HTTPS и единый источник правды по регистрации. Webhook переносит наблюдаемость в getWebhookInfo; long polling держит сложность в исходящих соединениях и сопровождении процессов.

На удалённом физическом Mac ZoneMac узел класса Mac mini M4 сочетает низкое энергопотребление в простое (порядка нескольких ватт), нативный Unix и удобные для launchd демоны — на одной машине можно держать обратный прокси и OpenClaw для круглосуточного шлюза. Усиление macOS (Gatekeeper, SIP, FileVault) снижает долгосрочные риски по сравнению с типичным Windows-хостом утилит.

Если нужны вход Telegram, TLS и OpenClaw на тихом и предсказуемом железе, Mac mini M4 остаётся сильным соотношением цена/стабильность — арендуйте удалённый физический Mac у ZoneMac и прогоните этот runbook на реальном metal.

Ограниченное предложение

Нужен удалённый физический Mac под webhook OpenClaw + Telegram?

ZoneMac — аренда Mac mini в облаке: локальный слушатель, reverse proxy и шлюз на одном узле, чтобы воспроизвести openclaw.json и HTTPS-runbook от начала до конца.

По требованию Физическое железо Прямой SSH
Аренда macOS в облаке Суперцена — ограниченное время
Получить сейчас