fix(bitcoin): bulletproof multi-version switching (Knots & Core)
Three stacked bugs made "switch version" silently fail / crash-loop, and the data-access mismatch corrupted a node's index during recovery attempts. Backend renderer: - sync_quadlet_unit ignored the per-app pinned version and re-rendered the quadlet with the manifest's :latest every reconcile tick, reverting any switch. Factor the install-time catalog/pin resolution into a shared resolve_catalog_image() and call it in BOTH install_fresh and sync_quadlet_unit. - The renderer folded manifest `entrypoint: ["sh","-lc"]` into Exec=, which only worked when the image entrypoint was a passthrough shell wrapper. The versioned images use ENTRYPOINT ["bitcoind"], so Exec=sh -lc ... became `bitcoind sh -lc ...` and crash-looped. Emit a real Entrypoint= override; exec_changed now also compares Entrypoint=. Images: - Build all bitcoin images (Core + Knots, every version) as container-root (USER removed) like the legacy :latest image. Chain data is owned by the data_uid (container uid 102); root reads it via CAP_DAC_OVERRIDE (granted in the manifest). A non-root USER (the previous uid 1000) can't read existing chain data → "Error initializing block database". Still fully rootless: container-root maps to the unprivileged host service user. Catalog: - bitcoin-knots versions[]: 29.3.knots20260508/20260507/20260210 + 29.2.knots20251110, "latest" tracking newest. - bitcoin-core versions[]: add 29.2 + a "latest" entry. All images rebuilt root and published to the mirror. Frontend: - AppSidebar version dropdown: rename the latest option to "Always use the latest version" (no v prefix), fix right padding, and guarantee the current selection matches a real option (was rendering blank). - New InstallVersionModal: full-screen version chooser shown from the App Store / Discover install button for multi-version apps (Bitcoin Knots/Core), app icon + "Install <name>", latest pre-selected. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
169ff2e2cd
commit
095a76cd20
@@ -334,7 +334,7 @@
|
||||
}
|
||||
},
|
||||
"bitcoin-core": {
|
||||
"version": "28.4.0",
|
||||
"version": "latest",
|
||||
"manifest": {
|
||||
"app": {
|
||||
"id": "bitcoin-core",
|
||||
@@ -343,7 +343,7 @@
|
||||
"description": "Reference Bitcoin Core node with dynamic prune/full-mode startup based on host disk.",
|
||||
"container_name": "bitcoin-core",
|
||||
"container": {
|
||||
"image": "146.59.87.168:3000/lfg2025/bitcoin:28.4",
|
||||
"image": "146.59.87.168:3000/lfg2025/bitcoin:latest",
|
||||
"pull_policy": "if-not-present",
|
||||
"network": "archy-net",
|
||||
"entrypoint": [
|
||||
@@ -433,6 +433,11 @@
|
||||
}
|
||||
},
|
||||
"versions": [
|
||||
{
|
||||
"version": "latest",
|
||||
"image": "146.59.87.168:3000/lfg2025/bitcoin:latest",
|
||||
"default": true
|
||||
},
|
||||
{
|
||||
"version": "31.0",
|
||||
"image": "146.59.87.168:3000/lfg2025/bitcoin:31.0"
|
||||
@@ -445,10 +450,13 @@
|
||||
"version": "29.3",
|
||||
"image": "146.59.87.168:3000/lfg2025/bitcoin:29.3"
|
||||
},
|
||||
{
|
||||
"version": "29.2",
|
||||
"image": "146.59.87.168:3000/lfg2025/bitcoin:29.2"
|
||||
},
|
||||
{
|
||||
"version": "28.4.0",
|
||||
"image": "146.59.87.168:3000/lfg2025/bitcoin:28.4",
|
||||
"default": true
|
||||
"image": "146.59.87.168:3000/lfg2025/bitcoin:28.4"
|
||||
},
|
||||
{
|
||||
"version": "27.2",
|
||||
@@ -569,12 +577,24 @@
|
||||
"versions": [
|
||||
{
|
||||
"version": "latest",
|
||||
"image": "146.59.87.168:3000/lfg2025/bitcoin-knots:latest",
|
||||
"image": "146.59.87.168:3000/lfg2025/bitcoin-knots:29.3.knots20260508",
|
||||
"default": true
|
||||
},
|
||||
{
|
||||
"version": "29.3.knots20260508",
|
||||
"image": "146.59.87.168:3000/lfg2025/bitcoin-knots:29.3.knots20260508"
|
||||
},
|
||||
{
|
||||
"version": "29.3.knots20260507",
|
||||
"image": "146.59.87.168:3000/lfg2025/bitcoin-knots:29.3.knots20260507"
|
||||
},
|
||||
{
|
||||
"version": "29.3.knots20260210",
|
||||
"image": "146.59.87.168:3000/lfg2025/bitcoin-knots:29.3.knots20260210"
|
||||
},
|
||||
{
|
||||
"version": "29.2.knots20251110",
|
||||
"image": "146.59.87.168:3000/lfg2025/bitcoin-knots:29.2.knots20251110"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user