From d67c636988f9f524a9692ceea1737932a76a2b70 Mon Sep 17 00:00:00 2001 From: Dorian Date: Mon, 30 Mar 2026 22:46:06 +0100 Subject: [PATCH] fix: add stopped core container restart to doctor Rootless Podman 4.x restart policies don't auto-restart containers after crashes. The doctor (which runs on a timer) now checks for exited core containers (tiers 0-2) and restarts them. Co-Authored-By: Claude Opus 4.6 (1M context) --- scripts/container-doctor.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/scripts/container-doctor.sh b/scripts/container-doctor.sh index 8c67ffed..1addd109 100755 --- a/scripts/container-doctor.sh +++ b/scripts/container-doctor.sh @@ -14,6 +14,7 @@ # 5. SearXNG read-only root / cap-drop ALL # 6. Bitcoin Knots prune+txindex conflict # 7. Containers stuck with exit code 127 (binary not found) +# 8. Stopped core containers (rootless restart policy workaround) # # Safe to run multiple times (idempotent). Never blocks deploy (exit 0 always). # @@ -362,6 +363,25 @@ print(' '.join(['\"' + a + '\"' if ' ' in a else a for a in args[2:]])) [ ${#fixed_names[@]} -gt 0 ] && return 0 || return 1 } +# ── Fix 8: Restart stopped core containers ────────────────── +# Rootless Podman 4.x restart policies don't auto-restart on crash. +# This check restarts any exited core containers (tiers 0-2). +fix_stopped_core_containers() { + local core_containers="bitcoin-knots lnd electrumx mempool-api archy-mempool-web archy-mempool-db archy-btcpay-db archy-nbxplorer btcpay-server" + local restarted=() + + for name in $core_containers; do + local state + state=$(podman inspect "$name" --format '{{.State.Status}}' 2>/dev/null || echo "missing") + if [ "$state" = "exited" ] || [ "$state" = "stopped" ]; then + log "Restarting stopped container: $name" + podman start "$name" 2>/dev/null && restarted+=("$name") || true + fi + done + + [ ${#restarted[@]} -gt 0 ] && return 0 || return 1 +} + # ── Main ───────────────────────────────────────────────────── # If remote host provided, run via SSH @@ -388,6 +408,7 @@ run_fix "tor-permissions" fix_tor_permissions run_fix "searxng" fix_searxng run_fix "bitcoin-txindex" fix_bitcoin_txindex run_fix "exit-127" fix_exit_127 +run_fix "stopped-core" fix_stopped_core_containers echo "" if [ $FIXES_APPLIED -gt 0 ]; then