Files
openclaw/scripts/guardian-recover.sh
2026-03-01 17:44:19 +03:00

49 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
WORKSPACE="/home/openclaw/.openclaw/workspace"
LOG="${WORKSPACE}/logs/guardian-recover.log"
TS="$(date -u +'%F %T UTC')"
log(){
echo "[$TS] $*" >> "$LOG"
}
mkdir -p "${WORKSPACE}/logs"
if openclaw status >/dev/null 2>&1; then
log "ok: openclaw status healthy"
exit 0
fi
log "warn: openclaw unhealthy, restarting gateway"
openclaw gateway restart >/dev/null 2>&1 || true
sleep 3
if openclaw status >/dev/null 2>&1; then
log "ok: recovered after gateway restart"
exit 0
fi
log "warn: still unhealthy, restarting user gateway service"
systemctl --user restart openclaw-gateway.service >/dev/null 2>&1 || true
sleep 3
if openclaw status >/dev/null 2>&1; then
log "ok: recovered after service restart"
exit 0
fi
# Optional hard restore from main branch in gitea (OFF by default)
# Enable by setting GUARDIAN_HARD_RESET=1 in service Environment.
if [[ "${GUARDIAN_HARD_RESET:-0}" == "1" ]]; then
log "warn: hard reset enabled, restoring workspace from gitea/main"
GIT_SSH_COMMAND='ssh -i /home/openclaw/.ssh/id_ed25519_vps_openclaw_45158 -o IdentitiesOnly=yes' \
git -C "$WORKSPACE" fetch gitea main >/dev/null 2>&1 || true
git -C "$WORKSPACE" reset --hard gitea/main >/dev/null 2>&1 || true
log "warn: hard reset attempted"
fi
log "error: unrecovered"
exit 1