Три типичных боли
Первое. Сообщение о соединении отказано при том что процесс жив: запрос уходит не на тот интерфейс или обходит bastion без LocalForward.
Второе. Ответы 401 при заведомо верном секрете: источник токена раздвоился между файлом конфигурации, переменной окружения и значением из launchctl getenv на macOS, поэтому шлюз сравнивает не тот материал.
Третье. Один узел прошёл приёмку, соседний нет: без нормализованного JSON от validate команда не замечает расхождение bind или auth до инцидента в очереди.
Отдельно стоит явно записать в runbook кто имеет право менять bastion и какие ключи считаются действующими после ротации: иначе туннель остаётся в документации, а фактический путь трафика уходит мимо согласованного контроля.
Матрица: как достучаться до шлюза
| Способ | Когда уместен | Ограничение |
|---|---|---|
| Прямой запрос с рабочей станции на внутренний IP | Ноутбук в той же VPN что и пул MeshMac | Нужны корпоративные маршруты и журналируемый egress |
| SSH LocalForward через bastion | Разработчик вне VPN, есть только SSH | Туннель живёт пока живёт сессия; фиксируйте политику переподключения |
| Отдельный reverse-proxy с mTLS | Нужен стабильный внешний вход без ручного SSH | Сложнее сопровождение; сверяйте с политикой fail-closed |
Минимально воспроизводимые шаги
Шаг 1 — Install. Выполните установку CLI по официальному README репозитория OpenClaw на каждом Mac класса gateway и зафиксируйте вывод версии в тикете выката чтобы исключить рассинхрон бинарей.
Шаг 2 — Onboard. Пройдите мастер первичной настройки или команду configure так чтобы появился согласованный профиль шлюза и блок gateway.auth; файлы секретов вынесите из мирового чтения.
Шаг 3 — Bind. Установите listen только на выбранный внутренний адрес интерфейса пула MeshMac; порт по умолчанию для примеров в экосистеме часто указывают как 18789, зарезервируйте его в внутреннем реестре портов и проверьте отсутствие второго процесса на том же сокете.
Шаг 4 — Doctor. Запустите openclaw doctor согласно публичной странице cli/doctor: для автоматизации допустимы флаги вроде --non-interactive, для исправлений по политике команды — --repair или --deep как описано в документации; убедитесь что сервис установлен через рекомендуемый путь вроде openclaw gateway install если он применим к вашей сборке.
Шаг 5 — LocalForward. На рабочей станции выполните ssh -N -L 18789:GW_PRIVATE:18789 user@bastion подставив внутренний адрес шлюза; клиенты и curl направляйте на 127.0.0.1:18789 с заголовком Authorization: Bearer … согласованным с gateway.auth.
Шаг 6 — Сходимость. На каждом узле снимите машиночитаемый вывод validate --profile gateway --format json или эквивалент из вашей линии CLI, отсортируйте ключи и сравните diff; ненулевой результат после выката означает незавершённое слияние конфигурации.
Официальные install, onboard и doctor
- Install: раздел установки и требования к окружению в README репозитория OpenClaw на GitHub — единственный допустимый «источник правды» для версии и шагов сборки.
- Onboard: сценарий первого запуска и связывания моделей с шлюзом в пользовательской документации на docs.openclaw.ai (разделы getting started и gateway).
- Doctor: справочник команд и флагов docs.openclaw.ai/cli/doctor — порты, права, режимы repair и проверки launchd.
Что зафиксировать в runbook
- Внутренний IP bind и номер порта 18789 вместе с владельцем тикета изменения сети.
- Один канал хранения Bearer: файл Keychain или переменная сервиса, без дублирования в репозиторий.
- Артефакт JSON
validateс каждого узла после каждого merge в ветку выката шлюза. - Идентификатор узла в пуле и метка времени снятия health после перезапуска туннеля SSH чтобы коррелировать ложные тревоги мониторинга.
Таблица разборов: порт 18789, токен, сервис
| Симптом | Проверить | Действие |
|---|---|---|
| Отказ на 18789 или reset | Куда указывает LocalForward, не занят ли локальный 18789, слушает ли процесс на GW_PRIVATE | Перезапустить ssh с корректным -L, освободить порт, прогнать openclaw doctor по портам |
| 401 или invalid auth | Совпадение Bearer с gateway.auth, нет ли launchctl getenv со старым значением | Выровнять секрет, перезапустить LaunchAgent шлюза после смены окружения |
| Сервис не запущен | Статус агента, лог bootstrap, отсутствует ли plist или бинарь после обновления | openclaw gateway install по документации затем doctor с repair по политике |
Публичные страницы Meshmac без входа
Главная, тарифы и аренда, центр помощи, хаб материалов OpenClaw и список блога открыты без логина.
Закрепите Mac под шлюз и проверку doctor
Аренда узлов с предсказуемой сетью упрощает bind на внутренний IP и согласованный bastion для SSH. Оформите пул на странице тарифов, задайте вопросы в центре помощи; обзор продуктов — на главной Meshmac. После заказа повторите шесть шагов выше и храните JSON validate как артефакт приёмки.