Этот репозиторий хранит инфраструктурную сборку OpenClaw для быстрого восстановления на новом сервере.
- Экспортирует настройки OpenClaw и агентов в
state-export/ - Ведет версионность в GitHub
- Делает автосинхронизацию по cron (в фоне)
- Дает команды backup/restore
- Фиксирует рабочий профиль стабильности для прод-сервера
На этом сервере текущая рабочая стабильная версия: openclaw@2026.4.12.
Важно:
latest stableне всегда равен операционно стабильной версии в конкретном окружении- поэтому прод обновляется консервативно: сначала проверка, потом фиксация
Текущие опорные настройки стабильности:
- Канал обновлений:
stable(только ручные обновления) - Пин версии для прода:
2026.4.12 gateway.bind=loopbackgateway.reload=hot- Один systemd unit для gateway:
openclaw-gateway.service - Автовосстановление процесса:
Restart=always,RestartSec=5 - Защита от lock-зависаний: очистка stale lock в
ExecStartPre - Отключение внутреннего respawn:
OPENCLAW_NO_RESPAWN=1 - Node compile cache:
NODE_COMPILE_CACHE=/var/tmp/openclaw-compile-cache - Пост-апдейт проверка:
doctor -> restart -> status --deep -> health retries -> logs
git clone https://github.com/basi163/openclaw-infra.git ~/openclaw-infra
cd ~/openclaw-infra
bash scripts/bootstrap.shbash scripts/export-config.sh
bash scripts/sync-to-github.shУстановка cron-задач:
bash scripts/install-autosync.shПо умолчанию:
auto-sync.shзапускается при старте сервера и каждые 5 минутbackup-release.shзапускается ежедневно в03:35 UTC
Опционально можно переопределить расписание и пути логов:
AUTO_SYNC_SCHEDULE='*/10 * * * *' \
BACKUP_RELEASE_SCHEDULE='15 2 * * *' \
AUTO_SYNC_LOG='/tmp/openclaw-autosync.log' \
BACKUP_RELEASE_LOG='/tmp/openclaw-backup-release.log' \
bash scripts/install-autosync.shbash scripts/backup-create.sh
# или
openclaw backup create --output ~/openclaw-backups --verify- Создай файл
~/.openclaw/.backup-release.env:
OPENCLAW_BACKUP_PASSPHRASE='длинный-секретный-пароль'
GITHUB_BACKUP_REPO='basi163/openclaw-infra'- Запуск вручную:
bash scripts/backup-release.sh- Восстановление:
bash scripts/restore-from-release.sh <release-tag>На этом сервере gateway запущен как системный systemd unit (openclaw-gateway.service), поэтому для OpenClaw установлен внешний shim:
bash scripts/install-openclaw-gateway-compat.shОн:
- перенаправляет
systemctl --user ... openclaw-gateway.serviceна системный unit - разрешает пользователю
openclawвыполнятьstart|stop|restartтолько дляopenclaw-gateway.service - создает
~openclaw/.config/systemd/user/openclaw-gateway.serviceкак symlink на системный unit, чтобы новые версии OpenClaw корректно считали сервис установленным - переживает обновления OpenClaw, потому что не зависит от
node_modules
sudo bash scripts/pin-openclaw-stable.shПо умолчанию скрипт ставит openclaw@2026.4.12.
Если нужно переопределить:
sudo OPENCLAW_STABLE_VERSION=2026.4.12 bash scripts/pin-openclaw-stable.shsudo bash scripts/update-openclaw-safe.sh
sudo bash scripts/post-update-check.shupdate-openclaw-safe.sh:
- переустанавливает shim совместимости
- обновляет OpenClaw (по умолчанию до
openclaw@2026.4.12, черезOPENCLAW_NPM_SPECможно переопределить) - проверяет
openclaw status --json - прогоняет smoke test
openclaw gateway restart - печатает хвост
journalctl -u openclaw-gateway.service
post-update-check.sh:
- прогоняет
openclaw doctor --deep --non-interactive - перезапускает
openclaw-gateway.service - снимает
openclaw status --deep --json - делает retry для
openclaw health --json - печатает свежие логи
journalctl -u openclaw-gateway.service
Рекомендуемый порядок:
# backup перед изменением версии
bash scripts/backup-create.sh
# пробный апдейт на кандидата
sudo OPENCLAW_NPM_SPEC='openclaw@latest' bash scripts/update-openclaw-safe.sh
sudo bash scripts/post-update-check.sh
# если кандидат стабильный в этом окружении — зафиксировать новый пин
sudo OPENCLAW_STABLE_VERSION='<новая-версия>' bash scripts/pin-openclaw-stable.shЕсли после апдейта деградация:
- сразу откат на предыдущий пин через
scripts/pin-openclaw-stable.sh systemctl restart openclaw-gateway.service- повторный
scripts/post-update-check.sh
- Нет дублирующих gateway unit'ов (
systemd --userи системный не конфликтуют) - Только один активный процесс gateway
- Нет конфликта порта gateway
openclaw status --deep --jsonбез критических ошибокopenclaw health --jsonпроходит в пределах retry- Логи
journalctl -u openclaw-gateway.serviceбез crash-loop
- Секреты в git не коммитим
- Конфиг в
state-export/openclaw.json.redactedуже обезличен - Для полного аварийного восстановления используй encrypted backup archive из Releases