fix(reboot): enable podman-restart.service at startup (--restart reboot-survival)
Orchestrator-installed backends (immich, btcpay-db, …) run as plain podman `--restart=unless-stopped` containers until the Phase-3 Quadlet rollout flips use_quadlet_backends on. Nothing in the codebase enabled the user's podman-restart.service, so those containers had NO reboot-survival mechanism. Enable it (idempotent, best-effort) at orchestrator startup so unless-stopped containers come back after a reboot. Already applied manually on .228 (covers 31 containers incl. immich + btcpay); this codifies it fleet-wide. The deeper fix (render Quadlet for all orchestrator installs) remains the gated Phase-3 Quadlet-everywhere rollout. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
d5ef45731a
commit
f160e0c404
@ -206,6 +206,27 @@ async fn main() -> Result<()> {
|
|||||||
tracing::error!(error = %e, "prod orchestrator: load_manifests failed at startup");
|
tracing::error!(error = %e, "prod orchestrator: load_manifests failed at startup");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Reboot-survival safety net for the podman `--restart` path: ensure the
|
||||||
|
// user's podman-restart.service is enabled so `unless-stopped` containers
|
||||||
|
// come back after a reboot even when the Quadlet backend path is off
|
||||||
|
// (orchestrator-installed backends like immich/btcpay run as plain podman
|
||||||
|
// containers until the Phase-3 Quadlet rollout). Idempotent + best-effort.
|
||||||
|
{
|
||||||
|
let out = tokio::process::Command::new("systemctl")
|
||||||
|
.args(["--user", "enable", "--now", "podman-restart.service"])
|
||||||
|
.output()
|
||||||
|
.await;
|
||||||
|
match out {
|
||||||
|
Ok(o) if o.status.success() => {
|
||||||
|
info!("🔁 podman-restart.service enabled (reboot-survival for --restart containers)")
|
||||||
|
}
|
||||||
|
Ok(o) => tracing::debug!(
|
||||||
|
"podman-restart.service enable skipped: {}",
|
||||||
|
String::from_utf8_lossy(&o.stderr).trim()
|
||||||
|
),
|
||||||
|
Err(e) => tracing::debug!("podman-restart.service enable skipped: {e}"),
|
||||||
|
}
|
||||||
|
}
|
||||||
// Adoption pass: link existing podman containers back to their
|
// Adoption pass: link existing podman containers back to their
|
||||||
// manifests so the reconciler doesn't recreate them.
|
// manifests so the reconciler doesn't recreate them.
|
||||||
match tokio::time::timeout(Duration::from_secs(35), prod.adopt_existing()).await {
|
match tokio::time::timeout(Duration::from_secs(35), prod.adopt_existing()).await {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user