Постоянный шлюз OpenClaw на физическом macOS — это не «запустил в Compose и забыл про хост». Вы наследуете launchd, сессии входа, LaunchAgents без GUI и все нюансы между тем, что вы вводите в интерактивной оболочке, и тем, что реально видит демон. В этом FAQ — порядок многоуровневой диагностики: идентичность процесса, паритет окружения, TCP-порт 18789, затем состояние аутентификации после обновлений — на контрасте с Docker, где переменные и токены чаще живут в одном compose-файле. В конце — сценарий отказоустойчивости между регионами на облачных Mac M4, чтобы команды в APAC и США отрабатывали переключение заранее, а не импровизировали во время сбоя. Практику развёртывания инстанса и наблюдаемости в облаке vpszap см. в материале OpenClaw в облаке vpszap: инстанс, хранилище, SSH/VNC и наблюдаемость.
«Голое железо» и Docker: что ломается по-разному
В Compose вы фиксируете образы, монтируете один env-файл, а проверки здоровья обычно бьют в loopback контейнера. На металле macOS бинарник шлюза может работать под другим пользователем, чем ваша админ-оболочка, получать урезанный PATH или стартовать до полной готовности сети. Фраза «работает, когда я захожу по SSH и запускаю руками» — проваленный гейт: воспроизводите то же самое через plist LaunchAgent или команду онбординга из runbook. Про фиксацию образов, тома и пробы шлюза в контейнерах — в статье OpenClaw и Docker Compose в 2026 году: развёртывание и устранение неполадок — фиксация образов, тома, проверки здоровья шлюза и практическое воспроизведение рабочего процесса.
У Docker есть один артефакт «известно хорошей» версии: откат и накат по digest симметричны. На металле обновления смешивают патчи ОС, деревья Homebrew или npm и обновления безопасности Apple — любой слой может сменить пути динамического линкера или поведение нотаризации. Держите снимок перед полётом (plist, env и обезличенную копию конфигурации шлюза) в git с тегом по номеру сборки macOS, чтобы diff между «здоровым вторником» и «загадочными 401 в среду» был явным.
launchd: пользовательские агенты, сессии и паритет окружения
Инсталляторы часто регистрируют LaunchAgent в ~/Library/LaunchAgents пользователя шлюза. Такой процесс обычно не видит экспорты из .zshrc и может не видеть запросы разблокировки связки ключей. Продублируйте каждую обязательную переменную в plist (EnvironmentVariables) или в небольшом обёрточном скрипте, который читает один файл из-под контроля версий. Если у вас ещё Linux-реле или воркер, та же дисциплина переносится на пользовательские юниты systemd (systemctl --user) с явными строками Environment= — на самом macOS по-прежнему launchd, но гибридным командам нужен один канонический env-файл на семейство ОС.
После правок выполните launchctl bootout, затем launchctl bootstrap для метки агента и проверьте launchctl print в вашем домене (метку возьмите из plist). Прогоны с выходом из сеанса и перезагрузкой важны: многие сбои проявляются только на «холодном» старте, когда Wi‑Fi или VPN успевают обогнать шлюз.
Порт 18789 и локальные проверки здоровья
Команды часто путают «шлюз здоров» с «процесс Node запустился». На постоянном хосте нужна TCP-проверка порта 18789 (или того, что зафиксировано в документации релиза) из того же сетевого контекста, что и клиенты — например nc -vz 127.0.0.1 18789 от пользователя демона, а не только от root. Если порт занят другим процессом, lsof -nP -iTCP:18789 -sTCP:LISTEN быстро покажет конфликт. При обратном прокси или mTLS на краю зафиксируйте, бьют ли пробы в edge или в loopback, чтобы дежурный не копал не тот слой.
Если намеренно слушаете не только loopback для тестеров в LAN, сочетайте это с правилами межсетевого экрана и письменным исключением — обновления macOS любят ломать неявные допущения о том, кто может достучаться до высокого порта из гостевой Wi‑Fi. До уверенности в модели угроз предпочтительны SSH-туннели или нормальный edge.
«Дрейф» аутентификации после обновлений и рассинхрон токенов
Обновления пакетов переписывают бинарники и иногда меняют пути к конфигурации по умолчанию. Симптомы — внезапные 401 или «подключился, но отклонили» у клиентов, хотя launchd показывает «running». Сравните токен или API-ключ на диске с тем, что ожидает новая сборка (OPENCLAW_GATEWAY_TOKEN и сопутствующие), и убедитесь, что не оставили одну копию в plist, а другую только в экспорте оболочки. Секреты из связки ключей могут рассинхронизироваться после крупных обновлений macOS — повторите шаг онбординга вендора, который перепривязывает учётные данные, затем перезапустите агент. Про пути установки и контекст «купить Mac или арендовать облако» см. OpenClaw Gateway в 2026 году: купить Mac или арендовать облачные Mac в нескольких регионах — официальный установщик, npm, типичные ошибки и бизнес-FAQ.
Отказоустойчивость между регионами на облачных Mac M4 (FAQ)
Основной и резервный узел в двух мегаполисах: выделите идентичные Mac mini M4 (тот же объём RAM/NVMe) например в Токио и Сингапуре; конфигурацию и токены зеркалируйте через шаблоны env в git. Синтетические пробы из офисных VPN каждого региона к обоим шлюзам покажут, какой RTT выигрывает — его берите основным для данной когорты.
Переключение: уменьшите TTL DNS или используйте плавающее имя, которое клиенты уже резолвят. Останавливайте LaunchAgent на отказавшей стороне только после стекания трафика — избегайте split-brain, когда два шлюза принимают одну и ту же «личность» бота. Репетируйте ежеквартально сценарий «скриптово убить основной» и целевым временем (например, менее десяти минут до «зелёного»).
Наблюдаемость: отправляйте stdout/stderr LaunchAgent в ваш стек логов — на металле сбои бесшумны, если узнаёте о них только когда кто-то открыл Console.app. Сопоставляйте рестарты шлюза с падениями Wi‑Fi, питанием и минорными обновлениями macOS; эти три причины объясняют заметную долю «случайных вторников» на настольных Mac и так же проявляются на выделенных облачных Mac, если относиться к ним как к прод-хостам, а не к одноразовым шеллам.
Параллельные очереди и ротация мест для крупных команд — в 2026: международные команды, облачный Mac — ротация мест, параллельные очереди в шести регионах; Mac mini M4 16/256 и 24/512 ГБ; расширение 1–2 ТБ; краткая и средняя аренда — FAQ; для шлюза вывод такой: размеруйте NVMe под логи и локальный кэш так же, как рядом с CI, чтобы резервные узлы не упирались в диск при догоняющей синхронизации.
Одностраничный чек-лист для эксплуатации
- Подтвердите метку LaunchAgent, пользователя и рабочий каталог по runbook; после правок plist — холодный перезапуск.
- Сравните окружение интерактивного SSH и plist (
printenvпротив фактического env демона). - Докажите, что
127.0.0.1:18789слушается от имени пользователя шлюза; конфликты портов решайте до правок приложения. - После каждого обновления: токены, пути конфигурации и секреты связки ключей; прогоните один шаблонный диалог клиента.
- Задокументируйте региональный primary, standby, TTL DNS и кто уполномочен объявить переключение завершённым.
На vpszap постоянные шлюзы ближе к «настоящему» продакшену
Всё выше предполагает выделенный Apple Silicon с предсказуемым диском и без шума соседей. vpszap даёт физический M4 Mac mini — без виртуализации, весь CPU, RAM и SSD инстанса — активация примерно за пять минут с одновременной выдачей SSH и VNC, оплата за день, неделю, месяц или квартал без долгосрочного контракта, в нескольких регионах с низкой задержкой. Такой профиль выбирают команды, которым нужна та же история с «железом» в Токио и на западе США без двух собственных стоек.
Если хотите пройти этот чек-лист на железе, совпадающем с тем, как вы гоняете OpenClaw в бою, начните с облачного Mac mini vpszap.