2026-04-16 Обновление и откат шлюза OpenClaw на арендованном безголовом облачном Mac
Когда арендованный Apple Silicon Mac говорит только по SSH, обновление OpenClaw — чистая эксплуатация: нет кликов в Finder, нет «просто перезапусти приложение». Этот плейбук от 2026-04-16 покрывает заморозку ingress, порядок сначала стоп, потом npm, бэкапы с контрольной суммой ~/.openclaw, закрепление версии (не слепой @latest), проверку openclaw doctor, иногда нужный двойной перезапуск шлюза после глобальной установки и tarball-откат быстрее 3 минут, если сборка пошла наперекосяк. Перекрёстные ссылки: переменные окружения и секреты (2026-04-15), пробы здоровья, nginx ingress — чтобы стек был согласован в HK / JP / KR / SG / US.
Риски именно безголовых шлюзов
- Горячий глобальный npm — замена файлов, пока Node держит дескрипторы, даёт частичные установки и «призрачные» версии.
- Пересечение launchd — пользовательский LaunchAgent может перезапустить шлюз посреди апгрейда, если не сделать unload заранее.
- Дрейф конфигурации — в новых минорах переименовывают ключи; держите экспорт
openclaw.jsonбез секретов в Git. - Шторм webhook — открыть nginx без readiness заставляет партнёров агрессивно ретраить; используйте пробы из статьи о здоровье.
Сначала заморозить публичный трафик
На хостах с nginx reverse proxy переведите upstream в обслуживание или отдавайте 503 с Retry-After: 90 на время работ. Внутренние канарейки на 127.0.0.1:18789 должны оставаться доступными для проверки до открытия мира.
Матрица бэкапа: что tar до npm
| Путь / артефакт | Включать? | Заметки |
|---|---|---|
~/.openclaw (или $OPENCLAW_STATE_DIR) |
Всегда | Сначала остановить шлюз; проверить gzip через shasum -a 256 |
| Дерево глобального npm prefix | Опционально | Сохранить вывод npm prefix -g и npm ls -g --depth=0 для diff |
| plist launchd | Всегда | Скопировать из ~/Library/LaunchAgents в ту же папку архива |
TS=$(date +%Y%m%d-%H%M)
tar -czf "/Volumes/backups/openclaw-state-$TS.tgz" -C "$HOME" .openclaw
shasum -a 256 "/Volumes/backups/openclaw-state-$TS.tgz" > "/Volumes/backups/openclaw-state-$TS.tgz.sha256"
Установка и pin: semver как миграции БД
Прод-шлюзы должны отслеживать явный semver, напр. 1.24.3, в инфра-репозитории. CI может двигаться чуть быстрее, но Mac, который смотрит на партнёров в Сингапуре, не должен в 02:00 удивлять ломающим плагинным API. После остановки сервисов:
npm install -g openclaw@1.24.3
openclaw gateway status и сравните с openclaw --version; несовпадение означает переходное состояние.
Проверка, перезапуск, когда нужен второй bounce
Запустите openclaw doctor и отправьте stdout в шиппер логов. Старт через launchctl bootstrap/kickstart по plist. Если в логах старые пути модулей или странные стеки require, сделайте ещё один чистый цикл стоп/старт — задокументируйте, чтобы дежурный не принял это за флаппинг. Перед снятием обслуживания nginx снова прогоните синтетические проверки из проб здоровья.
Откат: восстановить состояние, а не надеяться
- Снова остановить шлюз и upstream nginx.
- При необходимости удалить сломанную глобальную установку:
npm rm -g openclaw, затем переустановить прежний semver. - Распаковать tarball:
tar -xzf openclaw-state-....tgz -C "$HOME"(проверить владельца). - Восстановить plist, если менялся; при необходимости
launchctl bootout/bootstrap. - Проверить doctor и внутренний curl; только потом отдавать 200 на публичном ingress.
Связанные runbook и дисциплина секретов
Апгрейды трогают те же файлы, что ротация секретов — согласуйте с гайдом launchd, чтобы .env и ключи plist совпадали. Для blue/green со вторым пользователем шлюза разделите OPENCLAW_STATE_DIR, как в той статье. После серии сбоёв добавьте witness-узел из ценообразования, а не бесконечно патчите одну уставшую машину.
FAQ: обновления шлюза на облачных Mac
| Вопрос | Ответ |
|---|---|
| pnpm вместо npm? | Поддерживается — та же дисциплина стоп/бэкап/pin/старт; путь store в runbook. |
| Автоматизация каждую неделю? | Только с canary, автоматическим doctor и воротами проб; без людей на пейджере прод не трогать. |
| Куда логировать инциденты? | Существующий мост; корреляция с полями структурированного логирования. |
Итог: относитесь к апгрейдам OpenClaw как к failover БД — заморозить трафик, сделать бэкап состояния, закрепить версии, проверить дважды и репетировать откат в каждом регионе, пока это не станет рефлексом.
OpenClaw на выделенных шлюзах M4
Сначала SSH · HK · JP · KR · SG · US