Controller 0.351.0 released: release evidence, status and report
gates / gates (push) Successful in 1m56s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
adminandClaude Opus 5.5 committed 2026-11-09 13:23:25 +01:00
1 parent c16697c21a
commit 13c786dd2f
18 files changed
+319 -3

No files matched your search

+8 -2
View File
@@ -2,8 +2,8 @@
**Plain words first.** demo-hp did not restart on 11-08/09. Its local whole-box copy was refused for space again
(12.5 GiB free, 13.3 GiB needed), so the night's OS run and its kernel step waited. With the operator's yes, CC freed
space and filed the causes. The controller now deletes two kinds of old images by itself (v0.351.0, in code, not
released).
space and filed the causes. The controller now deletes two kinds of old images by itself: v0.351.0, **released the
same day** (global floor 12:18 UTC, MinAgent 0.158.1).
## What the whole-box copy holds (demo-hp guest 9201, `docker system df -v`, measured)
@@ -37,6 +37,12 @@ image space unused; most of it is undo images).
- Controller v0.351.0 (felhom-controller CHANGELOG): decision 56 amended (old `-rc` controller images go) and decision
285 (pinned infrastructure images keep the pin and the previous pin). Six mutants red-proved.
- **Released 2026-11-09** (`documentation/audits/release-2026-11-09/README.md`): rc.1 by hand on Tester 1 (37 → 24
images, 12 controller + 2 infrastructure images deleted, about 1 GB freed, because the test builds share layers);
per-box floors 12:14 UTC, all three test boxes on 0.351.0 by 12:15; each box's own pass deleted what the rule says
(demo-felhom: 1 controller + 5 infrastructure images); walk green on all three, `https_only_check.py` rc 0; global
floor 0.351.0 / MinAgent 0.158.1 at 12:18 UTC, read back from the hub log and the configuration page; per-box floors
cleared.
- `09-update-architecture.md` §3: decision 285 added, decision 56 amended.
## Register
+1 -1
View File
@@ -2,7 +2,7 @@
**Ready for Tester 2? Yes — tell the friend go (`documentation/pilot/TESTER2-handover.md`).**
**Updated 2026-11-09.** demo-hp did not restart, because its local whole-box copy was refused for space again and the night update waited; CC freed space (old images, an old installer file), so tonight's copy fits. Controller 0.351.0 (in code, not released) deletes old test builds and old system images by itself. Two new rows: the whole-box copy is mostly app programs (your decision, R-1366), and the host log noise (R-1367).
**Updated 2026-11-09.** demo-hp did not restart, because its local whole-box copy was refused for space again and the night update waited; CC freed space (old images, an old installer file), so tonight's copy fits. Controller 0.351.0 is released to every box (floor 12:18 UTC): it deletes old test builds and old system images by itself. Two new rows: the whole-box copy is mostly app programs (your decision, R-1366), and the host log noise (R-1367).
## What works
- **The Plex attack did not reach Felhom's secrets** (R-1241).
@@ -0,0 +1,42 @@
# Controller 0.351.0 release, 2026-11-09 (attended, operator's „go with A")
**Image:** 0.351.0 from `27360d6a` (CI 2603 green), `sha256:1d90563c443022770b2db90a7730f1ea5aea45cc5b0fa64fec9823d60d42d97f`
(`ctl-0351-build.txt`). rc.1 from the same commit, `sha256:f789f4b03da9645266fc712b1e687ae3939bbb52416ac798f42e8b0146e49ab2`.
What it carries: decision 56 amended (old `-rc` controller images go) and decision 285 (old infrastructure images go).
## rc.1 on Tester 1, by hand (`tester1-images-before.txt`, `tester1-rc1-retention-log.txt`, `tester1-images-after.txt`, `tester1-walk-rc1.txt`)
Tester 1 still had the old images (demo-hp's were removed by hand earlier the same day). rc.1 installed through
`/etc/felhom-controller-image` at 12:10 UTC; the pass ran at 12:12:54, about 3 minutes after the start.
- Controller: 12 of 14 images deleted (11 old test builds and 0.349.0). Kept: running 0.351.0-rc.1 and the previous
0.350.0 (found by version order: a hand install writes no swap record).
- Infrastructure: traefik v3.7.13 and cloudflared 2026.9.3 deleted. Kept: each pin and the one before it (traefik
v3.7.16, cloudflared 2026.10.3, FileBrowser 1.5.6-stable, Samba 1.1.0). `alpine`, `hello-world`, `traefik/whoami`
are not in the infrastructure list and were not touched.
- 37 → 24 images; Docker's image total 8.665 → 7.612 GB. Only about 1 GB is freed, because the old test builds share
most of their layers. Still reclaimable: 3.13 GB, mostly the apps' undo images (decision 53, on purpose).
- Walk green: 0 unhealthy, 0 refusals, 0 ERROR lines, login and file manager 200, every app route answers.
## The three boxes through the normal update path (`floors-set-at.txt`, `floors-per-box.txt`, `rollout-wait.txt`, `walk-3boxes.txt`, `https-only.txt`)
Per-box floors 0.351.0 / MinAgent 0.158.1 at 12:14:27 UTC (303 `floor_set` each); all three on 0.351.0, healthy, by
12:15:11. Each box's own pass, about 3 minutes after its start:
| Box | Controller images deleted | Infrastructure images deleted | Images after |
|---|---|---|---|
| Tester 1 | 0.350.0 (previous is now rc.1, from the self-update's record) | none | 24, 7.6 GB |
| demo-hp | 0.349.0 | none (cleaned by hand earlier; Samba shows no previous, because 1.1.0 was removed by hand) | 43, 24.2 GB |
| demo-felhom | 0.349.0 | traefik v3.6.7, v3.7.13; cloudflared 2026.6.0, 2026.9.3; FileBrowser 1.3.3-stable | 16, 2.2 GB |
Walk green on all three (0 unhealthy, 0 refusals, 0 ERROR lines, login and file manager 200, every app route through
Traefik 200/302/401). `https_only_check.py` rc 0 (controls passed; every public name 301 to https).
## The floor (`global-floor.txt`, `global-floor-readback.txt`, `floors-cleared.txt`)
Global floor 0.351.0 / MinAgent 0.158.1 at 12:18:28 UTC with CC's token (303 `floor_set`). Read back from two channels:
the running hub pod's log (`Global controller-version floor set to "0.351.0" (declared MinAgent "0.158.1")`) and the
configuration page (`min_controller_version` 0.351.0, `min_agent` 0.158.1). Per-box floors cleared 12:18:38 (the hub log
shows each override set to "").
**Teardown:** machine — no throwaway app; host — nothing provisioned; hub — the three per-box floors cleared.
@@ -0,0 +1,6 @@
[INFO] ╔══════════════════════════════════════╗
[INFO] ║ Build complete ✓ ║
[INFO] ╚══════════════════════════════════════╝
[INFO] Image: gitea.dooplex.hu/admin/felhom-controller:0.351.0
[INFO] Size: 486M
@@ -0,0 +1,9 @@
== tester-1
HTTP/1.1 303 See Other
Location: /customers/tester-1?flash=floor_set
== demo-hp
HTTP/1.1 303 See Other
Location: /customers/demo-hp?flash=floor_set
== demo-felhom
HTTP/1.1 303 See Other
Location: /customers/demo-felhom?flash=floor_set
@@ -0,0 +1,9 @@
== tester-1
HTTP/1.1 303 See Other
Location: /customers/tester-1?flash=floor_set
== demo-hp
HTTP/1.1 303 See Other
Location: /customers/demo-hp?flash=floor_set
== demo-felhom
HTTP/1.1 303 See Other
Location: /customers/demo-felhom?flash=floor_set
@@ -0,0 +1 @@
2026-11-09T12:14:27Z
@@ -0,0 +1,11 @@
2026/11/09 13:14:27 [INFO] access token "cc-releases-2": POST /customers/demo-hp/floor → 303
2026/11/09 13:14:27 [INFO] Customer demo-felhom controller-version floor override set to "0.351.0" (declared MinAgent "0.158.1")
2026/11/09 13:14:27 [INFO] access token "cc-releases-2": POST /customers/demo-felhom/floor → 303
2026/11/09 13:14:31 [INFO] managed floor SERVED for demo-felhom: floor 0.351.0, agent requirement "0.158.1" from declared (golden 0.350.0)
2026/11/09 13:14:31 [INFO] managed floor SERVED for tester-1: floor 0.351.0, agent requirement "0.158.1" from declared (golden 0.350.0)
2026/11/09 13:14:31 [INFO] managed floor SERVED for demo-hp: floor 0.351.0, agent requirement "0.158.1" from declared (golden 0.350.0)
2026/11/09 13:18:28 [INFO] Global controller-version floor set to "0.351.0" (declared MinAgent "0.158.1")
2026/11/09 13:18:28 [INFO] access token "cc-releases-2": POST /configuration/global-floor → 303
name="min_controller_version" value="0.351.0"
name="min_agent" value="0.158.1"
name="min_agent" value="0.158.1"
@@ -0,0 +1,3 @@
2026-11-09T12:18:28Z
HTTP/1.1 303 See Other
Location: /configuration?flash=floor_set
@@ -0,0 +1,34 @@
control NEGATIVE (a stub answering 200 over plain http): convicted, as it must (200 -)
== tester-1 (enkicsifelhom.hu): 6 public name(s)
OK control POSITIVE http://felhom.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://felhom.enkicsifelhom.hu/r1033-check?q=1
OK http://files.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://files.enkicsifelhom.hu/r1033-check?q=1
OK http://no-such-name-r1033.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://no-such-name-r1033.enkicsifelhom.hu/r1033-check?q=1
OK http://paperless.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://paperless.enkicsifelhom.hu/r1033-check?q=1
OK http://paste.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://paste.enkicsifelhom.hu/r1033-check?q=1
OK http://wiki.enkicsifelhom.hu/r1033-check?q=1 -> 301 https://wiki.enkicsifelhom.hu/r1033-check?q=1
== demo-hp (enkisfelhom.hu): 15 public name(s)
OK http://arcade.enkisfelhom.hu/r1033-check?q=1 -> 301 https://arcade.enkisfelhom.hu/r1033-check?q=1
OK http://books.enkisfelhom.hu/r1033-check?q=1 -> 301 https://books.enkisfelhom.hu/r1033-check?q=1
OK http://docs.enkisfelhom.hu/r1033-check?q=1 -> 301 https://docs.enkisfelhom.hu/r1033-check?q=1
OK http://felhom.enkisfelhom.hu/r1033-check?q=1 -> 301 https://felhom.enkisfelhom.hu/r1033-check?q=1
OK http://files.enkisfelhom.hu/r1033-check?q=1 -> 301 https://files.enkisfelhom.hu/r1033-check?q=1
OK http://gist.enkisfelhom.hu/r1033-check?q=1 -> 301 https://gist.enkisfelhom.hu/r1033-check?q=1
OK http://ha.enkisfelhom.hu/r1033-check?q=1 -> 301 https://ha.enkisfelhom.hu/r1033-check?q=1
OK http://no-such-name-r1033.enkisfelhom.hu/r1033-check?q=1 -> 301 https://no-such-name-r1033.enkisfelhom.hu/r1033-check?q=1
OK http://papir.enkisfelhom.hu/r1033-check?q=1 -> 301 https://papir.enkisfelhom.hu/r1033-check?q=1
OK http://paste.enkisfelhom.hu/r1033-check?q=1 -> 301 https://paste.enkisfelhom.hu/r1033-check?q=1
OK http://pdf.enkisfelhom.hu/r1033-check?q=1 -> 301 https://pdf.enkisfelhom.hu/r1033-check?q=1
OK http://plex.enkisfelhom.hu/r1033-check?q=1 -> 301 https://plex.enkisfelhom.hu/r1033-check?q=1
OK http://time.enkisfelhom.hu/r1033-check?q=1 -> 301 https://time.enkisfelhom.hu/r1033-check?q=1
OK http://travel.enkisfelhom.hu/r1033-check?q=1 -> 301 https://travel.enkisfelhom.hu/r1033-check?q=1
OK http://wiki.enkisfelhom.hu/r1033-check?q=1 -> 301 https://wiki.enkisfelhom.hu/r1033-check?q=1
== demo-felhom (demo-felhom.eu): 8 public name(s)
OK http://felhom.demo-felhom.eu/r1033-check?q=1 -> 301 https://felhom.demo-felhom.eu/r1033-check?q=1
OK http://files.demo-felhom.eu/r1033-check?q=1 -> 301 https://files.demo-felhom.eu/r1033-check?q=1
OK http://gist.demo-felhom.eu/r1033-check?q=1 -> 301 https://gist.demo-felhom.eu/r1033-check?q=1
OK http://no-such-name-r1033.demo-felhom.eu/r1033-check?q=1 -> 301 https://no-such-name-r1033.demo-felhom.eu/r1033-check?q=1
OK http://prowlarr.demo-felhom.eu/r1033-check?q=1 -> 301 https://prowlarr.demo-felhom.eu/r1033-check?q=1
OK http://radarr.demo-felhom.eu/r1033-check?q=1 -> 301 https://radarr.demo-felhom.eu/r1033-check?q=1
OK http://sonarr.demo-felhom.eu/r1033-check?q=1 -> 301 https://sonarr.demo-felhom.eu/r1033-check?q=1
OK http://torrent.demo-felhom.eu/r1033-check?q=1 -> 301 https://torrent.demo-felhom.eu/r1033-check?q=1
== every public name redirects http -> https
+6
View File
@@ -0,0 +1,6 @@
#!/bin/bash
# read_boxes.sh — one line per box, read-only: the controller's image and status, Traefik's image.
for x in "tester-1 root@192.168.0.154" "demo-hp hp" "demo-felhom felhom-pve"; do set -- $x
o=$(ssh -o BatchMode=yes -o ConnectTimeout=10 $2 "pct exec 9201 -- docker ps --format '{{.Names}}|{{.Image}}|{{.Status}}'" 2>&1 | grep -E '^(felhom-controller|traefik)\|')
echo "$1: $(echo "$o" | sed 's#gitea.dooplex.hu/admin/felhom-controller:##' | cut -d'|' -f2,3 | tr '\n' ' ')"
done
@@ -0,0 +1,6 @@
Mon Nov 9 12:15:11 PM UTC 2026
tester-1: 0.351.0|Up 30 seconds (healthy) traefik:v3.7.17|Up 6 days
demo-hp: 0.351.0|Up 30 seconds (healthy) traefik:v3.7.17|Up 34 hours
demo-felhom: 0.351.0|Up 34 seconds (healthy) traefik:v3.7.17|Up 32 hours
[exited with code 0]
@@ -0,0 +1,18 @@
gitea.dooplex.hu/admin/felhom-controller:0.351.0-rc.1 485f658c0460 348MB
gitea.dooplex.hu/admin/felhom-controller:0.350.0 1f32a260789a 348MB
traefik:v3.7.17 a72cb2f4a210 191MB
cloudflare/cloudflared:2026.10.4 472341c39b02 64.6MB
traefik:v3.7.16 3733df53e74c 194MB
cloudflare/cloudflared:2026.10.3 1475624a6d23 64.6MB
gtstef/filebrowser:1.5.8-stable 0019084d4a6f 195MB
alpine:latest 320994c3b997 8.42MB
gtstef/filebrowser:1.5.6-stable 96e26edeefc3 195MB
gitea.dooplex.hu/admin/felhom-samba:1.1.0 8e21163a1646 103MB
hello-world:latest e2ac70e7319a 10.1kB
traefik/whoami:v1.10.3 aeef15490f2b 6.58MB
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 24 10 7.612GB 3.129GB (41%)
Containers 10 10 48.13MB 0B (0%)
Local Volumes 379 11 348.2MB 41.14kB (0%)
Build Cache 0 0 0B 0B
@@ -0,0 +1,25 @@
gitea.dooplex.hu/admin/felhom-controller:0.350.0 1f32a260789a 348MB
traefik:v3.7.17 a72cb2f4a210 191MB
gitea.dooplex.hu/admin/felhom-controller:0.349.0 3ef3c22d7694 348MB
gitea.dooplex.hu/admin/felhom-controller:0.349.0-rc.1 712055a90134 348MB
gitea.dooplex.hu/admin/felhom-controller:0.348.0-rc.1 1e0e09bce4b5 348MB
gitea.dooplex.hu/admin/felhom-controller:0.346.0-rc.1 1cccdf6b7c38 348MB
gitea.dooplex.hu/admin/felhom-controller:0.345.0-rc.1 fe0bd83a909b 348MB
cloudflare/cloudflared:2026.10.4 472341c39b02 64.6MB
traefik:v3.7.16 3733df53e74c 194MB
cloudflare/cloudflared:2026.10.3 1475624a6d23 64.6MB
gitea.dooplex.hu/admin/felhom-controller:0.318.0-rc.2 4f33e59f8ee3 411MB
gitea.dooplex.hu/admin/felhom-controller:0.317.0-rc.1 f6a498239f51 411MB
gitea.dooplex.hu/admin/felhom-controller:0.314.0-rc.1 80b7b25c4433 411MB
gitea.dooplex.hu/admin/felhom-controller:0.313.0-rc.4 698111af3f49 411MB
gitea.dooplex.hu/admin/felhom-controller:0.313.0-rc.3 3d4ee64e9216 411MB
gitea.dooplex.hu/admin/felhom-controller:0.313.0-rc.2 0b441db4244b 411MB
gitea.dooplex.hu/admin/felhom-controller:0.313.0-rc.1 3bbc4111dddc 411MB
gtstef/filebrowser:1.5.8-stable 0019084d4a6f 195MB
cloudflare/cloudflared:2026.9.3 87f0e97329b3 64.3MB
traefik:v3.7.13 f9309349d2c1 195MB
alpine:latest 320994c3b997 8.42MB
gtstef/filebrowser:1.5.6-stable 96e26edeefc3 195MB
gitea.dooplex.hu/admin/felhom-samba:1.1.0 8e21163a1646 103MB
hello-world:latest e2ac70e7319a 10.1kB
traefik/whoami:v1.10.3 aeef15490f2b 6.58MB
@@ -0,0 +1,21 @@
2026/11/09 12:12:54 [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.313.0-rc.2 (0b441db4244b, 411MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:12:54 [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.346.0-rc.1 (1cccdf6b7c38, 348MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:12:54 [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.348.0-rc.1 (1e0e09bce4b5, 348MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:12:54 [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.313.0-rc.1 (3bbc4111dddc, 411MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:12:54 [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.313.0-rc.3 (3d4ee64e9216, 411MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:12:54 [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.349.0 (3ef3c22d7694, 348MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:12:55 [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.318.0-rc.2 (4f33e59f8ee3, 411MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:12:55 [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.313.0-rc.4 (698111af3f49, 411MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:12:55 [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.349.0-rc.1 (712055a90134, 348MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:12:55 [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.314.0-rc.1 (80b7b25c4433, 411MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:12:55 [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.317.0-rc.1 (f6a498239f51, 411MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:12:55 [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.345.0-rc.1 (fe0bd83a909b, 348MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:12:55 [INFO] [stacks] controller image retention: pass over 14 controller image(s) — running 0.351.0-rc.1, previous "0.350.0" (by version order (no swap record names one present)), 12 candidate(s), 12 deleted, the rest kept
2026/11/09 12:12:56 [INFO] [stacks] infra image retention: deleted traefik:v3.7.13 (f9309349d2c1, 195MB) — older than the previous pin and no container uses it (decision 285)
2026/11/09 12:12:56 [INFO] [stacks] infra image retention: traefik — pass over 3 image(s), pinned v3.7.17, previous "3.7.16", 1 candidate(s), 1 deleted, the rest kept
2026/11/09 12:12:56 [INFO] [stacks] infra image retention: deleted cloudflare/cloudflared:2026.9.3 (87f0e97329b3, 64.3MB) — older than the previous pin and no container uses it (decision 285)
2026/11/09 12:12:56 [INFO] [stacks] infra image retention: cloudflare/cloudflared — pass over 3 image(s), pinned 2026.10.4, previous "2026.10.3", 1 candidate(s), 1 deleted, the rest kept
2026/11/09 12:12:56 [INFO] [stacks] infra image retention: gtstef/filebrowser — pass over 2 image(s), pinned 1.5.8-stable, previous "1.5.6-stable", 0 candidate(s), 0 deleted, the rest kept
2026/11/09 12:12:56 [INFO] [stacks] infra image retention: gitea.dooplex.hu/admin/felhom-samba — pass over 1 image(s), pinned 1.2.0, previous "1.1.0", 0 candidate(s), 0 deleted, the rest kept
[exited with code 0]
@@ -0,0 +1,12 @@
controller: gitea.dooplex.hu/admin/felhom-controller:0.351.0-rc.1 Up 3 minutes (healthy)
traefik: traefik:v3.7.17 sha256:a72cb2f4a2109f1ae52261c86d56b7d33a27dc5c4e211ce3c7835b772338b94f running version 3.7.17
traefik repo digest: traefik@sha256:68ae5fe5b64ca166704b746a9e8afcd385e36b3f569a5691401bf652d57b3748
containers: 10 total
not running/unhealthy: none
refusals since 2026-11-09T12:10:00Z: 0
ERROR lines since: 0
login page: 200
file manager: 200
route paste.enkicsifelhom.hu [privatebin]: 200
route paperless.enkicsifelhom.hu [paperless-webserver]: 302
route wiki.enkicsifelhom.hu [bookstack]: 302
@@ -0,0 +1,83 @@
=== tester-1 retention
2026/11/09 12:17:39 [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.350.0 (1f32a260789a, 348MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:17:39 [INFO] [stacks] controller image retention: pass over 3 controller image(s) — running 0.351.0, previous "0.351.0-rc.1" (the self-update's record), 1 candidate(s), 1 deleted, the rest kept
2026/11/09 12:17:39 [INFO] [stacks] infra image retention: traefik — pass over 2 image(s), pinned v3.7.17, previous "3.7.16", 0 candidate(s), 0 deleted, the rest kept
2026/11/09 12:17:39 [INFO] [stacks] infra image retention: cloudflare/cloudflared — pass over 2 image(s), pinned 2026.10.4, previous "2026.10.3", 0 candidate(s), 0 deleted, the rest kept
2026/11/09 12:17:39 [INFO] [stacks] infra image retention: gtstef/filebrowser — pass over 2 image(s), pinned 1.5.8-stable, previous "1.5.6-stable", 0 candidate(s), 0 deleted, the rest kept
2026/11/09 12:17:39 [INFO] [stacks] infra image retention: gitea.dooplex.hu/admin/felhom-samba — pass over 1 image(s), pinned 1.2.0, previous "1.1.0", 0 candidate(s), 0 deleted, the rest kept
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 24 10 7.612GB 3.129GB (41%)
=== tester-1 walk
controller: gitea.dooplex.hu/admin/felhom-controller:0.351.0 Up 3 minutes (healthy)
traefik: traefik:v3.7.17 sha256:a72cb2f4a2109f1ae52261c86d56b7d33a27dc5c4e211ce3c7835b772338b94f running version 3.7.17
traefik repo digest: traefik@sha256:68ae5fe5b64ca166704b746a9e8afcd385e36b3f569a5691401bf652d57b3748
containers: 10 total
not running/unhealthy: none
refusals since 2026-11-09T12:14:27Z: 0
ERROR lines since: 0
login page: 200
file manager: 200
route paste.enkicsifelhom.hu [privatebin]: 200
route paperless.enkicsifelhom.hu [paperless-webserver]: 302
route wiki.enkicsifelhom.hu [bookstack]: 302
=== demo-hp retention
2026/11/09 12:17:40 controller_image_retention.go:200: [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.349.0 (3ef3c22d7694, 348MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:17:40 controller_image_retention.go:131: [INFO] [stacks] controller image retention: pass over 3 controller image(s) — running 0.351.0, previous "0.350.0" (the self-update's record), 1 candidate(s), 1 deleted, the rest kept
2026/11/09 12:17:40 infra_image_retention.go:94: [INFO] [stacks] infra image retention: traefik — pass over 2 image(s), pinned v3.7.17, previous "3.7.16", 0 candidate(s), 0 deleted, the rest kept
2026/11/09 12:17:40 infra_image_retention.go:94: [INFO] [stacks] infra image retention: cloudflare/cloudflared — pass over 2 image(s), pinned 2026.10.4, previous "2026.10.3", 0 candidate(s), 0 deleted, the rest kept
2026/11/09 12:17:40 infra_image_retention.go:94: [INFO] [stacks] infra image retention: gtstef/filebrowser — pass over 2 image(s), pinned 1.5.8-stable, previous "1.5.6-stable", 0 candidate(s), 0 deleted, the rest kept
2026/11/09 12:17:40 infra_image_retention.go:94: [INFO] [stacks] infra image retention: gitea.dooplex.hu/admin/felhom-samba — pass over 1 image(s), pinned 1.2.0, previous "", 0 candidate(s), 0 deleted, the rest kept
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 43 23 24.15GB 10.38GB (42%)
=== demo-hp walk
controller: gitea.dooplex.hu/admin/felhom-controller:0.351.0 Up 3 minutes (healthy)
traefik: traefik:v3.7.17 sha256:a72cb2f4a2109f1ae52261c86d56b7d33a27dc5c4e211ce3c7835b772338b94f running version 3.7.17
traefik repo digest: traefik@sha256:68ae5fe5b64ca166704b746a9e8afcd385e36b3f569a5691401bf652d57b3748
containers: 26 total
not running/unhealthy: none
refusals since 2026-11-09T12:14:27Z: 0
ERROR lines since: 0
login page: 200
file manager: 200
route arcade.enkisfelhom.hu [romm]: 401
route paste.enkisfelhom.hu [privatebin]: 200
route plex.enkisfelhom.hu [plex]: 401
route papir.enkisfelhom.hu [paperless-webserver]: 302
route gist.enkisfelhom.hu [opengist]: 302
route time.enkisfelhom.hu [kimai]: 302
route ha.enkisfelhom.hu [home-assistant]: 200
route docs.enkisfelhom.hu [docmost]: 200
route books.enkisfelhom.hu [calibre-web]: 302
route wiki.enkisfelhom.hu [bookstack]: 302
route pdf.enkisfelhom.hu [bentopdf]: 200
route travel.enkisfelhom.hu [adventurelog]: 200
route travel.enkisfelhom.hu [adventurelog-frontend]: 200
=== demo-felhom retention
2026/11/09 12:17:05 [INFO] [stacks] controller image retention: deleted gitea.dooplex.hu/admin/felhom-controller:0.349.0 (3ef3c22d7694, 348MB) — older than the previous controller and no container uses it (decision 56)
2026/11/09 12:17:05 [INFO] [stacks] controller image retention: pass over 3 controller image(s) — running 0.351.0, previous "0.350.0" (the self-update's record), 1 candidate(s), 1 deleted, the rest kept
2026/11/09 12:17:05 [INFO] [stacks] infra image retention: deleted traefik:v3.6.7 (91528df1690f, 186MB) — older than the previous pin and no container uses it (decision 285)
2026/11/09 12:17:05 [INFO] [stacks] infra image retention: deleted traefik:v3.7.13 (f9309349d2c1, 195MB) — older than the previous pin and no container uses it (decision 285)
2026/11/09 12:17:05 [INFO] [stacks] infra image retention: traefik — pass over 4 image(s), pinned v3.7.17, previous "3.7.16", 2 candidate(s), 2 deleted, the rest kept
2026/11/09 12:17:05 [INFO] [stacks] infra image retention: deleted cloudflare/cloudflared:2026.6.0 (7965361006df, 63.3MB) — older than the previous pin and no container uses it (decision 285)
2026/11/09 12:17:05 [INFO] [stacks] infra image retention: deleted cloudflare/cloudflared:2026.9.3 (87f0e97329b3, 64.3MB) — older than the previous pin and no container uses it (decision 285)
2026/11/09 12:17:05 [INFO] [stacks] infra image retention: cloudflare/cloudflared — pass over 4 image(s), pinned 2026.10.4, previous "2026.10.3", 2 candidate(s), 2 deleted, the rest kept
2026/11/09 12:17:05 [INFO] [stacks] infra image retention: deleted gtstef/filebrowser:1.3.3-stable (095fd20d87be, 215MB) — older than the previous pin and no container uses it (decision 285)
2026/11/09 12:17:05 [INFO] [stacks] infra image retention: gtstef/filebrowser — pass over 3 image(s), pinned 1.5.8-stable, previous "1.5.6-stable", 1 candidate(s), 1 deleted, the rest kept
2026/11/09 12:17:05 [INFO] [stacks] infra image retention: gitea.dooplex.hu/admin/felhom-samba — pass over 1 image(s), pinned 1.2.0, previous "1.1.0", 0 candidate(s), 0 deleted, the rest kept
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 16 9 2.183GB 555.2MB (25%)
=== demo-felhom walk
controller: gitea.dooplex.hu/admin/felhom-controller:0.351.0 Up 3 minutes (healthy)
traefik: traefik:v3.7.17 sha256:a72cb2f4a2109f1ae52261c86d56b7d33a27dc5c4e211ce3c7835b772338b94f running version 3.7.17
traefik repo digest: traefik@sha256:68ae5fe5b64ca166704b746a9e8afcd385e36b3f569a5691401bf652d57b3748
containers: 9 total
not running/unhealthy: none
refusals since 2026-11-09T12:14:27Z: 0
ERROR lines since: 0
login page: 200
file manager: 200
route sonarr.demo-felhom.eu [sonarr]: 401
route radarr.demo-felhom.eu [radarr]: 401
route torrent.demo-felhom.eu [qbittorrent]: 200
route prowlarr.demo-felhom.eu [prowlarr]: 401
route gist.demo-felhom.eu [opengist]: 302
+24
View File
@@ -0,0 +1,24 @@
#!/usr/bin/env bash
# walk_release.sh <ssh-host> <vmid> <domain> <since RFC3339> — the release box walk, read-only, from inside the guest:
# the controller's image and health; Traefik's image and digest; every container up and not unhealthy; the controller log since
# the switch (refusals, errors); the dashboard login page and the file manager through the box's own proxy (GET only);
# every app route the box serves, through Traefik with its own Host (the public name is asked apart, from outside).
H=$1; V=$2; D=$3; SINCE=$4
ssh -o BatchMode=yes -o ConnectTimeout=15 "$H" "pct exec $V -- bash -s" <<EOF
echo "controller: \$(docker ps --filter name=^/felhom-controller\$ --format '{{.Image}} {{.Status}}')"
echo "traefik: \$(docker inspect traefik --format '{{.Config.Image}} {{.Image}} {{.State.Status}}') version \$(docker exec traefik traefik version | head -1 | awk '{print \$2}')"
echo "traefik repo digest: \$(docker image inspect \$(docker inspect traefik --format '{{.Image}}') --format '{{join .RepoDigests " "}}')"
echo "containers: \$(docker ps -a --format '{{.Names}}|{{.Status}}' | wc -l) total"
bad=\$(docker ps -a --format '{{.Names}}|{{.Status}}' | grep -E 'unhealthy|Restarting|Exited|Dead|Created' || true)
echo "not running/unhealthy: \${bad:-none}"
echo "refusals since \$(echo $SINCE): \$(docker logs --since $SINCE felhom-controller 2>&1 | grep -ciE 'REFUSED a catalog definition|app_definition_refused|definition refused')"
echo "ERROR lines since: \$(docker logs --since $SINCE felhom-controller 2>&1 | grep -c '\[ERROR\]')"
docker logs --since $SINCE felhom-controller 2>&1 | grep '\[ERROR\]' | cut -c1-220 | tail -5
echo "login page: \$(curl -sk -o /dev/null -w '%{http_code}' -H 'Host: felhom.$D' https://127.0.0.1/login)"
echo "file manager: \$(curl -sk -o /dev/null -w '%{http_code}' -H 'Host: files.$D' https://127.0.0.1/)"
for c in \$(docker ps --format '{{.Names}}'); do
docker inspect \$c --format '{{json .Config.Labels}}' | grep -o 'Host(\`[^\`]*\`)' | sed 's/Host(\`//; s/\`)//' | sort -u | while read -r h; do
echo "route \$h [\$c]: \$(curl -sk -m 20 -o /dev/null -w '%{http_code}' -H "Host: \$h" https://127.0.0.1/)"
done
done
EOF