fix: bulletproof first-boot container creation and install reliability
Remove the Bitcoin RPC 60-second gate that blocked 13+ dependent containers (mempool, electrumx, btcpay, lnd, fedimint) from being created on first boot. Containers now always get created and auto-restart via health monitor once Bitcoin becomes responsive — the designed recovery path. Additional hardening: - Validate archy-net creation with retry (silent failure broke DNS) - Verify critical images are loaded, re-load from tarballs if missing - Create SearXNG settings.yml before container start (was missing) - Run reconciler automatically after first-boot failures - Add load-images as explicit systemd dependency with 900s timeout - Propagate config write errors in install.rs (bitcoin.conf, lnd.conf) - FileBrowser password change: retry loop (6 attempts) + 0o600 perms - Post-start verification: detect containers that exit immediately - Add 2s dependency waits between container starts Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1368,12 +1368,14 @@ FBUNBUNDLED
|
||||
cat > "$WORK_DIR/archipelago-first-boot-containers.service" <<'FBCSERVICE'
|
||||
[Unit]
|
||||
Description=Create core Archipelago containers on first boot
|
||||
After=archipelago-setup-tor.service network-online.target podman.service
|
||||
After=archipelago-load-images.service archipelago-setup-tor.service network-online.target podman.service
|
||||
Wants=archipelago-load-images.service
|
||||
ConditionPathExists=/opt/archipelago/scripts/first-boot-containers.sh
|
||||
ConditionPathExists=!/var/lib/archipelago/.first-boot-containers-done
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
TimeoutStartSec=900
|
||||
ExecStart=/opt/archipelago/scripts/first-boot-containers.sh
|
||||
ExecStartPost=/usr/bin/touch /var/lib/archipelago/.first-boot-containers-done
|
||||
RemainAfterExit=yes
|
||||
@@ -1395,12 +1397,14 @@ else
|
||||
cat > "$WORK_DIR/archipelago-first-boot-containers.service" <<'FBCSERVICE'
|
||||
[Unit]
|
||||
Description=Create core Archipelago containers on first boot
|
||||
After=archipelago-setup-tor.service network-online.target podman.service
|
||||
After=archipelago-load-images.service archipelago-setup-tor.service network-online.target podman.service
|
||||
Wants=archipelago-load-images.service
|
||||
ConditionPathExists=/opt/archipelago/scripts/first-boot-containers.sh
|
||||
ConditionPathExists=!/var/lib/archipelago/.first-boot-containers-done
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
TimeoutStartSec=900
|
||||
ExecStart=/opt/archipelago/scripts/first-boot-containers.sh
|
||||
ExecStartPost=/usr/bin/touch /var/lib/archipelago/.first-boot-containers-done
|
||||
RemainAfterExit=yes
|
||||
|
||||
Reference in New Issue
Block a user