Always back up before upgrading.
Step 1 — Back up /data:
make backup-remoteThis uploads a timestamped archive of the /data volume to Hetzner Object Storage. Keep the backup until you have verified the upgraded stack is working correctly.
If S3 backups are not configured, fall back to a local backup:
make backupStep 2 — Pull and restart:
make updateThis pulls the latest OpenClaw image and restarts the stack. Equivalent to:
docker compose pull openclaw
docker compose up -d --no-deps openclawStep 3 — Verify after upgrade:
make logs # watch for errors in the first 60 seconds after restart
make status # confirm all containers are runningCheck that the guardrail is running:
docker compose exec openclaw ps aux | grep guardrailSend a test message to your bot and confirm it responds normally.
If the upgraded image is broken, roll back to a specific known-good tag by editing docker-compose.yml to pin the image tag, then run:
make upTo find available tags: browse to the OpenClaw packages page at https://ghcr.io/openclaw/openclaw and look for a stable or versioned tag that predates the broken release.
Pin the image tag in docker-compose.yml until the issue is resolved upstream:
image: ghcr.io/openclaw/openclaw:<stable-tag>If you suspect the container was compromised before or during the backup window, treat /data backups made after the suspected compromise point as potentially tainted.
Do not restore from a tainted backup without:
- Rotating all secrets — Telegram bot token, WhatsApp credentials, LLM API keys,
REDIS_PASSWORD. Assume everything in.envand everything the container could have read from/datais compromised. - Reviewing the contents of the backup archive before restoring — look for unexpected files, modified skill files, or injected configuration.
- Starting fresh from the pre-compromise backup if one exists, or from an empty
/dataif none does.
A compromised /data volume can persist malicious skills or configuration that survive a container image upgrade. Rotating secrets and auditing /data contents is not optional after a suspected compromise.