Любое изменение на сервере — обновление OpenClaw, правка конфига, чистка сессий — несёт риск: gateway может не запуститься, агенты потеряют контекст, сервис упадёт.
Особенно остро проблема стоит когда:
safe-maintenance.sh решает эти проблемы.
Каждый опасный шаг выполняется по принципу: бэкап → изменение → health check → автооткат при провале.
┌─ BACKUP ──────────────────────────────────────┐
│ 1. Сохраняем openclaw.json │
│ 2. Сохраняем все сессии агентов (.tar.gz) │
│ 3. Сохраняем текущий бинарь OpenClaw │
└───────────────────────────────────────────────┘
↓
┌─ CHANGE ──────────────────────────────────────┐
│ Выполняем изменение: │
│ - обновление npm │
│ - правка конфига │
│ - чистка сессий │
│ - фикс модулей │
└───────────────────────────────────────────────┘
↓
┌─ HEALTH CHECK ────────────────────────────────┐
│ openclaw gateway health (до 5 попыток по 30s) │
│ Успех → идём дальше │
│ Провал → ROLLBACK │
└───────────────────────────────────────────────┘
↓ (провал)
┌─ ROLLBACK ────────────────────────────────────┐
│ 1. Останавливаем gateway │
│ 2. Восстанавливаем конфиг из бэкапа │
│ 3. Восстанавливаем сессии │
│ 4. Восстанавливаем grammy symlink │
│ 5. Запускаем gateway │
│ 6. Health check → OK? Готово. │
│ 7. Health check → FAIL? → SAFE MODE │
└───────────────────────────────────────────────┘
run-all — полный циклВыполняет все шаги WP #265 последовательно с защитой на каждом:
resume — продолжить после сбояЕсли скрипт упал на шаге 2 (например, OOM при npm install), при повторном запуске resume продолжит с шага 2. Состояние хранится в .maintenance-state.
step N — один шагРучной запуск конкретного шага (1-4) с полной защитой.
safe-mode — экстренный безопасный режимОтключает всех агентов и Telegram, запускает голый gateway. Используется когда даже откат не помог.
rollback — ручной откатВосстанавливает последний бэкап конфига и сессий.
cron-session-cleanup — тихая очисткаДля cron: чистит сессии без health check и бэкапов. Запускается ежедневно в 03:00 UTC.
Скрипт пишет состояние в .maintenance-state. После успешного шага — инкремент. При падении — resume читает этот файл и продолжает с нужного места.
Каждый запуск пишет отдельный лог: maintenance-YYYYMMDD-HHMMSS.log.
В лог попадают: все команды, health check результаты, ошибки, причины отката.
Хранятся в ~/.openclaw/backups/:
configs/openclaw.json.DATE-STEP — конфиги перед каждым шагомsessions/sessions-DATE-STEP.tar.gz — сессии перед каждым шагомbinaries/openclaw-DATE-pre-update — бинарь перед обновлением# Полный прогон
./safe-maintenance.sh run-all
# Только обновление (самое опасное)
./safe-maintenance.sh step 3
# Продолжить после падения
./safe-maintenance.sh resume
# Посмотреть состояние
./safe-maintenance.sh status
# Экстренный safe mode
./safe-maintenance.sh safe-mode
# Ручной откат
./safe-maintenance.sh rollback
Текущий скрипт — временное решение. В перспективе стоит разработать полноценный плагин безопасности OpenClaw (safe-update plugin), который:
Автор: Денис, DevOps poreklame.tech
Дата: 03.05.2026
Связанная задача: WP #265 — Gateway overload incident