From 4502af6bb10942e5f70d35daa9a4ad418f4a44c1 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Thu, 24 Sep 2026 14:21:14 +0200 Subject: [PATCH] night 2026-09-24: chaos rounds 1-8 evidence; 07/08/09/capability map for decisions 26-28 + digests; R-681 Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS --- .../architecture/00-capability-map.md | 5 + .../architecture/07-backup-architecture.md | 4 +- documentation/architecture/08-alarm-ladder.md | 23 +- .../architecture/09-update-architecture.md | 2 +- .../audits/night-2026-09-24/E/00-setup.log | 11 + .../audits/night-2026-09-24/E/arm-01.json | 1 + .../audits/night-2026-09-24/E/arm-02.json | 1 + .../audits/night-2026-09-24/E/arm-03.json | 1 + .../audits/night-2026-09-24/E/arm-04.json | 1 + .../audits/night-2026-09-24/E/arm-08.json | 1 + .../night-2026-09-24/E/chaos-state.json | 43 + .../audits/night-2026-09-24/E/done-01.json | 1 + .../audits/night-2026-09-24/E/done-02.json | 1 + .../audits/night-2026-09-24/E/done-03.json | 1 + .../audits/night-2026-09-24/E/done-04.json | 1 + .../audits/night-2026-09-24/E/done-08.json | 1 + ...und-01-attempt0-template-not-synced.stdout | 3 + .../E/round-01-controller.log | 554 +++++ .../audits/night-2026-09-24/E/round-01.json | 106 + .../audits/night-2026-09-24/E/round-01.log | 11 + .../audits/night-2026-09-24/E/round-01.stdout | 12 + .../E/round-02-controller.log | 2151 +++++++++++++++++ .../audits/night-2026-09-24/E/round-02.json | 44 + .../audits/night-2026-09-24/E/round-02.stdout | 7 + .../E/round-02b-reinstall.log | 7 + .../E/round-03-controller.log | 1097 +++++++++ .../audits/night-2026-09-24/E/round-03.json | 258 ++ .../audits/night-2026-09-24/E/round-03.log | 25 + .../audits/night-2026-09-24/E/round-03.stdout | 26 + .../E/round-04-controller-pre.log | 512 ++++ .../E/round-04-controller.log | 1493 ++++++++++++ .../audits/night-2026-09-24/E/round-04.json | 196 ++ .../audits/night-2026-09-24/E/round-04.log | 17 + .../audits/night-2026-09-24/E/round-04.stdout | 18 + .../E/round-05-controller.log | 127 + .../audits/night-2026-09-24/E/round-05.json | 76 + .../audits/night-2026-09-24/E/round-05.log | 3 + .../audits/night-2026-09-24/E/round-05.stdout | 4 + .../E/round-06-controller.log | 1174 +++++++++ .../audits/night-2026-09-24/E/round-06.json | 195 ++ .../audits/night-2026-09-24/E/round-06.log | 16 + .../audits/night-2026-09-24/E/round-06.stdout | 17 + .../E/round-07-controller.log | 622 +++++ .../audits/night-2026-09-24/E/round-07.json | 121 + .../audits/night-2026-09-24/E/round-07.log | 10 + .../audits/night-2026-09-24/E/round-07.stdout | 11 + .../E/round-08-controller.log | 465 ++++ .../audits/night-2026-09-24/E/round-08.json | 88 + .../audits/night-2026-09-24/E/round-08.log | 9 + .../audits/night-2026-09-24/E/round-08.stdout | 10 + .../audits/night-2026-09-24/PROGRESS.md | 3 + .../audits/night-2026-09-24/tools/chaos.py | 42 +- .../night-2026-09-24/tools/reinstall_n8n.py | 27 + documentation/backlog/OPEN-ITEMS.md | 1 + 54 files changed, 9647 insertions(+), 9 deletions(-) create mode 100644 documentation/audits/night-2026-09-24/E/00-setup.log create mode 100644 documentation/audits/night-2026-09-24/E/arm-01.json create mode 100644 documentation/audits/night-2026-09-24/E/arm-02.json create mode 100644 documentation/audits/night-2026-09-24/E/arm-03.json create mode 100644 documentation/audits/night-2026-09-24/E/arm-04.json create mode 100644 documentation/audits/night-2026-09-24/E/arm-08.json create mode 100644 documentation/audits/night-2026-09-24/E/chaos-state.json create mode 100644 documentation/audits/night-2026-09-24/E/done-01.json create mode 100644 documentation/audits/night-2026-09-24/E/done-02.json create mode 100644 documentation/audits/night-2026-09-24/E/done-03.json create mode 100644 documentation/audits/night-2026-09-24/E/done-04.json create mode 100644 documentation/audits/night-2026-09-24/E/done-08.json create mode 100644 documentation/audits/night-2026-09-24/E/round-01-attempt0-template-not-synced.stdout create mode 100644 documentation/audits/night-2026-09-24/E/round-01-controller.log create mode 100644 documentation/audits/night-2026-09-24/E/round-01.json create mode 100644 documentation/audits/night-2026-09-24/E/round-01.log create mode 100644 documentation/audits/night-2026-09-24/E/round-01.stdout create mode 100644 documentation/audits/night-2026-09-24/E/round-02-controller.log create mode 100644 documentation/audits/night-2026-09-24/E/round-02.json create mode 100644 documentation/audits/night-2026-09-24/E/round-02.stdout create mode 100644 documentation/audits/night-2026-09-24/E/round-02b-reinstall.log create mode 100644 documentation/audits/night-2026-09-24/E/round-03-controller.log create mode 100644 documentation/audits/night-2026-09-24/E/round-03.json create mode 100644 documentation/audits/night-2026-09-24/E/round-03.log create mode 100644 documentation/audits/night-2026-09-24/E/round-03.stdout create mode 100644 documentation/audits/night-2026-09-24/E/round-04-controller-pre.log create mode 100644 documentation/audits/night-2026-09-24/E/round-04-controller.log create mode 100644 documentation/audits/night-2026-09-24/E/round-04.json create mode 100644 documentation/audits/night-2026-09-24/E/round-04.log create mode 100644 documentation/audits/night-2026-09-24/E/round-04.stdout create mode 100644 documentation/audits/night-2026-09-24/E/round-05-controller.log create mode 100644 documentation/audits/night-2026-09-24/E/round-05.json create mode 100644 documentation/audits/night-2026-09-24/E/round-05.log create mode 100644 documentation/audits/night-2026-09-24/E/round-05.stdout create mode 100644 documentation/audits/night-2026-09-24/E/round-06-controller.log create mode 100644 documentation/audits/night-2026-09-24/E/round-06.json create mode 100644 documentation/audits/night-2026-09-24/E/round-06.log create mode 100644 documentation/audits/night-2026-09-24/E/round-06.stdout create mode 100644 documentation/audits/night-2026-09-24/E/round-07-controller.log create mode 100644 documentation/audits/night-2026-09-24/E/round-07.json create mode 100644 documentation/audits/night-2026-09-24/E/round-07.log create mode 100644 documentation/audits/night-2026-09-24/E/round-07.stdout create mode 100644 documentation/audits/night-2026-09-24/E/round-08-controller.log create mode 100644 documentation/audits/night-2026-09-24/E/round-08.json create mode 100644 documentation/audits/night-2026-09-24/E/round-08.log create mode 100644 documentation/audits/night-2026-09-24/E/round-08.stdout create mode 100644 documentation/audits/night-2026-09-24/tools/reinstall_n8n.py diff --git a/documentation/architecture/00-capability-map.md b/documentation/architecture/00-capability-map.md index d9e05706..bf547296 100644 --- a/documentation/architecture/00-capability-map.md +++ b/documentation/architecture/00-capability-map.md @@ -106,6 +106,11 @@ likewise silent. Evidence: `audits/DRILL-r361-2026-08-22/evidence/06-part3-decis | **A failed update is UNDONE by the box itself — the previous version back with its data from seconds before the update; the app is held only if that undo fails too** | controller **v0.263.2** (the undo), **v0.264.0** + hub **v0.120.0** (the mail) | **PROVEN-LIVE (2026-09-23)** | `audits/undo-live-2026-09-23/README.md` (+ `audits/undo-bakeoff-2026-09-23/` for the method). On scratch guest 9202, through the endpoints the UI invokes: docmost (PostgreSQL), romm (MariaDB) and vikunja (SQLite in a volume), each a real migrating edge failing a deliberately wrong probe, **undone in 30–52 s** with seeds written before the backup, after it and seconds before the press ALL read back through each app's front door, ledgers equal to before; page line in hu and en. Cut-off copy → HOLD (`untouched`), prefix in the box's language; power cut (`pct stop`) during `undoing` → resumed after boot and undone; a person's press after an undo → `done`; removal deletes kept copies. **NARROWED 2026-09-23 night (`audits/DRILL-night-2026-09-23.md` Part D):** a controller `kill -9` in `verifying` → resumed after restart → undone, seeds read back (round 9); a 1 GB memory hog and a whole-box backup during `verifying` did not disturb it (rounds 6, 8). **Two holes found:** after ANY restore the app's volumes lose their compose label and the undo copies NOTHING (R-658, P1); and a held FILE-LEG app is told to restore from a copy the restore then refuses, with no other route on a box without an off-site tier (R-659, P1). | Folder copy of NAMED volumes only (`09` §3 decision 19); bind folders never touched. **The household is told (2026-09-23, `audits/undo-fleet-2026-09-23/`):** on guest 9201 the household and the operator each received ONE mail per app per outcome — undone and held, in Hungarian (vikunja) and, after one language switch, in English (glance) — with the app named in the subject; `notification_log` rows 937–946 all `sent`. **Not built:** the automatic caller (part 7) — this protects the manual button today. Leftovers: R-647. | | **The catalog holds only TESTED steps — an image move without a proven test record (bench + box, digests the registry still serves) is refused at push time** | catalog `6db08a5` (`scripts/check-test-record*.py`, `ladder.py`, `upgrade-test.py --write-ladder`) | **PROVEN (2026-09-23 night)** | `audits/DRILL-night-2026-09-23.md` Part B/C | 16 decoy cases both ways + 3 red-proofs; the gate judged every one of the night's 12 published steps against the live registry and refused a wrong-digest control. 21 earlier moves backfilled from their records. | **Closed 2026-09-24 by the row below** (v0.268.0 reads the ladder). | | **A box behind climbs ONE tested step per press, each with its own definition** (`09` §3 decision 14) | controller **v0.268.0** (`stacks/ladder.go`) + catalog `5ed599c` (`steps/.yml`, gate rule 4) | **PROVEN-LIVE (2026-09-24)** | `audits/ladder-2026-09-24/partD/10-romm-two-steps.json` | romm 5.3.0/11.4 → 5.3.1/11.4 → 5.3.1/11.8 in two presses on 9202, seeded account read back after each; page count 2 → 1 → none; spike confirmed v0.267.0 jumped (`partD/00-spike.json`). 6 unit tests + red-proofs. | Nothing climbs by itself yet (part 7). A step has no `.felhom.yml` of its own (R-664). | +| **A file app comes back WHOLE from the second drive — its files by four rules (never delete, never overwrite a newer file, bring back what is missing, keep an older replaced file beside it), then its settings and database** (`09` §3 decision 26) | controller **v0.269.0** (`backup/tier2_whole.go`) | **PROVEN-LIVE (2026-09-24)** | `audits/night-2026-09-24/A1/21-readback.json`, `A1/30-held-then-whole.*`, `E/round-03.json` | nextcloud on 9202: 1 file brought back, the household's newer edit kept, 137 unchanged, 3/3 volumes + 1/1 database in 38 s; again from a hold that named the second drive, and again after a power cut mid-update (round 3). R-538's refusal of the unit-only restore stays. | +| **A crash-looping or out-of-memory app is STOPPED by the box, the household and operator are told, and Start gives one more try** (decision 28) | controller **v0.269.0**, hub **v0.123.0** | **PROVEN-LIVE (2026-09-24)** | `audits/night-2026-09-24/A3/21-gokapi-page-event.txt`, `A3/30-start-then-trip2.*`, `E/round-01/07/08.json` | gokapi stopped at 6 restarts in 10 min; Start lifted it, 9 fast restarts, stopped again with the support-informed sentence (hu + en); chaos hour: OOM storm stopped after a power cut (+185 s), a crash loop under a backup run (+116 s), a storm on a nearly full disk (+102 s). | +| **A held app whose page says support is informed can only be removed KEEPING its data** (decision 27) | controller **v0.269.0** | **PROVEN-LIVE (2026-09-24)** | `audits/night-2026-09-24/A2/10-held-no-copy-keep-data.*` | the dialog reads `keep_data_only`; Remove with data or backups → 409 in both languages; the app stayed installed. | +| **The box runs the exact TESTED image of a floating tag, and an installed app keeps its image until a guarded Update moves it** (`09` §6.4 part 6, box half) | controller **v0.269.1** (`stacks/digest.go`) | **PROVEN-LIVE (2026-09-24)** | `audits/night-2026-09-24/B/21-floating-tag-0.269.1.*`, `B/01-compose-accepts-digests.txt` | redis:7-alpine: a newer tested digest → the „Frissítés elérhető" badge, the sync left the running file alone (v0.269.0's sync did not — fixed), Update pulled exactly that digest. Compose accepts `tag@digest` for all 25 ladder apps (37 digests). | +| **Automatic updates at night — the update leg** (`09` §6.4 part 7) | — | **SPIKED, NOT BUILT (2026-09-24)** | `audits/night-2026-09-24/C/31-night.json`, `09` §6.4.2 | a caller pressing only the public Update climbed 3 apps (1–3 steps) and set aside a failing one in 7 min 18 s; three gaps filed (R-678, R-679, R-680). | | **What `restart` and `update` do to a deployed app whose compose file the catalog already moved** | controller **v0.235.0** | **CHANGED 2026-09-06 — they NO LONGER upgrade it.** The row below records what shipped; this text records what it replaced, because every box under v0.235.0 still behaves the old way. **Up to v0.234.0: PROVEN-LIVE (2026-09-01) — they UPGRADE it.** Every lifecycle action ends in `docker compose up -d`, which makes the container match the file and PULLS the image itself when it is missing (measured: 18.3 s with a pull, 0.5 s without; negative control with an unchanged file did not even recreate the container). This is DELIBERATE on the restart path — `Manager.RestartStack` says so in a comment — but the syncer moves the file under a deployed app on a 15-minute cycle with no deployed check (R-438), and NOTHING tells the customer. | `audits/SPIKE-app-update-2026-09-01.md` §2, §3 | **No safety copy is taken by any of them** — `writeSafetyDump` is DATABASE-ONLY and is not on the update path at all. R-438, R-440, R-443. | | **Whether the box UPGRADES an app by itself, with nobody pressing anything** | controller | **PROVEN-LIVE (2026-09-01) — YES, but only when an app fails to come back.** A plain power cut does NOT upgrade: Docker's `restart: unless-stopped` restores the old containers and the reconciler logs `no boot-orphaned apps (nothing to start)`. When an app does NOT return, `Reconciler.Run` (`bootrecon.go:269`) calls `StartStack` -> `compose up -d` and the app comes back on the NEW version, unattended (measured). **13 non-API call sites across 9 files reach `up -d` this way** — not the five previously believed. | `audits/SPIKE-app-update-2026-09-01.md` §2, §8 | The drive-return gate (`intermediary.go:222`) and `AppStopGuard.Recover` (`appstop_marker.go:283`) call the same function; located by reading, **not exercised live** — stated as such. | | **Whether an app UPGRADE can be undone** | controller + catalog | **PROVEN-LIVE (2026-09-01) — NO, and "rollback" is the wrong word for it.** Once a migration has RUN, putting the old image tag back yields a container that refuses to start: Nextcloud — *"the version of the data (32.0.9.2) is higher than the docker image version (31.0.14.1) and downgrading is not supported"*. A 3-major jump is refused outright (*"only possible to upgrade one major version at a time"*) and IS recoverable, precisely because nothing migrated. Positive control: the data is not destroyed — returning to 32.0.9 restored both seeded markers byte-identical. | `audits/SPIKE-app-update-2026-09-01.md` §7 | The only route back is restoring DATA from a copy taken BEFORE the update — which no update path takes. And a restore's image-level rollback is itself overwritten by the syncer within 15 minutes (R-441). R-40 is confirmed live by the same measurement. | diff --git a/documentation/architecture/07-backup-architecture.md b/documentation/architecture/07-backup-architecture.md index c93a0ae4..a7e0fd02 100644 --- a/documentation/architecture/07-backup-architecture.md +++ b/documentation/architecture/07-backup-architecture.md @@ -307,13 +307,13 @@ the unit, the Tier-2 mirror AND the Tier-2 record, so „Teljes visszaállítás (R-486); „Mentési adatok törlése" deletes the unit, every mirror and the app's backup preferences, and never touches off-site snapshots (R-474). A removed app whose unit was kept is listed on both local backup pages with its restore since controller v0.242.0 (R-487): **the local lists are keyed on the drives, not on what is deployed** — the rule R-237 set for the off-site list — and the restore opens the unit where it sits, a data drive included. **For a bind-data app the update's tier order is second drive → off-site → own unit (R-479, v0.241.0), because the unit does not hold the files.** -**[FACT, measured from source 2026-09-24, controller v0.267.0/v0.268.0] Which copy brings an app back WHOLE +**[FACT, measured from source 2026-09-24, controller v0.267.0/v0.268.0; the second-drive cell for file apps changed by v0.269.0] Which copy brings an app back WHOLE — read from the restores' own refusals, not from what the tier stores** (`09` §3 decision 25, R-659): | app | own unit (Tier 1) | second drive (Tier 2) | off-site (Tier 3) | |---|---|---|---| | no declared drive files (class B, 45 apps) | whole — the unit restore | whole — „Teljes visszaállítás" (the unit restore) | whole — the full restore | -| declared drive files (`DeclaredDriveFileLegs`: calibre-web, immich, nextcloud, paperless-ngx) | **not** — refused (R-538) | **not** — its unit restore is refused by the same guard; the file restore only ADDS missing files (R-661) | whole — „Teljes visszaállítás (fájlok + adatbázis)" | +| declared drive files (`DeclaredDriveFileLegs`: calibre-web, immich, nextcloud, paperless-ngx) | **not** — refused (R-538) | **whole since controller v0.269.0** — „Teljes visszaállítás" runs `RestoreTier2Whole`: the mirror's files by four rules (never delete a file; never write an older file over a newer one; bring back every missing one; an older, different live file is replaced and KEPT beside as `.felhom-`), then the unit from the mirror (decision 26, R-661; proven live 2026-09-24, `audits/night-2026-09-24/A1/`). Needs a proven, openable mirror WITH the file legs and 2 GB free; `rsyncMirror` (`--delete`) is never used for it. The unit-only restore is still refused (R-538). | whole — „Teljes visszaállítás (fájlok + adatbázis)" | `backup.WholeOnTier` is this table; `TestR659_TruthTableAgreesWithTheRestoresRefusal` pins that it cannot drift from the refusal. An app with only OPTIONAL legs (audiobookshelf, komga, romm) is class-B here: its files are diff --git a/documentation/architecture/08-alarm-ladder.md b/documentation/architecture/08-alarm-ladder.md index 06e55367..444796c3 100644 --- a/documentation/architecture/08-alarm-ladder.md +++ b/documentation/architecture/08-alarm-ladder.md @@ -80,7 +80,7 @@ is allowed; every down member then reads as supervised. | `stopped`, `exited` | **yes** | not running, will not recover alone | | `degraded` | **yes** | [DESIGN, R-51] a dead supervised member is as unreachable as a single app that exited — immich-server sat Exited 18 h with the app 100 % dead and no alert | | `unhealthy` | **NO** | [DESIGN] a running container whose healthcheck is failing. Folding it in reintroduces the flapping fix-3 was written to stop. **R-384 did not change this** — it asks a prior question instead | -| `restarting` | **NO**, until sustained | [DESIGN, C9-F2] `restarting` is on the normal deploy path, so folding it in would alarm fleet-wide on every update. Becomes down after **5 min** (`crashLoopAfter`) of UNINTERRUPTED `restarting` — **measured 2026-09-24: a container that reads `running` for a moment between restarts resets the clock and never gets there (gokapi, 385 restarts, „0 currently down"; R-667)** | +| `restarting` | **NO**, until sustained | [DESIGN, C9-F2] `restarting` is on the normal deploy path, so folding it in would alarm fleet-wide on every update. Becomes down after **5 min** (`crashLoopAfter`) of UNINTERRUPTED `restarting` — **measured 2026-09-24: a container that reads `running` for a moment between restarts resets the clock and never gets there (gokapi, 385 restarts, „0 currently down"; R-667)** **Since controller v0.269.0 the box counts `RestartCount` instead and STOPS the app (§6.2, decision 28).** | | `starting`, `deploying` | no | mid-start | | `paused` | no | a deliberate user action | | `unknown` | no | [DESIGN] fail-OPEN — never manufacture a dead-app alert from an inconclusive read | @@ -228,6 +228,27 @@ reached 21 kills 2.5 min after start and sent ONE storm; at 49 kills still one. the app still reads `running` and `IsDownState` is unchanged (§4). **Limit:** a container whose `OOMKilled` flag stays false in an LXC guest (R-528) is never read, so it never storms. +**The box STOPS a crash loop or an out-of-memory storm (decision 28 of `09` §3, R-667, controller v0.269.0 / +hub v0.123.0, 2026-09-24).** Alarming was not enough: gokapi crash-looped for hours at 385 → 546 restarts +while the ladder said „0 currently down" (the `restarting` clock resets, §4). Now, besides the alarms above: + +| rule | threshold | what the box does | event | +|---|---|---|---| +| crash loop | **≥ 6 restarts within 10 min**, from Docker's `RestartCount` summed per app, sampled every scan (a drop = the container was recreated → the window starts again) | stops the app, records an `unhealthy_stop` hold (the same store as every hold, so no start path revives it), the page says so with a Start button | `app_stopped_unhealthy`, **warning**, **the household AND the operator** (default on, seeded add-only) | +| out-of-memory storm | the `app_oom_storm` rule above (≥ 20 kernel kills within 30 min) | the same stop and hold | `app_oom_storm` (operator) + `app_stopped_unhealthy` | +| Start pressed | — | lifts the hold: **one more try** | — | +| stopped again within 24 h | — | stops it again; the sentence now says Felhom support is informed | `app_stopped_unhealthy` (repeat wording) | + +**Why 6 in 10 minutes and not 10:** Docker's restart back-off caps a steady loop at about ONE restart a +minute (gokapi: 539 → 546 in 7 min), so 10 in 10 sits on the edge and misses a steady loop; a FRESH +container restarts fast (9 in 32 s after a Start, measured). No healthy app in any drill evidence (1,831 +harness samples, 40 live containers) restarted more than once on a first start; the one borderline shape +is immich's first-start import (12 restarts, 2026-09-17 — broken that night; R-676 watches it). +**Never judged:** an app that is deploying, updating, held, or stopped by a backup or a quiesce. +**Measured in the chaos hour (night 2026-09-24):** stopped at +185 s after a power cut mid-storm (the +counting starts again after the boot), +116 s for a crash loop under a backup run, +102 s for a storm with +the disk 1 GB above the floor. + **Two event types added 2026-09-17, with who receives them:** | event | severity | who | minted by | why that audience | diff --git a/documentation/architecture/09-update-architecture.md b/documentation/architecture/09-update-architecture.md index 1fb5f8c0..02b7cc4d 100644 --- a/documentation/architecture/09-update-architecture.md +++ b/documentation/architecture/09-update-architecture.md @@ -1114,7 +1114,7 @@ what the part can do to a household's data if it is wrong, not how likely that i | **3** | **SHIPPED — controller v0.264.0, proven live on 9202 2026-09-23.** **A disabled notifier says so** (R-620), so the mail of part 2 can be measured on a scratch box at all. | R-620 | **0.5** | — | none | | **4** | **SHIPPED — catalog `6db08a5`, night 2026-09-23** (`audits/DRILL-night-2026-09-23.md`): `update_ladder:` in `.felhom.yml`, one JSON entry per line (spiked on controller v0.266.0 and v0.267.0 first — the controller ignores the key); `check-test-record.py` (static, CI) + `check-test-record-move.py` (history + the registry for moved refs only, decision 23); the only writer `upgrade-test.py --write-ladder`; the 21 moves of 2026-09-22 backfilled from their records (21 proven). Not built: `steps/.yml` (part 5 needs it once an app has two steps); `CompareImageRefs` did NOT move to the gate — the gate asks for a proven test instead, which is decision 13's own test. **The test record + the catalog gate + the memory check.** The harness writes the ladder entry (below) from its verdict record, including the memory watch's peak and marks; the gate refuses an image move with no entry, an entry with a `failed` verdict, or one with no memory watch; `CompareImageRefs`' rule moves here as the push-time safety net. **Backfill:** one entry per current pin — the 21 proven moves from their records, every other pin `needs_person: "never tested"`, which is honest and keeps them manual. A version move re-checks `mem_limit` against the watch's peak (the RomM follow-up: gate, not checklist, because the watch now produces the number). | 13, R-635 follow-up | **2.5** | the memory watch (shipped 2026-09-23) | none on a box — catalog-side only | | **5** | **SHIPPED — controller v0.268.0 (`206b035`) + catalog `5ed599c`, proven live on 9202 2026-09-24** (`audits/ladder-2026-09-24/partD/`): romm 5.3.0/11.4 → 5.3.1/11.4 (its app step, from `steps/90dd9d68258286ef.yml`) → 5.3.1/11.8 (the engine step; `mariadb-upgrade` ran) in two presses, the seeded account read back after each, the page's „Hátralévő frissítési lépések" 2 → 1 → none. Step files: `templates//steps/.yml` (sha256 of `to` as canonical JSON, 16 hex; `stacks.StepKey` = `ladder.step_key`), refused absent or wrong by `check-test-record.py` rule 4, written by `--write-ladder` when a step is superseded, 8 backfilled from the NEWEST commit naming each step's images (romm's from `f4eb94f`, not the OOM-looping `15f9ebf`). The box reads them from its `--depth 1` clone (the whole tree is there — measured). One press = one step; a missing step file refuses before anything moves; an installed version matching no entry jumps, logged by name (measured live: vikunja 2.5.0). Limitation: a step has no `.felhom.yml` of its own (R-664). **The ladder on the box.** Read `update_ladder:` from the clone, find the installed step, apply ONE step with its OWN definition (`steps/.yml`, the last step the current template), repeat next night; a failed step stops the ladder for that app. `CatalogOrder` compares refs with the digest stripped (see part 7). | 14 | **2.5** | 1, 4 | medium — each step is the guarded update + undo; the new risk is rendering the wrong step's definition, pinned by a test per step shape | -| **6** | **CATALOG HALF SHIPPED — night 2026-09-23:** every ladder entry carries the digest per `to` ref (`scripts/image_digest.py`, stdlib; equals Docker's `RepoDigests` on a box), and the move gate refuses a digest the registry no longer serves. **The box half (compare, render `name:tag@sha256`) is not built.** **Digests.** The catalog records `sha256` per pin at push time (`check-image-resolvable.py` already resolves it); the box compares it for the badge and renders `name:tag@sha256:…` when present. **Measured 2026-09-23 on 9202:** Docker and Compose both pull and run `redis:7-alpine@sha256:858f…`, and refuse a digest that does not exist (`audits/update-rulings-2026-09-23/70-…`). **Build trap, read from source:** `splitImageRef` returns "unorderable" for ANY ref containing `@` (`updateorder.go:134`), so the digest must be split off before ordering or every digest-pinned app reads Unknown. A digest gone upstream fails the PULL — Scenario E, pin back, nothing ran. | 17, R-446 | **2** | 4 (the entry carries the digest) | low | +| **6** | **BOTH HALVES SHIPPED. BOX HALF — controller v0.269.0 + v0.269.1, proven live on 9202 2026-09-24** (`audits/night-2026-09-24/B/`): the compose that runs pins `tag@sha256` from the ladder entry that tested those refs; pins and records stay digest-free; the badge reads behind for a newer TESTED digest; **an installed app keeps its digest until a guarded Update moves it** (v0.269.0 let the sync move it — found live, fixed in v0.269.1, `CarryDigests`); Compose accepts the form for all 25 ladder apps. **CATALOG HALF SHIPPED — night 2026-09-23:** every ladder entry carries the digest per `to` ref (`scripts/image_digest.py`, stdlib; equals Docker's `RepoDigests` on a box), and the move gate refuses a digest the registry no longer serves. **The box half (compare, render `name:tag@sha256`) is not built.** **Digests.** The catalog records `sha256` per pin at push time (`check-image-resolvable.py` already resolves it); the box compares it for the badge and renders `name:tag@sha256:…` when present. **Measured 2026-09-23 on 9202:** Docker and Compose both pull and run `redis:7-alpine@sha256:858f…`, and refuse a digest that does not exist (`audits/update-rulings-2026-09-23/70-…`). **Build trap, read from source:** `splitImageRef` returns "unorderable" for ANY ref containing `@` (`updateorder.go:134`), so the digest must be split off before ordering or every digest-pinned app reads Unknown. A digest gone upstream fails the PULL — Scenario E, pin back, nothing ran. | 17, R-446 | **2** | 4 (the entry carries the digest) | low | | **7** | **SPIKED 2026-09-24 (night, Part C) — the measured build brief is §6.4.2 below.** **The update leg in the chain + the automatic caller + the switch.** A leg that starts when the off-site leg has ENDED (on every exit path, skips included), one app at a time, one step per press, `app_update.unattended` default ON (decision 12), `stacks.update_window` removed, reads `UpdateRefusal.Reason`, remembers a failed step so it never re-presses it, and the full-system backup's gate waits for it until W+5h (decision 20). | 11, 12, 14, 15, 20 | **3** | 1, 2, 5 | medium — the only part that acts with nobody watching; everything above is what makes it safe | | **8** | **SHIPPED — controller v0.265.0 + hub v0.121.0, proven live on 9202 2026-09-23** (`audits/cleanup-2026-09-23/`; a kernel `oom_kill` counter, not the sticky flag — `08` §6.2). **R-636** — the same OOM key re-firing escalates instead of staying one `warning` for six hours. | R-636 | **1** | — | none | | **9** | **SHIPPED — controller v0.265.0, proven live on 9202 2026-09-23** (badge „Megállítva — visszaállítás szükséges" / "Stopped — restore needed", no Update button, 409 `held` unchanged). **R-625** — a held app stops offering an Update it will refuse. With the undo, holds become rarer; the lie on the page does not go away by itself. | R-625 | **0.5** | 1 | none | diff --git a/documentation/audits/night-2026-09-24/E/00-setup.log b/documentation/audits/night-2026-09-24/E/00-setup.log new file mode 100644 index 00000000..1eaab9f5 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/00-setup.log @@ -0,0 +1,11 @@ +13:38:05 app never answered on c-wish/ (last rc=0 code=307) +13:38:06 wishlist: /signup http=200 type=success +13:38:06 seeded wishlist: True +13:38:06 navidrome: createAdmin http=200 +13:38:06 seeded navidrome: True +13:44:09 app never answered on c-wish/ (last rc=0 code=307) +13:44:09 wishlist: sign-in as the seeded user type=success ok=True (wrong password refused) +13:44:10 navidrome: login as the seeded user http=200 ok=True +13:44:18 nextcloud: readback of the seeded user found=True +13:44:19 nextcloud files read back: 2/2 (negative control http=404) +13:44:19 setup readback: {"wishlist": {"A": true}, "navidrome": {"A": true}, "nextcloud": {"A": true, "files": [{"felhom-seed-0-e19728.txt": true, "felhom-seed-2-8620d3.txt": true}, "404"]}} diff --git a/documentation/audits/night-2026-09-24/E/arm-01.json b/documentation/audits/night-2026-09-24/E/arm-01.json new file mode 100644 index 00000000..9513a5bd --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/arm-01.json @@ -0,0 +1 @@ +{"round": 1, "kind": "power_cut", "at": 1790250333.5386832, "why": "20 s after the install"} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/arm-02.json b/documentation/audits/night-2026-09-24/E/arm-02.json new file mode 100644 index 00000000..d45b7820 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/arm-02.json @@ -0,0 +1 @@ +{"round": 2, "kind": "docker_restart", "at": 1790250542.5067534, "why": "20 s after the install press"} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/arm-03.json b/documentation/audits/night-2026-09-24/E/arm-03.json new file mode 100644 index 00000000..4898d81d --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/arm-03.json @@ -0,0 +1 @@ +{"round": 3, "kind": "power_cut", "at": 1790251485.0719452, "why": "at verifying"} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/arm-04.json b/documentation/audits/night-2026-09-24/E/arm-04.json new file mode 100644 index 00000000..4fcce10e --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/arm-04.json @@ -0,0 +1 @@ +{"round": 4, "kind": "controller_killed", "at": 1790251757.7804189, "why": "at verifying"} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/arm-08.json b/documentation/audits/night-2026-09-24/E/arm-08.json new file mode 100644 index 00000000..67386c2b --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/arm-08.json @@ -0,0 +1 @@ +{"round": 8, "kind": "disk_to_floor_plus_1g", "at": 1790252236.2424479, "why": "20 s after the install"} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/chaos-state.json b/documentation/audits/night-2026-09-24/E/chaos-state.json new file mode 100644 index 00000000..c23bde7b --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/chaos-state.json @@ -0,0 +1,43 @@ +{ + "apps": { + "wishlist": { + "A": { + "u": "drill299dcd", + "pw": "Drill-59cfd7e5d859fcd1" + } + }, + "navidrome": { + "A": { + "user": "drill84ab65", + "pw": "Drill-305976efc5c354dedca6" + } + }, + "n8n": { + "A": { + "email": "drill-97a95a4e@gate.invalid", + "pw": "Drilldef711af0d342c2b1" + } + } + }, + "setup_readback": { + "wishlist": { + "A": true + }, + "navidrome": { + "A": true + }, + "nextcloud": { + "A": true, + "files": [ + { + "felhom-seed-0-e19728.txt": true, + "felhom-seed-2-8620d3.txt": true + }, + "404" + ] + } + }, + "heads": { + "n8n": "# n8n - Workflow automatizálás vizuális szerkesztővel\n# Domain: ${SUBDOMAIN}.${DOMAIN}\n# Database: None (file-based)\n# RAM: ~150M (mem_limit: 512M) | Pi-compatible: No\n#\n# Environment variables:\n# DOMAIN - Your domain (e.g., demo-felhom.eu)\n# N8N_ENCRYPTION_KEY- Titkosítási kulcs (auto-generated)\n\nservices:\n n8n:\n image: n8nio/n8n:2.41.1\n container_name: n8n\n restart: unless-stopped\n environment:\n - TZ=Europe/Budapest\n - N8N_HOST=${SUBDOMAIN}.${DOMAIN}\n - N8N_PROTOCOL=https\n - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN}/\n - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}\n volumes:\n - n8n_data:/home/node/.n8n\n networks:\n - traefik-public\n deploy:\n resources:\n limits:\n memory: 1536M\n healthcheck:\n test: [\"CMD\", \"wget\", \"--spider\", \"-q\", \"http://127.0.0.1:5678/healthz\"]\n interval: 30s\n timeout: 5s\n retries: 3\n start_period: 30s\n labels:\n - \"traefik.enable=true\"\n - \"traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN}`)\"\n - \"traefik.http.routers.n8n.entrypoints=websecure\"\n - \"traefik.http.routers.n8n.tls=true\"\n - \"traefik.http.routers.n8n.tls.certresolver=letsencrypt\"\n - \"traefik.http.services.n8n.loadbalancer.server.port=5678\"\n\nvolumes:\n n8n_data:\n\nnetworks:\n traefik-public:\n external: true\n" + } +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/done-01.json b/documentation/audits/night-2026-09-24/E/done-01.json new file mode 100644 index 00000000..db3b750e --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/done-01.json @@ -0,0 +1 @@ +{"kind": "power_cut", "cmd": "pct stop 9202; pct start 9202", "fired_at": "13:45:41", "result": "stop_rc=0 start_rc=0 "} diff --git a/documentation/audits/night-2026-09-24/E/done-02.json b/documentation/audits/night-2026-09-24/E/done-02.json new file mode 100644 index 00000000..b3cbf981 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/done-02.json @@ -0,0 +1 @@ +{"kind": "docker_restart", "cmd": "pct exec 9202 -- systemctl restart docker", "fired_at": "13:49:08", "result": "rc=0"} diff --git a/documentation/audits/night-2026-09-24/E/done-03.json b/documentation/audits/night-2026-09-24/E/done-03.json new file mode 100644 index 00000000..3aff80fc --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/done-03.json @@ -0,0 +1 @@ +{"kind": "power_cut", "cmd": "pct stop 9202; pct start 9202", "fired_at": "14:04:51", "result": "stop_rc=0 start_rc=0 "} diff --git a/documentation/audits/night-2026-09-24/E/done-04.json b/documentation/audits/night-2026-09-24/E/done-04.json new file mode 100644 index 00000000..37571b9e --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/done-04.json @@ -0,0 +1 @@ +{"kind": "controller_killed", "cmd": "kill -9 of the controller PID (1 of max 3)", "fired_at": "14:09:22", "result": "killed pid 2474 rc=0"} diff --git a/documentation/audits/night-2026-09-24/E/done-08.json b/documentation/audits/night-2026-09-24/E/done-08.json new file mode 100644 index 00000000..9cd7340c --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/done-08.json @@ -0,0 +1 @@ +{"kind": "disk_to_floor_plus_1g", "cmd": "fallocate /var/lib/docker/chaos-fill leaving 3 GB free (floor 2 GB + 1 GB)", "fired_at": "14:17:25", "result": "rc=0 filled 39025688576 bytes /dev/loop1 69G 62G 3.0G 96% /var/lib/docker ", "undone": "14:19 rm -f /var/lib/docker/chaos-fill -> /dev/loop1 69G 26G 40G 40% /var/lib/docker"} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/round-01-attempt0-template-not-synced.stdout b/documentation/audits/night-2026-09-24/E/round-01-attempt0-template-not-synced.stdout new file mode 100644 index 00000000..57e5ae0f --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-01-attempt0-template-not-synced.stdout @@ -0,0 +1,3 @@ +13:44:27 ==== ROUND 1: oom_app on chaosoom x power_cut (2026-09-24T11:44:27Z) +13:44:27 + 0.1s chaosoom: deployed=None state=None updating=None phase=None hold=None +13:44:47 >>> ARMED accident power_cut (20 s after the install) diff --git a/documentation/audits/night-2026-09-24/E/round-01-controller.log b/documentation/audits/night-2026-09-24/E/round-01-controller.log new file mode 100644 index 00000000..1723f35c --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-01-controller.log @@ -0,0 +1,554 @@ +2026/09/24 11:45:59 main.go:335: [INFO] felhom-controller 0.269.1 starting (customer: demo-hp, domain: enkisfelhom.hu) +2026/09/24 11:45:59 settings.go:709: [INFO] [settings] Loaded settings from /opt/docker/felhom-controller/data/settings.json +2026/09/24 11:45:59 settings.go:1671: [DEBUG] [settings] AutoDiscoverStoragePaths discovered=[/mnt/felhom-drives/scratch_hdd/userdata/navidrome /mnt/felhom-drives/scratch_hdd/userdata/nextcloud /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx /mnt/felhom-drives/scratch_hdd/userdata/romm] fallback="" existing=5 +2026/09/24 11:45:59 main.go:361: [INFO] Encryption key loaded from /opt/docker/felhom-controller/data/encryption.key +2026/09/24 11:46:00 manager.go:328: [INFO] [stacks] Using compose command: docker compose +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 11:46:00 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 11:46:00 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 11:46:00 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 11:46:00 deploy.go:1104: [DEBUG] [stacks] InjectMissingFields: checking 9 stacks +2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack wishlist — 2 deploy fields, 2 existing env vars +2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack privatebin — 2 deploy fields, 2 existing env vars +2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack paperless-ngx — 8 deploy fields, 8 existing env vars +2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack nextcloud — 7 deploy fields, 7 existing env vars +2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack romm — 6 deploy fields, 6 existing env vars +2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack navidrome — 3 deploy fields, 3 existing env vars +2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack gokapi — 3 deploy fields, 3 existing env vars +2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack chaosoom — 2 deploy fields, 2 existing env vars +2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack vikunja — 3 deploy fields, 3 existing env vars +2026/09/24 11:46:00 deploy.go:1189: [INFO] [stacks] InjectMissingFields: processed 9 stacks +2026/09/24 11:46:00 manager.go:467: [DEBUG] [stacks] MigrateEncryption: checking 9 deployed stacks for plaintext sensitive values +2026/09/24 11:46:00 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "paperless-ngx" (3 sensitive fields) +2026/09/24 11:46:00 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "nextcloud" (3 sensitive fields) +2026/09/24 11:46:00 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "romm" (3 sensitive fields) +2026/09/24 11:46:00 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "gokapi" (1 sensitive fields) +2026/09/24 11:46:00 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "vikunja" (1 sensitive fields) +2026/09/24 11:46:00 manager.go:511: [INFO] [stacks] Encryption migration: no stacks needed migration +2026/09/24 11:46:00 desiredstate.go:137: [INFO] [stacks] desired-state backfill: 0 app(s) recorded as running, 0 left unrecorded (state ambiguous — legacy boot behaviour retained) +2026/09/24 11:46:00 installed.go:537: [INFO] [stacks] installed-images backfill: 0 app(s) recorded, 9 already had a record, 0 left unrecorded (could not be observed completely — unknown, which renders nothing) +2026/09/24 11:46:00 pin.go:290: [INFO] [stacks] pin adoption: 0 pinned, 9 already pinned, 0 left unpinned (0 not completely observed, 0 running something the template no longer offers) +2026/09/24 11:46:00 undo.go:656: [INFO] [stacks] applied-meta backfill (R-646): recorded 0 []; skipped 0 [] — not current with the catalog, their pinned version's .felhom.yml is no longer on the box +2026/09/24 11:46:00 sync.go:117: [INFO] [sync] Starting catalog sync (repo: https://gitea.dooplex.hu/admin/app-catalog-drill.git, interval: 15m0s) +2026/09/24 11:46:00 info.go:13: [DEBUG] [system] CPUCollector.Start: sampleRate=5s +2026/09/24 11:46:00 sync.go:208: [INFO] [sync] Starting catalog sync +2026/09/24 11:46:00 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main) +2026/09/24 11:46:00 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache +2026/09/24 11:46:00 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main +2026/09/24 11:46:00 main.go:515: [INFO] Metrics store opened at /opt/docker/felhom-controller/data/metrics.db +2026/09/24 11:46:00 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:46:00 main.go:527: [INFO] Metrics collector started (60s interval) +2026/09/24 11:46:00 restore_record_wiring.go:35: [INFO] [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false) +2026/09/24 11:46:00 notifier.go:81: [INFO] Notifier disabled (hub not configured) +2026/09/24 11:46:00 main.go:692: [INFO] [mailrelay] app-email shim unavailable (no hub configured or disabled in config) +2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: status-refresh (every 10s) +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="status-refresh" interval=10s totalJobs=1 +2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: stack-scan (every 2m0s) +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="stack-scan" interval=2m0s totalJobs=2 +2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: health-probes (every 10s) +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="health-probes" interval=10s totalJobs=3 +2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: system-health (every 5m0s) +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="system-health" interval=5m0s totalJobs=4 +2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: deadapp-check (every 30s) +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="deadapp-check" interval=30s totalJobs=5 +2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: ring-spill (every 30s) +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="ring-spill" interval=30s totalJobs=6 +2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job db-dump scheduled for 2026-09-25 13:20 CEST +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="db-dump" schedule="13:20" nextRun=2026-09-25T13:20:00+02:00 totalJobs=7 +2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: offsite-credential-retry (every 5m0s) +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="offsite-credential-retry" interval=5m0s totalJobs=8 +2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: backup-cache (every 5m0s) +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="backup-cache" interval=5m0s totalJobs=9 +2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job tier2-backup scheduled for 2026-09-24 14:20 CEST +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="tier2-backup" schedule="14:20" nextRun=2026-09-24T14:20:00+02:00 totalJobs=10 +2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job offbox-backup scheduled for 2026-09-24 15:05 CEST +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offbox-backup" schedule="15:05" nextRun=2026-09-24T15:05:00+02:00 totalJobs=11 +2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job offsite-abandon-sweep scheduled for 2026-09-25 05:10 CEST +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-abandon-sweep" schedule="05:10" nextRun=2026-09-25T05:10:00+02:00 totalJobs=12 +2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job offsite-integrity scheduled for 2026-09-25 06:00 CEST +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-integrity" schedule="06:00" nextRun=2026-09-25T06:00:00+02:00 totalJobs=13 +2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job offsite-proof scheduled for 2026-09-25 05:30 CEST +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-proof" schedule="05:30" nextRun=2026-09-25T05:30:00+02:00 totalJobs=14 +2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job metrics-prune scheduled for 2026-09-25 04:00 CEST +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="metrics-prune" schedule="04:00" nextRun=2026-09-25T04:00:00+02:00 totalJobs=15 +2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job fill-watch scheduled for 2026-09-25 03:30 CEST +2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="fill-watch" schedule="03:30" nextRun=2026-09-25T03:30:00+02:00 totalJobs=16 +2026/09/24 11:46:00 selftest.go:50: [INFO] ========== Startup Self-Test ========== +2026/09/24 11:46:00 sync.go:212: [ERROR] [sync] Catalog sync failed: git fetch: git fetch --depth 1 origin main: exit status 128 +stderr: fatal: unable to access 'https://gitea.dooplex.hu/admin/app-catalog-drill.git/': Could not resolve host: gitea.dooplex.hu +2026/09/24 11:46:00 sync.go:122: [INFO] [sync] Initial sync: Git hiba: git fetch: git fetch --depth 1 origin main: exit status 128 +stderr: fatal: unable to access 'https://gitea.dooplex.hu/admin/app-catalog-drill.git/': Could not resolve host: gitea.dooplex.hu +2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] Docker socket: reachable (v29.8.0) +2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] Stacks directory: /opt/docker/stacks +2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] Data directory: /opt/docker/felhom-controller/data (writable) +2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] System data path: /mnt/sys_drive +2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] Storage paths: 1 connected, 4 disconnected +2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] Git catalog: 56 app definitions found +2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] Hub connectivity: hub disabled, skipped +2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] Metrics DB: 8.1 MB +2026/09/24 11:46:01 selftest.go:70: [INFO] ======================================== +2026/09/24 11:46:01 selftest.go:71: [INFO] Self-test complete: 8 passed, 0 warnings, 0 failed +2026/09/24 11:46:01 scheduler.go:206: [INFO] [scheduler] Starting scheduler with 16 jobs +2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] scheduler started: periodic=8 daily=8 +2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job db-dump: next run at 2026-09-25 13:20:00 CEST (waiting 23h33m59s) +2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-abandon-sweep: next run at 2026-09-25 05:10:00 CEST (waiting 15h23m59s) +2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job tier2-backup: next run at 2026-09-24 14:20:00 CEST (waiting 33m59s) +2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job offbox-backup: next run at 2026-09-24 15:05:00 CEST (waiting 1h18m59s) +2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-proof: next run at 2026-09-25 05:30:00 CEST (waiting 15h43m59s) +2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-integrity: next run at 2026-09-25 06:00:00 CEST (waiting 16h13m59s) +2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job metrics-prune: next run at 2026-09-25 04:00:00 CEST (waiting 14h13m59s) +2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job fill-watch: next run at 2026-09-25 03:30:00 CEST (waiting 13h43m59s) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4187MB avail≈21711MB +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25748124 → total=25898MB avail=21711MB used=4187MB (16.2%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.5GB avail=42.4GB (32.8%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readLoadAvg: raw="5.31 2.81 2.70 19/1482 125" → 1m=5.31 5m=2.81 15m=2.70 +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 80.8°C (hwmon2) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetInfo done in 421ms — mem=4187MB/25898MB (16.2%), rootDisk=22.5GB/68.4GB (32.8%), load=5.31/2.81/2.70, temp=80.8°C (hwmon2), cpu=0.0% +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:46:01 server.go:250: [DEBUG] [web] NewServer: initializing web server v0.269.1 +2026/09/24 11:46:01 server.go:251: [DEBUG] [web] NewServer: backup=true scheduler=true alertMgr=true notifier=true updater=false +2026/09/24 11:46:01 infra.go:228: [INFO] [infra] connected felhom-controller to traefik-public +2026/09/24 11:46:01 infra.go:67: [INFO] [infra] cloudflared skipped — no cf_tunnel_token configured (LAN-only node) +2026/09/24 11:46:01 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/navidrome → [navidrome] +2026/09/24 11:46:01 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/nextcloud → [nextcloud] +2026/09/24 11:46:01 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx → [paperless-ngx] +2026/09/24 11:46:01 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/romm → [romm] +2026/09/24 11:46:01 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/sys_drive → [gokapi, privatebin, vikunja, wishlist, chaosoom] +2026/09/24 11:46:01 backup.go:1119: [INFO] [backup] Found 9 DB dump files across drives +2026/09/24 11:46:01 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 11:46:01 server.go:327: [DEBUG] [web] loadTemplates: lang=hu loaded 81 templates, 1886 markers expanded in 117.796502ms +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4223MB avail≈21675MB +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25706264 → total=25898MB avail=21675MB used=4223MB (16.3%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.5GB avail=42.4GB (32.8%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readLoadAvg: raw="5.31 2.81 2.70 16/1476 174" → 1m=5.31 5m=2.81 15m=2.70 +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 80.9°C (hwmon2) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetInfo done in 260ms — mem=4223MB/25898MB (16.3%), rootDisk=22.5GB/68.4GB (32.8%), load=5.31/2.81/2.70, temp=80.9°C (hwmon2), cpu=0.0% +2026/09/24 11:46:01 healthcheck.go:86: [DEBUG] [monitor] Raw values: disk=32.8%, hdd=7.8% (configured=true), mem=16.3% (4223MB/25898MB), cpu=0.0%, temp=80.9°C (hwmon2) +2026/09/24 11:46:01 healthcheck.go:118: [DEBUG] [monitor] SSD disk: OK (33%) +2026/09/24 11:46:01 healthcheck.go:151: [DEBUG] [monitor] Memory: OK (16%) +2026/09/24 11:46:01 healthcheck.go:179: [WARN] [monitor] Temperature threshold breached: 81°C (limit: 75°C) +2026/09/24 11:46:01 healthcheck.go:182: [DEBUG] [monitor] Temperature: WARN (81°C >= 75°C) +2026/09/24 11:46:01 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 86ba63e28bd7 felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1 +557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0 +8ed284296786 romm-db romm mariadb:11.8 +0a82332f8e1c romm romm rommapp/romm:5.3.1 +9ec77cdb422a romm-redis romm redis:7-alpine +d9846695ae0d wishlist wishlist ghcr.io/cmintey/wishlist:v0.67.1 +8867e567d339 privatebin privatebin privatebin/pdo:2.0.6 +0732d8573acd paperless-webserver paperless-ngx ghcr.io/paperless-ngx/paperless-ngx:2.20.15 +3df88f0fdd1d paperless-redis pap... +2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 11:46:01 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786) +2026/09/24 11:46:01 server.go:327: [DEBUG] [web] loadTemplates: lang=en loaded 81 templates, 1886 markers expanded in 172.029097ms +2026/09/24 11:46:01 server.go:270: [INFO] [web] Auth: using password from settings.json +2026/09/24 11:46:01 server.go:814: [DEBUG] [web] CatchAllMiddleware: controller host=felhom.enkisfelhom.hu +2026/09/24 11:46:01 main.go:1950: [INFO] Web UI listening on :8080 +2026/09/24 11:46:01 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping userdata skeleton +2026/09/24 11:46:01 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx not mounted — skipping userdata skeleton +2026/09/24 11:46:01 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/romm not mounted — skipping userdata skeleton +2026/09/24 11:46:01 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/navidrome not mounted — skipping userdata skeleton +2026/09/24 11:46:01 manager.go:258: [DEBUG] [integrations] ReapplyConfigForTarget: target=filebrowser integrations=0 +2026/09/24 11:46:01 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database) +2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 11:46:01 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973) +2026/09/24 11:46:01 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 11:46:01 auth.go:123: [DEBUG] [web] auth: rejected GET /api/stacks/chaosoom from 172.18.0.6:51320 (invalid/expired session) +2026/09/24 11:46:01 auth.go:126: [WARN] [api] Unauthorized request to /api/stacks/chaosoom from 172.18.0.6:51320 +2026/09/24 11:46:01 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.6:51320 (X-Forwarded-For: 192.168.0.180) +2026/09/24 11:46:01 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database) +2026/09/24 11:46:01 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=9837f4d677cb) +2026/09/24 11:46:01 healthcheck.go:201: [DEBUG] [monitor] Docker daemon: OK +2026/09/24 11:46:01 healthcheck.go:209: [DEBUG] [monitor] Checking 1 protected containers: [traefik] +2026/09/24 11:46:01 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database) +2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database) +2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 11:46:01 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 13 non-DB container(s) +2026/09/24 11:46:01 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 2 HDD mounts for /opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:46:01 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:46:01 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T11:46:01Z, active_sessions=1 +2026/09/24 11:46:01 auth.go:222: [INFO] [web] Login from 172.18.0.6:51320 +2026/09/24 11:46:01 healthcheck.go:219: [DEBUG] [monitor] All protected containers running +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:46:01 healthcheck.go:238: [INFO] [monitor] Health check: status=warn +2026/09/24 11:46:01 healthcheck.go:242: [DEBUG] [monitor] Final status: warn (issues=0, warnings=5, info=3) +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:46:01 [INFO] [backup] Discovered app data: 9 apps +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:46:01 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.6:51320 +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:46:01 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.6:51320 +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.5 GB avail=42.4GB (32.8%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.5 GB avail=42.4GB (32.8%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.5 GB avail=42.4GB (32.8%) +2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.5 GB avail=42.4GB (32.8%) +2026/09/24 11:46:01 recovery_unit.go:224: [INFO] [backup] Recovery unit captured for chaosoom → /mnt/sys_drive/felhom-data/backups/primary/chaosoom (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0) +2026/09/24 11:46:01 backup.go:1189: [INFO] [backup] Backup status cache refreshed +2026/09/24 11:46:01 handlers.go:3432: [INFO] [web] FileBrowser sync — no config/compose change, ensured running without recreate (5 storage path(s)) +2026/09/24 11:46:05 info.go:13: [DEBUG] [system] CPUCollector: first sample — cpu=97.1% (idle=116 total=3976) +2026/09/24 11:46:06 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event controller_started (severity info) — further controller_started events are logged at DEBUG only +2026/09/24 11:46:10 main.go:2356: [DEBUG] [bootrecon] boot window: fleet still changing (9 app(s)) — resampling +2026/09/24 11:46:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:46:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:46:11 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 4 targets (0 skipped not due, 0 skipped no container) +2026/09/24 11:46:11 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused +2026/09/24 11:46:11 healthprobe.go:181: [DEBUG] Health probe privatebin: HTTP GET :8080/ → 200 (12ms) +2026/09/24 11:46:11 healthprobe.go:181: [DEBUG] Health probe navidrome: API GET :4533/ping → 200 (15ms) +2026/09/24 11:46:11 healthprobe.go:181: [DEBUG] Health probe nextcloud: API GET :80/status.php → 200 (67ms) +2026/09/24 11:46:11 healthprobe.go:159: [WARN] Health probes: 3 ok, 1 unhealthy (of 4 probed) +2026/09/24 11:46:15 main.go:2356: [DEBUG] [bootrecon] boot window: fleet still changing (9 app(s)) — resampling +2026/09/24 11:46:21 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:46:21 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:46:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:21 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 2 targets (3 skipped not due, 0 skipped no container) +2026/09/24 11:46:21 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused +2026/09/24 11:46:21 healthprobe.go:181: [DEBUG] Health probe wishlist: HTTP GET :3000/ → 307 (7ms) +2026/09/24 11:46:21 healthprobe.go:159: [WARN] Health probes: 1 ok, 1 unhealthy (of 2 probed) +2026/09/24 11:46:25 main.go:2367: [INFO] [bootrecon] boot window: fleet settled after 20s (3 identical samples 5s apart) — sweeping +2026/09/24 11:46:25 bootrecon.go:236: [INFO] [bootrecon] "gokapi" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T10:37:48Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery +2026/09/24 11:46:25 bootrecon.go:251: [INFO] [bootrecon] Boot reconciliation: nothing to start — 1 app(s) held (absent drive / quiesce / app-data operation): [gokapi] +2026/09/24 11:46:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:46:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:46:31 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:46:31 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:46:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:31 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (4 skipped not due, 0 skipped no container) +2026/09/24 11:46:31 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused +2026/09/24 11:46:31 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:46:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:46:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:46:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:41 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (5 skipped not due, 0 skipped no container) +2026/09/24 11:46:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:46:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:46:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:46:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:46:51 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 3 targets (4 skipped not due, 0 skipped no container) +2026/09/24 11:46:51 healthprobe.go:181: [DEBUG] Health probe romm: HTTP GET :8080/ → 200 (1ms) +2026/09/24 11:46:51 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused +2026/09/24 11:46:51 healthprobe.go:181: [DEBUG] Health probe paperless-ngx: HTTP GET :8000/ → 302 (6ms) +2026/09/24 11:46:51 healthprobe.go:159: [WARN] Health probes: 2 ok, 1 unhealthy (of 3 probed) +2026/09/24 11:47:00 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:47:00 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5236MB avail≈20662MB +2026/09/24 11:47:00 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24504156 → total=25898MB avail=20662MB used=5236MB (20.2%) +2026/09/24 11:47:00 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.5GB avail=42.4GB (32.8%) +2026/09/24 11:47:00 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:47:00 info.go:13: [DEBUG] [system] readLoadAvg: raw="6.18 3.55 2.97 8/1495 392" → 1m=6.18 5m=3.55 15m=2.97 +2026/09/24 11:47:00 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:47:00 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 76.9°C (hwmon2) +2026/09/24 11:47:00 info.go:13: [DEBUG] [system] GetInfo done in 74ms — mem=5236MB/25898MB (20.2%), rootDisk=22.5GB/68.4GB (32.8%), load=6.18/3.55/2.97, temp=76.9°C (hwmon2), cpu=53.9% +2026/09/24 11:47:01 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:47:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:47:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:47:01 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:47:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:47:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:01 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:47:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:47:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:47:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:11 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:47:11 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused +2026/09/24 11:47:11 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:47:21 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:47:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:21 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:47:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:21 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:47:21 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused +2026/09/24 11:47:21 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:47:30 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=22.5 GB avail=42.4GB (32.8%) +2026/09/24 11:47:30 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:47:30 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:47:30 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:47:30 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:47:30 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:47:30 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.5 GB avail=42.4GB (32.8%) +2026/09/24 11:47:30 fillwatch.go:256: [INFO] [fillwatch] checked 7 filesystem(s), 0 unreadable/skipped, 0 notification(s); bands: all ok +2026/09/24 11:47:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:47:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:47:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:47:31 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:47:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:31 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:47:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:31 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:47:31 main.go:872: [WARN] [deadapp] chaosoom: container chaosoom was OOM-killed (started 2026-09-24T11:47:10.100857309Z; kills 15, limit 32M, peak 32M) +2026/09/24 11:47:31 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_oom (severity warning) — further app_oom events are logged at DEBUG only +2026/09/24 11:47:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:47:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:47:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:41 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:47:41 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused +2026/09/24 11:47:41 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:47:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:47:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:47:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:47:51 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:47:51 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused +2026/09/24 11:47:51 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:48:00 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:48:00 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5188MB avail≈20710MB +2026/09/24 11:48:00 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24561624 → total=25898MB avail=20710MB used=5188MB (20.0%) +2026/09/24 11:48:00 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.5GB avail=42.4GB (32.8%) +2026/09/24 11:48:00 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:48:00 info.go:13: [DEBUG] [system] readLoadAvg: raw="4.01 3.41 2.95 4/1501 529" → 1m=4.01 5m=3.41 15m=2.95 +2026/09/24 11:48:00 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:48:00 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 69.5°C (hwmon2) +2026/09/24 11:48:00 info.go:13: [DEBUG] [system] GetInfo done in 61ms — mem=5188MB/25898MB (20.0%), rootDisk=22.5GB/68.4GB (32.8%), load=4.01/3.41/2.95, temp=69.5°C (hwmon2), cpu=32.9% +2026/09/24 11:48:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:48:01 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:48:01 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:48:01 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan +2026/09/24 11:48:01 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting +2026/09/24 11:48:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:48:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:01 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 11:48:01 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 11:48:01 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 11:48:01 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 11:48:01 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 11:48:01 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 91ms) +2026/09/24 11:48:01 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:48:01 main.go:872: [WARN] [deadapp] chaosoom: container chaosoom was OOM-killed (started 2026-09-24T11:47:10.100857309Z; kills 38, limit 32M, peak 32M) +2026/09/24 11:48:01 notifier.go:738: [ERROR] [notify] chaosoom: container chaosoom OOM STORM — 38 kills in 30 min (limit 32M, peak 32M) +2026/09/24 11:48:01 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_oom_storm (severity error) — further app_oom_storm events are logged at DEBUG only +2026/09/24 11:48:01 main.go:3671: [WARN] [deadapp] chaosoom: oom_storm — 23 in 30m0s; STOPPING it (decision 28) +2026/09/24 11:48:01 manager.go:1283: [DEBUG] [stacks] StopStack chaosoom: current state=running deployed=true containers=1 +2026/09/24 11:48:01 manager.go:1286: [INFO] [stacks] Stopping stack: chaosoom +2026/09/24 11:48:01 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 11:48:01 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/chaosoom) +2026/09/24 11:48:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:48:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:48:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:11 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:48:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:48:11 manager.go:1483: [DEBUG] Command completed: docker compose down (took 10.3s) +2026/09/24 11:48:11 manager.go:1295: [INFO] [stacks] Stack chaosoom stopped successfully (took 10.3s) +2026/09/24 11:48:11 settings.go:1814: [WARN] [settings] restore hold SET for chaosoom — the app stays stopped until it is cleared +2026/09/24 11:48:11 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17886 bytes) +2026/09/24 11:48:11 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 11:48:11 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17926 bytes) +2026/09/24 11:48:11 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 11:48:11 update_guard.go:776: [WARN] [backup] chaosoom is STOPPED by the box: oom_storm (trip 1 within 24h0m0s) — Start gives it one more try (decision 28) +2026/09/24 11:48:11 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_stopped_unhealthy (severity warning) — further app_stopped_unhealthy events are logged at DEBUG only +2026/09/24 11:48:13 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.6:51320 (X-Forwarded-For: 192.168.0.180) +2026/09/24 11:48:13 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 11:48:13 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T11:48:13Z, active_sessions=2 +2026/09/24 11:48:13 auth.go:222: [INFO] [web] Login from 172.18.0.6:51320 +2026/09/24 11:48:13 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.6:51320 +2026/09/24 11:48:13 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.6:51320 +2026/09/24 11:48:13 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoom from 172.18.0.6:51320 +2026/09/24 11:48:13 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoom from 172.18.0.6:51320 +2026/09/24 11:48:13 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoom from 172.18.0.6:51320 +2026/09/24 11:48:13 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoom from 172.18.0.6:51320 diff --git a/documentation/audits/night-2026-09-24/E/round-01.json b/documentation/audits/night-2026-09-24/E/round-01.json new file mode 100644 index 00000000..b7b59b08 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-01.json @@ -0,0 +1,106 @@ +{ + "round": 1, + "action": "oom_app", + "accident": { + "kind": "power_cut", + "cmd": "pct stop 9202; pct start 9202", + "fired_at": "13:45:41", + "result": "stop_rc=0 start_rc=0 " + }, + "app": "chaosoom", + "started": "2026-09-24T11:45:08Z", + "before": { + "state": { + "deployed": null, + "state": null, + "update_phase": null, + "hold_reason": null, + "hold_kind": null, + "update_error": null, + "ladder_steps_left": null + } + }, + "act": "deploy -> 202", + "armed_at": "13:45:33", + "armed_why": "20 s after the install", + "controller_back_s": 0.2, + "time_to_steady_s": 184.9, + "after": { + "state": { + "deployed": true, + "state": "stopped", + "update_phase": null, + "hold_reason": "Az alkalmazást leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). Az Indítás gombbal újra megpróbálhatod.", + "hold_kind": "unhealthy_stop", + "update_error": null, + "ladder_steps_left": null + }, + "badges": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "page_hu": [ + "Temperature high: 81°C (hwmon2) Rendszermonitor →", + "+ 1 további figyelmeztetés →", + "Az alkalmazást leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). Az Indítás gombbal újra megpróbálhatod.", + "Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el." + ], + "page_en": [ + "Temperature high: 81°C (hwmon2) System monitor →", + "+ 1 more warning →", + "We stopped the app because it kept crashing (or ran out of memory). Press Start to try again.", + "Support is working on this app, so its data stays: for now you can remove only the app itself." + ] + }, + "readback": null, + "events": [ + "2026-09-24T11:48:01Z app_oom_storm (error)", + "2026-09-24T11:48:11Z app_stopped_unhealthy (warning)" + ], + "box_log": [ + "2026-09-24T11:45:09Z INFO [sync] Updated chaosoom/docker-compose.yml", + "2026-09-24T11:45:09Z INFO [sync] Updated chaosoom/.felhom.yml", + "2026-09-24T11:45:09Z INFO [sync] Updated chaosoomb/docker-compose.yml", + "2026-09-24T11:45:09Z INFO [sync] Updated chaosoomb/.felhom.yml", + "2026-09-24T11:45:09Z INFO [api] Catalog sync completed: Sablonok frissítve — új: chaoscrash, chaosoom, chaosoomb", + "2026-09-24T11:45:13Z INFO [api] Deploy requested for stack: chaosoom", + "2026-09-24T11:45:13Z INFO [stacks] Deploying stack chaosoom with 2 env vars: [DOMAIN, SUBDOMAIN]", + "2026-09-24T11:45:13Z INFO [stacks] Deploying stack chaosoom — checking 1 images...", + "2026-09-24T11:45:13Z INFO [stacks] Stack chaosoom deployed successfully (took 0.4s)", + "2026-09-24T11:45:14Z INFO [stacks] installed-images chaosoom: recorded 1 service(s) (chaosoom=alpine:3.20 (sha256:d9e853e87e55…))", + "2026-09-24T11:45:14Z INFO [stacks] pin chaosoom: chaosoom=alpine:3.20", + "2026-09-24T11:45:17Z INFO [stacks] Stack chaosoom post-start status:", + "2026-09-24T11:45:17Z INFO [stacks] chaosoom alpine:3.20 running Up 3 seconds", + "2026-09-24T11:46:00Z INFO [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false)", + "2026-09-24T11:46:00Z INFO [scheduler] Registered periodic job: deadapp-check (every 30s)", + "2026-09-24T11:46:00Z INFO [scheduler] Registered periodic job: backup-cache (every 5m0s)", + "2026-09-24T11:46:00Z INFO [scheduler] Daily job tier2-backup scheduled for 2026-09-24 14:20 CEST", + "2026-09-24T11:46:00Z INFO [scheduler] Daily job offbox-backup scheduled for 2026-09-24 15:05 CEST", + "2026-09-24T11:46:01Z INFO [backup] Found 9 DB dump files across drives", + "2026-09-24T11:46:01Z WARN [monitor] Temperature threshold breached: 81°C (limit: 75°C)", + "2026-09-24T11:46:01Z WARN [api] Unauthorized request to /api/stacks/chaosoom from 172.18.0.6:51320", + "2026-09-24T11:46:01Z INFO [backup] Discovered 3 databases", + "2026-09-24T11:46:01Z INFO [backup] Recovery unit captured for chaosoom → /mnt/sys_drive/felhom-data/backups/primary/chaosoom (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0)", + "2026-09-24T11:46:01Z INFO [backup] Backup status cache refreshed", + "2026-09-24T11:46:25Z INFO [bootrecon] \"gokapi\" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T10:37:48Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery", + "2026-09-24T11:47:31Z WARN [deadapp] chaosoom: container chaosoom was OOM-killed (started 2026-09-24T11:47:10.100857309Z; kills 15, limit 32M, peak 32M)", + "2026-09-24T11:48:01Z WARN [deadapp] chaosoom: container chaosoom was OOM-killed (started 2026-09-24T11:47:10.100857309Z; kills 38, limit 32M, peak 32M)", + "2026-09-24T11:48:01Z ERROR [notify] chaosoom: container chaosoom OOM STORM — 38 kills in 30 min (limit 32M, peak 32M)", + "2026-09-24T11:48:01Z WARN [deadapp] chaosoom: oom_storm — 23 in 30m0s; STOPPING it (decision 28)", + "2026-09-24T11:48:01Z INFO [stacks] Stopping stack: chaosoom", + "2026-09-24T11:48:11Z INFO [stacks] Stack chaosoom stopped successfully (took 10.3s)", + "2026-09-24T11:48:11Z WARN [settings] restore hold SET for chaosoom — the app stays stopped until it is cleared", + "2026-09-24T11:48:11Z WARN [backup] chaosoom is STOPPED by the box: oom_storm (trip 1 within 24h0m0s) — Start gives it one more try (decision 28)" + ], + "undo_copies_left": "0" +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/round-01.log b/documentation/audits/night-2026-09-24/E/round-01.log new file mode 100644 index 00000000..8a448232 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-01.log @@ -0,0 +1,11 @@ +13:45:08 ==== ROUND 1: oom_app on chaosoom x power_cut (2026-09-24T11:45:08Z) +13:45:13 deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +13:45:13 + 4.8s chaosoom: deployed=True state=not_deployed updating=False phase=None hold=None +13:45:15 + 6.8s chaosoom: deployed=True state=running updating=False phase=None hold=None +13:45:33 >>> ARMED accident power_cut (20 s after the install) +13:45:55 + 46.5s chaosoom: deployed=None state=None updating=None phase=None hold=None +13:46:01 + 53.0s chaosoom: deployed=True state=restarting updating=False phase=None hold=None +13:46:05 + 57.1s chaosoom: deployed=True state=running updating=False phase=None hold=None +13:48:13 + 184.7s chaosoom: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop +13:48:13 >>> accident done: {'kind': 'power_cut', 'cmd': 'pct stop 9202; pct start 9202', 'fired_at': '13:45:41', 'result': 'stop_rc=0 start_rc=0 '} +13:48:13 + 184.9s chaosoom: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop diff --git a/documentation/audits/night-2026-09-24/E/round-01.stdout b/documentation/audits/night-2026-09-24/E/round-01.stdout new file mode 100644 index 00000000..b458c24c --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-01.stdout @@ -0,0 +1,12 @@ +13:45:08 ==== ROUND 1: oom_app on chaosoom x power_cut (2026-09-24T11:45:08Z) +13:45:13 deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +13:45:13 + 4.8s chaosoom: deployed=True state=not_deployed updating=False phase=None hold=None +13:45:15 + 6.8s chaosoom: deployed=True state=running updating=False phase=None hold=None +13:45:33 >>> ARMED accident power_cut (20 s after the install) +13:45:55 + 46.5s chaosoom: deployed=None state=None updating=None phase=None hold=None +13:46:01 + 53.0s chaosoom: deployed=True state=restarting updating=False phase=None hold=None +13:46:05 + 57.1s chaosoom: deployed=True state=running updating=False phase=None hold=None +13:48:13 + 184.7s chaosoom: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop +13:48:13 >>> accident done: {'kind': 'power_cut', 'cmd': 'pct stop 9202; pct start 9202', 'fired_at': '13:45:41', 'result': 'stop_rc=0 start_rc=0 '} +13:48:13 + 184.9s chaosoom: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop +13:48:20 ==== ROUND 1 END: steady in 184.9s; readback=None; events=['2026-09-24T11:48:01Z app_oom_storm (error)', '2026-09-24T11:48:11Z app_stopped_unhealthy (warning)'] diff --git a/documentation/audits/night-2026-09-24/E/round-02-controller.log b/documentation/audits/night-2026-09-24/E/round-02-controller.log new file mode 100644 index 00000000..f2cefc7f --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-02-controller.log @@ -0,0 +1,2151 @@ +2026/09/24 11:48:29 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.6:51320 (X-Forwarded-For: 192.168.0.180) +2026/09/24 11:48:29 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 11:48:29 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T11:48:29Z, active_sessions=3 +2026/09/24 11:48:29 auth.go:222: [INFO] [web] Login from 172.18.0.6:51320 +2026/09/24 11:48:29 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.6:51320 +2026/09/24 11:48:29 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.6:51320 +2026/09/24 11:48:30 router.go:1065: [INFO] [api] Manual catalog sync requested +2026/09/24 11:48:30 sync.go:208: [INFO] [sync] Starting catalog sync +2026/09/24 11:48:30 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main) +2026/09/24 11:48:30 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache +2026/09/24 11:48:30 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main +2026/09/24 11:48:31 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:48:31 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:48:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:48:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:48:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:31 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:48:31 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused +2026/09/24 11:48:31 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:48:31 sync.go:627: [DEBUG] [sync] Running: git reset --hard origin/main +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] chaoscrash/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] chaoscrash/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] chaosoom/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] chaosoom/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] chaosoomb/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] chaosoomb/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:416: [INFO] [sync] Updated n8n/docker-compose.yml +2026/09/24 11:48:31 sync.go:565: [DEBUG] [sync] n8n/docker-compose.yml: src=1f5e4d4b41b3e39c, dst=1f5e4d4b41b3e39c (changed) +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] navidrome/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] nextcloud/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:533: [DEBUG] [sync] vikunja: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] wishlist/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped +2026/09/24 11:48:31 sync.go:440: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:48:31 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 11:48:31 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 11:48:31 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 11:48:31 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 11:48:31 sync.go:244: [DEBUG] [sync] Post-sync hook: triggering missing field injection for 1 stack(s): [n8n] +2026/09/24 11:48:31 deploy.go:1104: [DEBUG] [stacks] InjectMissingFields: checking 1 stacks +2026/09/24 11:48:31 deploy.go:1120: [DEBUG] [stacks] InjectMissingFields: skipping n8n (not deployed or no app config) +2026/09/24 11:48:31 deploy.go:1189: [INFO] [stacks] InjectMissingFields: processed 1 stacks +2026/09/24 11:48:31 sync.go:263: [INFO] [sync] Catalog sync complete +2026/09/24 11:48:31 router.go:1071: [INFO] [api] Catalog sync completed: Sablonok frissítve — frissítve: n8n +2026/09/24 11:48:33 router.go:362: [INFO] [api] Manual stack rescan requested +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:48:33 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 11:48:33 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 11:48:33 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 11:48:33 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 11:48:33 router.go:369: [INFO] [api] Stack rescan completed: 58 stacks found +2026/09/24 11:48:38 router.go:1065: [INFO] [api] Manual catalog sync requested +2026/09/24 11:48:40 router.go:362: [INFO] [api] Manual stack rescan requested +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:48:40 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 11:48:40 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 11:48:40 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 11:48:40 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 11:48:40 router.go:369: [INFO] [api] Stack rescan completed: 58 stacks found +2026/09/24 11:48:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:48:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:48:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:48:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:41 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:48:42 router.go:431: [INFO] [api] Deploy requested for stack: n8n +2026/09/24 11:48:42 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=22.5 GB avail=42.4GB (32.8%) +2026/09/24 11:48:42 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5146MB avail≈20752MB +2026/09/24 11:48:42 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24610780 → total=25898MB avail=20752MB used=5146MB (19.9%) +2026/09/24 11:48:42 deploy.go:1250: [INFO] [stacks] Memory check: total=25898MB, reserved=384MB, usable=25514MB, committed_used=1306MB, new_req=512MB, remaining=23696MB +2026/09/24 11:48:42 deploy.go:253: [DEBUG] Deploy n8n: received 2 user values +2026/09/24 11:48:42 deploy.go:258: [DEBUG] DOMAIN = "enkisfelhom.hu" +2026/09/24 11:48:42 deploy.go:258: [DEBUG] SUBDOMAIN = "e-n8n" +2026/09/24 11:48:42 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/n8n — 3 env vars, 1 encrypted, 1 sensitive fields +2026/09/24 11:48:42 [INFO] [stacks] SaveAppConfig: saved config for n8n +2026/09/24 11:48:42 deploy.go:383: [INFO] [stacks] Deploying stack n8n with 3 env vars: [DOMAIN, SUBDOMAIN, N8N_ENCRYPTION_KEY] +2026/09/24 11:48:42 manager.go:1582: [INFO] [stacks] Deploying stack n8n — checking 1 images... +2026/09/24 11:48:42 manager.go:1586: [DEBUG] n8nio/n8n:2.31.3 — not found locally, will pull +2026/09/24 11:48:42 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_deploy_started (severity info) — further app_deploy_started events are logged at DEBUG only +2026/09/24 11:48:42 lifecycle.go:70: [DEBUG] [integrations] OnStackStart: stack=n8n, waiting 5s for state refresh +2026/09/24 11:48:42 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, N8N_ENCRYPTION_KEY, DOMAIN, IMPORT_PATH] (9 app + 0 system) +2026/09/24 11:48:42 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/n8n) +2026/09/24 11:48:47 lifecycle.go:86: [DEBUG] [integrations] OnStackStart: stack=n8n integrationsFound=0 +2026/09/24 11:48:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:48:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:48:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:48:51 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:48:51 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused +2026/09/24 11:48:51 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:49:00 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:49:00 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5180MB avail≈20718MB +2026/09/24 11:49:00 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24570720 → total=25898MB avail=20718MB used=5180MB (20.0%) +2026/09/24 11:49:00 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=23.1GB avail=41.8GB (33.8%) +2026/09/24 11:49:00 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:49:00 info.go:13: [DEBUG] [system] readLoadAvg: raw="3.46 3.33 2.96 7/1507 862" → 1m=3.46 5m=3.33 15m=2.96 +2026/09/24 11:49:00 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:49:00 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 70.8°C (hwmon2) +2026/09/24 11:49:00 info.go:13: [DEBUG] [system] GetInfo done in 61ms — mem=5180MB/25898MB (20.0%), rootDisk=23.1GB/68.4GB (33.8%), load=3.46/3.33/2.96, temp=70.8°C (hwmon2), cpu=43.0% +2026/09/24 11:49:01 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:49:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:49:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:49:01 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:49:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:01 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:49:01 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused +2026/09/24 11:49:01 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:49:09 main.go:1931: [INFO] Received signal terminated, shutting down... +2026/09/24 11:49:09 scheduler.go:67: [DEBUG] [scheduler] daily job metrics-prune: context cancelled, stopping +2026/09/24 11:49:09 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-proof: context cancelled, stopping +2026/09/24 11:49:09 scheduler.go:67: [DEBUG] [scheduler] daily job fill-watch: context cancelled, stopping +2026/09/24 11:49:09 scheduler.go:67: [DEBUG] [scheduler] daily job db-dump: context cancelled, stopping +2026/09/24 11:49:09 scheduler.go:67: [DEBUG] [scheduler] daily job tier2-backup: context cancelled, stopping +2026/09/24 11:49:09 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-integrity: context cancelled, stopping +2026/09/24 11:49:09 scheduler.go:67: [DEBUG] [scheduler] daily job offbox-backup: context cancelled, stopping +2026/09/24 11:49:09 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-abandon-sweep: context cancelled, stopping +2026/09/24 11:49:09 main.go:1955: [INFO] felhom-controller stopped +2026/09/24 11:49:09 scheduler.go:232: [INFO] [scheduler] Stopping scheduler +2026/09/24 11:49:09 scheduler.go:245: [INFO] [scheduler] All jobs stopped +2026/09/24 11:49:18 main.go:335: [INFO] felhom-controller 0.269.1 starting (customer: demo-hp, domain: enkisfelhom.hu) +2026/09/24 11:49:18 settings.go:709: [INFO] [settings] Loaded settings from /opt/docker/felhom-controller/data/settings.json +2026/09/24 11:49:18 settings.go:1671: [DEBUG] [settings] AutoDiscoverStoragePaths discovered=[/mnt/felhom-drives/scratch_hdd/userdata/navidrome /mnt/felhom-drives/scratch_hdd/userdata/nextcloud /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx /mnt/felhom-drives/scratch_hdd/userdata/romm] fallback="" existing=5 +2026/09/24 11:49:18 main.go:361: [INFO] Encryption key loaded from /opt/docker/felhom-controller/data/encryption.key +2026/09/24 11:49:18 manager.go:328: [INFO] [stacks] Using compose command: docker compose +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:49:18 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 11:49:18 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 11:49:18 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 11:49:18 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 11:49:19 deploy.go:1104: [DEBUG] [stacks] InjectMissingFields: checking 9 stacks +2026/09/24 11:49:19 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack paperless-ngx — 8 deploy fields, 8 existing env vars +2026/09/24 11:49:19 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack vikunja — 3 deploy fields, 3 existing env vars +2026/09/24 11:49:19 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack gokapi — 3 deploy fields, 3 existing env vars +2026/09/24 11:49:19 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack navidrome — 3 deploy fields, 3 existing env vars +2026/09/24 11:49:19 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack privatebin — 2 deploy fields, 2 existing env vars +2026/09/24 11:49:19 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack chaosoom — 2 deploy fields, 2 existing env vars +2026/09/24 11:49:19 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack romm — 6 deploy fields, 6 existing env vars +2026/09/24 11:49:19 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack nextcloud — 7 deploy fields, 7 existing env vars +2026/09/24 11:49:19 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack wishlist — 2 deploy fields, 2 existing env vars +2026/09/24 11:49:19 deploy.go:1189: [INFO] [stacks] InjectMissingFields: processed 9 stacks +2026/09/24 11:49:19 manager.go:467: [DEBUG] [stacks] MigrateEncryption: checking 9 deployed stacks for plaintext sensitive values +2026/09/24 11:49:19 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "nextcloud" (3 sensitive fields) +2026/09/24 11:49:19 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "paperless-ngx" (3 sensitive fields) +2026/09/24 11:49:19 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "vikunja" (1 sensitive fields) +2026/09/24 11:49:19 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "gokapi" (1 sensitive fields) +2026/09/24 11:49:19 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "romm" (3 sensitive fields) +2026/09/24 11:49:19 manager.go:511: [INFO] [stacks] Encryption migration: no stacks needed migration +2026/09/24 11:49:19 desiredstate.go:137: [INFO] [stacks] desired-state backfill: 0 app(s) recorded as running, 0 left unrecorded (state ambiguous — legacy boot behaviour retained) +2026/09/24 11:49:19 installed.go:537: [INFO] [stacks] installed-images backfill: 0 app(s) recorded, 9 already had a record, 0 left unrecorded (could not be observed completely — unknown, which renders nothing) +2026/09/24 11:49:19 pin.go:290: [INFO] [stacks] pin adoption: 0 pinned, 9 already pinned, 0 left unpinned (0 not completely observed, 0 running something the template no longer offers) +2026/09/24 11:49:19 undo.go:656: [INFO] [stacks] applied-meta backfill (R-646): recorded 0 []; skipped 0 [] — not current with the catalog, their pinned version's .felhom.yml is no longer on the box +2026/09/24 11:49:19 sync.go:117: [INFO] [sync] Starting catalog sync (repo: https://gitea.dooplex.hu/admin/app-catalog-drill.git, interval: 15m0s) +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] CPUCollector.Start: sampleRate=5s +2026/09/24 11:49:19 sync.go:208: [INFO] [sync] Starting catalog sync +2026/09/24 11:49:19 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main) +2026/09/24 11:49:19 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache +2026/09/24 11:49:19 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main +2026/09/24 11:49:19 main.go:515: [INFO] Metrics store opened at /opt/docker/felhom-controller/data/metrics.db +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:49:19 main.go:527: [INFO] Metrics collector started (60s interval) +2026/09/24 11:49:19 restore_record_wiring.go:35: [INFO] [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false) +2026/09/24 11:49:19 notifier.go:81: [INFO] Notifier disabled (hub not configured) +2026/09/24 11:49:19 main.go:692: [INFO] [mailrelay] app-email shim unavailable (no hub configured or disabled in config) +2026/09/24 11:49:19 scheduler.go:102: [INFO] [scheduler] Registered periodic job: status-refresh (every 10s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="status-refresh" interval=10s totalJobs=1 +2026/09/24 11:49:19 scheduler.go:102: [INFO] [scheduler] Registered periodic job: stack-scan (every 2m0s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="stack-scan" interval=2m0s totalJobs=2 +2026/09/24 11:49:19 scheduler.go:102: [INFO] [scheduler] Registered periodic job: health-probes (every 10s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="health-probes" interval=10s totalJobs=3 +2026/09/24 11:49:19 scheduler.go:102: [INFO] [scheduler] Registered periodic job: system-health (every 5m0s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="system-health" interval=5m0s totalJobs=4 +2026/09/24 11:49:19 scheduler.go:102: [INFO] [scheduler] Registered periodic job: deadapp-check (every 30s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="deadapp-check" interval=30s totalJobs=5 +2026/09/24 11:49:19 scheduler.go:102: [INFO] [scheduler] Registered periodic job: ring-spill (every 30s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="ring-spill" interval=30s totalJobs=6 +2026/09/24 11:49:19 scheduler.go:132: [INFO] [scheduler] Daily job db-dump scheduled for 2026-09-25 13:20 CEST +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="db-dump" schedule="13:20" nextRun=2026-09-25T13:20:00+02:00 totalJobs=7 +2026/09/24 11:49:19 scheduler.go:102: [INFO] [scheduler] Registered periodic job: offsite-credential-retry (every 5m0s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="offsite-credential-retry" interval=5m0s totalJobs=8 +2026/09/24 11:49:19 scheduler.go:102: [INFO] [scheduler] Registered periodic job: backup-cache (every 5m0s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="backup-cache" interval=5m0s totalJobs=9 +2026/09/24 11:49:19 scheduler.go:132: [INFO] [scheduler] Daily job tier2-backup scheduled for 2026-09-24 14:20 CEST +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="tier2-backup" schedule="14:20" nextRun=2026-09-24T14:20:00+02:00 totalJobs=10 +2026/09/24 11:49:19 scheduler.go:132: [INFO] [scheduler] Daily job offbox-backup scheduled for 2026-09-24 15:05 CEST +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offbox-backup" schedule="15:05" nextRun=2026-09-24T15:05:00+02:00 totalJobs=11 +2026/09/24 11:49:19 scheduler.go:132: [INFO] [scheduler] Daily job offsite-abandon-sweep scheduled for 2026-09-25 05:10 CEST +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-abandon-sweep" schedule="05:10" nextRun=2026-09-25T05:10:00+02:00 totalJobs=12 +2026/09/24 11:49:19 scheduler.go:132: [INFO] [scheduler] Daily job offsite-integrity scheduled for 2026-09-25 06:00 CEST +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-integrity" schedule="06:00" nextRun=2026-09-25T06:00:00+02:00 totalJobs=13 +2026/09/24 11:49:19 scheduler.go:132: [INFO] [scheduler] Daily job offsite-proof scheduled for 2026-09-25 05:30 CEST +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-proof" schedule="05:30" nextRun=2026-09-25T05:30:00+02:00 totalJobs=14 +2026/09/24 11:49:19 scheduler.go:132: [INFO] [scheduler] Daily job metrics-prune scheduled for 2026-09-25 04:00 CEST +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="metrics-prune" schedule="04:00" nextRun=2026-09-25T04:00:00+02:00 totalJobs=15 +2026/09/24 11:49:19 scheduler.go:132: [INFO] [scheduler] Daily job fill-watch scheduled for 2026-09-25 03:30 CEST +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="fill-watch" schedule="03:30" nextRun=2026-09-25T03:30:00+02:00 totalJobs=16 +2026/09/24 11:49:19 selftest.go:50: [INFO] ========== Startup Self-Test ========== +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4109MB avail≈21789MB +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25840016 → total=25898MB avail=21789MB used=4109MB (15.9%) +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.4GB avail=42.4GB (32.8%) +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] readLoadAvg: raw="5.03 3.69 3.08 16/1425 108" → 1m=5.03 5m=3.69 15m=3.08 +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 73.2°C (hwmon2) +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] GetInfo done in 279ms — mem=4109MB/25898MB (15.9%), rootDisk=22.4GB/68.4GB (32.8%), load=5.03/3.69/3.08, temp=73.2°C (hwmon2), cpu=0.0% +2026/09/24 11:49:19 selftest.go:68: [INFO] [PASS] Docker socket: reachable (v29.8.0) +2026/09/24 11:49:19 selftest.go:68: [INFO] [PASS] Stacks directory: /opt/docker/stacks +2026/09/24 11:49:19 selftest.go:68: [INFO] [PASS] Data directory: /opt/docker/felhom-controller/data (writable) +2026/09/24 11:49:19 selftest.go:68: [INFO] [PASS] System data path: /mnt/sys_drive +2026/09/24 11:49:19 selftest.go:68: [INFO] [PASS] Storage paths: 1 connected, 4 disconnected +2026/09/24 11:49:19 selftest.go:68: [INFO] [PASS] Git catalog: 56 app definitions found +2026/09/24 11:49:19 selftest.go:68: [INFO] [PASS] Hub connectivity: hub disabled, skipped +2026/09/24 11:49:19 selftest.go:68: [INFO] [PASS] Metrics DB: 8.2 MB +2026/09/24 11:49:19 selftest.go:70: [INFO] ======================================== +2026/09/24 11:49:19 selftest.go:71: [INFO] Self-test complete: 8 passed, 0 warnings, 0 failed +2026/09/24 11:49:19 scheduler.go:206: [INFO] [scheduler] Starting scheduler with 16 jobs +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] scheduler started: periodic=8 daily=8 +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job db-dump: next run at 2026-09-25 13:20:00 CEST (waiting 23h30m40s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-abandon-sweep: next run at 2026-09-25 05:10:00 CEST (waiting 15h20m40s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job tier2-backup: next run at 2026-09-24 14:20:00 CEST (waiting 30m40s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job offbox-backup: next run at 2026-09-24 15:05:00 CEST (waiting 1h15m40s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-proof: next run at 2026-09-25 05:30:00 CEST (waiting 15h40m40s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-integrity: next run at 2026-09-25 06:00:00 CEST (waiting 16h10m40s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job metrics-prune: next run at 2026-09-25 04:00:00 CEST (waiting 14h10m40s) +2026/09/24 11:49:19 scheduler.go:67: [DEBUG] [scheduler] daily job fill-watch: next run at 2026-09-25 03:30:00 CEST (waiting 13h40m40s) +2026/09/24 11:49:19 server.go:250: [DEBUG] [web] NewServer: initializing web server v0.269.1 +2026/09/24 11:49:19 server.go:251: [DEBUG] [web] NewServer: backup=true scheduler=true alertMgr=true notifier=true updater=false +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:49:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/navidrome → [navidrome] +2026/09/24 11:49:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/nextcloud → [nextcloud] +2026/09/24 11:49:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx → [paperless-ngx] +2026/09/24 11:49:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/romm → [romm] +2026/09/24 11:49:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/sys_drive → [gokapi, privatebin, vikunja, wishlist, chaosoom] +2026/09/24 11:49:19 backup.go:1119: [INFO] [backup] Found 9 DB dump files across drives +2026/09/24 11:49:19 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 11:49:19 infra.go:67: [INFO] [infra] cloudflared skipped — no cf_tunnel_token configured (LAN-only node) +2026/09/24 11:49:19 sync.go:627: [DEBUG] [sync] Running: git reset --hard origin/main +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4226MB avail≈21672MB +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25702284 → total=25898MB avail=21672MB used=4226MB (16.3%) +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.4GB avail=42.4GB (32.8%) +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] readLoadAvg: raw="5.03 3.69 3.08 17/1441 179" → 1m=5.03 5m=3.69 15m=3.08 +2026/09/24 11:49:19 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 86ba63e28bd7 felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1 +557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0 +8ed284296786 romm-db romm mariadb:11.8 +0a82332f8e1c romm romm rommapp/romm:5.3.1 +9ec77cdb422a romm-redis romm redis:7-alpine +d9846695ae0d wishlist wishlist ghcr.io/cmintey/wishlist:v0.67.1 +8867e567d339 privatebin privatebin privatebin/pdo:2.0.6 +0732d8573acd paperless-webserver paperless-ngx ghcr.io/paperless-ngx/paperless-ngx:2.20.15 +3df88f0fdd1d paperless-redis pap... +2026/09/24 11:49:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 11:49:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 11:49:19 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786) +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 82.9°C (hwmon2) +2026/09/24 11:49:19 info.go:13: [DEBUG] [system] GetInfo done in 375ms — mem=4226MB/25898MB (16.3%), rootDisk=22.4GB/68.4GB (32.8%), load=5.03/3.69/3.08, temp=82.9°C (hwmon2), cpu=0.0% +2026/09/24 11:49:19 healthcheck.go:86: [DEBUG] [monitor] Raw values: disk=32.8%, hdd=7.8% (configured=true), mem=16.3% (4226MB/25898MB), cpu=0.0%, temp=82.9°C (hwmon2) +2026/09/24 11:49:19 healthcheck.go:118: [DEBUG] [monitor] SSD disk: OK (33%) +2026/09/24 11:49:19 healthcheck.go:151: [DEBUG] [monitor] Memory: OK (16%) +2026/09/24 11:49:19 healthcheck.go:179: [WARN] [monitor] Temperature threshold breached: 83°C (limit: 75°C) +2026/09/24 11:49:19 healthcheck.go:182: [DEBUG] [monitor] Temperature: WARN (83°C >= 75°C) +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped +2026/09/24 11:49:19 server.go:327: [DEBUG] [web] loadTemplates: lang=hu loaded 81 templates, 1886 markers expanded in 318.111948ms +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] chaoscrash/docker-compose.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] chaoscrash/.felhom.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] chaosoom/docker-compose.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] chaosoom/.felhom.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] chaosoomb/docker-compose.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] chaosoomb/.felhom.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped +2026/09/24 11:49:19 sync.go:440: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 healthcheck.go:201: [DEBUG] [monitor] Docker daemon: OK +2026/09/24 11:49:20 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 11:49:20 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 11:49:20 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 11:49:20 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database) +2026/09/24 11:49:20 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 11:49:20 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 11:49:20 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 11:49:20 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973) +2026/09/24 11:49:20 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 11:49:20 healthcheck.go:209: [DEBUG] [monitor] Checking 1 protected containers: [traefik] +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 server.go:327: [DEBUG] [web] loadTemplates: lang=en loaded 81 templates, 1886 markers expanded in 134.521825ms +2026/09/24 11:49:20 server.go:270: [INFO] [web] Auth: using password from settings.json +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 server.go:814: [DEBUG] [web] CatchAllMiddleware: controller host=felhom.enkisfelhom.hu +2026/09/24 11:49:20 main.go:1950: [INFO] Web UI listening on :8080 +2026/09/24 11:49:20 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 11:49:20 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database) +2026/09/24 11:49:20 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=9837f4d677cb) +2026/09/24 11:49:20 healthcheck.go:219: [DEBUG] [monitor] All protected containers running +2026/09/24 11:49:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:49:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:49:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:49:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:49:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:49:20 healthcheck.go:238: [INFO] [monitor] Health check: status=warn +2026/09/24 11:49:20 healthcheck.go:242: [DEBUG] [monitor] Final status: warn (issues=0, warnings=5, info=3) +2026/09/24 11:49:20 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 11:49:20 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database) +2026/09/24 11:49:20 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database) +2026/09/24 11:49:20 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 11:49:20 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 11:49:20 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 13 non-DB container(s) +2026/09/24 11:49:20 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:49:20 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping userdata skeleton +2026/09/24 11:49:20 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx not mounted — skipping userdata skeleton +2026/09/24 11:49:20 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/romm not mounted — skipping userdata skeleton +2026/09/24 11:49:20 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/navidrome not mounted — skipping userdata skeleton +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 manager.go:258: [DEBUG] [integrations] ReapplyConfigForTarget: target=filebrowser integrations=0 +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] n8n/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] navidrome/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] nextcloud/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 2 HDD mounts for /opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:49:20 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:49:20 [INFO] [backup] Discovered app data: 9 apps +2026/09/24 11:49:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:49:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.4 GB avail=42.4GB (32.8%) +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.4 GB avail=42.4GB (32.8%) +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.4 GB avail=42.4GB (32.8%) +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 backup.go:1189: [INFO] [backup] Backup status cache refreshed +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:533: [DEBUG] [sync] vikunja: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] wishlist/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:440: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped +2026/09/24 11:49:20 sync.go:263: [INFO] [sync] Catalog sync complete +2026/09/24 11:49:20 sync.go:122: [INFO] [sync] Initial sync: Sablonok naprakészek — nincs változás +2026/09/24 11:49:20 handlers.go:3432: [INFO] [web] FileBrowser sync — no config/compose change, ensured running without recreate (5 storage path(s)) +2026/09/24 11:49:21 auth.go:123: [DEBUG] [web] auth: rejected GET /api/stacks/n8n from 172.18.0.11:52882 (invalid/expired session) +2026/09/24 11:49:21 auth.go:126: [WARN] [api] Unauthorized request to /api/stacks/n8n from 172.18.0.11:52882 +2026/09/24 11:49:21 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.11:52882 (X-Forwarded-For: 192.168.0.180) +2026/09/24 11:49:21 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 11:49:21 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T11:49:21Z, active_sessions=1 +2026/09/24 11:49:21 auth.go:222: [INFO] [web] Login from 172.18.0.11:52882 +2026/09/24 11:49:21 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.11:52882 +2026/09/24 11:49:21 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.11:52882 +2026/09/24 11:49:24 info.go:13: [DEBUG] [system] CPUCollector: first sample — cpu=86.0% (idle=557 total=3971) +2026/09/24 11:49:24 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event controller_started (severity info) — further controller_started events are logged at DEBUG only +2026/09/24 11:49:29 main.go:2356: [DEBUG] [bootrecon] boot window: fleet still changing (9 app(s)) — resampling +2026/09/24 11:49:29 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:49:29 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 4 targets (0 skipped not due, 0 skipped no container) +2026/09/24 11:49:29 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:49:29 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:49:29 healthprobe.go:181: [DEBUG] Health probe navidrome: API GET :4533/ping → 200 (3ms) +2026/09/24 11:49:29 healthprobe.go:181: [DEBUG] Health probe privatebin: HTTP GET :8080/ → 200 (7ms) +2026/09/24 11:49:29 healthprobe.go:181: [DEBUG] Health probe nextcloud: API GET :80/status.php → 200 (45ms) +2026/09/24 11:49:29 healthprobe.go:159: [WARN] Health probes: 3 ok, 1 unhealthy (of 4 probed) +2026/09/24 11:49:34 main.go:2356: [DEBUG] [bootrecon] boot window: fleet still changing (9 app(s)) — resampling +2026/09/24 11:49:39 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:49:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:49:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:39 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (4 skipped not due, 0 skipped no container) +2026/09/24 11:49:39 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:49:39 healthprobe.go:181: [DEBUG] Health probe wishlist: HTTP GET :3000/ → 307 (9ms) +2026/09/24 11:49:39 healthprobe.go:161: [INFO] Health probes: 1 ok (of 1 probed) +2026/09/24 11:49:44 main.go:2367: [INFO] [bootrecon] boot window: fleet settled after 20s (3 identical samples 5s apart) — sweeping +2026/09/24 11:49:44 bootrecon.go:236: [INFO] [bootrecon] "gokapi" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T10:37:48Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery +2026/09/24 11:49:44 bootrecon.go:236: [INFO] [bootrecon] "chaosoom" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T11:48:01Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery +2026/09/24 11:49:44 bootrecon.go:251: [INFO] [bootrecon] Boot reconciliation: nothing to start — 2 app(s) held (absent drive / quiesce / app-data operation): [chaosoom gokapi] +2026/09/24 11:49:49 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:49:49 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:49:49 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:49:49 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:49:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:49 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (4 skipped not due, 0 skipped no container) +2026/09/24 11:49:49 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:49:49 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:49:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:49:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:49:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:49:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:49:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (5 skipped not due, 0 skipped no container) +2026/09/24 11:50:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:50:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:50:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 3 targets (4 skipped not due, 0 skipped no container) +2026/09/24 11:50:09 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:50:09 healthprobe.go:181: [DEBUG] Health probe romm: HTTP GET :8080/ → 200 (1ms) +2026/09/24 11:50:09 healthprobe.go:181: [DEBUG] Health probe paperless-ngx: HTTP GET :8000/ → 302 (5ms) +2026/09/24 11:50:09 healthprobe.go:159: [WARN] Health probes: 2 ok, 1 unhealthy (of 3 probed) +2026/09/24 11:50:19 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:50:19 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5301MB avail≈20597MB +2026/09/24 11:50:19 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24426740 → total=25898MB avail=20597MB used=5301MB (20.5%) +2026/09/24 11:50:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.4GB avail=42.4GB (32.8%) +2026/09/24 11:50:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:50:19 info.go:13: [DEBUG] [system] readLoadAvg: raw="5.89 4.18 3.29 6/1479 413" → 1m=5.89 5m=4.18 15m=3.29 +2026/09/24 11:50:19 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:50:19 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 72.8°C (hwmon2) +2026/09/24 11:50:19 info.go:13: [DEBUG] [system] GetInfo done in 64ms — mem=5301MB/25898MB (20.5%), rootDisk=22.4GB/68.4GB (32.8%), load=5.89/4.18/3.29, temp=72.8°C (hwmon2), cpu=24.3% +2026/09/24 11:50:19 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:50:19 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:50:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:50:19 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:50:19 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:50:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:19 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:50:29 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:50:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:29 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:50:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:29 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:50:29 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:50:29 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:50:39 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:50:39 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:50:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:39 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:50:39 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:50:39 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:50:49 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=22.4 GB avail=42.4GB (32.8%) +2026/09/24 11:50:49 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:50:49 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:50:49 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:50:49 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:50:49 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:50:49 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.4 GB avail=42.4GB (32.8%) +2026/09/24 11:50:49 fillwatch.go:256: [INFO] [fillwatch] checked 7 filesystem(s), 0 unreadable/skipped, 0 notification(s); bands: all ok +2026/09/24 11:50:49 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:50:49 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:50:49 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:50:49 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:50:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:50:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:49 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:50:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:50:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:50:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:50:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:50:59 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:50:59 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:51:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:51:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:51:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:51:09 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:51:09 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:51:19 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:51:19 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5165MB avail≈20733MB +2026/09/24 11:51:19 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24588908 → total=25898MB avail=20733MB used=5165MB (19.9%) +2026/09/24 11:51:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.4GB avail=42.4GB (32.8%) +2026/09/24 11:51:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:51:19 info.go:13: [DEBUG] [system] readLoadAvg: raw="3.63 3.85 3.23 4/1456 546" → 1m=3.63 5m=3.85 15m=3.23 +2026/09/24 11:51:19 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:51:19 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 66.0°C (hwmon2) +2026/09/24 11:51:19 info.go:13: [DEBUG] [system] GetInfo done in 72ms — mem=5165MB/25898MB (19.9%), rootDisk=22.4GB/68.4GB (32.8%), load=3.63/3.85/3.23, temp=66.0°C (hwmon2), cpu=25.3% +2026/09/24 11:51:19 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan +2026/09/24 11:51:19 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting +2026/09/24 11:51:19 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:51:19 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:51:19 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:51:19 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:51:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 11:51:19 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 11:51:19 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 11:51:19 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 11:51:19 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 86ms) +2026/09/24 11:51:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:19 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:51:19 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:51:19 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:51:29 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:51:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:51:29 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:51:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:29 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:51:39 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:51:39 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:51:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:39 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:51:39 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:51:39 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:51:49 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:51:49 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:51:49 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:51:49 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:51:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:49 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:51:49 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:51:49 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:51:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:51:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:51:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:51:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:51:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:52:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:52:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:52:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:52:09 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:52:09 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:52:19 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:52:19 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5163MB avail≈20735MB +2026/09/24 11:52:19 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24590992 → total=25898MB avail=20735MB used=5163MB (19.9%) +2026/09/24 11:52:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.4GB avail=42.4GB (32.8%) +2026/09/24 11:52:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:52:19 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.41 3.46 3.14 7/1471 709" → 1m=2.41 5m=3.46 15m=3.14 +2026/09/24 11:52:19 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:52:19 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 65.1°C (hwmon2) +2026/09/24 11:52:19 info.go:13: [DEBUG] [system] GetInfo done in 78ms — mem=5163MB/25898MB (19.9%), rootDisk=22.4GB/68.4GB (32.8%), load=2.41/3.46/3.14, temp=65.1°C (hwmon2), cpu=25.5% +2026/09/24 11:52:19 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:52:19 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:52:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:19 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:52:19 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:52:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:52:19 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:52:29 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:52:29 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:52:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:29 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:52:29 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:52:29 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:52:39 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:52:39 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:52:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:52:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:39 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:52:49 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:52:49 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:52:49 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:52:49 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:52:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:49 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:52:49 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:52:49 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:52:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:52:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:52:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:52:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:52:59 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:52:59 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:53:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:53:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:53:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:53:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:53:19 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:53:19 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5134MB avail≈20764MB +2026/09/24 11:53:19 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24624784 → total=25898MB avail=20764MB used=5134MB (19.8%) +2026/09/24 11:53:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.4GB avail=42.4GB (32.8%) +2026/09/24 11:53:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:53:19 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.70 3.33 3.10 8/1459 862" → 1m=2.70 5m=3.33 15m=3.10 +2026/09/24 11:53:19 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:53:19 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 65.4°C (hwmon2) +2026/09/24 11:53:19 info.go:13: [DEBUG] [system] GetInfo done in 73ms — mem=5134MB/25898MB (19.8%), rootDisk=22.4GB/68.4GB (32.8%), load=2.70/3.33/3.10, temp=65.4°C (hwmon2), cpu=24.7% +2026/09/24 11:53:19 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan +2026/09/24 11:53:19 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting +2026/09/24 11:53:19 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:53:19 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:53:19 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:53:19 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:53:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 11:53:19 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 11:53:19 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 11:53:19 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 11:53:19 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 91ms) +2026/09/24 11:53:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:19 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:53:19 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:53:19 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:53:29 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:53:29 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:53:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:53:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 4m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 4m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 4m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:29 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:53:39 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:53:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 4m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 4m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 4m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:39 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:53:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 4m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:39 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:53:39 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:53:39 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:53:49 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:53:49 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:53:49 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:53:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 4m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 4m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 4m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:49 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:53:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 4m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:49 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:53:49 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:53:49 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:53:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:53:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 4m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 4m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:53:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 4m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 4m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:53:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:53:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:54:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:54:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 4m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 4m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 4m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:54:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 4m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:54:09 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:54:09 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5169MB avail≈20729MB +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24583400 → total=25898MB avail=20729MB used=5169MB (20.0%) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.4GB avail=42.4GB (32.8%) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.13 3.04 3.02 6/1458 1026" → 1m=2.13 5m=3.04 15m=3.02 +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 64.1°C (hwmon2) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetInfo done in 75ms — mem=5169MB/25898MB (20.0%), rootDisk=22.4GB/68.4GB (32.8%), load=2.13/3.04/3.02, temp=64.1°C (hwmon2), cpu=24.1% +2026/09/24 11:54:19 scheduler.go:346: [INFO] [scheduler] Running job: system-health +2026/09/24 11:54:19 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:54:19 scheduler.go:346: [INFO] [scheduler] Running job: offsite-credential-retry +2026/09/24 11:54:19 scheduler.go:67: [DEBUG] [scheduler] job offsite-credential-retry: execution starting +2026/09/24 11:54:19 scheduler.go:363: [INFO] [scheduler] Job offsite-credential-retry completed (took 0s) +2026/09/24 11:54:19 scheduler.go:67: [DEBUG] [scheduler] job system-health: execution starting +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:54:19 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:54:19 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:54:19 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:54:19 scheduler.go:346: [INFO] [scheduler] Running job: backup-cache +2026/09/24 11:54:19 scheduler.go:67: [DEBUG] [scheduler] job backup-cache: execution starting +2026/09/24 11:54:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 4m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 4m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 4m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 4m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:19 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:54:19 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:54:19 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:54:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/navidrome → [navidrome] +2026/09/24 11:54:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/nextcloud → [nextcloud] +2026/09/24 11:54:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx → [paperless-ngx] +2026/09/24 11:54:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/romm → [romm] +2026/09/24 11:54:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/sys_drive → [gokapi, privatebin, vikunja, wishlist, chaosoom] +2026/09/24 11:54:19 backup.go:1119: [INFO] [backup] Found 9 DB dump files across drives +2026/09/24 11:54:19 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5153MB avail≈20745MB +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24602912 → total=25898MB avail=20745MB used=5153MB (19.9%) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.4GB avail=42.4GB (32.8%) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.13 3.04 3.02 11/1478 1088" → 1m=2.13 5m=3.04 15m=3.02 +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:54:19 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 86ba63e28bd7 felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1 +557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0 +8ed284296786 romm-db romm mariadb:11.8 +0a82332f8e1c romm romm rommapp/romm:5.3.1 +9ec77cdb422a romm-redis romm redis:7-alpine +d9846695ae0d wishlist wishlist ghcr.io/cmintey/wishlist:v0.67.1 +8867e567d339 privatebin privatebin privatebin/pdo:2.0.6 +0732d8573acd paperless-webserver paperless-ngx ghcr.io/paperless-ngx/paperless-ngx:2.20.15 +3df88f0fdd1d paperless-redis pap... +2026/09/24 11:54:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 11:54:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 11:54:19 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 64.5°C (hwmon2) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetInfo done in 97ms — mem=5153MB/25898MB (19.9%), rootDisk=22.4GB/68.4GB (32.8%), load=2.13/3.04/3.02, temp=64.5°C (hwmon2), cpu=24.1% +2026/09/24 11:54:19 healthcheck.go:86: [DEBUG] [monitor] Raw values: disk=32.8%, hdd=7.8% (configured=true), mem=19.9% (5153MB/25898MB), cpu=24.1%, temp=64.5°C (hwmon2) +2026/09/24 11:54:19 healthcheck.go:118: [DEBUG] [monitor] SSD disk: OK (33%) +2026/09/24 11:54:19 healthcheck.go:151: [DEBUG] [monitor] Memory: OK (20%) +2026/09/24 11:54:19 healthcheck.go:169: [DEBUG] [monitor] CPU: OK (24%) +2026/09/24 11:54:19 healthcheck.go:187: [DEBUG] [monitor] Temperature: OK (64°C) +2026/09/24 11:54:19 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 11:54:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 11:54:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 11:54:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database) +2026/09/24 11:54:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 11:54:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 11:54:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 11:54:19 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973) +2026/09/24 11:54:19 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 11:54:19 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 11:54:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database) +2026/09/24 11:54:19 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=9837f4d677cb) +2026/09/24 11:54:19 healthcheck.go:201: [DEBUG] [monitor] Docker daemon: OK +2026/09/24 11:54:19 healthcheck.go:209: [DEBUG] [monitor] Checking 1 protected containers: [traefik] +2026/09/24 11:54:19 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 11:54:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database) +2026/09/24 11:54:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database) +2026/09/24 11:54:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 11:54:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 11:54:19 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 13 non-DB container(s) +2026/09/24 11:54:19 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 2 HDD mounts for /opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:54:19 healthcheck.go:219: [DEBUG] [monitor] All protected containers running +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:54:19 healthcheck.go:238: [INFO] [monitor] Health check: status=warn +2026/09/24 11:54:19 healthcheck.go:242: [DEBUG] [monitor] Final status: warn (issues=0, warnings=4, info=5) +2026/09/24 11:54:19 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event health_change (severity warning) — further health_change events are logged at DEBUG only +2026/09/24 11:54:19 scheduler.go:363: [INFO] [scheduler] Job system-health completed (took 188ms) +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:54:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:54:19 [INFO] [backup] Discovered app data: 9 apps +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.4 GB avail=42.4GB (32.8%) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.4 GB avail=42.4GB (32.8%) +2026/09/24 11:54:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.4 GB avail=42.4GB (32.8%) +2026/09/24 11:54:19 backup.go:1189: [INFO] [backup] Backup status cache refreshed +2026/09/24 11:54:19 scheduler.go:363: [INFO] [scheduler] Job backup-cache completed (took 201ms) +2026/09/24 11:54:19 infra.go:67: [INFO] [infra] cloudflared skipped — no cf_tunnel_token configured (LAN-only node) +2026/09/24 11:54:29 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:54:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:54:29 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:54:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 4m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:29 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 3 targets (4 skipped not due, 0 skipped no container) +2026/09/24 11:54:29 healthprobe.go:181: [DEBUG] Health probe navidrome: API GET :4533/ping → 200 (1ms) +2026/09/24 11:54:29 healthprobe.go:181: [DEBUG] Health probe privatebin: HTTP GET :8080/ → 200 (4ms) +2026/09/24 11:54:29 healthprobe.go:181: [DEBUG] Health probe nextcloud: API GET :80/status.php → 200 (37ms) +2026/09/24 11:54:29 healthprobe.go:161: [INFO] Health probes: 3 ok (of 3 probed) +2026/09/24 11:54:39 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:54:39 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:54:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:39 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 2 targets (5 skipped not due, 0 skipped no container) +2026/09/24 11:54:39 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:54:39 healthprobe.go:181: [DEBUG] Health probe wishlist: HTTP GET :3000/ → 307 (4ms) +2026/09/24 11:54:39 healthprobe.go:159: [WARN] Health probes: 1 ok, 1 unhealthy (of 2 probed) +2026/09/24 11:54:49 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:54:49 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:54:49 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:54:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:54:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:49 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:54:49 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:54:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:54:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:54:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:54:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:54:59 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:54:59 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:55:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:55:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 5m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:55:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 5m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:55:09 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:55:09 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:55:19 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:55:19 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5185MB avail≈20713MB +2026/09/24 11:55:19 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24564144 → total=25898MB avail=20713MB used=5185MB (20.0%) +2026/09/24 11:55:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.4GB avail=42.4GB (32.8%) +2026/09/24 11:55:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:55:19 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.19 2.89 2.97 5/1454 1321" → 1m=2.19 5m=2.89 15m=2.97 +2026/09/24 11:55:19 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:55:19 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 67.0°C (hwmon2) +2026/09/24 11:55:19 info.go:13: [DEBUG] [system] GetInfo done in 72ms — mem=5185MB/25898MB (20.0%), rootDisk=22.4GB/68.4GB (32.8%), load=2.19/2.89/2.97, temp=67.0°C (hwmon2), cpu=24.2% +2026/09/24 11:55:19 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:55:19 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:55:19 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:55:19 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan +2026/09/24 11:55:19 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting +2026/09/24 11:55:19 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:55:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:19 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 3 targets (4 skipped not due, 0 skipped no container) +2026/09/24 11:55:19 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 11:55:19 healthprobe.go:181: [DEBUG] Health probe romm: HTTP GET :8080/ → 200 (1ms) +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 11:55:19 healthprobe.go:181: [DEBUG] Health probe paperless-ngx: HTTP GET :8000/ → 302 (4ms) +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:55:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 11:55:19 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 11:55:19 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 11:55:19 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 11:55:19 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 99ms) +2026/09/24 11:55:19 healthprobe.go:159: [WARN] Health probes: 2 ok, 1 unhealthy (of 3 probed) +2026/09/24 11:55:29 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:55:29 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:55:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:29 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:55:29 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:55:29 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:55:39 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:55:39 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:55:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:55:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:39 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:55:49 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:55:49 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:55:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:49 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:55:49 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:55:49 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:55:49 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:55:49 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:55:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:55:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:55:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:55:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:55:59 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:55:59 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:56:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:56:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:56:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:56:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:56:19 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:56:19 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5145MB avail≈20753MB +2026/09/24 11:56:19 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24612316 → total=25898MB avail=20753MB used=5145MB (19.9%) +2026/09/24 11:56:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.4GB avail=42.4GB (32.8%) +2026/09/24 11:56:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:56:19 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.59 2.83 2.94 8/1455 1482" → 1m=2.59 5m=2.83 15m=2.94 +2026/09/24 11:56:19 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:56:19 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 67.4°C (hwmon2) +2026/09/24 11:56:19 info.go:13: [DEBUG] [system] GetInfo done in 70ms — mem=5145MB/25898MB (19.9%), rootDisk=22.4GB/68.4GB (32.8%), load=2.59/2.83/2.94, temp=67.4°C (hwmon2), cpu=22.5% +2026/09/24 11:56:19 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:56:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:19 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:56:19 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:56:19 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:56:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:19 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:56:19 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:56:19 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:56:29 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:56:29 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:56:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:29 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:56:29 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:56:29 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:56:39 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:56:39 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:56:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:39 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:56:39 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:56:39 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:56:49 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:56:49 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:56:49 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:56:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:56:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:49 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:56:49 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:56:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:56:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:56:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:56:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:56:59 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:56:59 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:57:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:57:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:57:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:57:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:57:19 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:57:19 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5139MB avail≈20759MB +2026/09/24 11:57:19 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24619376 → total=25898MB avail=20759MB used=5139MB (19.8%) +2026/09/24 11:57:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.4GB avail=42.4GB (32.8%) +2026/09/24 11:57:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:57:19 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.24 2.70 2.89 4/1453 1634" → 1m=2.24 5m=2.70 15m=2.89 +2026/09/24 11:57:19 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:57:19 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 66.1°C (hwmon2) +2026/09/24 11:57:19 info.go:13: [DEBUG] [system] GetInfo done in 69ms — mem=5139MB/25898MB (19.8%), rootDisk=22.4GB/68.4GB (32.8%), load=2.24/2.70/2.89, temp=66.1°C (hwmon2), cpu=24.2% +2026/09/24 11:57:19 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:57:19 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan +2026/09/24 11:57:19 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting +2026/09/24 11:57:19 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:57:19 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:57:19 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:57:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:19 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:57:19 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:57:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 11:57:19 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 11:57:19 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 11:57:19 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 11:57:19 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 120ms) +2026/09/24 11:57:19 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:57:29 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:57:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:57:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:29 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:57:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:29 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:57:39 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:57:39 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:57:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:39 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:57:39 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:57:39 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:57:49 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:57:49 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:57:49 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:57:49 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:57:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:49 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:57:49 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:57:49 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:57:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:57:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:57:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:57:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:57:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:58:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:58:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:58:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:58:09 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:58:09 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:58:19 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:58:19 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5186MB avail≈20712MB +2026/09/24 11:58:19 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24563172 → total=25898MB avail=20712MB used=5186MB (20.0%) +2026/09/24 11:58:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.4GB avail=42.4GB (32.8%) +2026/09/24 11:58:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:58:19 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.12 2.59 2.83 5/1457 1803" → 1m=2.12 5m=2.59 15m=2.83 +2026/09/24 11:58:19 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:58:19 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 65.8°C (hwmon2) +2026/09/24 11:58:19 info.go:13: [DEBUG] [system] GetInfo done in 66ms — mem=5186MB/25898MB (20.0%), rootDisk=22.4GB/68.4GB (32.8%), load=2.12/2.59/2.83, temp=65.8°C (hwmon2), cpu=23.8% +2026/09/24 11:58:19 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:58:19 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:58:19 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:58:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:19 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:58:19 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:58:19 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:58:19 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:58:29 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:58:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 4m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:58:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 4m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 4m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:29 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:58:29 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:58:39 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:58:39 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:58:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 4m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 4m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 4m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 4m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:39 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:58:39 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:58:39 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:58:49 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:58:49 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:58:49 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:58:49 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:58:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 4m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 4m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 4m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 4m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:49 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:58:49 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:58:49 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:58:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:58:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:58:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 4m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 4m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:58:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 4m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 4m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:58:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:59:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:59:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:59:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 4m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 4m30s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 4m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 4m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 11:59:09 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:59:09 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5236MB avail≈20662MB +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24503484 → total=25898MB avail=20662MB used=5236MB (20.2%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.4GB avail=42.4GB (32.8%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.07 2.49 2.79 5/1454 1957" → 1m=2.07 5m=2.49 15m=2.79 +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 66.8°C (hwmon2) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetInfo done in 67ms — mem=5236MB/25898MB (20.2%), rootDisk=22.4GB/68.4GB (32.8%), load=2.07/2.49/2.79, temp=66.8°C (hwmon2), cpu=23.3% +2026/09/24 11:59:19 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 11:59:19 scheduler.go:346: [INFO] [scheduler] Running job: backup-cache +2026/09/24 11:59:19 scheduler.go:67: [DEBUG] [scheduler] job backup-cache: execution starting +2026/09/24 11:59:19 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 11:59:19 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:59:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 4m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 4m40s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:59:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 4m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:19 scheduler.go:346: [INFO] [scheduler] Running job: system-health +2026/09/24 11:59:19 scheduler.go:67: [DEBUG] [scheduler] job system-health: execution starting +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 11:59:19 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan +2026/09/24 11:59:19 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting +2026/09/24 11:59:19 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:59:19 scheduler.go:346: [INFO] [scheduler] Running job: offsite-credential-retry +2026/09/24 11:59:19 scheduler.go:67: [DEBUG] [scheduler] job offsite-credential-retry: execution starting +2026/09/24 11:59:19 scheduler.go:363: [INFO] [scheduler] Job offsite-credential-retry completed (took 0s) +2026/09/24 11:59:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 4m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:19 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:59:19 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 11:59:19 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 11:59:19 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 11:59:19 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5234MB avail≈20664MB +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24507244 → total=25898MB avail=20664MB used=5234MB (20.2%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.4GB avail=42.4GB (32.8%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.07 2.49 2.79 6/1473 2006" → 1m=2.07 5m=2.49 15m=2.79 +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 66.8°C (hwmon2) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetInfo done in 79ms — mem=5234MB/25898MB (20.2%), rootDisk=22.4GB/68.4GB (32.8%), load=2.07/2.49/2.79, temp=66.8°C (hwmon2), cpu=26.9% +2026/09/24 11:59:19 healthcheck.go:86: [DEBUG] [monitor] Raw values: disk=32.8%, hdd=7.8% (configured=true), mem=20.2% (5234MB/25898MB), cpu=26.9%, temp=66.8°C (hwmon2) +2026/09/24 11:59:19 healthcheck.go:118: [DEBUG] [monitor] SSD disk: OK (33%) +2026/09/24 11:59:19 healthcheck.go:151: [DEBUG] [monitor] Memory: OK (20%) +2026/09/24 11:59:19 healthcheck.go:169: [DEBUG] [monitor] CPU: OK (27%) +2026/09/24 11:59:19 healthcheck.go:187: [DEBUG] [monitor] Temperature: OK (67°C) +2026/09/24 11:59:19 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 93ms) +2026/09/24 11:59:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/sys_drive → [gokapi, privatebin, vikunja, wishlist, chaosoom] +2026/09/24 11:59:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/navidrome → [navidrome] +2026/09/24 11:59:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/nextcloud → [nextcloud] +2026/09/24 11:59:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx → [paperless-ngx] +2026/09/24 11:59:19 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/romm → [romm] +2026/09/24 11:59:19 backup.go:1119: [INFO] [backup] Found 9 DB dump files across drives +2026/09/24 11:59:19 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 11:59:19 healthcheck.go:201: [DEBUG] [monitor] Docker daemon: OK +2026/09/24 11:59:19 healthcheck.go:209: [DEBUG] [monitor] Checking 1 protected containers: [traefik] +2026/09/24 11:59:19 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 86ba63e28bd7 felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1 +557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0 +8ed284296786 romm-db romm mariadb:11.8 +0a82332f8e1c romm romm rommapp/romm:5.3.1 +9ec77cdb422a romm-redis romm redis:7-alpine +d9846695ae0d wishlist wishlist ghcr.io/cmintey/wishlist:v0.67.1 +8867e567d339 privatebin privatebin privatebin/pdo:2.0.6 +0732d8573acd paperless-webserver paperless-ngx ghcr.io/paperless-ngx/paperless-ngx:2.20.15 +3df88f0fdd1d paperless-redis pap... +2026/09/24 11:59:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 11:59:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 11:59:19 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786) +2026/09/24 11:59:19 healthcheck.go:219: [DEBUG] [monitor] All protected containers running +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:59:19 healthcheck.go:238: [INFO] [monitor] Health check: status=warn +2026/09/24 11:59:19 healthcheck.go:242: [DEBUG] [monitor] Final status: warn (issues=0, warnings=4, info=5) +2026/09/24 11:59:19 notifier.go:1259: [DEBUG] notifier disabled: dropped event health_change (severity warning) +2026/09/24 11:59:19 scheduler.go:363: [INFO] [scheduler] Job system-health completed (took 166ms) +2026/09/24 11:59:19 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 11:59:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 11:59:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 11:59:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database) +2026/09/24 11:59:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 11:59:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 11:59:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 11:59:19 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973) +2026/09/24 11:59:19 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 11:59:19 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 11:59:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database) +2026/09/24 11:59:19 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=9837f4d677cb) +2026/09/24 11:59:19 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 11:59:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database) +2026/09/24 11:59:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database) +2026/09/24 11:59:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 11:59:19 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 11:59:19 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 13 non-DB container(s) +2026/09/24 11:59:19 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 2 HDD mounts for /opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 11:59:19 infra.go:67: [INFO] [infra] cloudflared skipped — no cf_tunnel_token configured (LAN-only node) +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/romm/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:59:19 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 11:59:19 [INFO] [backup] Discovered app data: 9 apps +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.4 GB avail=42.4GB (32.8%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.4 GB avail=42.4GB (32.8%) +2026/09/24 11:59:19 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.4 GB avail=42.4GB (32.8%) +2026/09/24 11:59:19 backup.go:1189: [INFO] [backup] Backup status cache refreshed +2026/09/24 11:59:19 scheduler.go:363: [INFO] [scheduler] Job backup-cache completed (took 252ms) +2026/09/24 11:59:29 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:59:29 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:59:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 4m50s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:29 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 4 targets (3 skipped not due, 0 skipped no container) +2026/09/24 11:59:29 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 11:59:29 healthprobe.go:181: [DEBUG] Health probe navidrome: API GET :4533/ping → 200 (1ms) +2026/09/24 11:59:29 healthprobe.go:181: [DEBUG] Health probe privatebin: HTTP GET :8080/ → 200 (4ms) +2026/09/24 11:59:29 healthprobe.go:181: [DEBUG] Health probe nextcloud: API GET :80/status.php → 200 (17ms) +2026/09/24 11:59:29 healthprobe.go:159: [WARN] Health probes: 3 ok, 1 unhealthy (of 4 probed) +2026/09/24 11:59:39 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 11:59:39 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 11:59:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 5m0s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 11:59:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m20s ago, effective interval 5m0s, healthy=true +2026/09/24 11:59:39 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 11:59:40 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.11:52882 (X-Forwarded-For: 192.168.0.180) +2026/09/24 11:59:40 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 11:59:40 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T11:59:40Z, active_sessions=2 +2026/09/24 11:59:40 auth.go:222: [INFO] [web] Login from 172.18.0.11:52882 +2026/09/24 11:59:40 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.11:52882 +2026/09/24 11:59:40 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.11:52882 diff --git a/documentation/audits/night-2026-09-24/E/round-02.json b/documentation/audits/night-2026-09-24/E/round-02.json new file mode 100644 index 00000000..47ff99ac --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-02.json @@ -0,0 +1,44 @@ +{ + "round": 2, + "action": "install", + "accident": { + "kind": "docker_restart", + "fired_at": "13:49:08", + "result": "rc=0" + }, + "app": "n8n", + "started": "2026-09-24T11:48:29Z", + "collected_by_hand": true, + "runner_stopped": "13:5x — the install was lost to the docker restart; the runner would have waited 25 min for a deploy that no longer existed", + "after": { + "state": { + "deployed": false, + "state": "not_deployed", + "update_phase": null, + "hold_reason": null, + "hold_kind": null, + "update_error": null, + "ladder_steps_left": null + }, + "leftovers": "app.yaml\napplied-compose.yml\napplied-meta\ndocker-compose.yml" + }, + "readback": null, + "events": [ + "2026-09-24T11:59:19Z health_change (warning)" + ], + "box_log": [ + "2026-09-24T11:49:21Z WARN [api] Unauthorized request to /api/stacks/n8n from 172.18.0.11:52882", + "2026-09-24T11:49:44Z INFO [bootrecon] \"gokapi\" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T10:37:48Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery", + "2026-09-24T11:49:44Z INFO [bootrecon] \"chaosoom\" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T11:48:01Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery", + "2026-09-24T11:54:19Z INFO [scheduler] Running job: backup-cache", + "2026-09-24T11:54:19Z INFO [backup] Found 9 DB dump files across drives", + "2026-09-24T11:54:19Z INFO [backup] Discovered 3 databases", + "2026-09-24T11:54:19Z INFO [backup] Backup status cache refreshed", + "2026-09-24T11:54:19Z INFO [scheduler] Job backup-cache completed (took 201ms)", + "2026-09-24T11:59:19Z INFO [scheduler] Running job: backup-cache", + "2026-09-24T11:59:19Z INFO [backup] Found 9 DB dump files across drives", + "2026-09-24T11:59:19Z INFO [backup] Discovered 3 databases", + "2026-09-24T11:59:19Z INFO [backup] Backup status cache refreshed", + "2026-09-24T11:59:19Z INFO [scheduler] Job backup-cache completed (took 252ms)" + ] +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/round-02.stdout b/documentation/audits/night-2026-09-24/E/round-02.stdout new file mode 100644 index 00000000..72999482 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-02.stdout @@ -0,0 +1,7 @@ +13:48:29 ==== ROUND 2: install on n8n x docker_restart (2026-09-24T11:48:29Z) +13:48:30 drill: n8n at the ladder's first from {'n8n': 'n8nio/n8n:2.31.3'} +13:48:42 + 13.0s n8n: deployed=True state=not_deployed updating=False phase=None hold=None +13:48:52 + 23.2s n8n: deployed=True state=deploying updating=False phase=None hold=None +13:49:02 >>> ARMED accident docker_restart (20 s after the install press) +13:49:11 + 41.4s n8n: deployed=None state=None updating=None phase=None hold=None +13:49:21 + 51.7s n8n: deployed=False state=not_deployed updating=False phase=None hold=None diff --git a/documentation/audits/night-2026-09-24/E/round-02b-reinstall.log b/documentation/audits/night-2026-09-24/E/round-02b-reinstall.log new file mode 100644 index 00000000..ab9903b5 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-02b-reinstall.log @@ -0,0 +1,7 @@ +14:00:08 drill n8n image line: image: n8nio/n8n:2.31.3 +14:00:13 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:03:44 [1] deployed, controller state=running, pinned={'n8n': 'n8nio/n8n:2.31.3'} +14:03:44 deploy ok=True in 211 s pinned={'n8n': 'n8nio/n8n:2.31.3'} +14:03:45 n8n: /rest/owner/setup http=200 +14:03:46 drill: n8n back to the head (2 steps offered) +14:03:57 steps_left=2 badge=[{'title': 'A newer version of this app is available. Select the Update button to start it.', 'text': 'Update available — 1 day ago'}] diff --git a/documentation/audits/night-2026-09-24/E/round-03-controller.log b/documentation/audits/night-2026-09-24/E/round-03-controller.log new file mode 100644 index 00000000..473aca65 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-03-controller.log @@ -0,0 +1,1097 @@ +2026/09/24 12:05:08 main.go:335: [INFO] felhom-controller 0.269.1 starting (customer: demo-hp, domain: enkisfelhom.hu) +2026/09/24 12:05:08 settings.go:709: [INFO] [settings] Loaded settings from /opt/docker/felhom-controller/data/settings.json +2026/09/24 12:05:08 settings.go:1671: [DEBUG] [settings] AutoDiscoverStoragePaths discovered=[/mnt/felhom-drives/scratch_hdd/userdata/navidrome /mnt/felhom-drives/scratch_hdd/userdata/nextcloud /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx /mnt/felhom-drives/scratch_hdd/userdata/romm] fallback="" existing=5 +2026/09/24 12:05:08 main.go:361: [INFO] Encryption key loaded from /opt/docker/felhom-controller/data/encryption.key +2026/09/24 12:05:09 manager.go:328: [INFO] [stacks] Using compose command: docker compose +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:05:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:05:09 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:05:09 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:05:09 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:05:09 deploy.go:1104: [DEBUG] [stacks] InjectMissingFields: checking 10 stacks +2026/09/24 12:05:09 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack gokapi — 3 deploy fields, 3 existing env vars +2026/09/24 12:05:09 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack vikunja — 3 deploy fields, 3 existing env vars +2026/09/24 12:05:09 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack chaosoom — 2 deploy fields, 2 existing env vars +2026/09/24 12:05:09 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack privatebin — 2 deploy fields, 2 existing env vars +2026/09/24 12:05:09 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack romm — 6 deploy fields, 6 existing env vars +2026/09/24 12:05:09 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack wishlist — 2 deploy fields, 2 existing env vars +2026/09/24 12:05:09 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack navidrome — 3 deploy fields, 3 existing env vars +2026/09/24 12:05:09 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack paperless-ngx — 8 deploy fields, 8 existing env vars +2026/09/24 12:05:09 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack nextcloud — 7 deploy fields, 7 existing env vars +2026/09/24 12:05:09 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack n8n — 3 deploy fields, 3 existing env vars +2026/09/24 12:05:09 deploy.go:1189: [INFO] [stacks] InjectMissingFields: processed 10 stacks +2026/09/24 12:05:09 manager.go:467: [DEBUG] [stacks] MigrateEncryption: checking 10 deployed stacks for plaintext sensitive values +2026/09/24 12:05:09 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "gokapi" (1 sensitive fields) +2026/09/24 12:05:09 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "vikunja" (1 sensitive fields) +2026/09/24 12:05:09 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "romm" (3 sensitive fields) +2026/09/24 12:05:09 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "paperless-ngx" (3 sensitive fields) +2026/09/24 12:05:09 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "nextcloud" (3 sensitive fields) +2026/09/24 12:05:09 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "n8n" (1 sensitive fields) +2026/09/24 12:05:09 manager.go:511: [INFO] [stacks] Encryption migration: no stacks needed migration +2026/09/24 12:05:09 desiredstate.go:137: [INFO] [stacks] desired-state backfill: 0 app(s) recorded as running, 0 left unrecorded (state ambiguous — legacy boot behaviour retained) +2026/09/24 12:05:09 installed.go:537: [INFO] [stacks] installed-images backfill: 0 app(s) recorded, 10 already had a record, 0 left unrecorded (could not be observed completely — unknown, which renders nothing) +2026/09/24 12:05:09 pin.go:290: [INFO] [stacks] pin adoption: 0 pinned, 10 already pinned, 0 left unpinned (0 not completely observed, 0 running something the template no longer offers) +2026/09/24 12:05:09 undo.go:656: [INFO] [stacks] applied-meta backfill (R-646): recorded 0 []; skipped 0 [] — not current with the catalog, their pinned version's .felhom.yml is no longer on the box +2026/09/24 12:05:09 sync.go:117: [INFO] [sync] Starting catalog sync (repo: https://gitea.dooplex.hu/admin/app-catalog-drill.git, interval: 15m0s) +2026/09/24 12:05:09 sync.go:208: [INFO] [sync] Starting catalog sync +2026/09/24 12:05:09 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main) +2026/09/24 12:05:09 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache +2026/09/24 12:05:09 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main +2026/09/24 12:05:09 update.go:1335: [WARN] [stacks] update recovery: nextcloud was interrupted in verifying (started 2026-09-24T12:04:21Z) — the new version may have run; marking it Updating and RESUMING the health wait +2026/09/24 12:05:09 main.go:495: [WARN] [update] 1 interrupted update(s) will resume after the backup side is wired: [nextcloud] +2026/09/24 12:05:09 info.go:13: [DEBUG] [system] CPUCollector.Start: sampleRate=5s +2026/09/24 12:05:09 main.go:515: [INFO] Metrics store opened at /opt/docker/felhom-controller/data/metrics.db +2026/09/24 12:05:09 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:05:09 main.go:527: [INFO] Metrics collector started (60s interval) +2026/09/24 12:05:09 restore_record_wiring.go:35: [INFO] [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false) +2026/09/24 12:05:09 main.go:576: [WARN] [update] resumed 1 interrupted update(s) +2026/09/24 12:05:09 notifier.go:81: [INFO] Notifier disabled (hub not configured) +2026/09/24 12:05:09 main.go:692: [INFO] [mailrelay] app-email shim unavailable (no hub configured or disabled in config) +2026/09/24 12:05:09 scheduler.go:102: [INFO] [scheduler] Registered periodic job: status-refresh (every 10s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="status-refresh" interval=10s totalJobs=1 +2026/09/24 12:05:09 scheduler.go:102: [INFO] [scheduler] Registered periodic job: stack-scan (every 2m0s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="stack-scan" interval=2m0s totalJobs=2 +2026/09/24 12:05:09 scheduler.go:102: [INFO] [scheduler] Registered periodic job: health-probes (every 10s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="health-probes" interval=10s totalJobs=3 +2026/09/24 12:05:09 scheduler.go:102: [INFO] [scheduler] Registered periodic job: system-health (every 5m0s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="system-health" interval=5m0s totalJobs=4 +2026/09/24 12:05:09 scheduler.go:102: [INFO] [scheduler] Registered periodic job: deadapp-check (every 30s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="deadapp-check" interval=30s totalJobs=5 +2026/09/24 12:05:09 scheduler.go:102: [INFO] [scheduler] Registered periodic job: ring-spill (every 30s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="ring-spill" interval=30s totalJobs=6 +2026/09/24 12:05:09 scheduler.go:132: [INFO] [scheduler] Daily job db-dump scheduled for 2026-09-25 13:20 CEST +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="db-dump" schedule="13:20" nextRun=2026-09-25T13:20:00+02:00 totalJobs=7 +2026/09/24 12:05:09 scheduler.go:102: [INFO] [scheduler] Registered periodic job: offsite-credential-retry (every 5m0s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="offsite-credential-retry" interval=5m0s totalJobs=8 +2026/09/24 12:05:09 scheduler.go:102: [INFO] [scheduler] Registered periodic job: backup-cache (every 5m0s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="backup-cache" interval=5m0s totalJobs=9 +2026/09/24 12:05:09 scheduler.go:132: [INFO] [scheduler] Daily job tier2-backup scheduled for 2026-09-24 14:20 CEST +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="tier2-backup" schedule="14:20" nextRun=2026-09-24T14:20:00+02:00 totalJobs=10 +2026/09/24 12:05:09 scheduler.go:132: [INFO] [scheduler] Daily job offbox-backup scheduled for 2026-09-24 15:05 CEST +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offbox-backup" schedule="15:05" nextRun=2026-09-24T15:05:00+02:00 totalJobs=11 +2026/09/24 12:05:09 scheduler.go:132: [INFO] [scheduler] Daily job offsite-abandon-sweep scheduled for 2026-09-25 05:10 CEST +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-abandon-sweep" schedule="05:10" nextRun=2026-09-25T05:10:00+02:00 totalJobs=12 +2026/09/24 12:05:09 scheduler.go:132: [INFO] [scheduler] Daily job offsite-integrity scheduled for 2026-09-25 06:00 CEST +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-integrity" schedule="06:00" nextRun=2026-09-25T06:00:00+02:00 totalJobs=13 +2026/09/24 12:05:09 scheduler.go:132: [INFO] [scheduler] Daily job offsite-proof scheduled for 2026-09-25 05:30 CEST +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-proof" schedule="05:30" nextRun=2026-09-25T05:30:00+02:00 totalJobs=14 +2026/09/24 12:05:09 scheduler.go:132: [INFO] [scheduler] Daily job metrics-prune scheduled for 2026-09-25 04:00 CEST +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="metrics-prune" schedule="04:00" nextRun=2026-09-25T04:00:00+02:00 totalJobs=15 +2026/09/24 12:05:09 scheduler.go:132: [INFO] [scheduler] Daily job fill-watch scheduled for 2026-09-25 03:30 CEST +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="fill-watch" schedule="03:30" nextRun=2026-09-25T03:30:00+02:00 totalJobs=16 +2026/09/24 12:05:09 selftest.go:50: [INFO] ========== Startup Self-Test ========== +2026/09/24 12:05:09 update.go:1382: [INFO] [stacks] update nextcloud: resuming after a controller restart — `up -d` then the health wait +2026/09/24 12:05:09 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping ensure (held by drive gate) +2026/09/24 12:05:09 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, NEXTCLOUD_ADMIN_USER, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system) +2026/09/24 12:05:09 manager.go:1463: [DEBUG] Running: docker compose up -d --remove-orphans (in /opt/docker/stacks/nextcloud) +2026/09/24 12:05:09 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4214MB avail≈21684MB +2026/09/24 12:05:09 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25715968 → total=25898MB avail=21684MB used=4214MB (16.3%) +2026/09/24 12:05:09 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%) +2026/09/24 12:05:09 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:05:09 info.go:13: [DEBUG] [system] readLoadAvg: raw="6.97 3.81 3.18 25/1488 132" → 1m=6.97 5m=3.81 15m=3.18 +2026/09/24 12:05:09 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:05:09 selftest.go:68: [INFO] [PASS] Docker socket: reachable (v29.8.0) +2026/09/24 12:05:09 selftest.go:68: [INFO] [PASS] Stacks directory: /opt/docker/stacks +2026/09/24 12:05:09 selftest.go:68: [INFO] [PASS] Data directory: /opt/docker/felhom-controller/data (writable) +2026/09/24 12:05:09 selftest.go:68: [INFO] [PASS] System data path: /mnt/sys_drive +2026/09/24 12:05:09 selftest.go:68: [INFO] [PASS] Storage paths: 1 connected, 4 disconnected +2026/09/24 12:05:09 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 84.9°C (hwmon2) +2026/09/24 12:05:09 info.go:13: [DEBUG] [system] GetInfo done in 297ms — mem=4214MB/25898MB (16.3%), rootDisk=25.5GB/68.4GB (37.3%), load=6.97/3.81/3.18, temp=84.9°C (hwmon2), cpu=0.0% +2026/09/24 12:05:09 selftest.go:68: [INFO] [PASS] Git catalog: 56 app definitions found +2026/09/24 12:05:09 selftest.go:68: [INFO] [PASS] Hub connectivity: hub disabled, skipped +2026/09/24 12:05:09 selftest.go:68: [INFO] [PASS] Metrics DB: 8.2 MB +2026/09/24 12:05:09 selftest.go:70: [INFO] ======================================== +2026/09/24 12:05:09 selftest.go:71: [INFO] Self-test complete: 8 passed, 0 warnings, 0 failed +2026/09/24 12:05:09 scheduler.go:206: [INFO] [scheduler] Starting scheduler with 16 jobs +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] scheduler started: periodic=8 daily=8 +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job db-dump: next run at 2026-09-25 13:20:00 CEST (waiting 23h14m50s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-abandon-sweep: next run at 2026-09-25 05:10:00 CEST (waiting 15h4m50s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job tier2-backup: next run at 2026-09-24 14:20:00 CEST (waiting 14m50s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job offbox-backup: next run at 2026-09-24 15:05:00 CEST (waiting 59m50s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-proof: next run at 2026-09-25 05:30:00 CEST (waiting 15h24m50s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-integrity: next run at 2026-09-25 06:00:00 CEST (waiting 15h54m50s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job metrics-prune: next run at 2026-09-25 04:00:00 CEST (waiting 13h54m50s) +2026/09/24 12:05:09 scheduler.go:67: [DEBUG] [scheduler] daily job fill-watch: next run at 2026-09-25 03:30:00 CEST (waiting 13h24m50s) +2026/09/24 12:05:09 server.go:250: [DEBUG] [web] NewServer: initializing web server v0.269.1 +2026/09/24 12:05:09 server.go:251: [DEBUG] [web] NewServer: backup=true scheduler=true alertMgr=true notifier=true updater=false +2026/09/24 12:05:09 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:05:09 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/sys_drive → [gokapi, privatebin, vikunja, wishlist, chaosoom, n8n] +2026/09/24 12:05:09 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/navidrome → [navidrome] +2026/09/24 12:05:09 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/nextcloud → [nextcloud] +2026/09/24 12:05:09 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx → [paperless-ngx] +2026/09/24 12:05:09 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/romm → [romm] +2026/09/24 12:05:09 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (18154 bytes) +2026/09/24 12:05:09 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:05:09 backup.go:1119: [INFO] [backup] Found 10 DB dump files across drives +2026/09/24 12:05:09 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 12:05:09 server.go:327: [DEBUG] [web] loadTemplates: lang=hu loaded 81 templates, 1886 markers expanded in 69.715055ms +2026/09/24 12:05:10 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 115834f20aff felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1 +288d09cb58a8 nextcloud nextcloud nextcloud:34.0.4-apache +d86159baa61d nextcloud-redis nextcloud redis:7.4.0-alpine +7c438417f177 nextcloud-db nextcloud mariadb:12.3 +49227c9e347d n8n n8n n8nio/n8n:2.31.3 +557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0 +8ed284296786 romm-db romm mariadb:11.8 +0a82332f8e1c romm romm rommapp/romm:5.3.1 +9ec77cdb422a romm-redis romm redis:7-alpine +d9846695ae0d wishlist wishlist ghcr.io/cm... +2026/09/24 12:05:10 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 12:05:10 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database) +2026/09/24 12:05:10 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7.4.0-alpine, not a database) +2026/09/24 12:05:10 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=7c438417f177) +2026/09/24 12:05:10 server.go:327: [DEBUG] [web] loadTemplates: lang=en loaded 81 templates, 1886 markers expanded in 292.888417ms +2026/09/24 12:05:10 server.go:270: [INFO] [web] Auth: using password from settings.json +2026/09/24 12:05:10 server.go:814: [DEBUG] [web] CatchAllMiddleware: controller host=felhom.enkisfelhom.hu +2026/09/24 12:05:10 main.go:1950: [INFO] Web UI listening on :8080 +2026/09/24 12:05:10 infra.go:228: [INFO] [infra] connected felhom-controller to traefik-public +2026/09/24 12:05:10 infra.go:67: [INFO] [infra] cloudflared skipped — no cf_tunnel_token configured (LAN-only node) +2026/09/24 12:05:10 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 12:05:10 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container n8n (image=n8nio/n8n:2.31.3, not a database) +2026/09/24 12:05:10 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 12:05:10 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786) +2026/09/24 12:05:10 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping userdata skeleton +2026/09/24 12:05:10 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx not mounted — skipping userdata skeleton +2026/09/24 12:05:10 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/romm not mounted — skipping userdata skeleton +2026/09/24 12:05:10 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/navidrome not mounted — skipping userdata skeleton +2026/09/24 12:05:10 manager.go:258: [DEBUG] [integrations] ReapplyConfigForTarget: target=filebrowser integrations=0 +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4259MB avail≈21639MB +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25662836 → total=25898MB avail=21639MB used=4259MB (16.4%) +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%) +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] readLoadAvg: raw="6.97 3.81 3.18 20/1511 227" → 1m=6.97 5m=3.81 15m=3.18 +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 84.2°C (hwmon2) +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] GetInfo done in 542ms — mem=4259MB/25898MB (16.4%), rootDisk=25.5GB/68.4GB (37.3%), load=6.97/3.81/3.18, temp=84.2°C (hwmon2), cpu=0.0% +2026/09/24 12:05:10 healthcheck.go:86: [DEBUG] [monitor] Raw values: disk=37.3%, hdd=7.8% (configured=true), mem=16.4% (4259MB/25898MB), cpu=0.0%, temp=84.2°C (hwmon2) +2026/09/24 12:05:10 healthcheck.go:118: [DEBUG] [monitor] SSD disk: OK (37%) +2026/09/24 12:05:10 healthcheck.go:151: [DEBUG] [monitor] Memory: OK (16%) +2026/09/24 12:05:10 healthcheck.go:179: [WARN] [monitor] Temperature threshold breached: 84°C (limit: 75°C) +2026/09/24 12:05:10 healthcheck.go:182: [DEBUG] [monitor] Temperature: WARN (84°C >= 75°C) +2026/09/24 12:05:10 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 12:05:10 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 12:05:10 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 12:05:10 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database) +2026/09/24 12:05:10 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 12:05:10 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 12:05:10 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 12:05:10 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973) +2026/09/24 12:05:10 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 12:05:10 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 12:05:10 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database) +2026/09/24 12:05:10 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 12:05:10 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 12:05:10 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 14 non-DB container(s) +2026/09/24 12:05:10 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 2 HDD mounts for /opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:05:10 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:05:10 [INFO] [backup] Discovered app data: 10 apps +2026/09/24 12:05:10 handlers.go:3432: [INFO] [web] FileBrowser sync — no config/compose change, ensured running without recreate (5 storage path(s)) +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:05:10 healthcheck.go:201: [DEBUG] [monitor] Docker daemon: OK +2026/09/24 12:05:10 healthcheck.go:209: [DEBUG] [monitor] Checking 1 protected containers: [traefik] +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:05:10 backup.go:1189: [INFO] [backup] Backup status cache refreshed +2026/09/24 12:05:10 healthcheck.go:219: [DEBUG] [monitor] All protected containers running +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:05:10 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:05:10 healthcheck.go:238: [INFO] [monitor] Health check: status=warn +2026/09/24 12:05:10 healthcheck.go:242: [DEBUG] [monitor] Final status: warn (issues=0, warnings=5, info=3) +2026/09/24 12:05:11 sync.go:627: [DEBUG] [sync] Running: git reset --hard origin/main +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] chaoscrash/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] chaoscrash/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] chaosoom/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] chaosoom/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] chaosoomb/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] chaosoomb/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:533: [DEBUG] [sync] n8n: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] n8n/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] navidrome/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] nextcloud/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:533: [DEBUG] [sync] vikunja: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] wishlist/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:440: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped +2026/09/24 12:05:11 sync.go:263: [INFO] [sync] Catalog sync complete +2026/09/24 12:05:11 sync.go:122: [INFO] [sync] Initial sync: Sablonok naprakészek — nincs változás +2026/09/24 12:05:14 info.go:13: [DEBUG] [system] CPUCollector: first sample — cpu=95.5% (idle=180 total=3977) +2026/09/24 12:05:14 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event controller_started (severity info) — further controller_started events are logged at DEBUG only +2026/09/24 12:05:15 auth.go:123: [DEBUG] [web] auth: rejected GET /api/stacks/nextcloud from 172.18.0.10:33128 (invalid/expired session) +2026/09/24 12:05:15 auth.go:126: [WARN] [api] Unauthorized request to /api/stacks/nextcloud from 172.18.0.10:33128 +2026/09/24 12:05:15 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.10:33128 (X-Forwarded-For: 192.168.0.180) +2026/09/24 12:05:15 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 12:05:15 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T12:05:15Z, active_sessions=1 +2026/09/24 12:05:15 auth.go:222: [INFO] [web] Login from 172.18.0.10:33128 +2026/09/24 12:05:15 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.10:33128 +2026/09/24 12:05:15 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.10:33128 +2026/09/24 12:05:16 manager.go:1483: [DEBUG] Command completed: docker compose up -d --remove-orphans (took 7.0s) +2026/09/24 12:05:16 update.go:1260: [INFO] [stacks] update nextcloud: phase verifying +2026/09/24 12:05:19 main.go:2356: [DEBUG] [bootrecon] boot window: fleet still changing (10 app(s)) — resampling +2026/09/24 12:05:19 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:05:19 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:05:19 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 4 targets (0 skipped not due, 0 skipped no container) +2026/09/24 12:05:19 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:05:19 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:05:19 healthprobe.go:181: [DEBUG] Health probe navidrome: API GET :4533/ping → 200 (3ms) +2026/09/24 12:05:19 healthprobe.go:181: [DEBUG] Health probe privatebin: HTTP GET :8080/ → 200 (7ms) +2026/09/24 12:05:19 healthprobe.go:159: [WARN] Health probes: 2 ok, 2 unhealthy (of 4 probed) +2026/09/24 12:05:21 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:05:24 main.go:2356: [DEBUG] [bootrecon] boot window: fleet still changing (10 app(s)) — resampling +2026/09/24 12:05:26 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:05:29 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:05:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:05:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:05:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:05:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:05:29 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (4 skipped not due, 0 skipped no container) +2026/09/24 12:05:29 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:05:29 healthprobe.go:181: [DEBUG] Health probe wishlist: HTTP GET :3000/ → 307 (9ms) +2026/09/24 12:05:29 healthprobe.go:161: [INFO] Health probes: 1 ok (of 1 probed) +2026/09/24 12:05:31 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:05:34 main.go:2367: [INFO] [bootrecon] boot window: fleet settled after 20s (3 identical samples 5s apart) — sweeping +2026/09/24 12:05:34 bootrecon.go:236: [INFO] [bootrecon] "gokapi" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T10:37:48Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery +2026/09/24 12:05:34 bootrecon.go:236: [INFO] [bootrecon] "chaosoom" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T11:48:01Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery +2026/09/24 12:05:34 bootrecon.go:251: [INFO] [bootrecon] Boot reconciliation: nothing to start — 2 app(s) held (absent drive / quiesce / app-data operation): [chaosoom gokapi] +2026/09/24 12:05:36 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:05:39 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:05:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:05:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:05:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:05:39 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:05:39 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:05:39 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:05:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:05:39 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 2 targets (4 skipped not due, 0 skipped no container) +2026/09/24 12:05:39 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:05:39 healthprobe.go:181: [DEBUG] Health probe n8n: API GET :5678/healthz → 200 (6ms) +2026/09/24 12:05:39 healthprobe.go:159: [WARN] Health probes: 1 ok, 1 unhealthy (of 2 probed) +2026/09/24 12:05:41 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:05:46 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:05:49 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:05:49 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:05:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:05:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:05:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:05:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:05:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:05:49 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (5 skipped not due, 0 skipped no container) +2026/09/24 12:05:49 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:05:49 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:05:51 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:05:56 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:05:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:05:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:05:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:05:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:05:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:05:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:05:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:05:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 2 targets (6 skipped not due, 0 skipped no container) +2026/09/24 12:05:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:05:59 healthprobe.go:181: [DEBUG] Health probe romm: HTTP GET :8080/ → 200 (4ms) +2026/09/24 12:05:59 healthprobe.go:181: [DEBUG] Health probe paperless-ngx: HTTP GET :8000/ → 302 (8ms) +2026/09/24 12:05:59 healthprobe.go:161: [INFO] Health probes: 2 ok (of 2 probed) +2026/09/24 12:06:02 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:06:07 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:06:09 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:06:09 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5513MB avail≈20385MB +2026/09/24 12:06:09 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24176320 → total=25898MB avail=20385MB used=5513MB (21.3%) +2026/09/24 12:06:09 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%) +2026/09/24 12:06:09 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:06:09 info.go:13: [DEBUG] [system] readLoadAvg: raw="7.20 4.54 3.48 6/1509 556" → 1m=7.20 5m=4.54 15m=3.48 +2026/09/24 12:06:09 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:06:09 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 76.1°C (hwmon2) +2026/09/24 12:06:09 info.go:13: [DEBUG] [system] GetInfo done in 71ms — mem=5513MB/25898MB (21.3%), rootDisk=25.5GB/68.4GB (37.3%), load=7.20/4.54/3.48, temp=76.1°C (hwmon2), cpu=56.0% +2026/09/24 12:06:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:06:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:06:09 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:06:09 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:06:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:06:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:06:09 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:06:09 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:06:12 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:06:17 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:06:19 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:06:19 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:06:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:06:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:06:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:19 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container) +2026/09/24 12:06:22 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:06:27 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:06:29 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:06:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:06:29 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:06:29 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:06:29 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:06:29 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:06:32 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:06:37 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:06:39 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:06:39 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:06:39 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:06:39 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:06:39 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:06:39 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:06:39 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:06:39 fillwatch.go:256: [INFO] [fillwatch] checked 7 filesystem(s), 0 unreadable/skipped, 0 notification(s); bands: all ok +2026/09/24 12:06:39 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:06:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:06:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:06:39 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:06:39 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:06:39 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:06:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:39 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container) +2026/09/24 12:06:42 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:06:47 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :8999/status.php → Get "http://nextcloud:8999/status.php": dial tcp 172.18.0.2:8999: connect: connection refused +2026/09/24 12:06:47 update.go:969: [ERROR] [stacks] update nextcloud FAILED after the new version was started: not healthy: not healthy within 1m30s (last: health check failing) +2026/09/24 12:06:47 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, NEXTCLOUD_ADMIN_USER, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system) +2026/09/24 12:06:47 manager.go:1463: [DEBUG] Running: docker compose logs --no-color --tail 400 (in /opt/docker/stacks/nextcloud) +2026/09/24 12:06:47 manager.go:1483: [DEBUG] Command completed: docker compose logs --no-color --tail 400 (took 0.1s) +2026/09/24 12:06:47 update.go:961: [INFO] [stacks] update nextcloud: kept 13773 bytes of the app's own log at /opt/docker/stacks/nextcloud/hold-logs/20260924T120647Z/compose-logs.txt before stopping it (R-621) +2026/09/24 12:06:47 update.go:1260: [INFO] [stacks] update nextcloud: phase undoing +2026/09/24 12:06:47 undo.go:501: [WARN] [stacks] update nextcloud: UNDO — putting back the previous version and its 3 volume copy(ies) (reason: not healthy: not healthy within 1m30s (last: health check failing)) +2026/09/24 12:06:47 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, NEXTCLOUD_ADMIN_PASSWORD, NEXTCLOUD_ADMIN_USER, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system) +2026/09/24 12:06:47 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/nextcloud) +2026/09/24 12:06:49 manager.go:1483: [DEBUG] Command completed: docker compose down (took 1.8s) +2026/09/24 12:06:49 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:06:49 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:06:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:49 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:49 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 12:06:49 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:06:49 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:06:50 manager.go:1502: [ERROR] [stacks] execCommand failed: exit status 1 +2026/09/24 12:06:50 undo.go:507: [ERROR] [stacks] update nextcloud: the undo copy nextcloud_nextcloud_redis_data.pre-update-20260924T120426Z has no finished-marker — it is cut off or missing; NOTHING is put back +2026/09/24 12:06:50 update.go:981: [ERROR] [stacks] update nextcloud: the UNDO failed too (untouched) — HOLDING the app; the undo copies are kept: [{nextcloud_nextcloud_db_data nextcloud_nextcloud_db_data.pre-update-20260924T120426Z} {nextcloud_nextcloud_html nextcloud_nextcloud_html.pre-update-20260924T120426Z} {nextcloud_nextcloud_redis_data nextcloud_nextcloud_redis_data.pre-update-20260924T120426Z}] +2026/09/24 12:06:50 settings.go:1814: [WARN] [settings] restore hold SET for nextcloud — the app stays stopped until it is cleared +2026/09/24 12:06:50 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (18460 bytes) +2026/09/24 12:06:50 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:06:50 update_guard.go:560: [WARN] [backup] nextcloud is HELD STOPPED after a failed update (restore point: tier 2 "második meghajtó", 2026-09-24T11:04:21Z; holds: "a beállításokat, az adatbázist és a fájlokat tartalmazza"; undo: "untouched") +2026/09/24 12:06:50 settings.go:1814: [WARN] [settings] restore hold SET for nextcloud — the app stays stopped until it is cleared +2026/09/24 12:06:50 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (18575 bytes) +2026/09/24 12:06:50 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:06:50 undo.go:619: [INFO] [stacks] update nextcloud: event app_update_held (hold recorded: true) +2026/09/24 12:06:50 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_update_held (severity error) — further app_update_held events are logged at DEBUG only +2026/09/24 12:06:51 router.go:1065: [INFO] [api] Manual catalog sync requested +2026/09/24 12:06:51 sync.go:208: [INFO] [sync] Starting catalog sync +2026/09/24 12:06:51 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main) +2026/09/24 12:06:51 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache +2026/09/24 12:06:51 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main +2026/09/24 12:06:52 sync.go:627: [DEBUG] [sync] Running: git reset --hard origin/main +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] chaoscrash/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] chaoscrash/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] chaosoom/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] chaosoom/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] chaosoomb/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] chaosoomb/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:533: [DEBUG] [sync] n8n: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] n8n/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] navidrome/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:533: [DEBUG] [sync] nextcloud: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:416: [INFO] [sync] Updated nextcloud/.felhom.yml +2026/09/24 12:06:52 sync.go:565: [DEBUG] [sync] nextcloud/.felhom.yml: src=3009031bf29d605a, dst=3009031bf29d605a (changed) +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:533: [DEBUG] [sync] vikunja: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] wishlist/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped +2026/09/24 12:06:52 sync.go:440: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:06:52 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:06:52 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:06:52 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:06:52 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:06:52 sync.go:244: [DEBUG] [sync] Post-sync hook: triggering missing field injection for 1 stack(s): [nextcloud] +2026/09/24 12:06:52 deploy.go:1104: [DEBUG] [stacks] InjectMissingFields: checking 1 stacks +2026/09/24 12:06:52 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack nextcloud — 7 deploy fields, 7 existing env vars +2026/09/24 12:06:52 deploy.go:1189: [INFO] [stacks] InjectMissingFields: processed 1 stacks +2026/09/24 12:06:52 sync.go:263: [INFO] [sync] Catalog sync complete +2026/09/24 12:06:52 router.go:1071: [INFO] [api] Catalog sync completed: Sablonok frissítve — frissítve: nextcloud +2026/09/24 12:06:54 router.go:362: [INFO] [api] Manual stack rescan requested +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:06:54 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:06:54 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:06:54 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:06:54 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:06:54 router.go:369: [INFO] [api] Stack rescan completed: 58 stacks found +2026/09/24 12:06:56 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/nextcloud from 172.18.0.10:33128 +2026/09/24 12:06:56 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/nextcloud from 172.18.0.10:33128 +2026/09/24 12:06:56 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/nextcloud from 172.18.0.10:33128 +2026/09/24 12:06:56 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/nextcloud from 172.18.0.10:33128 +2026/09/24 12:06:56 server.go:545: [DEBUG] [web] ServeHTTP: POST /backup/tier2/unit-restore from 172.18.0.10:33128 +2026/09/24 12:06:56 handlers.go:2063: [WARN] [web] Tier-2 WHOLE restore requested (async, files + database): stack=nextcloud from 172.18.0.10:33128 +2026/09/24 12:06:56 tier2_whole.go:304: [WARN] [backup] WHOLE restore for nextcloud from the second drive /mnt/sys_drive/felhom-data/backups/secondary/nextcloud: files by the four rules (never delete, never overwrite newer), then the unit +2026/09/24 12:06:56 manager.go:1283: [DEBUG] [stacks] StopStack nextcloud: current state=stopped deployed=true containers=0 +2026/09/24 12:06:56 manager.go:1286: [INFO] [stacks] Stopping stack: nextcloud +2026/09/24 12:06:56 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, NEXTCLOUD_ADMIN_USER, SUBDOMAIN, DB_PASSWORD, DOMAIN, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system) +2026/09/24 12:06:56 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/nextcloud) +2026/09/24 12:06:56 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.1s) +2026/09/24 12:06:56 manager.go:1295: [INFO] [stacks] Stack nextcloud stopped successfully (took 0.1s) +2026/09/24 12:06:57 tier2_whole.go:326: [INFO] [backup] whole restore nextcloud: files restored=0 replaced=0 (live kept beside as *.felhom-20260924T120656Z) kept-newer=0 unchanged=142 +2026/09/24 12:06:57 restore_unit.go:379: [INFO] [backup] Restoring nextcloud from recovery unit /mnt/sys_drive/felhom-data/backups/secondary/nextcloud/recovery-unit: images=3, secrets recovered=3/3, data_keys=0 +2026/09/24 12:06:57 manager.go:1283: [DEBUG] [stacks] StopStack nextcloud: current state=stopped deployed=true containers=0 +2026/09/24 12:06:57 manager.go:1286: [INFO] [stacks] Stopping stack: nextcloud +2026/09/24 12:06:57 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, NEXTCLOUD_ADMIN_PASSWORD, NEXTCLOUD_ADMIN_USER, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system) +2026/09/24 12:06:57 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/nextcloud) +2026/09/24 12:06:57 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.1s) +2026/09/24 12:06:57 manager.go:1295: [INFO] [stacks] Stack nextcloud stopped successfully (took 0.1s) +2026/09/24 12:06:57 restore.go:152: [INFO] [backup] Restoring Docker volume nextcloud_nextcloud_db_data for nextcloud +2026/09/24 12:06:58 restore.go:190: [DEBUG] [backup] Volume nextcloud_nextcloud_db_data restored successfully +2026/09/24 12:06:58 restore.go:152: [INFO] [backup] Restoring Docker volume nextcloud_nextcloud_html for nextcloud +2026/09/24 12:06:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:06:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:06:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:06:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:06:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:07:07 restore.go:190: [DEBUG] [backup] Volume nextcloud_nextcloud_html restored successfully +2026/09/24 12:07:07 restore.go:152: [INFO] [backup] Restoring Docker volume nextcloud_nextcloud_redis_data for nextcloud +2026/09/24 12:07:07 restore.go:190: [DEBUG] [backup] Volume nextcloud_nextcloud_redis_data restored successfully +2026/09/24 12:07:07 restore.go:195: [INFO] [backup] Restored 3 Docker volume(s) for nextcloud +2026/09/24 12:07:07 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/nextcloud — 7 env vars, 3 encrypted, 3 sensitive fields +2026/09/24 12:07:07 [INFO] [stacks] SaveAppConfig: saved config for nextcloud +2026/09/24 12:07:07 deploy.go:645: [INFO] [stacks] Redeploying nextcloud from recovery unit with 7 env vars +2026/09/24 12:07:07 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/nextcloud — 7 env vars, 0 encrypted, 3 sensitive fields +2026/09/24 12:07:07 [INFO] [stacks] SaveAppConfig: saved config for nextcloud +2026/09/24 12:07:07 pin.go:93: [INFO] [stacks] pin nextcloud: nextcloud=nextcloud:34.0.4-apache, nextcloud-db=mariadb:12.3, nextcloud-redis=redis:7-alpine +2026/09/24 12:07:07 manager.go:1250: [INFO] [stacks] Starting stack nextcloud services only: [nextcloud-db] +2026/09/24 12:07:07 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping ensure (held by drive gate) +2026/09/24 12:07:07 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, NEXTCLOUD_ADMIN_USER, SUBDOMAIN, DB_PASSWORD, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system) +2026/09/24 12:07:07 manager.go:1463: [DEBUG] Running: docker compose up -d nextcloud-db (in /opt/docker/stacks/nextcloud) +2026/09/24 12:07:08 manager.go:1483: [DEBUG] Command completed: docker compose up -d nextcloud-db (took 0.4s) +2026/09/24 12:07:08 manager.go:1261: [INFO] [stacks] Stack nextcloud services [nextcloud-db] started (took 0.4s) +2026/09/24 12:07:08 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 12:07:08 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: a2b3dc9582ee nextcloud-db nextcloud mariadb:12.3 +115834f20aff felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1 +49227c9e347d n8n n8n n8nio/n8n:2.31.3 +557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0 +8ed284296786 romm-db romm mariadb:11.8 +0a82332f8e1c romm romm rommapp/romm:5.3.1 +9ec77cdb422a romm-redis romm redis:7-alpine +d9846695ae0d wishlist wishlist ghcr.io/cmintey/wishlist:v0.67.1 +8867e567d339 privatebin privatebin privatebin/pdo:2.0.6 +0732d8573acd paperless-webserver pap... +2026/09/24 12:07:08 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=a2b3dc9582ee) +2026/09/24 12:07:08 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 12:07:08 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 12:07:08 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container n8n (image=n8nio/n8n:2.31.3, not a database) +2026/09/24 12:07:08 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 12:07:08 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786) +2026/09/24 12:07:08 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 12:07:08 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 12:07:08 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 12:07:08 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database) +2026/09/24 12:07:08 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 12:07:08 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 12:07:08 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 12:07:08 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973) +2026/09/24 12:07:08 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 12:07:08 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 12:07:08 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database) +2026/09/24 12:07:08 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 12:07:08 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 12:07:08 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 12 non-DB container(s) +2026/09/24 12:07:08 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 12:07:08 restore_db.go:87: [INFO] [backup] Restore nextcloud: replaying DB dump into nextcloud-db (mariadb) +2026/09/24 12:07:09 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:07:09 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5380MB avail≈20518MB +2026/09/24 12:07:09 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24332328 → total=25898MB avail=20518MB used=5380MB (20.8%) +2026/09/24 12:07:09 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%) +2026/09/24 12:07:09 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:07:09 info.go:13: [DEBUG] [system] readLoadAvg: raw="4.45 4.19 3.42 6/1480 1202" → 1m=4.45 5m=4.19 15m=3.42 +2026/09/24 12:07:09 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:07:09 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 70.5°C (hwmon2) +2026/09/24 12:07:09 info.go:13: [DEBUG] [system] GetInfo done in 69ms — mem=5380MB/25898MB (20.8%), rootDisk=25.5GB/68.4GB (37.3%), load=4.45/4.19/3.42, temp=70.5°C (hwmon2), cpu=45.5% +2026/09/24 12:07:09 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:07:09 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan +2026/09/24 12:07:09 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting +2026/09/24 12:07:09 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:07:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:07:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:07:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:07:09 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:07:09 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:07:09 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:07:09 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 84ms) +2026/09/24 12:07:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 12:07:09 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:07:09 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:07:12 dbdump.go:781: [DEBUG] [backup] ImportDump: importing /mnt/sys_drive/felhom-data/backups/secondary/nextcloud/recovery-unit/db-dumps/nextcloud-mariadb.sql into nextcloud-db (mariadb) +2026/09/24 12:07:17 dbdump.go:801: [INFO] [backup] Imported DB dump nextcloud-mariadb.sql into nextcloud-db (mariadb) +2026/09/24 12:07:17 restore_db.go:97: [INFO] [backup] Restore nextcloud: replayed 1 DB dump(s) +2026/09/24 12:07:17 manager.go:1194: [DEBUG] [stacks] StartStack nextcloud: current state=starting deployed=true +2026/09/24 12:07:17 manager.go:1197: [INFO] [stacks] Starting stack: nextcloud +2026/09/24 12:07:17 manager.go:1204: [DEBUG] [stacks] StartStack nextcloud: prepared 14 env vars for compose +2026/09/24 12:07:17 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping ensure (held by drive gate) +2026/09/24 12:07:17 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, NEXTCLOUD_ADMIN_USER, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system) +2026/09/24 12:07:17 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/nextcloud) +2026/09/24 12:07:19 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:07:19 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:07:19 manager.go:851: [DEBUG] [stacks] restart-policy of down member "nextcloud" = "unless-stopped" +2026/09/24 12:07:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:07:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:19 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:07:19 healthprobe.go:190: [WARN] Health probe nextcloud: API GET :80/status.php → Get "http://nextcloud-db:80/status.php": dial tcp: lookup nextcloud-db on 127.0.0.11:53: no such host +2026/09/24 12:07:19 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:07:23 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 6.2s) +2026/09/24 12:07:23 manager.go:1212: [INFO] [stacks] Stack nextcloud started successfully (took 6.2s) +2026/09/24 12:07:23 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/nextcloud — 7 env vars, 0 encrypted, 3 sensitive fields +2026/09/24 12:07:23 [INFO] [stacks] SaveAppConfig: saved config for nextcloud +2026/09/24 12:07:23 installed.go:420: [INFO] [stacks] installed-images nextcloud: recorded 3 service(s) (nextcloud=nextcloud:34.0.4-apache (sha256:a5ace30c695a…), nextcloud-db=mariadb:12.3 (sha256:805c8e104bd5…), nextcloud-redis=redis:7-alpine (sha256:c35af3bbcef5…)) +2026/09/24 12:07:26 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, NEXTCLOUD_ADMIN_USER, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system) +2026/09/24 12:07:26 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/nextcloud) +2026/09/24 12:07:26 restore.go:225: [DEBUG] [backup] Post-restore health check: nextcloud not yet running, waiting... +2026/09/24 12:07:26 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s) +2026/09/24 12:07:26 manager.go:1543: [INFO] [stacks] Stack nextcloud post-start status: +2026/09/24 12:07:26 manager.go:1546: [INFO] [stacks] nextcloud nextcloud:34.0.4-apache@sha256:a5ace30c695afe48c2c406e940ee7886a81e13fa382e57cd68b2416d1a66914c running Up 3 seconds (health: starting) +2026/09/24 12:07:26 manager.go:1546: [INFO] [stacks] nextcloud-db mariadb:12.3@sha256:805c8e104bd563d5bfa24fadd3f31cd419ea859cb5277f32b5dbf2db714f9ed1 running Up 18 seconds (healthy) +2026/09/24 12:07:26 manager.go:1546: [INFO] [stacks] nextcloud-redis redis:7-alpine@sha256:c35af3bbcef51a62c8bae5a9a563c6f1b60d7ebaea4cb5a3ccbcc157580ae098 running Up 9 seconds (healthy) +2026/09/24 12:07:29 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:07:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:29 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:07:29 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:29 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 12:07:29 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:07:29 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:07:31 restore.go:220: [DEBUG] [backup] Post-restore health check: nextcloud is running +2026/09/24 12:07:31 restore_unit.go:464: [INFO] [backup] Restore-from-unit completed: nextcloud — 3 volume(s) of 3 listed, 1 database(s) of 1 listed +2026/09/24 12:07:31 settings.go:1848: [INFO] [settings] restore hold CLEARED for nextcloud +2026/09/24 12:07:31 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (18154 bytes) +2026/09/24 12:07:31 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:07:31 update_guard.go:609: [INFO] [backup] nextcloud: restore completed — the update hold (set 2026-09-24T12:06:50Z) is CLEARED +2026/09/24 12:07:31 tier2_restore.go:251: [INFO] [backup] nextcloud: primary unit already carries data — left untouched (R-403 never overwrites a richer package with a poorer one) +2026/09/24 12:07:31 handlers.go:2074: [INFO] [web] Tier-2 whole restore completed (async): stack=nextcloud in 35.07797221s (files restored 0, replaced 0, kept-newer 0, unchanged 142; volumes 3/3, dbs 1/1) +2026/09/24 12:07:33 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.10:33128 (X-Forwarded-For: 192.168.0.180) +2026/09/24 12:07:33 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 12:07:33 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T12:07:33Z, active_sessions=2 +2026/09/24 12:07:33 auth.go:222: [INFO] [web] Login from 172.18.0.10:33128 +2026/09/24 12:07:33 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.10:33128 +2026/09/24 12:07:33 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.10:33128 +2026/09/24 12:07:33 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/nextcloud from 172.18.0.10:33128 +2026/09/24 12:07:33 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/nextcloud from 172.18.0.10:33128 +2026/09/24 12:07:33 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/nextcloud from 172.18.0.10:33128 +2026/09/24 12:07:33 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/nextcloud from 172.18.0.10:33128 +2026/09/24 12:07:39 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:07:39 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:07:39 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:07:39 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:07:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:39 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:07:39 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 2 targets (6 skipped not due, 0 skipped no container) +2026/09/24 12:07:39 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:07:39 healthprobe.go:181: [DEBUG] Health probe nextcloud: API GET :80/status.php → 200 (36ms) +2026/09/24 12:07:39 healthprobe.go:159: [WARN] Health probes: 1 ok, 1 unhealthy (of 2 probed) diff --git a/documentation/audits/night-2026-09-24/E/round-03.json b/documentation/audits/night-2026-09-24/E/round-03.json new file mode 100644 index 00000000..4e4d9ba8 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-03.json @@ -0,0 +1,258 @@ +{ + "round": 3, + "action": "cutoff_undo_file_app", + "accident": { + "kind": "power_cut", + "cmd": "pct stop 9202; pct start 9202", + "fired_at": "14:04:51", + "result": "stop_rc=0 start_rc=0 " + }, + "app": "nextcloud", + "started": "2026-09-24T12:04:09Z", + "before": { + "state": { + "deployed": true, + "state": "running", + "update_phase": null, + "hold_reason": null, + "hold_kind": null, + "update_error": null, + "ladder_steps_left": null + }, + "badges": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "page_hu": [ + "Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el." + ], + "page_en": [ + "Support is working on this app, so its data stays: for now you can remove only the app itself." + ] + }, + "badge_catchup_s": 10.3, + "act": "Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}", + "cutoff": "copy: nextcloud_nextcloud_redis_data.pre-update-20260924T120426Z\ndata", + "armed_at": "14:04:45", + "armed_why": "at verifying", + "phases": [ + [ + 11.7, + "safety-dump" + ], + [ + 14.4, + "pulling" + ], + [ + 15.4, + "copying" + ], + [ + 25.4, + "starting" + ], + [ + 31.7, + "verifying" + ], + [ + 158.4, + "undoing" + ], + [ + 161.5, + "failed" + ] + ], + "held": { + "update_phase": "failed", + "hold_kind": "update_failed", + "hold_no_whole_copy": null, + "hold_reason": "A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) nextcloud frissítése 2026-09-24 14:06-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: második meghajtó, 2026-09-24 13:04 — ez a másolat a beállításokat, az adatbázist és a fájlokat tartalmazza." + }, + "held_page": { + "state": { + "deployed": true, + "state": "stopped", + "update_phase": "failed", + "hold_reason": "A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) nextcloud frissítése 2026-09-24 14:06-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: második meghajtó, 2026-09-24 13:04 — ez a másolat a beállításokat, az adatbázist és a fájlokat tartalmazza.", + "hold_kind": "update_failed", + "update_error": "A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) nextcloud frissítése 2026-09-24 14:06-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: második meghajtó, 2026-09-24 13:04 — ez a másolat a beállításokat, az adatbázist és a fájlokat tartalmazza.", + "ladder_steps_left": null + }, + "badges": { + "hu": [ + { + "title": "A frissítés nem sikerült, és az automatikus visszaállítás sem.", + "text": "Megállítva — visszaállítás szükséges" + } + ], + "en": [ + { + "title": "The update did not succeed, and the automatic undo did not either.", + "text": "Stopped — restore needed" + } + ] + }, + "page_hu": [ + "Temperature high: 84°C (hwmon2) Rendszermonitor →", + "+ 1 további figyelmeztetés →", + "A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) nextcloud frissítése 2026-09-24 14:06-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: második meghajtó, 2026-09-2", + "Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el." + ], + "page_en": [ + "Temperature high: 84°C (hwmon2) System monitor →", + "+ 1 more warning →", + "The update did not succeed, and the automatic undo did not either. The data is as the new version left it. The update of nextcloud at 2026-09-24 14:06 did not succeed, and the app did not start on the new version. The app stays stopped for safety, so that its data is not damaged. It can be restored on the Backups page from this backup: second drive, 2026-09-24 13:04 — this copy holds the settings,", + "Support is working on this app, so its data stays: for now you can remove only the app itself." + ] + }, + "whole_restore_press": "302", + "whole_restore": { + "op": "tier2-whole-restore", + "stack": "nextcloud", + "ok": true, + "message": "A(z) nextcloud: 3 adatkötet és az adatbázis visszaállítva — az alkalmazás újraindult. A meghajtó fájljai: 0 visszahozva, 0 kicserélve (a régebbi élő példány megmaradt mellette, .felhom-… végződéssel), 0 újabb példány érintetlenül hagyva, 142 változatlan. Fájl nem lett törölve.", + "finished_at": "2026-09-24T12:07:31.638297502Z" + }, + "controller_back_s": 0.2, + "time_to_steady_s": 203.9, + "after": { + "state": { + "deployed": true, + "state": "running", + "update_phase": null, + "hold_reason": null, + "hold_kind": null, + "update_error": null, + "ladder_steps_left": null + }, + "badges": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "page_hu": [ + "Temperature high: 84°C (hwmon2) Rendszermonitor →", + "+ 1 további figyelmeztetés →", + "Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el." + ], + "page_en": [ + "Temperature high: 84°C (hwmon2) System monitor →", + "+ 1 more warning →", + "Support is working on this app, so its data stays: for now you can remove only the app itself." + ] + }, + "readback": { + "A": true, + "files": [ + { + "felhom-seed-0-e19728.txt": true, + "felhom-seed-2-8620d3.txt": true + }, + "404" + ] + }, + "events": [], + "box_log": [ + "2026-09-24T12:05:09Z INFO [scheduler] Daily job offbox-backup scheduled for 2026-09-24 15:05 CEST", + "2026-09-24T12:05:09Z INFO [stacks] update nextcloud: resuming after a controller restart — `up -d` then the health wait", + "2026-09-24T12:05:09Z INFO [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping ensure (held by drive gate)", + "2026-09-24T12:05:09Z INFO [backup] Found 10 DB dump files across drives", + "2026-09-24T12:05:10Z INFO [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping userdata skeleton", + "2026-09-24T12:05:10Z WARN [monitor] Temperature threshold breached: 84°C (limit: 75°C)", + "2026-09-24T12:05:10Z INFO [backup] Discovered 3 databases", + "2026-09-24T12:05:10Z INFO [backup] Backup status cache refreshed", + "2026-09-24T12:05:15Z WARN [api] Unauthorized request to /api/stacks/nextcloud from 172.18.0.10:33128", + "2026-09-24T12:05:16Z INFO [stacks] update nextcloud: phase verifying", + "2026-09-24T12:05:19Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:05:21Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:05:26Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:05:31Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:05:34Z INFO [bootrecon] \"gokapi\" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T10:37:48Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery", + "2026-09-24T12:05:34Z INFO [bootrecon] \"chaosoom\" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T11:48:01Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery", + "2026-09-24T12:05:36Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:05:41Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:05:46Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:05:51Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:05:56Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:06:02Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:06:07Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:06:12Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:06:17Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:06:22Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:06:27Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:06:32Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:06:37Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:06:42Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:06:47Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused", + "2026-09-24T12:06:47Z ERROR [stacks] update nextcloud FAILED after the new version was started: not healthy: not healthy within 1m30s (last: health check failing)", + "2026-09-24T12:06:47Z INFO [stacks] update nextcloud: kept 13773 bytes of the app's own log at /opt/docker/stacks/nextcloud/hold-logs/20260924T120647Z/compose-logs.txt before stopping it (R-621)", + "2026-09-24T12:06:47Z INFO [stacks] update nextcloud: phase undoing", + "2026-09-24T12:06:47Z WARN [stacks] update nextcloud: UNDO — putting back the previous version and its 3 volume copy(ies) (reason: not healthy: not healthy within 1m30s (last: health check failing))", + "2026-09-24T12:06:50Z ERROR [stacks] update nextcloud: the undo copy nextcloud_nextcloud_redis_data.pre-update-20260924T120426Z has no finished-marker — it is cut off or missing; NOTHING is put back", + "2026-09-24T12:06:50Z ERROR [stacks] update nextcloud: the UNDO failed too (untouched) — HOLDING the app; the undo copies are kept: [{nextcloud_nextcloud_db_data nextcloud_nextcloud_db_data.pre-update-20260924T120426Z} {nextcloud_nextcloud_html nextcloud_nextcloud_html.pre-update-20260924T120426Z} {nextcloud_nextcloud_redis_da", + "2026-09-24T12:06:50Z WARN [settings] restore hold SET for nextcloud — the app stays stopped until it is cleared", + "2026-09-24T12:06:50Z WARN [backup] nextcloud is HELD STOPPED after a failed update (restore point: tier 2 \"második meghajtó\", 2026-09-24T11:04:21Z; holds: \"a beállításokat, az adatbázist és a fájlokat tartalmazza\"; undo: \"untouched\")", + "2026-09-24T12:06:50Z WARN [settings] restore hold SET for nextcloud — the app stays stopped until it is cleared", + "2026-09-24T12:06:50Z INFO [stacks] update nextcloud: event app_update_held (hold recorded: true)", + "2026-09-24T12:06:52Z INFO [sync] Updated nextcloud/.felhom.yml", + "2026-09-24T12:06:52Z INFO [api] Catalog sync completed: Sablonok frissítve — frissítve: nextcloud", + "2026-09-24T12:06:56Z WARN [web] Tier-2 WHOLE restore requested (async, files + database): stack=nextcloud from 172.18.0.10:33128", + "2026-09-24T12:06:56Z WARN [backup] WHOLE restore for nextcloud from the second drive /mnt/sys_drive/felhom-data/backups/secondary/nextcloud: files by the four rules (never delete, never overwrite newer), then the unit", + "2026-09-24T12:06:56Z INFO [stacks] Stopping stack: nextcloud", + "2026-09-24T12:06:56Z INFO [stacks] Stack nextcloud stopped successfully (took 0.1s)", + "2026-09-24T12:06:57Z INFO [backup] whole restore nextcloud: files restored=0 replaced=0 (live kept beside as *.felhom-20260924T120656Z) kept-newer=0 unchanged=142", + "2026-09-24T12:06:57Z INFO [backup] Restoring nextcloud from recovery unit /mnt/sys_drive/felhom-data/backups/secondary/nextcloud/recovery-unit: images=3, secrets recovered=3/3, data_keys=0", + "2026-09-24T12:06:57Z INFO [stacks] Stopping stack: nextcloud", + "2026-09-24T12:06:57Z INFO [stacks] Stack nextcloud stopped successfully (took 0.1s)", + "2026-09-24T12:06:57Z INFO [backup] Restoring Docker volume nextcloud_nextcloud_db_data for nextcloud", + "2026-09-24T12:06:58Z INFO [backup] Restoring Docker volume nextcloud_nextcloud_html for nextcloud", + "2026-09-24T12:07:07Z INFO [backup] Restoring Docker volume nextcloud_nextcloud_redis_data for nextcloud", + "2026-09-24T12:07:07Z INFO [backup] Restored 3 Docker volume(s) for nextcloud", + "2026-09-24T12:07:07Z INFO [stacks] Redeploying nextcloud from recovery unit with 7 env vars", + "2026-09-24T12:07:07Z INFO [stacks] pin nextcloud: nextcloud=nextcloud:34.0.4-apache, nextcloud-db=mariadb:12.3, nextcloud-redis=redis:7-alpine", + "2026-09-24T12:07:07Z INFO [stacks] Starting stack nextcloud services only: [nextcloud-db]", + "2026-09-24T12:07:07Z INFO [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping ensure (held by drive gate)", + "2026-09-24T12:07:08Z INFO [stacks] Stack nextcloud services [nextcloud-db] started (took 0.4s)", + "2026-09-24T12:07:08Z INFO [backup] Discovered 3 databases", + "2026-09-24T12:07:08Z INFO [backup] Restore nextcloud: replaying DB dump into nextcloud-db (mariadb)", + "2026-09-24T12:07:17Z INFO [backup] Imported DB dump nextcloud-mariadb.sql into nextcloud-db (mariadb)", + "2026-09-24T12:07:17Z INFO [backup] Restore nextcloud: replayed 1 DB dump(s)", + "2026-09-24T12:07:17Z INFO [stacks] Starting stack: nextcloud", + "2026-09-24T12:07:17Z INFO [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping ensure (held by drive gate)", + "2026-09-24T12:07:19Z WARN Health probe nextcloud: API GET :80/status.php → Get \"http://nextcloud-db:80/status.php\": dial tcp: lookup nextcloud-db on 127.0.0.11:53: no such host", + "2026-09-24T12:07:23Z INFO [stacks] Stack nextcloud started successfully (took 6.2s)", + "2026-09-24T12:07:23Z INFO [stacks] installed-images nextcloud: recorded 3 service(s) (nextcloud=nextcloud:34.0.4-apache (sha256:a5ace30c695a…), nextcloud-db=mariadb:12.3 (sha256:805c8e104bd5…), nextcloud-redis=redis:7-alpine (sha256:c35af3bbcef5…))", + "2026-09-24T12:07:26Z INFO [stacks] Stack nextcloud post-start status:", + "2026-09-24T12:07:26Z INFO [stacks] nextcloud nextcloud:34.0.4-apache@sha256:a5ace30c695afe48c2c406e940ee7886a81e13fa382e57cd68b2416d1a66914c running Up 3 seconds (health: starting)", + "2026-09-24T12:07:26Z INFO [stacks] nextcloud-db mariadb:12.3@sha256:805c8e104bd563d5bfa24fadd3f31cd419ea859cb5277f32b5dbf2db714f9ed1 running Up 18 seconds (healthy)", + "2026-09-24T12:07:26Z INFO [stacks] nextcloud-redis redis:7-alpine@sha256:c35af3bbcef51a62c8bae5a9a563c6f1b60d7ebaea4cb5a3ccbcc157580ae098 running Up 9 seconds (healthy)", + "2026-09-24T12:07:31Z INFO [backup] Restore-from-unit completed: nextcloud — 3 volume(s) of 3 listed, 1 database(s) of 1 listed", + "2026-09-24T12:07:31Z INFO [settings] restore hold CLEARED for nextcloud", + "2026-09-24T12:07:31Z INFO [backup] nextcloud: restore completed — the update hold (set 2026-09-24T12:06:50Z) is CLEARED", + "2026-09-24T12:07:31Z INFO [backup] nextcloud: primary unit already carries data — left untouched (R-403 never overwrites a richer package with a poorer one)", + "2026-09-24T12:07:31Z INFO [web] Tier-2 whole restore completed (async): stack=nextcloud in 35.07797221s (files restored 0, replaced 0, kept-newer 0, unchanged 142; volumes 3/3, dbs 1/1)" + ], + "undo_copies_left": "9" +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/round-03.log b/documentation/audits/night-2026-09-24/E/round-03.log new file mode 100644 index 00000000..4fe9f2f4 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-03.log @@ -0,0 +1,25 @@ +14:04:09 ==== ROUND 3: cutoff_undo_file_app on nextcloud x power_cut (2026-09-24T12:04:09Z) +14:04:10 drill: nextcloud: failing step redis:7-alpine -> redis:7.4.0-alpine + probe 8999 +14:04:20 [sync] the badge needed 10.3s and 2 sync+rescan rounds to catch up to redis:7.4.0-alpine — R-607's window, measured +14:04:21 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +14:04:21 + 11.7s phase=safety-dump +14:04:23 + 14.4s phase=pulling +14:04:24 + 15.4s phase=copying +14:04:34 + 25.4s phase=starting +14:04:41 + 31.7s phase=verifying +14:04:45 >>> finished-marker removed from the NEWEST undo copy: +copy: nextcloud_nextcloud_redis_data.pre-update-20260924T120426Z +data + +14:04:45 >>> ARMED accident power_cut (at verifying) +14:06:47 + 158.4s phase=undoing +14:06:50 + 161.5s phase=failed +14:06:50 + 161.6s nextcloud: deployed=True state=stopped updating=False phase=failed hold=update_failed +14:06:51 drill: nextcloud: back to redis:7-alpine and its real probe +14:06:56 whole restore (the second drive) -> 302 +14:07:33 whole restore: {'op': 'tier2-whole-restore', 'stack': 'nextcloud', 'ok': True, 'message': 'A(z) nextcloud: 3 adatkötet és az adatbázis visszaállítva — az alkalmazás újraindult. A meghajtó fájljai: 0 visszahozva, 0 kicserélve (a régebbi élő példány megmaradt mellette, .felhom-… végződéssel), 0 újabb példány érintet +14:07:33 + 203.7s nextcloud: deployed=True state=running updating=False phase=None hold=None +14:07:33 >>> accident done: {'kind': 'power_cut', 'cmd': 'pct stop 9202; pct start 9202', 'fired_at': '14:04:51', 'result': 'stop_rc=0 start_rc=0 '} +14:07:33 + 203.9s nextcloud: deployed=True state=running updating=False phase=None hold=None +14:07:41 nextcloud: readback of the seeded user found=True +14:07:42 nextcloud files read back: 2/2 (negative control http=404) diff --git a/documentation/audits/night-2026-09-24/E/round-03.stdout b/documentation/audits/night-2026-09-24/E/round-03.stdout new file mode 100644 index 00000000..8a61098f --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-03.stdout @@ -0,0 +1,26 @@ +14:04:09 ==== ROUND 3: cutoff_undo_file_app on nextcloud x power_cut (2026-09-24T12:04:09Z) +14:04:10 drill: nextcloud: failing step redis:7-alpine -> redis:7.4.0-alpine + probe 8999 +14:04:20 [sync] the badge needed 10.3s and 2 sync+rescan rounds to catch up to redis:7.4.0-alpine — R-607's window, measured +14:04:21 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +14:04:21 + 11.7s phase=safety-dump +14:04:23 + 14.4s phase=pulling +14:04:24 + 15.4s phase=copying +14:04:34 + 25.4s phase=starting +14:04:41 + 31.7s phase=verifying +14:04:45 >>> finished-marker removed from the NEWEST undo copy: +copy: nextcloud_nextcloud_redis_data.pre-update-20260924T120426Z +data + +14:04:45 >>> ARMED accident power_cut (at verifying) +14:06:47 + 158.4s phase=undoing +14:06:50 + 161.5s phase=failed +14:06:50 + 161.6s nextcloud: deployed=True state=stopped updating=False phase=failed hold=update_failed +14:06:51 drill: nextcloud: back to redis:7-alpine and its real probe +14:06:56 whole restore (the second drive) -> 302 +14:07:33 whole restore: {'op': 'tier2-whole-restore', 'stack': 'nextcloud', 'ok': True, 'message': 'A(z) nextcloud: 3 adatkötet és az adatbázis visszaállítva — az alkalmazás újraindult. A meghajtó fájljai: 0 visszahozva, 0 kicserélve (a régebbi élő példány megmaradt mellette, .felhom-… végződéssel), 0 újabb példány érintet +14:07:33 + 203.7s nextcloud: deployed=True state=running updating=False phase=None hold=None +14:07:33 >>> accident done: {'kind': 'power_cut', 'cmd': 'pct stop 9202; pct start 9202', 'fired_at': '14:04:51', 'result': 'stop_rc=0 start_rc=0 '} +14:07:33 + 203.9s nextcloud: deployed=True state=running updating=False phase=None hold=None +14:07:41 nextcloud: readback of the seeded user found=True +14:07:42 nextcloud files read back: 2/2 (negative control http=404) +14:07:49 ==== ROUND 3 END: steady in 203.9s; readback={'A': True, 'files': ({'felhom-seed-0-e19728.txt': True, 'felhom-seed-2-8620d3.txt': True}, '404')}; events=[] diff --git a/documentation/audits/night-2026-09-24/E/round-04-controller-pre.log b/documentation/audits/night-2026-09-24/E/round-04-controller-pre.log new file mode 100644 index 00000000..21a2fb8f --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-04-controller-pre.log @@ -0,0 +1,512 @@ +2026/09/24 12:08:51 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.10:33128 (X-Forwarded-For: 192.168.0.180) +2026/09/24 12:08:51 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 12:08:51 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T12:08:51Z, active_sessions=3 +2026/09/24 12:08:51 auth.go:222: [INFO] [web] Login from 172.18.0.10:33128 +2026/09/24 12:08:51 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.10:33128 +2026/09/24 12:08:51 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.10:33128 +2026/09/24 12:08:51 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:33128 +2026/09/24 12:08:52 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:33128 +2026/09/24 12:08:52 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:33128 +2026/09/24 12:08:52 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:33128 +2026/09/24 12:08:53 router.go:1065: [INFO] [api] Manual catalog sync requested +2026/09/24 12:08:53 sync.go:208: [INFO] [sync] Starting catalog sync +2026/09/24 12:08:53 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main) +2026/09/24 12:08:53 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache +2026/09/24 12:08:53 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main +2026/09/24 12:08:53 sync.go:627: [DEBUG] [sync] Running: git reset --hard origin/main +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaoscrash/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaoscrash/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaosoom/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaosoom/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaosoomb/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaosoomb/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:533: [DEBUG] [sync] n8n: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] n8n/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] navidrome/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] nextcloud/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:533: [DEBUG] [sync] vikunja: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:533: [DEBUG] [sync] wishlist: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:416: [INFO] [sync] Updated wishlist/.felhom.yml +2026/09/24 12:08:53 sync.go:565: [DEBUG] [sync] wishlist/.felhom.yml: src=cb6beaf058c0066c, dst=cb6beaf058c0066c (changed) +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:08:53 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:08:53 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:08:53 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:08:53 sync.go:244: [DEBUG] [sync] Post-sync hook: triggering missing field injection for 1 stack(s): [wishlist] +2026/09/24 12:08:53 deploy.go:1104: [DEBUG] [stacks] InjectMissingFields: checking 1 stacks +2026/09/24 12:08:53 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack wishlist — 2 deploy fields, 2 existing env vars +2026/09/24 12:08:53 deploy.go:1189: [INFO] [stacks] InjectMissingFields: processed 1 stacks +2026/09/24 12:08:53 sync.go:263: [INFO] [sync] Catalog sync complete +2026/09/24 12:08:53 router.go:1071: [INFO] [api] Catalog sync completed: Sablonok frissítve — frissítve: wishlist +2026/09/24 12:08:55 router.go:362: [INFO] [api] Manual stack rescan requested +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:08:55 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:08:55 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:08:55 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:08:55 router.go:369: [INFO] [api] Stack rescan completed: 58 stacks found +2026/09/24 12:08:57 router.go:591: [INFO] [api] update requested for stack: wishlist +2026/09/24 12:08:57 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5427MB avail≈20471MB +2026/09/24 12:08:57 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24277336 → total=25898MB avail=20471MB used=5427MB (21.0%) +2026/09/24 12:08:58 deploy.go:1250: [INFO] [stacks] Memory check: total=25898MB, reserved=384MB, usable=25514MB, committed_used=1698MB, new_req=120MB, remaining=23696MB +2026/09/24 12:08:58 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:08:58 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5446MB avail≈20452MB +2026/09/24 12:08:58 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24255092 → total=25898MB avail=20452MB used=5446MB (21.0%) +2026/09/24 12:08:58 deploy.go:1250: [INFO] [stacks] Memory check: total=25898MB, reserved=384MB, usable=25514MB, committed_used=1698MB, new_req=120MB, remaining=23696MB +2026/09/24 12:08:58 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:08:58 update.go:512: [INFO] [stacks] update wishlist: accepted — guarded update started +2026/09/24 12:08:58 update.go:1260: [INFO] [stacks] update wishlist: phase checking +2026/09/24 12:08:58 update.go:762: [INFO] [stacks] update wishlist: ladder — the installed version wishlist=ghcr.io/cmintey/wishlist:v0.67.1 matches no update_ladder entry (1 entries) — an app older than the ladder has no record to climb; the catalog's current definition +2026/09/24 12:08:58 update.go:777: [INFO] [stacks] update wishlist: no usable copy on any tier — younger than 1m0s and not older than this install's deploy (2026-09-24T11:14:25Z) (found: Tier 2 (second drive) at 2026-09-24T11:18:44Z (50m0s old); Tier 1 (own recovery unit) at 2026-09-24T11:20:55Z (48m0s old)) — backing up first +2026/09/24 12:08:58 update.go:1260: [INFO] [stacks] update wishlist: phase backing-up +2026/09/24 12:08:58 update_guard.go:360: [INFO] [backup] update pre-backup for wishlist: starting (DB dump → volume dump → unit capture → Tier 2) +2026/09/24 12:08:58 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:08:58 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 12:08:58 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 7a34056c6ac0 nextcloud nextcloud nextcloud:34.0.4-apache +3a9300356092 nextcloud-redis nextcloud redis:7-alpine +a2b3dc9582ee nextcloud-db nextcloud mariadb:12.3 +115834f20aff felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1 +49227c9e347d n8n n8n n8nio/n8n:2.31.3 +557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0 +8ed284296786 romm-db romm mariadb:11.8 +0a82332f8e1c romm romm rommapp/romm:5.3.1 +9ec77cdb422a romm-redis romm redis:7-alpine +d9846695ae0d wishlist wishlist ghcr.io/cminte... +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database) +2026/09/24 12:08:58 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=a2b3dc9582ee) +2026/09/24 12:08:58 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container n8n (image=n8nio/n8n:2.31.3, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 12:08:58 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786) +2026/09/24 12:08:58 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 12:08:58 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973) +2026/09/24 12:08:58 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 12:08:58 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 12:08:58 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 14 non-DB container(s) +2026/09/24 12:08:58 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 12:08:58 backup.go:920: [INFO] [backup] Stopping wishlist for safe volume dump +2026/09/24 12:08:58 manager.go:1283: [DEBUG] [stacks] StopStack wishlist: current state=running deployed=true containers=1 +2026/09/24 12:08:58 manager.go:1286: [INFO] [stacks] Stopping stack: wishlist +2026/09/24 12:08:58 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:08:58 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/wishlist) +2026/09/24 12:08:58 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.4s) +2026/09/24 12:08:58 manager.go:1295: [INFO] [stacks] Stack wishlist stopped successfully (took 0.4s) +2026/09/24 12:08:58 backup.go:796: [DEBUG] [backup] Dumping volume wishlist_wishlist_data for wishlist +2026/09/24 12:08:59 backup.go:821: [INFO] [backup] Volume dump: wishlist/wishlist_wishlist_data → 302.0 KB +2026/09/24 12:08:59 backup.go:796: [DEBUG] [backup] Dumping volume wishlist_wishlist_uploads for wishlist +2026/09/24 12:08:59 backup.go:821: [INFO] [backup] Volume dump: wishlist/wishlist_wishlist_uploads → 1.5 KB +2026/09/24 12:08:59 backup.go:930: [INFO] [backup] Restarting wishlist after volume dump +2026/09/24 12:08:59 manager.go:1194: [DEBUG] [stacks] StartStack wishlist: current state=stopped deployed=true +2026/09/24 12:08:59 manager.go:1197: [INFO] [stacks] Starting stack: wishlist +2026/09/24 12:08:59 manager.go:1204: [DEBUG] [stacks] StartStack wishlist: prepared 8 env vars for compose +2026/09/24 12:08:59 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:08:59 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/wishlist) +2026/09/24 12:08:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:08:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:08:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 12:08:59 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:08:59 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:08:59 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.4s) +2026/09/24 12:08:59 manager.go:1212: [INFO] [stacks] Stack wishlist started successfully (took 0.4s) +2026/09/24 12:09:00 installed.go:409: [DEBUG] [stacks] installed-images wishlist: unchanged (1 service(s)) — app.yaml not rewritten +2026/09/24 12:09:00 update_guard.go:410: [INFO] [backup] update pre-backup for wishlist: volume dump OK +2026/09/24 12:09:00 recovery_unit.go:224: [INFO] [backup] Recovery unit captured for wishlist → /mnt/sys_drive/felhom-data/backups/primary/wishlist (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0) +2026/09/24 12:09:00 update_guard.go:416: [INFO] [backup] update pre-backup for wishlist: recovery unit captured (0 database dump(s)) +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (18154 bytes) +2026/09/24 12:09:00 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:09:00 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event crossdrive_completed (severity info) — further crossdrive_completed events are logged at DEBUG only +2026/09/24 12:09:00 tier2.go:425: [INFO] [backup] Tier 2 copied wishlist → /mnt/felhom-drives/scratch_hdd/backups/secondary/wishlist (323.7 KB, 0 leg(s), 0s) +2026/09/24 12:09:00 update_guard.go:425: [INFO] [backup] update pre-backup for wishlist: complete in 2.015s +2026/09/24 12:09:00 update.go:792: [INFO] [stacks] update wishlist: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-24T12:09:00Z +2026/09/24 12:09:00 update.go:1260: [INFO] [stacks] update wishlist: phase safety-dump +2026/09/24 12:09:00 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 12:09:00 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 08ac8b284e25 wishlist wishlist ghcr.io/cmintey/wishlist:v0.67.1 +7a34056c6ac0 nextcloud nextcloud nextcloud:34.0.4-apache +3a9300356092 nextcloud-redis nextcloud redis:7-alpine +a2b3dc9582ee nextcloud-db nextcloud mariadb:12.3 +115834f20aff felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1 +49227c9e347d n8n n8n n8nio/n8n:2.31.3 +557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0 +8ed284296786 romm-db romm mariadb:11.8 +0a82332f8e1c romm romm rommapp/romm:5.3.1 +9ec77cdb422a romm-redis r... +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database) +2026/09/24 12:09:00 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=a2b3dc9582ee) +2026/09/24 12:09:00 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container n8n (image=n8nio/n8n:2.31.3, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 12:09:00 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786) +2026/09/24 12:09:00 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 12:09:00 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973) +2026/09/24 12:09:00 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 12:09:00 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 12:09:00 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 14 non-DB container(s) +2026/09/24 12:09:00 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 12:09:00 update_guard.go:476: [INFO] [backup] update safety dump for wishlist: the app has no database — nothing to copy (no-op) +2026/09/24 12:09:00 update.go:807: [INFO] [stacks] update wishlist: safety dump done (0 file(s)) [] +2026/09/24 12:09:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:09:01 undo.go:273: [INFO] [stacks] update wishlist: the undo copy will hold 2 named volume(s), 0.3 MiB +2026/09/24 12:09:01 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/wishlist — 2 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:09:01 [INFO] [stacks] SaveAppConfig: saved config for wishlist +2026/09/24 12:09:01 update.go:1260: [INFO] [stacks] update wishlist: phase pinning +2026/09/24 12:09:01 pin.go:373: [INFO] [stacks] update wishlist: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/wishlist/docker-compose.yml (wishlist=ghcr.io/cmintey/wishlist:latest) +2026/09/24 12:09:01 update.go:1260: [INFO] [stacks] update wishlist: phase pulling +2026/09/24 12:09:01 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:09:01 manager.go:1463: [DEBUG] Running: docker compose pull (in /opt/docker/stacks/wishlist) +2026/09/24 12:09:02 manager.go:1483: [DEBUG] Command completed: docker compose pull (took 0.9s) +2026/09/24 12:09:02 update.go:1260: [INFO] [stacks] update wishlist: phase copying +2026/09/24 12:09:02 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:09:02 manager.go:1463: [DEBUG] Running: docker compose stop (in /opt/docker/stacks/wishlist) +2026/09/24 12:09:03 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:09:03 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/wishlist) +2026/09/24 12:09:03 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s) +2026/09/24 12:09:03 manager.go:1543: [INFO] [stacks] Stack wishlist post-start status: +2026/09/24 12:09:03 manager.go:1546: [INFO] [stacks] wishlist ghcr.io/cmintey/wishlist:v0.67.1@sha256:4b89bfb5b57ffb087c33978d21b09048e5c37f4506326e9ccd2705a0a1d86548 running Up 3 seconds (health: starting) +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5590MB avail≈20308MB +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24083552 → total=25898MB avail=20308MB used=5590MB (21.6%) +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%) +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.63 3.61 3.30 8/1545 2224" → 1m=2.63 5m=3.61 15m=3.30 +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 69.8°C (hwmon2) +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] GetInfo done in 71ms — mem=5590MB/25898MB (21.6%), rootDisk=25.5GB/68.4GB (37.3%), load=2.63/3.61/3.30, temp=69.8°C (hwmon2), cpu=47.0% +2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:09:09 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan +2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting +2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:09:09 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:09:09 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:09:09 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:09:09 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 108ms) +2026/09/24 12:09:12 manager.go:1483: [DEBUG] Command completed: docker compose stop (took 10.4s) +2026/09/24 12:09:12 update.go:1260: [INFO] [stacks] update wishlist: phase copying +2026/09/24 12:09:12 undo.go:423: [INFO] [stacks] update wishlist: copied wishlist_wishlist_data → wishlist_wishlist_data.pre-update-20260924T120912Z in 431ms +2026/09/24 12:09:12 update.go:1260: [INFO] [stacks] update wishlist: phase copying +2026/09/24 12:09:13 undo.go:423: [INFO] [stacks] update wishlist: copied wishlist_wishlist_uploads → wishlist_wishlist_uploads.pre-update-20260924T120912Z in 434ms +2026/09/24 12:09:13 update.go:1260: [INFO] [stacks] update wishlist: phase starting +2026/09/24 12:09:13 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:09:13 manager.go:1463: [DEBUG] Running: docker compose up -d --remove-orphans (in /opt/docker/stacks/wishlist) +2026/09/24 12:09:13 manager.go:1483: [DEBUG] Command completed: docker compose up -d --remove-orphans (took 0.4s) +2026/09/24 12:09:13 update.go:1260: [INFO] [stacks] update wishlist: phase verifying diff --git a/documentation/audits/night-2026-09-24/E/round-04-controller.log b/documentation/audits/night-2026-09-24/E/round-04-controller.log new file mode 100644 index 00000000..93fdc443 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-04-controller.log @@ -0,0 +1,1493 @@ +2026/09/24 12:08:51 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.10:33128 (X-Forwarded-For: 192.168.0.180) +2026/09/24 12:08:51 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 12:08:51 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T12:08:51Z, active_sessions=3 +2026/09/24 12:08:51 auth.go:222: [INFO] [web] Login from 172.18.0.10:33128 +2026/09/24 12:08:51 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.10:33128 +2026/09/24 12:08:51 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.10:33128 +2026/09/24 12:08:51 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:33128 +2026/09/24 12:08:52 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:33128 +2026/09/24 12:08:52 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:33128 +2026/09/24 12:08:52 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:33128 +2026/09/24 12:08:53 router.go:1065: [INFO] [api] Manual catalog sync requested +2026/09/24 12:08:53 sync.go:208: [INFO] [sync] Starting catalog sync +2026/09/24 12:08:53 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main) +2026/09/24 12:08:53 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache +2026/09/24 12:08:53 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main +2026/09/24 12:08:53 sync.go:627: [DEBUG] [sync] Running: git reset --hard origin/main +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaoscrash/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaoscrash/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaosoom/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaosoom/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaosoomb/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaosoomb/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:533: [DEBUG] [sync] n8n: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] n8n/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] navidrome/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] nextcloud/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:533: [DEBUG] [sync] vikunja: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:533: [DEBUG] [sync] wishlist: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:416: [INFO] [sync] Updated wishlist/.felhom.yml +2026/09/24 12:08:53 sync.go:565: [DEBUG] [sync] wishlist/.felhom.yml: src=cb6beaf058c0066c, dst=cb6beaf058c0066c (changed) +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped +2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:08:53 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:08:53 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:08:53 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:08:53 sync.go:244: [DEBUG] [sync] Post-sync hook: triggering missing field injection for 1 stack(s): [wishlist] +2026/09/24 12:08:53 deploy.go:1104: [DEBUG] [stacks] InjectMissingFields: checking 1 stacks +2026/09/24 12:08:53 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack wishlist — 2 deploy fields, 2 existing env vars +2026/09/24 12:08:53 deploy.go:1189: [INFO] [stacks] InjectMissingFields: processed 1 stacks +2026/09/24 12:08:53 sync.go:263: [INFO] [sync] Catalog sync complete +2026/09/24 12:08:53 router.go:1071: [INFO] [api] Catalog sync completed: Sablonok frissítve — frissítve: wishlist +2026/09/24 12:08:55 router.go:362: [INFO] [api] Manual stack rescan requested +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:08:55 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:08:55 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:08:55 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:08:55 router.go:369: [INFO] [api] Stack rescan completed: 58 stacks found +2026/09/24 12:08:57 router.go:591: [INFO] [api] update requested for stack: wishlist +2026/09/24 12:08:57 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5427MB avail≈20471MB +2026/09/24 12:08:57 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24277336 → total=25898MB avail=20471MB used=5427MB (21.0%) +2026/09/24 12:08:58 deploy.go:1250: [INFO] [stacks] Memory check: total=25898MB, reserved=384MB, usable=25514MB, committed_used=1698MB, new_req=120MB, remaining=23696MB +2026/09/24 12:08:58 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:08:58 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5446MB avail≈20452MB +2026/09/24 12:08:58 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24255092 → total=25898MB avail=20452MB used=5446MB (21.0%) +2026/09/24 12:08:58 deploy.go:1250: [INFO] [stacks] Memory check: total=25898MB, reserved=384MB, usable=25514MB, committed_used=1698MB, new_req=120MB, remaining=23696MB +2026/09/24 12:08:58 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:08:58 update.go:512: [INFO] [stacks] update wishlist: accepted — guarded update started +2026/09/24 12:08:58 update.go:1260: [INFO] [stacks] update wishlist: phase checking +2026/09/24 12:08:58 update.go:762: [INFO] [stacks] update wishlist: ladder — the installed version wishlist=ghcr.io/cmintey/wishlist:v0.67.1 matches no update_ladder entry (1 entries) — an app older than the ladder has no record to climb; the catalog's current definition +2026/09/24 12:08:58 update.go:777: [INFO] [stacks] update wishlist: no usable copy on any tier — younger than 1m0s and not older than this install's deploy (2026-09-24T11:14:25Z) (found: Tier 2 (second drive) at 2026-09-24T11:18:44Z (50m0s old); Tier 1 (own recovery unit) at 2026-09-24T11:20:55Z (48m0s old)) — backing up first +2026/09/24 12:08:58 update.go:1260: [INFO] [stacks] update wishlist: phase backing-up +2026/09/24 12:08:58 update_guard.go:360: [INFO] [backup] update pre-backup for wishlist: starting (DB dump → volume dump → unit capture → Tier 2) +2026/09/24 12:08:58 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:08:58 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 12:08:58 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 7a34056c6ac0 nextcloud nextcloud nextcloud:34.0.4-apache +3a9300356092 nextcloud-redis nextcloud redis:7-alpine +a2b3dc9582ee nextcloud-db nextcloud mariadb:12.3 +115834f20aff felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1 +49227c9e347d n8n n8n n8nio/n8n:2.31.3 +557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0 +8ed284296786 romm-db romm mariadb:11.8 +0a82332f8e1c romm romm rommapp/romm:5.3.1 +9ec77cdb422a romm-redis romm redis:7-alpine +d9846695ae0d wishlist wishlist ghcr.io/cminte... +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database) +2026/09/24 12:08:58 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=a2b3dc9582ee) +2026/09/24 12:08:58 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container n8n (image=n8nio/n8n:2.31.3, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 12:08:58 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786) +2026/09/24 12:08:58 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 12:08:58 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973) +2026/09/24 12:08:58 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 12:08:58 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 12:08:58 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 14 non-DB container(s) +2026/09/24 12:08:58 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 12:08:58 backup.go:920: [INFO] [backup] Stopping wishlist for safe volume dump +2026/09/24 12:08:58 manager.go:1283: [DEBUG] [stacks] StopStack wishlist: current state=running deployed=true containers=1 +2026/09/24 12:08:58 manager.go:1286: [INFO] [stacks] Stopping stack: wishlist +2026/09/24 12:08:58 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:08:58 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/wishlist) +2026/09/24 12:08:58 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.4s) +2026/09/24 12:08:58 manager.go:1295: [INFO] [stacks] Stack wishlist stopped successfully (took 0.4s) +2026/09/24 12:08:58 backup.go:796: [DEBUG] [backup] Dumping volume wishlist_wishlist_data for wishlist +2026/09/24 12:08:59 backup.go:821: [INFO] [backup] Volume dump: wishlist/wishlist_wishlist_data → 302.0 KB +2026/09/24 12:08:59 backup.go:796: [DEBUG] [backup] Dumping volume wishlist_wishlist_uploads for wishlist +2026/09/24 12:08:59 backup.go:821: [INFO] [backup] Volume dump: wishlist/wishlist_wishlist_uploads → 1.5 KB +2026/09/24 12:08:59 backup.go:930: [INFO] [backup] Restarting wishlist after volume dump +2026/09/24 12:08:59 manager.go:1194: [DEBUG] [stacks] StartStack wishlist: current state=stopped deployed=true +2026/09/24 12:08:59 manager.go:1197: [INFO] [stacks] Starting stack: wishlist +2026/09/24 12:08:59 manager.go:1204: [DEBUG] [stacks] StartStack wishlist: prepared 8 env vars for compose +2026/09/24 12:08:59 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:08:59 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/wishlist) +2026/09/24 12:08:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:08:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:08:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 12:08:59 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:08:59 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:08:59 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.4s) +2026/09/24 12:08:59 manager.go:1212: [INFO] [stacks] Stack wishlist started successfully (took 0.4s) +2026/09/24 12:09:00 installed.go:409: [DEBUG] [stacks] installed-images wishlist: unchanged (1 service(s)) — app.yaml not rewritten +2026/09/24 12:09:00 update_guard.go:410: [INFO] [backup] update pre-backup for wishlist: volume dump OK +2026/09/24 12:09:00 recovery_unit.go:224: [INFO] [backup] Recovery unit captured for wishlist → /mnt/sys_drive/felhom-data/backups/primary/wishlist (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0) +2026/09/24 12:09:00 update_guard.go:416: [INFO] [backup] update pre-backup for wishlist: recovery unit captured (0 database dump(s)) +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:00 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (18154 bytes) +2026/09/24 12:09:00 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:09:00 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event crossdrive_completed (severity info) — further crossdrive_completed events are logged at DEBUG only +2026/09/24 12:09:00 tier2.go:425: [INFO] [backup] Tier 2 copied wishlist → /mnt/felhom-drives/scratch_hdd/backups/secondary/wishlist (323.7 KB, 0 leg(s), 0s) +2026/09/24 12:09:00 update_guard.go:425: [INFO] [backup] update pre-backup for wishlist: complete in 2.015s +2026/09/24 12:09:00 update.go:792: [INFO] [stacks] update wishlist: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-24T12:09:00Z +2026/09/24 12:09:00 update.go:1260: [INFO] [stacks] update wishlist: phase safety-dump +2026/09/24 12:09:00 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 12:09:00 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 08ac8b284e25 wishlist wishlist ghcr.io/cmintey/wishlist:v0.67.1 +7a34056c6ac0 nextcloud nextcloud nextcloud:34.0.4-apache +3a9300356092 nextcloud-redis nextcloud redis:7-alpine +a2b3dc9582ee nextcloud-db nextcloud mariadb:12.3 +115834f20aff felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1 +49227c9e347d n8n n8n n8nio/n8n:2.31.3 +557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0 +8ed284296786 romm-db romm mariadb:11.8 +0a82332f8e1c romm romm rommapp/romm:5.3.1 +9ec77cdb422a romm-redis r... +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database) +2026/09/24 12:09:00 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=a2b3dc9582ee) +2026/09/24 12:09:00 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container n8n (image=n8nio/n8n:2.31.3, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 12:09:00 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786) +2026/09/24 12:09:00 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 12:09:00 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973) +2026/09/24 12:09:00 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 12:09:00 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 12:09:00 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 14 non-DB container(s) +2026/09/24 12:09:00 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 12:09:00 update_guard.go:476: [INFO] [backup] update safety dump for wishlist: the app has no database — nothing to copy (no-op) +2026/09/24 12:09:00 update.go:807: [INFO] [stacks] update wishlist: safety dump done (0 file(s)) [] +2026/09/24 12:09:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:09:01 undo.go:273: [INFO] [stacks] update wishlist: the undo copy will hold 2 named volume(s), 0.3 MiB +2026/09/24 12:09:01 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/wishlist — 2 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:09:01 [INFO] [stacks] SaveAppConfig: saved config for wishlist +2026/09/24 12:09:01 update.go:1260: [INFO] [stacks] update wishlist: phase pinning +2026/09/24 12:09:01 pin.go:373: [INFO] [stacks] update wishlist: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/wishlist/docker-compose.yml (wishlist=ghcr.io/cmintey/wishlist:latest) +2026/09/24 12:09:01 update.go:1260: [INFO] [stacks] update wishlist: phase pulling +2026/09/24 12:09:01 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:09:01 manager.go:1463: [DEBUG] Running: docker compose pull (in /opt/docker/stacks/wishlist) +2026/09/24 12:09:02 manager.go:1483: [DEBUG] Command completed: docker compose pull (took 0.9s) +2026/09/24 12:09:02 update.go:1260: [INFO] [stacks] update wishlist: phase copying +2026/09/24 12:09:02 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:09:02 manager.go:1463: [DEBUG] Running: docker compose stop (in /opt/docker/stacks/wishlist) +2026/09/24 12:09:03 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:09:03 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/wishlist) +2026/09/24 12:09:03 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s) +2026/09/24 12:09:03 manager.go:1543: [INFO] [stacks] Stack wishlist post-start status: +2026/09/24 12:09:03 manager.go:1546: [INFO] [stacks] wishlist ghcr.io/cmintey/wishlist:v0.67.1@sha256:4b89bfb5b57ffb087c33978d21b09048e5c37f4506326e9ccd2705a0a1d86548 running Up 3 seconds (health: starting) +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5590MB avail≈20308MB +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24083552 → total=25898MB avail=20308MB used=5590MB (21.6%) +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%) +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.63 3.61 3.30 8/1545 2224" → 1m=2.63 5m=3.61 15m=3.30 +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 69.8°C (hwmon2) +2026/09/24 12:09:09 info.go:13: [DEBUG] [system] GetInfo done in 71ms — mem=5590MB/25898MB (21.6%), rootDisk=25.5GB/68.4GB (37.3%), load=2.63/3.61/3.30, temp=69.8°C (hwmon2), cpu=47.0% +2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:09:09 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan +2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting +2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:09:09 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:09:09 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:09:09 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:09:09 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 108ms) +2026/09/24 12:09:12 manager.go:1483: [DEBUG] Command completed: docker compose stop (took 10.4s) +2026/09/24 12:09:12 update.go:1260: [INFO] [stacks] update wishlist: phase copying +2026/09/24 12:09:12 undo.go:423: [INFO] [stacks] update wishlist: copied wishlist_wishlist_data → wishlist_wishlist_data.pre-update-20260924T120912Z in 431ms +2026/09/24 12:09:12 update.go:1260: [INFO] [stacks] update wishlist: phase copying +2026/09/24 12:09:13 undo.go:423: [INFO] [stacks] update wishlist: copied wishlist_wishlist_uploads → wishlist_wishlist_uploads.pre-update-20260924T120912Z in 434ms +2026/09/24 12:09:13 update.go:1260: [INFO] [stacks] update wishlist: phase starting +2026/09/24 12:09:13 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:09:13 manager.go:1463: [DEBUG] Running: docker compose up -d --remove-orphans (in /opt/docker/stacks/wishlist) +2026/09/24 12:09:13 manager.go:1483: [DEBUG] Command completed: docker compose up -d --remove-orphans (took 0.4s) +2026/09/24 12:09:13 update.go:1260: [INFO] [stacks] update wishlist: phase verifying +2026/09/24 12:09:19 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:09:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 4m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:19 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:09:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 4m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:19 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:19 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 12:09:19 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:09:19 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:09:24 main.go:335: [INFO] felhom-controller 0.269.1 starting (customer: demo-hp, domain: enkisfelhom.hu) +2026/09/24 12:09:24 settings.go:709: [INFO] [settings] Loaded settings from /opt/docker/felhom-controller/data/settings.json +2026/09/24 12:09:24 settings.go:1671: [DEBUG] [settings] AutoDiscoverStoragePaths discovered=[/mnt/felhom-drives/scratch_hdd/userdata/navidrome /mnt/felhom-drives/scratch_hdd/userdata/nextcloud /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx /mnt/felhom-drives/scratch_hdd/userdata/romm] fallback="" existing=5 +2026/09/24 12:09:24 main.go:361: [INFO] Encryption key loaded from /opt/docker/felhom-controller/data/encryption.key +2026/09/24 12:09:24 manager.go:328: [INFO] [stacks] Using compose command: docker compose +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:09:24 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:09:24 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:09:24 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:09:24 deploy.go:1104: [DEBUG] [stacks] InjectMissingFields: checking 10 stacks +2026/09/24 12:09:24 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack chaosoom — 2 deploy fields, 2 existing env vars +2026/09/24 12:09:24 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack privatebin — 2 deploy fields, 2 existing env vars +2026/09/24 12:09:24 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack romm — 6 deploy fields, 6 existing env vars +2026/09/24 12:09:24 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack n8n — 3 deploy fields, 3 existing env vars +2026/09/24 12:09:24 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack wishlist — 2 deploy fields, 2 existing env vars +2026/09/24 12:09:24 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack navidrome — 3 deploy fields, 3 existing env vars +2026/09/24 12:09:24 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack nextcloud — 7 deploy fields, 7 existing env vars +2026/09/24 12:09:24 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack paperless-ngx — 8 deploy fields, 8 existing env vars +2026/09/24 12:09:24 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack gokapi — 3 deploy fields, 3 existing env vars +2026/09/24 12:09:24 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack vikunja — 3 deploy fields, 3 existing env vars +2026/09/24 12:09:24 deploy.go:1189: [INFO] [stacks] InjectMissingFields: processed 10 stacks +2026/09/24 12:09:24 manager.go:467: [DEBUG] [stacks] MigrateEncryption: checking 10 deployed stacks for plaintext sensitive values +2026/09/24 12:09:24 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "romm" (3 sensitive fields) +2026/09/24 12:09:24 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "n8n" (1 sensitive fields) +2026/09/24 12:09:24 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "nextcloud" (3 sensitive fields) +2026/09/24 12:09:24 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "paperless-ngx" (3 sensitive fields) +2026/09/24 12:09:24 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "gokapi" (1 sensitive fields) +2026/09/24 12:09:24 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "vikunja" (1 sensitive fields) +2026/09/24 12:09:24 manager.go:511: [INFO] [stacks] Encryption migration: no stacks needed migration +2026/09/24 12:09:24 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/nextcloud — 7 env vars, 0 encrypted, 3 sensitive fields +2026/09/24 12:09:24 [INFO] [stacks] SaveAppConfig: saved config for nextcloud +2026/09/24 12:09:24 desiredstate.go:81: [INFO] [stacks] desired state for nextcloud recorded as "running" (was "") +2026/09/24 12:09:24 desiredstate.go:137: [INFO] [stacks] desired-state backfill: 1 app(s) recorded as running, 0 left unrecorded (state ambiguous — legacy boot behaviour retained) +2026/09/24 12:09:24 installed.go:537: [INFO] [stacks] installed-images backfill: 0 app(s) recorded, 10 already had a record, 0 left unrecorded (could not be observed completely — unknown, which renders nothing) +2026/09/24 12:09:24 pin.go:290: [INFO] [stacks] pin adoption: 0 pinned, 10 already pinned, 0 left unpinned (0 not completely observed, 0 running something the template no longer offers) +2026/09/24 12:09:24 undo.go:656: [INFO] [stacks] applied-meta backfill (R-646): recorded 0 []; skipped 0 [] — not current with the catalog, their pinned version's .felhom.yml is no longer on the box +2026/09/24 12:09:24 sync.go:117: [INFO] [sync] Starting catalog sync (repo: https://gitea.dooplex.hu/admin/app-catalog-drill.git, interval: 15m0s) +2026/09/24 12:09:24 sync.go:208: [INFO] [sync] Starting catalog sync +2026/09/24 12:09:24 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main) +2026/09/24 12:09:24 update.go:1335: [WARN] [stacks] update recovery: wishlist was interrupted in verifying (started 2026-09-24T12:08:58Z) — the new version may have run; marking it Updating and RESUMING the health wait +2026/09/24 12:09:24 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache +2026/09/24 12:09:24 main.go:495: [WARN] [update] 1 interrupted update(s) will resume after the backup side is wired: [wishlist] +2026/09/24 12:09:24 info.go:13: [DEBUG] [system] CPUCollector.Start: sampleRate=5s +2026/09/24 12:09:24 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main +2026/09/24 12:09:24 main.go:515: [INFO] Metrics store opened at /opt/docker/felhom-controller/data/metrics.db +2026/09/24 12:09:24 main.go:527: [INFO] Metrics collector started (60s interval) +2026/09/24 12:09:24 restore_record_wiring.go:35: [INFO] [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false) +2026/09/24 12:09:24 main.go:576: [WARN] [update] resumed 1 interrupted update(s) +2026/09/24 12:09:24 notifier.go:81: [INFO] Notifier disabled (hub not configured) +2026/09/24 12:09:24 main.go:692: [INFO] [mailrelay] app-email shim unavailable (no hub configured or disabled in config) +2026/09/24 12:09:24 scheduler.go:102: [INFO] [scheduler] Registered periodic job: status-refresh (every 10s) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="status-refresh" interval=10s totalJobs=1 +2026/09/24 12:09:24 scheduler.go:102: [INFO] [scheduler] Registered periodic job: stack-scan (every 2m0s) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="stack-scan" interval=2m0s totalJobs=2 +2026/09/24 12:09:24 scheduler.go:102: [INFO] [scheduler] Registered periodic job: health-probes (every 10s) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="health-probes" interval=10s totalJobs=3 +2026/09/24 12:09:24 scheduler.go:102: [INFO] [scheduler] Registered periodic job: system-health (every 5m0s) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="system-health" interval=5m0s totalJobs=4 +2026/09/24 12:09:24 scheduler.go:102: [INFO] [scheduler] Registered periodic job: deadapp-check (every 30s) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="deadapp-check" interval=30s totalJobs=5 +2026/09/24 12:09:24 scheduler.go:102: [INFO] [scheduler] Registered periodic job: ring-spill (every 30s) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="ring-spill" interval=30s totalJobs=6 +2026/09/24 12:09:24 scheduler.go:132: [INFO] [scheduler] Daily job db-dump scheduled for 2026-09-25 13:20 CEST +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="db-dump" schedule="13:20" nextRun=2026-09-25T13:20:00+02:00 totalJobs=7 +2026/09/24 12:09:24 scheduler.go:102: [INFO] [scheduler] Registered periodic job: offsite-credential-retry (every 5m0s) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="offsite-credential-retry" interval=5m0s totalJobs=8 +2026/09/24 12:09:24 scheduler.go:102: [INFO] [scheduler] Registered periodic job: backup-cache (every 5m0s) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="backup-cache" interval=5m0s totalJobs=9 +2026/09/24 12:09:24 scheduler.go:132: [INFO] [scheduler] Daily job tier2-backup scheduled for 2026-09-24 14:20 CEST +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="tier2-backup" schedule="14:20" nextRun=2026-09-24T14:20:00+02:00 totalJobs=10 +2026/09/24 12:09:24 scheduler.go:132: [INFO] [scheduler] Daily job offbox-backup scheduled for 2026-09-24 15:05 CEST +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offbox-backup" schedule="15:05" nextRun=2026-09-24T15:05:00+02:00 totalJobs=11 +2026/09/24 12:09:24 scheduler.go:132: [INFO] [scheduler] Daily job offsite-abandon-sweep scheduled for 2026-09-25 05:10 CEST +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-abandon-sweep" schedule="05:10" nextRun=2026-09-25T05:10:00+02:00 totalJobs=12 +2026/09/24 12:09:24 scheduler.go:132: [INFO] [scheduler] Daily job offsite-integrity scheduled for 2026-09-25 06:00 CEST +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-integrity" schedule="06:00" nextRun=2026-09-25T06:00:00+02:00 totalJobs=13 +2026/09/24 12:09:24 scheduler.go:132: [INFO] [scheduler] Daily job offsite-proof scheduled for 2026-09-25 05:30 CEST +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-proof" schedule="05:30" nextRun=2026-09-25T05:30:00+02:00 totalJobs=14 +2026/09/24 12:09:24 scheduler.go:132: [INFO] [scheduler] Daily job metrics-prune scheduled for 2026-09-25 04:00 CEST +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="metrics-prune" schedule="04:00" nextRun=2026-09-25T04:00:00+02:00 totalJobs=15 +2026/09/24 12:09:24 scheduler.go:132: [INFO] [scheduler] Daily job fill-watch scheduled for 2026-09-25 03:30 CEST +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="fill-watch" schedule="03:30" nextRun=2026-09-25T03:30:00+02:00 totalJobs=16 +2026/09/24 12:09:24 selftest.go:50: [INFO] ========== Startup Self-Test ========== +2026/09/24 12:09:24 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:09:24 update.go:1382: [INFO] [stacks] update wishlist: resuming after a controller restart — `up -d` then the health wait +2026/09/24 12:09:24 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:09:24 manager.go:1463: [DEBUG] Running: docker compose up -d --remove-orphans (in /opt/docker/stacks/wishlist) +2026/09/24 12:09:24 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5518MB avail≈20380MB +2026/09/24 12:09:24 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24169492 → total=25898MB avail=20380MB used=5518MB (21.3%) +2026/09/24 12:09:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%) +2026/09/24 12:09:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:09:24 info.go:13: [DEBUG] [system] readLoadAvg: raw="3.63 3.79 3.37 13/1580 129" → 1m=3.63 5m=3.79 15m=3.37 +2026/09/24 12:09:24 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:09:24 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 77.6°C (hwmon2) +2026/09/24 12:09:24 info.go:13: [DEBUG] [system] GetInfo done in 93ms — mem=5518MB/25898MB (21.3%), rootDisk=25.5GB/68.4GB (37.3%), load=3.63/3.79/3.37, temp=77.6°C (hwmon2), cpu=0.0% +2026/09/24 12:09:24 selftest.go:68: [INFO] [PASS] Docker socket: reachable (v29.8.0) +2026/09/24 12:09:24 selftest.go:68: [INFO] [PASS] Stacks directory: /opt/docker/stacks +2026/09/24 12:09:24 selftest.go:68: [INFO] [PASS] Data directory: /opt/docker/felhom-controller/data (writable) +2026/09/24 12:09:24 selftest.go:68: [INFO] [PASS] System data path: /mnt/sys_drive +2026/09/24 12:09:24 selftest.go:68: [INFO] [PASS] Storage paths: 1 connected, 4 disconnected +2026/09/24 12:09:24 selftest.go:68: [INFO] [PASS] Git catalog: 56 app definitions found +2026/09/24 12:09:24 selftest.go:68: [INFO] [PASS] Hub connectivity: hub disabled, skipped +2026/09/24 12:09:24 selftest.go:68: [INFO] [PASS] Metrics DB: 8.2 MB +2026/09/24 12:09:24 selftest.go:70: [INFO] ======================================== +2026/09/24 12:09:24 selftest.go:71: [INFO] Self-test complete: 8 passed, 0 warnings, 0 failed +2026/09/24 12:09:24 scheduler.go:206: [INFO] [scheduler] Starting scheduler with 16 jobs +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] scheduler started: periodic=8 daily=8 +2026/09/24 12:09:24 server.go:250: [DEBUG] [web] NewServer: initializing web server v0.269.1 +2026/09/24 12:09:24 server.go:251: [DEBUG] [web] NewServer: backup=true scheduler=true alertMgr=true notifier=true updater=false +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-integrity: next run at 2026-09-25 06:00:00 CEST (waiting 15h50m35s) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job offbox-backup: next run at 2026-09-24 15:05:00 CEST (waiting 55m35s) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-abandon-sweep: next run at 2026-09-25 05:10:00 CEST (waiting 15h0m35s) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job fill-watch: next run at 2026-09-25 03:30:00 CEST (waiting 13h20m35s) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-proof: next run at 2026-09-25 05:30:00 CEST (waiting 15h20m35s) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job tier2-backup: next run at 2026-09-24 14:20:00 CEST (waiting 10m35s) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job db-dump: next run at 2026-09-25 13:20:00 CEST (waiting 23h10m35s) +2026/09/24 12:09:24 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:09:24 scheduler.go:67: [DEBUG] [scheduler] daily job metrics-prune: next run at 2026-09-25 04:00:00 CEST (waiting 13h50m35s) +2026/09/24 12:09:24 infra.go:67: [INFO] [infra] cloudflared skipped — no cf_tunnel_token configured (LAN-only node) +2026/09/24 12:09:24 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/sys_drive → [gokapi, privatebin, vikunja, wishlist, chaosoom, n8n] +2026/09/24 12:09:24 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/navidrome → [navidrome] +2026/09/24 12:09:24 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/nextcloud → [nextcloud] +2026/09/24 12:09:24 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx → [paperless-ngx] +2026/09/24 12:09:24 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/romm → [romm] +2026/09/24 12:09:24 backup.go:1119: [INFO] [backup] Found 10 DB dump files across drives +2026/09/24 12:09:24 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 12:09:24 manager.go:1483: [DEBUG] Command completed: docker compose up -d --remove-orphans (took 0.2s) +2026/09/24 12:09:24 update.go:1260: [INFO] [stacks] update wishlist: phase verifying +2026/09/24 12:09:24 server.go:327: [DEBUG] [web] loadTemplates: lang=hu loaded 81 templates, 1886 markers expanded in 52.690626ms +2026/09/24 12:09:24 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 1a7e97693477 wishlist wishlist ghcr.io/cmintey/wishlist:latest +7a34056c6ac0 nextcloud nextcloud nextcloud:34.0.4-apache +3a9300356092 nextcloud-redis nextcloud redis:7-alpine +a2b3dc9582ee nextcloud-db nextcloud mariadb:12.3 +115834f20aff felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1 +49227c9e347d n8n n8n n8nio/n8n:2.31.3 +557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0 +8ed284296786 romm-db romm mariadb:11.8 +0a82332f8e1c romm romm rommapp/romm:5.3.1 +9ec77cdb422a romm-redis ro... +2026/09/24 12:09:24 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:latest, not a database) +2026/09/24 12:09:24 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database) +2026/09/24 12:09:24 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database) +2026/09/24 12:09:24 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=a2b3dc9582ee) +2026/09/24 12:09:25 server.go:327: [DEBUG] [web] loadTemplates: lang=en loaded 81 templates, 1886 markers expanded in 28.911883ms +2026/09/24 12:09:25 server.go:270: [INFO] [web] Auth: using password from settings.json +2026/09/24 12:09:25 server.go:814: [DEBUG] [web] CatchAllMiddleware: controller host=felhom.enkisfelhom.hu +2026/09/24 12:09:25 main.go:1950: [INFO] Web UI listening on :8080 +2026/09/24 12:09:25 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping userdata skeleton +2026/09/24 12:09:25 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx not mounted — skipping userdata skeleton +2026/09/24 12:09:25 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/romm not mounted — skipping userdata skeleton +2026/09/24 12:09:25 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/navidrome not mounted — skipping userdata skeleton +2026/09/24 12:09:25 manager.go:258: [DEBUG] [integrations] ReapplyConfigForTarget: target=filebrowser integrations=0 +2026/09/24 12:09:25 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:09:25 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 12:09:25 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 12:09:25 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container n8n (image=n8nio/n8n:2.31.3, not a database) +2026/09/24 12:09:25 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 12:09:25 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786) +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5534MB avail≈20364MB +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24150188 → total=25898MB avail=20364MB used=5534MB (21.4%) +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%) +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] readLoadAvg: raw="3.63 3.79 3.37 9/1570 229" → 1m=3.63 5m=3.79 15m=3.37 +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 77.6°C (hwmon2) +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] GetInfo done in 132ms — mem=5534MB/25898MB (21.4%), rootDisk=25.5GB/68.4GB (37.3%), load=3.63/3.79/3.37, temp=77.6°C (hwmon2), cpu=0.0% +2026/09/24 12:09:25 healthcheck.go:86: [DEBUG] [monitor] Raw values: disk=37.3%, hdd=7.8% (configured=true), mem=21.4% (5534MB/25898MB), cpu=0.0%, temp=77.6°C (hwmon2) +2026/09/24 12:09:25 healthcheck.go:118: [DEBUG] [monitor] SSD disk: OK (37%) +2026/09/24 12:09:25 healthcheck.go:151: [DEBUG] [monitor] Memory: OK (21%) +2026/09/24 12:09:25 healthcheck.go:179: [WARN] [monitor] Temperature threshold breached: 78°C (limit: 75°C) +2026/09/24 12:09:25 healthcheck.go:182: [DEBUG] [monitor] Temperature: WARN (78°C >= 75°C) +2026/09/24 12:09:25 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 12:09:25 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 12:09:25 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 12:09:25 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 12:09:25 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 12:09:25 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 12:09:25 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973) +2026/09/24 12:09:25 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 12:09:25 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 12:09:25 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database) +2026/09/24 12:09:25 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 12:09:25 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 12:09:25 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 14 non-DB container(s) +2026/09/24 12:09:25 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 2 HDD mounts for /opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:09:25 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:09:25 [INFO] [backup] Discovered app data: 10 apps +2026/09/24 12:09:25 sync.go:627: [DEBUG] [sync] Running: git reset --hard origin/main +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:09:25 offbox_reconstitute.go:319: [INFO] [backup] nextcloud: pruned old undo copy pre-restore-20260924T104416Z-nextcloud-mariadb.sql (keeping the newest 3) +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 recovery_unit.go:224: [INFO] [backup] Recovery unit captured for nextcloud → /mnt/felhom-drives/scratch_hdd/userdata/nextcloud/backups/primary/nextcloud (images=3, secrets-referenced=3, data_keys=0, portable-carried=2/2, withheld=1) +2026/09/24 12:09:25 healthcheck.go:201: [DEBUG] [monitor] Docker daemon: OK +2026/09/24 12:09:25 healthcheck.go:209: [DEBUG] [monitor] Checking 1 protected containers: [traefik] +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] chaoscrash/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] chaoscrash/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] chaosoom/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] chaosoom/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] chaosoomb/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] chaosoomb/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 backup.go:1189: [INFO] [backup] Backup status cache refreshed +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 healthcheck.go:219: [DEBUG] [monitor] All protected containers running +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:09:25 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:09:25 healthcheck.go:238: [INFO] [monitor] Health check: status=warn +2026/09/24 12:09:25 healthcheck.go:242: [DEBUG] [monitor] Final status: warn (issues=0, warnings=5, info=3) +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:533: [DEBUG] [sync] n8n: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] n8n/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] navidrome/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] nextcloud/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:533: [DEBUG] [sync] vikunja: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 handlers.go:3432: [INFO] [web] FileBrowser sync — no config/compose change, ensured running without recreate (5 storage path(s)) +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] wishlist/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:440: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped +2026/09/24 12:09:25 sync.go:263: [INFO] [sync] Catalog sync complete +2026/09/24 12:09:25 sync.go:122: [INFO] [sync] Initial sync: Sablonok naprakészek — nincs változás +2026/09/24 12:09:29 auth.go:123: [DEBUG] [web] auth: rejected GET /api/stacks/wishlist from 172.18.0.10:35772 (invalid/expired session) +2026/09/24 12:09:29 auth.go:126: [WARN] [api] Unauthorized request to /api/stacks/wishlist from 172.18.0.10:35772 +2026/09/24 12:09:29 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.10:35772 (X-Forwarded-For: 192.168.0.180) +2026/09/24 12:09:29 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 12:09:29 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T12:09:29Z, active_sessions=1 +2026/09/24 12:09:29 auth.go:222: [INFO] [web] Login from 172.18.0.10:35772 +2026/09/24 12:09:29 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.10:35772 +2026/09/24 12:09:29 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.10:35772 +2026/09/24 12:09:29 info.go:13: [DEBUG] [system] CPUCollector: first sample — cpu=34.7% (idle=2569 total=3933) +2026/09/24 12:09:29 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event controller_started (severity info) — further controller_started events are logged at DEBUG only +2026/09/24 12:09:30 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:09:34 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:09:34 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:09:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 5s ago, effective interval 10s, healthy=false +2026/09/24 12:09:34 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 7 targets (1 skipped not due, 0 skipped no container) +2026/09/24 12:09:34 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:09:34 healthprobe.go:181: [DEBUG] Health probe romm: HTTP GET :8080/ → 200 (5ms) +2026/09/24 12:09:34 healthprobe.go:181: [DEBUG] Health probe n8n: API GET :5678/healthz → 200 (8ms) +2026/09/24 12:09:34 healthprobe.go:181: [DEBUG] Health probe navidrome: API GET :4533/ping → 200 (7ms) +2026/09/24 12:09:34 healthprobe.go:181: [DEBUG] Health probe privatebin: HTTP GET :8080/ → 200 (12ms) +2026/09/24 12:09:34 healthprobe.go:181: [DEBUG] Health probe paperless-ngx: HTTP GET :8000/ → 302 (12ms) +2026/09/24 12:09:34 healthprobe.go:181: [DEBUG] Health probe nextcloud: API GET :80/status.php → 200 (33ms) +2026/09/24 12:09:34 healthprobe.go:159: [WARN] Health probes: 6 ok, 1 unhealthy (of 7 probed) +2026/09/24 12:09:35 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:09:39 main.go:2356: [DEBUG] [bootrecon] boot window: fleet still changing (10 app(s)) — resampling +2026/09/24 12:09:40 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:09:44 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:09:44 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:09:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 5s ago, effective interval 10s, healthy=false +2026/09/24 12:09:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:44 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:09:44 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:09:44 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:09:45 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:09:49 main.go:2367: [INFO] [bootrecon] boot window: fleet settled after 20s (3 identical samples 5s apart) — sweeping +2026/09/24 12:09:49 bootrecon.go:236: [INFO] [bootrecon] "gokapi" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T10:37:48Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery +2026/09/24 12:09:49 bootrecon.go:236: [INFO] [bootrecon] "chaosoom" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T11:48:01Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery +2026/09/24 12:09:49 bootrecon.go:251: [INFO] [bootrecon] Boot reconciliation: nothing to start — 2 app(s) held (absent drive / quiesce / app-data operation): [chaosoom gokapi] +2026/09/24 12:09:50 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:09:54 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:09:54 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:09:54 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:09:54 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:09:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:09:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 5s ago, effective interval 10s, healthy=false +2026/09/24 12:09:54 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:09:54 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:09:54 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:09:55 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:10:00 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:10:04 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:10:04 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:10:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 5s ago, effective interval 10s, healthy=false +2026/09/24 12:10:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:04 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:10:04 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:10:04 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:10:05 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:10:10 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:10:14 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:10:14 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:10:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 5s ago, effective interval 10s, healthy=false +2026/09/24 12:10:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:10:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:14 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container) +2026/09/24 12:10:15 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:10:20 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:10:24 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:10:24 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5456MB avail≈20442MB +2026/09/24 12:10:24 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24243416 → total=25898MB avail=20442MB used=5456MB (21.1%) +2026/09/24 12:10:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%) +2026/09/24 12:10:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:10:24 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.87 3.54 3.31 6/1524 568" → 1m=2.87 5m=3.54 15m=3.31 +2026/09/24 12:10:24 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:10:24 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 68.4°C (hwmon2) +2026/09/24 12:10:24 info.go:13: [DEBUG] [system] GetInfo done in 86ms — mem=5456MB/25898MB (21.1%), rootDisk=25.5GB/68.4GB (37.3%), load=2.87/3.54/3.31, temp=68.4°C (hwmon2), cpu=29.1% +2026/09/24 12:10:24 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:10:24 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:10:24 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:10:24 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:10:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 5s ago, effective interval 10s, healthy=false +2026/09/24 12:10:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:24 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:10:24 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:10:24 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:10:25 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:10:30 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:10:34 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:10:34 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:10:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 5s ago, effective interval 10s, healthy=false +2026/09/24 12:10:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:10:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:34 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container) +2026/09/24 12:10:35 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:10:40 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:10:44 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:10:44 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:10:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 4s ago, effective interval 10s, healthy=false +2026/09/24 12:10:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:44 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:10:44 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:10:44 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:10:45 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:10:50 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:10:54 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:10:54 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:10:54 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:10:54 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:10:54 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:10:54 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:10:54 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:10:54 fillwatch.go:256: [INFO] [fillwatch] checked 7 filesystem(s), 0 unreadable/skipped, 0 notification(s); bands: all ok +2026/09/24 12:10:54 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:10:54 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:10:54 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:10:54 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:10:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 4s ago, effective interval 10s, healthy=false +2026/09/24 12:10:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:10:54 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:10:54 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:10:54 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:10:55 healthprobe.go:190: [WARN] Health probe wishlist: HTTP GET :8999/ → Get "http://wishlist:8999/": dial tcp 172.18.0.5:8999: connect: connection refused +2026/09/24 12:10:55 update.go:969: [ERROR] [stacks] update wishlist FAILED after the new version was started: not healthy: not healthy within 1m30s (last: health check failing) +2026/09/24 12:10:55 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:10:55 manager.go:1463: [DEBUG] Running: docker compose logs --no-color --tail 400 (in /opt/docker/stacks/wishlist) +2026/09/24 12:10:55 manager.go:1483: [DEBUG] Command completed: docker compose logs --no-color --tail 400 (took 0.1s) +2026/09/24 12:10:55 update.go:961: [INFO] [stacks] update wishlist: kept 3084 bytes of the app's own log at /opt/docker/stacks/wishlist/hold-logs/20260924T121055Z/compose-logs.txt before stopping it (R-621) +2026/09/24 12:10:55 update.go:1260: [INFO] [stacks] update wishlist: phase undoing +2026/09/24 12:10:55 undo.go:501: [WARN] [stacks] update wishlist: UNDO — putting back the previous version and its 2 volume copy(ies) (reason: not healthy: not healthy within 1m30s (last: health check failing)) +2026/09/24 12:10:55 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:10:55 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/wishlist) +2026/09/24 12:10:56 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.4s) +2026/09/24 12:10:57 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/wishlist — 2 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:10:57 [INFO] [stacks] SaveAppConfig: saved config for wishlist +2026/09/24 12:10:57 pin.go:93: [INFO] [stacks] pin wishlist: wishlist=ghcr.io/cmintey/wishlist:v0.67.1 +2026/09/24 12:10:57 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:10:57 manager.go:1463: [DEBUG] Running: docker compose up -d --remove-orphans (in /opt/docker/stacks/wishlist) +2026/09/24 12:10:58 manager.go:1483: [DEBUG] Command completed: docker compose up -d --remove-orphans (took 0.4s) +2026/09/24 12:11:04 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:11:04 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:11:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:04 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 12:11:04 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:11:04 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:11:13 healthprobe.go:181: [DEBUG] Health probe wishlist: HTTP GET :3000/ → 307 (6ms) +2026/09/24 12:11:13 installed.go:409: [DEBUG] [stacks] installed-images wishlist: unchanged (1 service(s)) — app.yaml not rewritten +2026/09/24 12:11:13 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/wishlist — 2 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:11:13 [INFO] [stacks] SaveAppConfig: saved config for wishlist +2026/09/24 12:11:13 undo.go:621: [INFO] [stacks] update wishlist: event app_update_undone +2026/09/24 12:11:13 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_update_undone (severity warning) — further app_update_undone events are logged at DEBUG only +2026/09/24 12:11:13 undo.go:549: [INFO] [stacks] update wishlist: UNDONE in 18s — the previous version is running on the data from before the update (the app's health check passed) +2026/09/24 12:11:14 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:11:14 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:11:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:11:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:14 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container) +2026/09/24 12:11:15 router.go:1065: [INFO] [api] Manual catalog sync requested +2026/09/24 12:11:15 sync.go:208: [INFO] [sync] Starting catalog sync +2026/09/24 12:11:15 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main) +2026/09/24 12:11:15 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache +2026/09/24 12:11:15 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main +2026/09/24 12:11:15 sync.go:627: [DEBUG] [sync] Running: git reset --hard origin/main +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] chaoscrash/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] chaoscrash/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] chaosoom/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] chaosoom/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] chaosoomb/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] chaosoomb/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:533: [DEBUG] [sync] n8n: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] n8n/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] navidrome/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] nextcloud/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:533: [DEBUG] [sync] vikunja: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:416: [INFO] [sync] Updated wishlist/.felhom.yml +2026/09/24 12:11:15 sync.go:565: [DEBUG] [sync] wishlist/.felhom.yml: src=0a4a665ca4f30e3c, dst=0a4a665ca4f30e3c (changed) +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped +2026/09/24 12:11:15 sync.go:440: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:11:15 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:11:15 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:11:15 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:11:15 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:11:15 sync.go:244: [DEBUG] [sync] Post-sync hook: triggering missing field injection for 1 stack(s): [wishlist] +2026/09/24 12:11:15 deploy.go:1104: [DEBUG] [stacks] InjectMissingFields: checking 1 stacks +2026/09/24 12:11:15 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack wishlist — 2 deploy fields, 2 existing env vars +2026/09/24 12:11:15 deploy.go:1189: [INFO] [stacks] InjectMissingFields: processed 1 stacks +2026/09/24 12:11:15 sync.go:263: [INFO] [sync] Catalog sync complete +2026/09/24 12:11:15 router.go:1071: [INFO] [api] Catalog sync completed: Sablonok frissítve — frissítve: wishlist +2026/09/24 12:11:17 router.go:362: [INFO] [api] Manual stack rescan requested +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:11:17 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:11:17 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:11:17 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:11:17 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:11:17 router.go:369: [INFO] [api] Stack rescan completed: 58 stacks found +2026/09/24 12:11:19 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.10:35772 (X-Forwarded-For: 192.168.0.180) +2026/09/24 12:11:19 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 12:11:19 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T12:11:19Z, active_sessions=2 +2026/09/24 12:11:19 auth.go:222: [INFO] [web] Login from 172.18.0.10:35772 +2026/09/24 12:11:19 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.10:35772 +2026/09/24 12:11:19 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.10:35772 +2026/09/24 12:11:19 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:35772 +2026/09/24 12:11:19 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:35772 +2026/09/24 12:11:19 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:35772 +2026/09/24 12:11:19 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:35772 +2026/09/24 12:11:24 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:11:24 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5715MB avail≈20183MB +2026/09/24 12:11:24 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=23935548 → total=25898MB avail=20183MB used=5715MB (22.1%) +2026/09/24 12:11:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%) +2026/09/24 12:11:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:11:24 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.50 3.32 3.24 8/1533 1050" → 1m=2.50 5m=3.32 15m=3.24 +2026/09/24 12:11:24 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:11:24 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 69.5°C (hwmon2) +2026/09/24 12:11:24 info.go:13: [DEBUG] [system] GetInfo done in 57ms — mem=5715MB/25898MB (22.1%), rootDisk=25.5GB/68.4GB (37.3%), load=2.50/3.32/3.24, temp=69.5°C (hwmon2), cpu=41.6% +2026/09/24 12:11:24 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:11:24 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan +2026/09/24 12:11:24 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting +2026/09/24 12:11:24 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:11:24 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:11:24 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:11:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 12s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:24 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:11:24 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:11:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:11:24 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:11:24 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:11:24 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:11:25 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 109ms) +2026/09/24 12:11:25 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) diff --git a/documentation/audits/night-2026-09-24/E/round-04.json b/documentation/audits/night-2026-09-24/E/round-04.json new file mode 100644 index 00000000..6172d4f1 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-04.json @@ -0,0 +1,196 @@ +{ + "round": 4, + "action": "failing_step", + "accident": { + "kind": "controller_killed", + "cmd": "kill -9 of the controller PID (1 of max 3)", + "fired_at": "14:09:22", + "result": "killed pid 2474 rc=0" + }, + "app": "wishlist", + "started": "2026-09-24T12:08:51Z", + "before": { + "state": { + "deployed": true, + "state": "running", + "update_phase": null, + "hold_reason": null, + "hold_kind": null, + "update_error": null, + "ladder_steps_left": null + }, + "badges": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "page_hu": [ + "Temperature high: 84°C (hwmon2) Rendszermonitor →", + "+ 1 további figyelmeztetés →", + "Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el." + ], + "page_en": [ + "Temperature high: 84°C (hwmon2) System monitor →", + "+ 1 more warning →", + "Support is working on this app, so its data stays: for now you can remove only the app itself." + ] + }, + "badge_catchup_s": 4.7, + "act": "Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}", + "armed_at": "14:09:13", + "armed_why": "at verifying", + "phases": [ + [ + 6.1, + "backing-up" + ], + [ + 8.2, + "safety-dump" + ], + [ + 9.3, + "pulling" + ], + [ + 10.3, + "copying" + ], + [ + 21.4, + "starting" + ], + [ + 21.9, + "verifying" + ], + [ + 123.9, + "undoing" + ], + [ + 141.8, + "undone" + ] + ], + "controller_back_s": 0.2, + "time_to_steady_s": 147.7, + "after": { + "state": { + "deployed": true, + "state": "running", + "update_phase": "undone", + "hold_reason": null, + "hold_kind": null, + "update_error": null, + "ladder_steps_left": null + }, + "badges": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "page_hu": [ + "Temperature high: 78°C (hwmon2) Rendszermonitor →", + "+ 1 további figyelmeztetés →", + "A(z) wishlist frissítése 2026-09-24 14:10-kor nem sikerült. A doboz automatikusan visszaállította az előző változatot és az adatokat — semmi nem veszett el.", + "Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el." + ], + "page_en": [ + "Temperature high: 78°C (hwmon2) System monitor →", + "+ 1 more warning →", + "The update of wishlist at 2026-09-24 14:10 did not succeed. The box put back the previous version and its data automatically — nothing was lost.", + "Support is working on this app, so its data stays: for now you can remove only the app itself." + ] + }, + "readback": { + "A": true + }, + "events": [], + "box_log": [ + "2026-09-24T12:08:59Z INFO [stacks] Stack wishlist started successfully (took 0.4s)", + "2026-09-24T12:09:00Z INFO [backup] update pre-backup for wishlist: volume dump OK", + "2026-09-24T12:09:00Z INFO [backup] Recovery unit captured for wishlist → /mnt/sys_drive/felhom-data/backups/primary/wishlist (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0)", + "2026-09-24T12:09:00Z INFO [backup] update pre-backup for wishlist: recovery unit captured (0 database dump(s))", + "2026-09-24T12:09:00Z INFO [backup] Tier 2 copied wishlist → /mnt/felhom-drives/scratch_hdd/backups/secondary/wishlist (323.7 KB, 0 leg(s), 0s)", + "2026-09-24T12:09:00Z INFO [backup] update pre-backup for wishlist: complete in 2.015s", + "2026-09-24T12:09:00Z INFO [stacks] update wishlist: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-24T12:09:00Z", + "2026-09-24T12:09:00Z INFO [stacks] update wishlist: phase safety-dump", + "2026-09-24T12:09:00Z INFO [backup] Discovered 3 databases", + "2026-09-24T12:09:00Z INFO [backup] update safety dump for wishlist: the app has no database — nothing to copy (no-op)", + "2026-09-24T12:09:00Z INFO [stacks] update wishlist: safety dump done (0 file(s)) []", + "2026-09-24T12:09:01Z INFO [stacks] update wishlist: the undo copy will hold 2 named volume(s), 0.3 MiB", + "2026-09-24T12:09:01Z INFO [stacks] update wishlist: phase pinning", + "2026-09-24T12:09:01Z INFO [stacks] update wishlist: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/wishlist/docker-compose.yml (wishlist=ghcr.io/cmintey/wishlist:latest)", + "2026-09-24T12:09:01Z INFO [stacks] update wishlist: phase pulling", + "2026-09-24T12:09:02Z INFO [stacks] update wishlist: phase copying", + "2026-09-24T12:09:03Z INFO [stacks] Stack wishlist post-start status:", + "2026-09-24T12:09:03Z INFO [stacks] wishlist ghcr.io/cmintey/wishlist:v0.67.1@sha256:4b89bfb5b57ffb087c33978d21b09048e5c37f4506326e9ccd2705a0a1d86548 running Up 3 seconds (health: starting)", + "2026-09-24T12:09:24Z WARN [stacks] update recovery: wishlist was interrupted in verifying (started 2026-09-24T12:08:58Z) — the new version may have run; marking it Updating and RESUMING the health wait", + "2026-09-24T12:09:24Z WARN [update] 1 interrupted update(s) will resume after the backup side is wired: [wishlist]", + "2026-09-24T12:09:24Z INFO [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false)", + "2026-09-24T12:09:24Z INFO [scheduler] Registered periodic job: deadapp-check (every 30s)", + "2026-09-24T12:09:24Z INFO [scheduler] Registered periodic job: backup-cache (every 5m0s)", + "2026-09-24T12:09:24Z INFO [scheduler] Daily job tier2-backup scheduled for 2026-09-24 14:20 CEST", + "2026-09-24T12:09:24Z INFO [scheduler] Daily job offbox-backup scheduled for 2026-09-24 15:05 CEST", + "2026-09-24T12:09:24Z INFO [stacks] update wishlist: resuming after a controller restart — `up -d` then the health wait", + "2026-09-24T12:09:24Z INFO [backup] Found 10 DB dump files across drives", + "2026-09-24T12:09:24Z INFO [stacks] update wishlist: phase verifying", + "2026-09-24T12:09:25Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:09:25Z WARN [monitor] Temperature threshold breached: 78°C (limit: 75°C)", + "2026-09-24T12:09:25Z INFO [backup] Discovered 3 databases", + "2026-09-24T12:09:25Z INFO [backup] nextcloud: pruned old undo copy pre-restore-20260924T104416Z-nextcloud-mariadb.sql (keeping the newest 3)", + "2026-09-24T12:09:25Z INFO [backup] Recovery unit captured for nextcloud → /mnt/felhom-drives/scratch_hdd/userdata/nextcloud/backups/primary/nextcloud (images=3, secrets-referenced=3, data_keys=0, portable-carried=2/2, withheld=1)", + "2026-09-24T12:09:25Z INFO [backup] Backup status cache refreshed", + "2026-09-24T12:09:29Z WARN [api] Unauthorized request to /api/stacks/wishlist from 172.18.0.10:35772", + "2026-09-24T12:09:30Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:09:35Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:09:40Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:09:45Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:09:49Z INFO [bootrecon] \"gokapi\" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T10:37:48Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery", + "2026-09-24T12:09:49Z INFO [bootrecon] \"chaosoom\" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T11:48:01Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery", + "2026-09-24T12:09:50Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:09:55Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:10:00Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:10:05Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:10:10Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:10:15Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:10:20Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:10:25Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:10:30Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:10:35Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:10:40Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:10:45Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:10:50Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:10:55Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused", + "2026-09-24T12:10:55Z ERROR [stacks] update wishlist FAILED after the new version was started: not healthy: not healthy within 1m30s (last: health check failing)", + "2026-09-24T12:10:55Z INFO [stacks] update wishlist: kept 3084 bytes of the app's own log at /opt/docker/stacks/wishlist/hold-logs/20260924T121055Z/compose-logs.txt before stopping it (R-621)", + "2026-09-24T12:10:55Z INFO [stacks] update wishlist: phase undoing", + "2026-09-24T12:10:55Z WARN [stacks] update wishlist: UNDO — putting back the previous version and its 2 volume copy(ies) (reason: not healthy: not healthy within 1m30s (last: health check failing))", + "2026-09-24T12:10:57Z INFO [stacks] pin wishlist: wishlist=ghcr.io/cmintey/wishlist:v0.67.1", + "2026-09-24T12:11:13Z INFO [stacks] update wishlist: event app_update_undone", + "2026-09-24T12:11:13Z WARN notifier disabled (no hub configured): DROPPED event app_update_undone (severity warning) — further app_update_undone events are logged at DEBUG only", + "2026-09-24T12:11:13Z INFO [stacks] update wishlist: UNDONE in 18s — the previous version is running on the data from before the update (the app's health check passed)", + "2026-09-24T12:11:15Z INFO [sync] Updated wishlist/.felhom.yml", + "2026-09-24T12:11:15Z INFO [api] Catalog sync completed: Sablonok frissítve — frissítve: wishlist" + ], + "undo_copies_left": "0" +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/round-04.log b/documentation/audits/night-2026-09-24/E/round-04.log new file mode 100644 index 00000000..c8136feb --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-04.log @@ -0,0 +1,17 @@ +14:08:51 ==== ROUND 4: failing_step on wishlist x controller_killed (2026-09-24T12:08:51Z) +14:08:53 drill: wishlist: failing step ghcr.io/cmintey/wishlist:v0.67.1 -> ghcr.io/cmintey/wishlist:latest + probe 8999 +14:08:58 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +14:08:58 + 6.1s phase=backing-up +14:09:00 + 8.2s phase=safety-dump +14:09:01 + 9.3s phase=pulling +14:09:02 + 10.3s phase=copying +14:09:13 + 21.4s phase=starting +14:09:13 + 21.9s phase=verifying +14:09:13 >>> ARMED accident controller_killed (at verifying) +14:10:55 + 123.9s phase=undoing +14:11:13 + 141.8s phase=undone +14:11:13 + 141.8s wishlist: deployed=True state=running updating=False phase=undone hold=None +14:11:14 drill: wishlist: back to ghcr.io/cmintey/wishlist:v0.67.1 and its real probe +14:11:19 >>> accident done: {'kind': 'controller_killed', 'cmd': 'kill -9 of the controller PID (1 of max 3)', 'fired_at': '14:09:22', 'result': 'killed pid 2474 rc=0'} +14:11:19 + 147.7s wishlist: deployed=True state=running updating=False phase=undone hold=None +14:11:20 wishlist: sign-in as the seeded user type=success ok=True (wrong password refused) diff --git a/documentation/audits/night-2026-09-24/E/round-04.stdout b/documentation/audits/night-2026-09-24/E/round-04.stdout new file mode 100644 index 00000000..c0f37007 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-04.stdout @@ -0,0 +1,18 @@ +14:08:51 ==== ROUND 4: failing_step on wishlist x controller_killed (2026-09-24T12:08:51Z) +14:08:53 drill: wishlist: failing step ghcr.io/cmintey/wishlist:v0.67.1 -> ghcr.io/cmintey/wishlist:latest + probe 8999 +14:08:58 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +14:08:58 + 6.1s phase=backing-up +14:09:00 + 8.2s phase=safety-dump +14:09:01 + 9.3s phase=pulling +14:09:02 + 10.3s phase=copying +14:09:13 + 21.4s phase=starting +14:09:13 + 21.9s phase=verifying +14:09:13 >>> ARMED accident controller_killed (at verifying) +14:10:55 + 123.9s phase=undoing +14:11:13 + 141.8s phase=undone +14:11:13 + 141.8s wishlist: deployed=True state=running updating=False phase=undone hold=None +14:11:14 drill: wishlist: back to ghcr.io/cmintey/wishlist:v0.67.1 and its real probe +14:11:19 >>> accident done: {'kind': 'controller_killed', 'cmd': 'kill -9 of the controller PID (1 of max 3)', 'fired_at': '14:09:22', 'result': 'killed pid 2474 rc=0'} +14:11:19 + 147.7s wishlist: deployed=True state=running updating=False phase=undone hold=None +14:11:20 wishlist: sign-in as the seeded user type=success ok=True (wrong password refused) +14:11:27 ==== ROUND 4 END: steady in 147.7s; readback={'A': True}; events=[] diff --git a/documentation/audits/night-2026-09-24/E/round-05-controller.log b/documentation/audits/night-2026-09-24/E/round-05-controller.log new file mode 100644 index 00000000..d4ce3957 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-05-controller.log @@ -0,0 +1,127 @@ +2026/09/24 12:11:35 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.10:35772 (X-Forwarded-For: 192.168.0.180) +2026/09/24 12:11:35 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 12:11:35 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T12:11:35Z, active_sessions=3 +2026/09/24 12:11:35 auth.go:222: [INFO] [web] Login from 172.18.0.10:35772 +2026/09/24 12:11:35 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.10:35772 +2026/09/24 12:11:35 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.10:35772 +2026/09/24 12:11:35 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/gokapi from 172.18.0.10:35772 +2026/09/24 12:11:35 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/gokapi from 172.18.0.10:35772 +2026/09/24 12:11:35 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/gokapi from 172.18.0.10:35772 +2026/09/24 12:11:35 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/gokapi from 172.18.0.10:35772 +2026/09/24 12:11:35 router.go:907: [INFO] [api] Remove requested for stack: gokapi +2026/09/24 12:11:35 delete.go:526: [DEBUG] [stacks] RemoveStack called: name="gokapi", removeHDDData=true, backupPathsToRemove=2 +2026/09/24 12:11:35 delete.go:540: [DEBUG] [stacks] RemoveStack gokapi: state=stopped, deployed=true, orphaned=false, deploying=false +2026/09/24 12:11:35 delete.go:597: [INFO] Removing deployed stack: gokapi (removeHDDData=true, hddDeclared=false, backupPaths=2) +2026/09/24 12:11:35 delete.go:609: [DEBUG] [stacks] RemoveStack gokapi: found 0 HDD mounts from compose file +2026/09/24 12:11:35 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, GOKAPI_PASSWORD, SUBDOMAIN, IMPORT_PATH] (9 app + 0 system) +2026/09/24 12:11:35 manager.go:1463: [DEBUG] Running: docker compose down --volumes (in /opt/docker/stacks/gokapi) +2026/09/24 12:11:36 manager.go:1483: [DEBUG] Command completed: docker compose down --volumes (took 0.1s) +2026/09/24 12:11:36 delete.go:623: [DEBUG] [stacks] RemoveStack gokapi: compose down output: +2026/09/24 12:11:44 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:11:44 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:11:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 32s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:44 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:11:44 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:11:44 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:11:54 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:11:54 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:11:54 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:11:54 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:11:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 42s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:11:54 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:11:54 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:11:54 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:12:02 delete.go:650: [INFO] [stacks] RemoveStack gokapi: removed volume(s) [gokapi_gokapi_config gokapi_gokapi_data] +2026/09/24 12:12:02 delete.go:707: [DEBUG] [stacks] RemoveStack gokapi: processing 2 backup paths for removal (base=/mnt/sys_drive/felhom-data/backups) +2026/09/24 12:12:02 delete.go:724: [INFO] Removed backup data: /mnt/sys_drive/felhom-data/backups/primary/gokapi (132K) +2026/09/24 12:12:02 delete.go:732: [DEBUG] [stacks] RemoveStack gokapi: removing app.yaml at /opt/docker/stacks/gokapi/app.yaml +2026/09/24 12:12:02 delete.go:749: [INFO] Stack gokapi removed successfully (took 26.6s) +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:12:02 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:12:02 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:12:02 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 12:12:02 r474_remove_mirrors.go:91: [INFO] [backup] remove gokapi: Tier-2 mirror deleted: /mnt/felhom-drives/scratch_hdd/backups/secondary/gokapi (126.8 KB) +2026/09/24 12:12:02 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17657 bytes) +2026/09/24 12:12:02 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:12:02 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_removed (severity info) — further app_removed events are logged at DEBUG only +2026/09/24 12:12:02 lifecycle.go:176: [DEBUG] [integrations] OnStackRemove: stack=gokapi integrationsFound=0 +2026/09/24 12:12:04 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:12:04 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 52s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:12:04 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container) diff --git a/documentation/audits/night-2026-09-24/E/round-05.json b/documentation/audits/night-2026-09-24/E/round-05.json new file mode 100644 index 00000000..ae8e4e11 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-05.json @@ -0,0 +1,76 @@ +{ + "round": 5, + "action": "remove_held", + "accident": "none", + "app": "gokapi", + "started": "2026-09-24T12:11:35Z", + "before": { + "state": { + "deployed": true, + "state": "stopped", + "update_phase": null, + "hold_reason": "Az alkalmazást ismét leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). A Felhom ügyfélszolgálatát értesítettük. Az Indítás gombbal újra megpróbálhatod.", + "hold_kind": "unhealthy_stop", + "update_error": null, + "ladder_steps_left": null + }, + "badges": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "page_hu": [ + "Temperature high: 78°C (hwmon2) Rendszermonitor →", + "+ 1 további figyelmeztetés →", + "Az alkalmazást ismét leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). A Felhom ügyfélszolgálatát értesítettük. Az Indítás gombbal újra megpróbálhatod.", + "Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el." + ], + "page_en": [ + "Temperature high: 78°C (hwmon2) System monitor →", + "+ 1 more warning →", + "We stopped the app again because it kept crashing (or ran out of memory). Felhom support has been told. Press Start to try again.", + "Support is working on this app, so its data stays: for now you can remove only the app itself." + ] + }, + "held_before": { + "deployed": true, + "hold_kind": "unhealthy_stop", + "hold_reason": "Az alkalmazást ismét leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). A Felhom ügyfélszolgálatát értesítettük. Az Indítás gombbal újra megpróbálhatod." + }, + "act": "remove (data + backups) -> 200 {'ok': True, 'data': {'removed': 'gokapi', 'volumes_removed': ['gokapi_gokapi_config', 'gokapi_gokapi_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalmazás nem tárolt ", + "time_to_steady_s": 26.8, + "after": { + "state": { + "deployed": false, + "state": "not_deployed", + "update_phase": null, + "hold_reason": null, + "hold_kind": null, + "update_error": null, + "ladder_steps_left": null + }, + "leftovers": "" + }, + "readback": null, + "events": [ + "2026-09-24T12:12:02Z app_removed (info)" + ], + "box_log": [ + "2026-09-24T12:11:35Z INFO [api] Remove requested for stack: gokapi", + "2026-09-24T12:11:35Z INFO Removing deployed stack: gokapi (removeHDDData=true, hddDeclared=false, backupPaths=2)", + "2026-09-24T12:12:02Z INFO [stacks] RemoveStack gokapi: removed volume(s) [gokapi_gokapi_config gokapi_gokapi_data]", + "2026-09-24T12:12:02Z INFO Removed backup data: /mnt/sys_drive/felhom-data/backups/primary/gokapi (132K)", + "2026-09-24T12:12:02Z INFO Stack gokapi removed successfully (took 26.6s)", + "2026-09-24T12:12:02Z INFO [backup] remove gokapi: Tier-2 mirror deleted: /mnt/felhom-drives/scratch_hdd/backups/secondary/gokapi (126.8 KB)" + ], + "undo_copies_left": "0" +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/round-05.log b/documentation/audits/night-2026-09-24/E/round-05.log new file mode 100644 index 00000000..ffda0fcf --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-05.log @@ -0,0 +1,3 @@ +14:11:35 ==== ROUND 5: remove_held on gokapi x none (2026-09-24T12:11:35Z) +14:12:02 remove (data + backups) -> 200 {'ok': True, 'data': {'removed': 'gokapi', 'volumes_removed': ['gokapi_gokapi_config', 'gokapi_gokapi_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalmazás nem tárolt +14:12:02 + 26.8s gokapi: deployed=False state=not_deployed updating=False phase=None hold=None diff --git a/documentation/audits/night-2026-09-24/E/round-05.stdout b/documentation/audits/night-2026-09-24/E/round-05.stdout new file mode 100644 index 00000000..e73c9cfb --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-05.stdout @@ -0,0 +1,4 @@ +14:11:35 ==== ROUND 5: remove_held on gokapi x none (2026-09-24T12:11:35Z) +14:12:02 remove (data + backups) -> 200 {'ok': True, 'data': {'removed': 'gokapi', 'volumes_removed': ['gokapi_gokapi_config', 'gokapi_gokapi_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalmazás nem tárolt +14:12:02 + 26.8s gokapi: deployed=False state=not_deployed updating=False phase=None hold=None +14:12:13 ==== ROUND 5 END: steady in 26.8s; readback=None; events=['2026-09-24T12:12:02Z app_removed (info)'] diff --git a/documentation/audits/night-2026-09-24/E/round-06-controller.log b/documentation/audits/night-2026-09-24/E/round-06-controller.log new file mode 100644 index 00000000..ee434afe --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-06-controller.log @@ -0,0 +1,1174 @@ +2026/09/24 12:12:20 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.10:35772 (X-Forwarded-For: 192.168.0.180) +2026/09/24 12:12:20 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 12:12:20 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T12:12:20Z, active_sessions=4 +2026/09/24 12:12:20 auth.go:222: [INFO] [web] Login from 172.18.0.10:35772 +2026/09/24 12:12:20 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.10:35772 +2026/09/24 12:12:20 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.10:35772 +2026/09/24 12:12:20 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/navidrome from 172.18.0.10:35772 +2026/09/24 12:12:20 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/navidrome from 172.18.0.10:35772 +2026/09/24 12:12:21 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/navidrome from 172.18.0.10:35772 +2026/09/24 12:12:21 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/navidrome from 172.18.0.10:35772 +2026/09/24 12:12:22 router.go:1065: [INFO] [api] Manual catalog sync requested +2026/09/24 12:12:22 sync.go:208: [INFO] [sync] Starting catalog sync +2026/09/24 12:12:22 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main) +2026/09/24 12:12:22 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache +2026/09/24 12:12:22 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main +2026/09/24 12:12:22 sync.go:627: [DEBUG] [sync] Running: git reset --hard origin/main +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] chaoscrash/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] chaoscrash/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] chaosoom/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] chaosoom/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] chaosoomb/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] chaosoomb/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:533: [DEBUG] [sync] n8n: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] n8n/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:533: [DEBUG] [sync] navidrome: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:416: [INFO] [sync] Updated navidrome/.felhom.yml +2026/09/24 12:12:22 sync.go:565: [DEBUG] [sync] navidrome/.felhom.yml: src=2dd6bc7d57cc1b20, dst=2dd6bc7d57cc1b20 (changed) +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] nextcloud/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:533: [DEBUG] [sync] vikunja: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] wishlist/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped +2026/09/24 12:12:22 sync.go:440: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:12:22 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:12:22 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:12:22 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:12:22 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 12:12:22 sync.go:244: [DEBUG] [sync] Post-sync hook: triggering missing field injection for 1 stack(s): [navidrome] +2026/09/24 12:12:22 deploy.go:1104: [DEBUG] [stacks] InjectMissingFields: checking 1 stacks +2026/09/24 12:12:22 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack navidrome — 3 deploy fields, 3 existing env vars +2026/09/24 12:12:22 deploy.go:1189: [INFO] [stacks] InjectMissingFields: processed 1 stacks +2026/09/24 12:12:22 sync.go:263: [INFO] [sync] Catalog sync complete +2026/09/24 12:12:22 router.go:1071: [INFO] [api] Catalog sync completed: Sablonok frissítve — frissítve: navidrome +2026/09/24 12:12:24 router.go:362: [INFO] [api] Manual stack rescan requested +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:12:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:12:24 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:12:24 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:12:24 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 12:12:24 router.go:369: [INFO] [api] Stack rescan completed: 58 stacks found +2026/09/24 12:12:24 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:12:24 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5539MB avail≈20359MB +2026/09/24 12:12:24 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24144168 → total=25898MB avail=20359MB used=5539MB (21.4%) +2026/09/24 12:12:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%) +2026/09/24 12:12:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:12:24 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.40 3.14 3.18 13/1538 1487" → 1m=2.40 5m=3.14 15m=3.18 +2026/09/24 12:12:24 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:12:24 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 67.8°C (hwmon2) +2026/09/24 12:12:24 info.go:13: [DEBUG] [system] GetInfo done in 98ms — mem=5539MB/25898MB (21.4%), rootDisk=25.5GB/68.4GB (37.3%), load=2.40/3.14/3.18, temp=67.8°C (hwmon2), cpu=30.6% +2026/09/24 12:12:24 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:12:24 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:12:24 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:12:24 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:12:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m12s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:24 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:12:24 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:12:24 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:12:26 router.go:591: [INFO] [api] update requested for stack: navidrome +2026/09/24 12:12:26 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5545MB avail≈20353MB +2026/09/24 12:12:26 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24138404 → total=25898MB avail=20353MB used=5545MB (21.4%) +2026/09/24 12:12:26 deploy.go:1250: [INFO] [stacks] Memory check: total=25898MB, reserved=384MB, usable=25514MB, committed_used=1768MB, new_req=50MB, remaining=23696MB +2026/09/24 12:12:26 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:12:26 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5543MB avail≈20355MB +2026/09/24 12:12:26 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24140476 → total=25898MB avail=20355MB used=5543MB (21.4%) +2026/09/24 12:12:26 deploy.go:1250: [INFO] [stacks] Memory check: total=25898MB, reserved=384MB, usable=25514MB, committed_used=1768MB, new_req=50MB, remaining=23696MB +2026/09/24 12:12:26 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:12:26 update.go:512: [INFO] [stacks] update navidrome: accepted — guarded update started +2026/09/24 12:12:26 update.go:1260: [INFO] [stacks] update navidrome: phase checking +2026/09/24 12:12:26 update.go:762: [INFO] [stacks] update navidrome: ladder — the installed version navidrome=deluan/navidrome:0.64.1 matches no update_ladder entry (2 entries) — an app older than the ladder has no record to climb; the catalog's current definition +2026/09/24 12:12:26 update.go:777: [INFO] [stacks] update navidrome: no usable copy on any tier — younger than 1m0s and not older than this install's deploy (2026-09-24T11:15:24Z) (found: Tier 2 (second drive) at 2026-09-24T11:19:15Z (53m0s old); Tier 1 (own recovery unit) at 2026-09-24T11:20:56Z (52m0s old)) — backing up first +2026/09/24 12:12:26 update.go:1260: [INFO] [stacks] update navidrome: phase backing-up +2026/09/24 12:12:26 update_guard.go:360: [INFO] [backup] update pre-backup for navidrome: starting (DB dump → volume dump → unit capture → Tier 2) +2026/09/24 12:12:26 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:12:26 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 12:12:26 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 1de052779df1 wishlist wishlist ghcr.io/cmintey/wishlist:v0.67.1 +7a34056c6ac0 nextcloud nextcloud nextcloud:34.0.4-apache +3a9300356092 nextcloud-redis nextcloud redis:7-alpine +a2b3dc9582ee nextcloud-db nextcloud mariadb:12.3 +115834f20aff felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1 +49227c9e347d n8n n8n n8nio/n8n:2.31.3 +557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0 +8ed284296786 romm-db romm mariadb:11.8 +0a82332f8e1c romm romm rommapp/romm:5.3.1 +9ec77cdb422a romm-redis r... +2026/09/24 12:12:26 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database) +2026/09/24 12:12:26 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database) +2026/09/24 12:12:26 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database) +2026/09/24 12:12:26 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=a2b3dc9582ee) +2026/09/24 12:12:26 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 12:12:26 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 12:12:26 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container n8n (image=n8nio/n8n:2.31.3, not a database) +2026/09/24 12:12:26 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 12:12:26 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786) +2026/09/24 12:12:27 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 12:12:27 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 12:12:27 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 12:12:27 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 12:12:27 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 12:12:27 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 12:12:27 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973) +2026/09/24 12:12:27 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 12:12:27 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 12:12:27 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database) +2026/09/24 12:12:27 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 12:12:27 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 12:12:27 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 14 non-DB container(s) +2026/09/24 12:12:27 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 12:12:27 backup.go:920: [INFO] [backup] Stopping navidrome for safe volume dump +2026/09/24 12:12:27 manager.go:1283: [DEBUG] [stacks] StopStack navidrome: current state=running deployed=true containers=1 +2026/09/24 12:12:27 manager.go:1286: [INFO] [stacks] Stopping stack: navidrome +2026/09/24 12:12:27 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, HDD_PATH, SUBDOMAIN, DOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system) +2026/09/24 12:12:27 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/navidrome) +2026/09/24 12:12:27 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.3s) +2026/09/24 12:12:27 manager.go:1295: [INFO] [stacks] Stack navidrome stopped successfully (took 0.3s) +2026/09/24 12:12:27 backup.go:796: [DEBUG] [backup] Dumping volume navidrome_navidrome_data for navidrome +2026/09/24 12:12:27 backup.go:821: [INFO] [backup] Volume dump: navidrome/navidrome_navidrome_data → 707.0 KB +2026/09/24 12:12:27 backup.go:930: [INFO] [backup] Restarting navidrome after volume dump +2026/09/24 12:12:27 manager.go:1194: [DEBUG] [stacks] StartStack navidrome: current state=stopped deployed=true +2026/09/24 12:12:27 manager.go:1197: [INFO] [stacks] Starting stack: navidrome +2026/09/24 12:12:27 manager.go:1204: [DEBUG] [stacks] StartStack navidrome: prepared 10 env vars for compose +2026/09/24 12:12:27 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/navidrome not mounted — skipping ensure (held by drive gate) +2026/09/24 12:12:27 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, HDD_PATH, SUBDOMAIN, DOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system) +2026/09/24 12:12:27 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/navidrome) +2026/09/24 12:12:28 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.4s) +2026/09/24 12:12:28 manager.go:1212: [INFO] [stacks] Stack navidrome started successfully (took 0.4s) +2026/09/24 12:12:28 installed.go:409: [DEBUG] [stacks] installed-images navidrome: unchanged (1 service(s)) — app.yaml not rewritten +2026/09/24 12:12:28 update_guard.go:410: [INFO] [backup] update pre-backup for navidrome: volume dump OK +2026/09/24 12:12:28 recovery_unit.go:224: [INFO] [backup] Recovery unit captured for navidrome → /mnt/felhom-drives/scratch_hdd/userdata/navidrome/backups/primary/navidrome (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0) +2026/09/24 12:12:28 update_guard.go:416: [INFO] [backup] update pre-backup for navidrome: recovery unit captured (0 database dump(s)) +2026/09/24 12:12:28 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:12:28 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17657 bytes) +2026/09/24 12:12:28 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:12:28 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event crossdrive_completed (severity info) — further crossdrive_completed events are logged at DEBUG only +2026/09/24 12:12:28 tier2.go:425: [INFO] [backup] Tier 2 copied navidrome → /mnt/sys_drive/felhom-data/backups/secondary/navidrome (728.0 KB, 0 leg(s), 0s) [SSD: state-only] +2026/09/24 12:12:28 update_guard.go:425: [INFO] [backup] update pre-backup for navidrome: complete in 1.416s +2026/09/24 12:12:28 update.go:792: [INFO] [stacks] update navidrome: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-24T12:12:28Z +2026/09/24 12:12:28 update.go:1260: [INFO] [stacks] update navidrome: phase safety-dump +2026/09/24 12:12:28 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 12:12:28 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: f1aacd208012 navidrome navidrome deluan/navidrome:0.64.1 +1de052779df1 wishlist wishlist ghcr.io/cmintey/wishlist:v0.67.1 +7a34056c6ac0 nextcloud nextcloud nextcloud:34.0.4-apache +3a9300356092 nextcloud-redis nextcloud redis:7-alpine +a2b3dc9582ee nextcloud-db nextcloud mariadb:12.3 +115834f20aff felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1 +49227c9e347d n8n n8n n8nio/n8n:2.31.3 +557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0 +8ed284296786 romm-db romm mariadb:11.8 +0a82332f8e... +2026/09/24 12:12:28 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database) +2026/09/24 12:12:28 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database) +2026/09/24 12:12:28 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database) +2026/09/24 12:12:28 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database) +2026/09/24 12:12:28 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=a2b3dc9582ee) +2026/09/24 12:12:28 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 12:12:28 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 12:12:28 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container n8n (image=n8nio/n8n:2.31.3, not a database) +2026/09/24 12:12:28 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 12:12:28 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786) +2026/09/24 12:12:28 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 12:12:28 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 12:12:28 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 12:12:28 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 12:12:28 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 12:12:28 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 12:12:28 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973) +2026/09/24 12:12:28 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 12:12:28 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 12:12:28 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 12:12:28 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 12:12:28 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 14 non-DB container(s) +2026/09/24 12:12:28 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 12:12:28 update_guard.go:476: [INFO] [backup] update safety dump for navidrome: the app has no database — nothing to copy (no-op) +2026/09/24 12:12:28 update.go:807: [INFO] [stacks] update navidrome: safety dump done (0 file(s)) [] +2026/09/24 12:12:28 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:12:28 undo.go:273: [INFO] [stacks] update navidrome: the undo copy will hold 1 named volume(s), 0.7 MiB +2026/09/24 12:12:28 update.go:1260: [INFO] [stacks] update navidrome: phase pinning +2026/09/24 12:12:28 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/navidrome — 3 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:12:28 [INFO] [stacks] SaveAppConfig: saved config for navidrome +2026/09/24 12:12:28 pin.go:373: [INFO] [stacks] update navidrome: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/navidrome/docker-compose.yml (navidrome=deluan/navidrome:latest) +2026/09/24 12:12:28 update.go:1260: [INFO] [stacks] update navidrome: phase pulling +2026/09/24 12:12:28 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, HDD_PATH, SUBDOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system) +2026/09/24 12:12:28 manager.go:1463: [DEBUG] Running: docker compose pull (in /opt/docker/stacks/navidrome) +2026/09/24 12:12:30 manager.go:1483: [DEBUG] Command completed: docker compose pull (took 1.2s) +2026/09/24 12:12:30 update.go:1260: [INFO] [stacks] update navidrome: phase copying +2026/09/24 12:12:30 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, HDD_PATH, SUBDOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system) +2026/09/24 12:12:30 manager.go:1463: [DEBUG] Running: docker compose stop (in /opt/docker/stacks/navidrome) +2026/09/24 12:12:30 manager.go:1483: [DEBUG] Command completed: docker compose stop (took 0.3s) +2026/09/24 12:12:30 update.go:1260: [INFO] [stacks] update navidrome: phase copying +2026/09/24 12:12:30 undo.go:423: [INFO] [stacks] update navidrome: copied navidrome_navidrome_data → navidrome_navidrome_data.pre-update-20260924T121230Z in 449ms +2026/09/24 12:12:30 update.go:1260: [INFO] [stacks] update navidrome: phase starting +2026/09/24 12:12:30 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/navidrome not mounted — skipping ensure (held by drive gate) +2026/09/24 12:12:30 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, HDD_PATH, SUBDOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system) +2026/09/24 12:12:30 manager.go:1463: [DEBUG] Running: docker compose up -d --remove-orphans (in /opt/docker/stacks/navidrome) +2026/09/24 12:12:31 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, HDD_PATH, SUBDOMAIN, DOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system) +2026/09/24 12:12:31 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/navidrome) +2026/09/24 12:12:31 manager.go:1483: [DEBUG] Command completed: docker compose up -d --remove-orphans (took 0.4s) +2026/09/24 12:12:31 update.go:1260: [INFO] [stacks] update navidrome: phase verifying +2026/09/24 12:12:31 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s) +2026/09/24 12:12:31 manager.go:1543: [INFO] [stacks] Stack navidrome post-start status: +2026/09/24 12:12:31 manager.go:1546: [INFO] [stacks] navidrome deluan/navidrome:latest running Up Less than a second (health: starting) +2026/09/24 12:12:31 router.go:1201: [INFO] [api] Manual app-data backup (DB dump) triggered +2026/09/24 12:12:31 backup.go:522: [INFO] [backup] Starting database dump run +2026/09/24 12:12:31 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 12:12:31 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 80460f4459c3 navidrome navidrome deluan/navidrome:latest +1de052779df1 wishlist wishlist ghcr.io/cmintey/wishlist:v0.67.1 +7a34056c6ac0 nextcloud nextcloud nextcloud:34.0.4-apache +3a9300356092 nextcloud-redis nextcloud redis:7-alpine +a2b3dc9582ee nextcloud-db nextcloud mariadb:12.3 +115834f20aff felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1 +49227c9e347d n8n n8n n8nio/n8n:2.31.3 +557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0 +8ed284296786 romm-db romm mariadb:11.8 +0a82332f8e... +2026/09/24 12:12:31 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:latest, not a database) +2026/09/24 12:12:31 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database) +2026/09/24 12:12:31 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database) +2026/09/24 12:12:31 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database) +2026/09/24 12:12:31 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=a2b3dc9582ee) +2026/09/24 12:12:31 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 12:12:31 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 12:12:31 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container n8n (image=n8nio/n8n:2.31.3, not a database) +2026/09/24 12:12:31 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 12:12:31 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786) +2026/09/24 12:12:31 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 12:12:31 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 12:12:31 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 12:12:31 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 12:12:31 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 12:12:31 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 12:12:31 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973) +2026/09/24 12:12:31 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 12:12:31 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 12:12:31 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 12:12:31 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 12:12:31 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 14 non-DB container(s) +2026/09/24 12:12:31 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 12:12:31 backup.go:550: [INFO] [backup] Discovered 3 database(s): nextcloud-db(mariadb), romm-db(mariadb), paperless-postgres(postgres) +2026/09/24 12:12:31 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:12:31 dbdump.go:266: [DEBUG] DumpOne: starting dump for container=nextcloud-db, stack=nextcloud, dbType=mariadb, dest=/mnt/felhom-drives/scratch_hdd/userdata/nextcloud/backups/primary/nextcloud/db-dumps/nextcloud-mariadb.sql +2026/09/24 12:12:31 dbdump.go:321: [DEBUG] DumpOne: mariadb-dump command: docker exec a2b3dc9582ee mariadb-dump -u root -p*** --single-transaction --routines --triggers nextcloud +2026/09/24 12:12:32 dbdump.go:405: [DEBUG] DumpOne: completed nextcloud-db → nextcloud-mariadb.sql (size=855.4 KB, valid=true, tables=131, duration=490ms) +2026/09/24 12:12:32 dbdump.go:410: [INFO] [backup] DB dump: nextcloud-db → nextcloud-mariadb.sql (855.4 KB, 490ms, 131 tables) +2026/09/24 12:12:32 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17657 bytes) +2026/09/24 12:12:32 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:12:32 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:12:32 dbdump.go:266: [DEBUG] DumpOne: starting dump for container=romm-db, stack=romm, dbType=mariadb, dest=/mnt/felhom-drives/scratch_hdd/userdata/romm/backups/primary/romm/db-dumps/romm-mariadb.sql +2026/09/24 12:12:32 dbdump.go:321: [DEBUG] DumpOne: mariadb-dump command: docker exec 8ed284296786 mariadb-dump -u root -p*** --single-transaction --routines --triggers romm +2026/09/24 12:12:32 dbdump.go:405: [DEBUG] DumpOne: completed romm-db → romm-mariadb.sql (size=112.9 KB, valid=true, tables=36, duration=306ms) +2026/09/24 12:12:32 dbdump.go:410: [INFO] [backup] DB dump: romm-db → romm-mariadb.sql (112.9 KB, 306ms, 36 tables) +2026/09/24 12:12:32 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17657 bytes) +2026/09/24 12:12:32 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:12:32 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:12:32 dbdump.go:266: [DEBUG] DumpOne: starting dump for container=paperless-postgres, stack=paperless-ngx, dbType=postgres, dest=/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx/backups/primary/paperless-ngx/db-dumps/paperless-ngx-postgres.sql +2026/09/24 12:12:32 dbdump.go:303: [DEBUG] DumpOne: pg_dump command: docker exec 5da8830bc973 pg_dump -U paperless -d paperless --clean --if-exists --no-owner --no-privileges +2026/09/24 12:12:33 dbdump.go:405: [DEBUG] DumpOne: completed paperless-postgres → paperless-ngx-postgres.sql (size=364.1 KB, valid=true, tables=72, duration=390ms) +2026/09/24 12:12:33 dbdump.go:410: [INFO] [backup] DB dump: paperless-postgres → paperless-ngx-postgres.sql (364.1 KB, 390ms, 72 tables) +2026/09/24 12:12:33 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17657 bytes) +2026/09/24 12:12:33 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:12:33 backup.go:705: [WARN] [backup] Skipping volume dump for navidrome — the app is HELD stopped (its restore point is preserved) +2026/09/24 12:12:33 backup.go:920: [INFO] [backup] Stopping nextcloud for safe volume dump +2026/09/24 12:12:33 manager.go:1283: [DEBUG] [stacks] StopStack nextcloud: current state=running deployed=true containers=3 +2026/09/24 12:12:33 manager.go:1286: [INFO] [stacks] Stopping stack: nextcloud +2026/09/24 12:12:33 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, NEXTCLOUD_ADMIN_USER, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system) +2026/09/24 12:12:33 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/nextcloud) +2026/09/24 12:12:34 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:12:34 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:12:34 manager.go:1483: [DEBUG] Command completed: docker compose down (took 1.9s) +2026/09/24 12:12:34 manager.go:1295: [INFO] [stacks] Stack nextcloud stopped successfully (took 1.9s) +2026/09/24 12:12:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m22s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:12:34 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 0 skipped no container) +2026/09/24 12:12:34 backup.go:796: [DEBUG] [backup] Dumping volume nextcloud_nextcloud_db_data for nextcloud +2026/09/24 12:12:35 backup.go:821: [INFO] [backup] Volume dump: nextcloud/nextcloud_nextcloud_db_data → 164.9 MB +2026/09/24 12:12:35 backup.go:796: [DEBUG] [backup] Dumping volume nextcloud_nextcloud_html for nextcloud +2026/09/24 12:12:36 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:12:38 backup.go:821: [INFO] [backup] Volume dump: nextcloud/nextcloud_nextcloud_html → 761.6 MB +2026/09/24 12:12:38 backup.go:796: [DEBUG] [backup] Dumping volume nextcloud_nextcloud_redis_data for nextcloud +2026/09/24 12:12:39 backup.go:821: [INFO] [backup] Volume dump: nextcloud/nextcloud_nextcloud_redis_data → 281.0 KB +2026/09/24 12:12:39 backup.go:930: [INFO] [backup] Restarting nextcloud after volume dump +2026/09/24 12:12:39 manager.go:1194: [DEBUG] [stacks] StartStack nextcloud: current state=stopped deployed=true +2026/09/24 12:12:39 manager.go:1197: [INFO] [stacks] Starting stack: nextcloud +2026/09/24 12:12:39 manager.go:1204: [DEBUG] [stacks] StartStack nextcloud: prepared 14 env vars for compose +2026/09/24 12:12:39 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping ensure (held by drive gate) +2026/09/24 12:12:39 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, NEXTCLOUD_ADMIN_USER, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system) +2026/09/24 12:12:39 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/nextcloud) +2026/09/24 12:12:41 manager.go:851: [DEBUG] [stacks] restart-policy of down member "nextcloud" = "unless-stopped" +2026/09/24 12:12:41 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:12:44 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:12:44 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:12:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m32s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 4s ago, effective interval 10s, healthy=false +2026/09/24 12:12:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:44 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:12:44 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:12:44 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:12:45 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 6.3s) +2026/09/24 12:12:45 manager.go:1212: [INFO] [stacks] Stack nextcloud started successfully (took 6.3s) +2026/09/24 12:12:45 installed.go:409: [DEBUG] [stacks] installed-images nextcloud: unchanged (3 service(s)) — app.yaml not rewritten +2026/09/24 12:12:45 backup.go:920: [INFO] [backup] Stopping paperless-ngx for safe volume dump +2026/09/24 12:12:45 manager.go:1283: [DEBUG] [stacks] StopStack paperless-ngx: current state=running deployed=true containers=3 +2026/09/24 12:12:45 manager.go:1286: [INFO] [stacks] Stopping stack: paperless-ngx +2026/09/24 12:12:45 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, PAPERLESS_ADMIN_PASSWORD, PAPERLESS_ADMIN_USER, PAPERLESS_OCR_LANGUAGE, PAPERLESS_SECRET_KEY, USERDATA_PATH, IMPORT_PATH] (15 app + 0 system) +2026/09/24 12:12:45 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/paperless-ngx) +2026/09/24 12:12:46 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:12:48 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, NEXTCLOUD_ADMIN_USER, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system) +2026/09/24 12:12:48 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/nextcloud) +2026/09/24 12:12:48 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s) +2026/09/24 12:12:48 manager.go:1543: [INFO] [stacks] Stack nextcloud post-start status: +2026/09/24 12:12:48 manager.go:1546: [INFO] [stacks] nextcloud nextcloud:34.0.4-apache@sha256:a5ace30c695afe48c2c406e940ee7886a81e13fa382e57cd68b2416d1a66914c running Up 3 seconds (health: starting) +2026/09/24 12:12:48 manager.go:1546: [INFO] [stacks] nextcloud-db mariadb:12.3@sha256:805c8e104bd563d5bfa24fadd3f31cd419ea859cb5277f32b5dbf2db714f9ed1 running Up 9 seconds (healthy) +2026/09/24 12:12:48 manager.go:1546: [INFO] [stacks] nextcloud-redis redis:7-alpine@sha256:c35af3bbcef51a62c8bae5a9a563c6f1b60d7ebaea4cb5a3ccbcc157580ae098 running Up 9 seconds (healthy) +2026/09/24 12:12:51 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:12:52 manager.go:1483: [DEBUG] Command completed: docker compose down (took 7.2s) +2026/09/24 12:12:52 manager.go:1295: [INFO] [stacks] Stack paperless-ngx stopped successfully (took 7.2s) +2026/09/24 12:12:52 backup.go:796: [DEBUG] [backup] Dumping volume paperless-ngx_paperless_data for paperless-ngx +2026/09/24 12:12:53 backup.go:821: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_data → 1.0 MB +2026/09/24 12:12:53 backup.go:796: [DEBUG] [backup] Dumping volume paperless-ngx_paperless_postgres_data for paperless-ngx +2026/09/24 12:12:54 backup.go:821: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_postgres_data → 67.9 MB +2026/09/24 12:12:54 backup.go:796: [DEBUG] [backup] Dumping volume paperless-ngx_paperless_redis_data for paperless-ngx +2026/09/24 12:12:54 backup.go:821: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_redis_data → 1.0 MB +2026/09/24 12:12:54 backup.go:930: [INFO] [backup] Restarting paperless-ngx after volume dump +2026/09/24 12:12:54 manager.go:1194: [DEBUG] [stacks] StartStack paperless-ngx: current state=stopped deployed=true +2026/09/24 12:12:54 manager.go:1197: [INFO] [stacks] Starting stack: paperless-ngx +2026/09/24 12:12:54 manager.go:1204: [DEBUG] [stacks] StartStack paperless-ngx: prepared 15 env vars for compose +2026/09/24 12:12:54 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx not mounted — skipping ensure (held by drive gate) +2026/09/24 12:12:54 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, PAPERLESS_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, PAPERLESS_ADMIN_PASSWORD, PAPERLESS_ADMIN_USER, PAPERLESS_OCR_LANGUAGE, USERDATA_PATH, IMPORT_PATH] (15 app + 0 system) +2026/09/24 12:12:54 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/paperless-ngx) +2026/09/24 12:12:54 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:12:54 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:12:54 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:12:54 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:12:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m42s ago, effective interval 5m0s, healthy=true +2026/09/24 12:12:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:12:54 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 2 targets (5 skipped not due, 0 skipped no container) +2026/09/24 12:12:54 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:12:54 healthprobe.go:181: [DEBUG] Health probe nextcloud: API GET :80/status.php → 200 (51ms) +2026/09/24 12:12:54 healthprobe.go:159: [WARN] Health probes: 1 ok, 1 unhealthy (of 2 probed) +2026/09/24 12:12:56 manager.go:851: [DEBUG] [stacks] restart-policy of down member "paperless-webserver" = "unless-stopped" +2026/09/24 12:12:56 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:13:01 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:13:04 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:13:04 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:13:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m52s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:13:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:04 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:13:04 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:13:04 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:13:06 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 11.4s) +2026/09/24 12:13:06 manager.go:1212: [INFO] [stacks] Stack paperless-ngx started successfully (took 11.4s) +2026/09/24 12:13:06 installed.go:409: [DEBUG] [stacks] installed-images paperless-ngx: unchanged (3 service(s)) — app.yaml not rewritten +2026/09/24 12:13:06 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.2%) +2026/09/24 12:13:06 backup.go:920: [INFO] [backup] Stopping privatebin for safe volume dump +2026/09/24 12:13:06 manager.go:1283: [DEBUG] [stacks] StopStack privatebin: current state=running deployed=true containers=1 +2026/09/24 12:13:06 manager.go:1286: [INFO] [stacks] Stopping stack: privatebin +2026/09/24 12:13:06 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:13:06 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/privatebin) +2026/09/24 12:13:06 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.3s) +2026/09/24 12:13:06 manager.go:1295: [INFO] [stacks] Stack privatebin stopped successfully (took 0.3s) +2026/09/24 12:13:06 backup.go:796: [DEBUG] [backup] Dumping volume privatebin_privatebin_data for privatebin +2026/09/24 12:13:06 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:13:06 backup.go:821: [INFO] [backup] Volume dump: privatebin/privatebin_privatebin_data → 1.5 KB +2026/09/24 12:13:06 backup.go:930: [INFO] [backup] Restarting privatebin after volume dump +2026/09/24 12:13:06 manager.go:1194: [DEBUG] [stacks] StartStack privatebin: current state=stopped deployed=true +2026/09/24 12:13:06 manager.go:1197: [INFO] [stacks] Starting stack: privatebin +2026/09/24 12:13:06 manager.go:1204: [DEBUG] [stacks] StartStack privatebin: prepared 8 env vars for compose +2026/09/24 12:13:06 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:13:06 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/privatebin) +2026/09/24 12:13:07 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.4s) +2026/09/24 12:13:07 manager.go:1212: [INFO] [stacks] Stack privatebin started successfully (took 0.4s) +2026/09/24 12:13:07 installed.go:409: [DEBUG] [stacks] installed-images privatebin: unchanged (1 service(s)) — app.yaml not rewritten +2026/09/24 12:13:07 backup.go:920: [INFO] [backup] Stopping romm for safe volume dump +2026/09/24 12:13:07 manager.go:1283: [DEBUG] [stacks] StopStack romm: current state=running deployed=true containers=3 +2026/09/24 12:13:07 manager.go:1286: [INFO] [stacks] Stopping stack: romm +2026/09/24 12:13:07 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, ROMM_AUTH_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, USERDATA_PATH, IMPORT_PATH] (13 app + 0 system) +2026/09/24 12:13:07 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/romm) +2026/09/24 12:13:09 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, PAPERLESS_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, PAPERLESS_ADMIN_PASSWORD, PAPERLESS_ADMIN_USER, PAPERLESS_OCR_LANGUAGE, USERDATA_PATH, IMPORT_PATH] (15 app + 0 system) +2026/09/24 12:13:09 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/paperless-ngx) +2026/09/24 12:13:09 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.2s) +2026/09/24 12:13:09 manager.go:1543: [INFO] [stacks] Stack paperless-ngx post-start status: +2026/09/24 12:13:09 manager.go:1546: [INFO] [stacks] paperless-postgres postgres:16-alpine running Up 14 seconds (healthy) +2026/09/24 12:13:09 manager.go:1546: [INFO] [stacks] paperless-redis redis:7-alpine running Up 14 seconds (healthy) +2026/09/24 12:13:09 manager.go:1546: [INFO] [stacks] paperless-webserver ghcr.io/paperless-ngx/paperless-ngx:2.20.15 running Up 3 seconds (health: starting) +2026/09/24 12:13:10 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:13:10 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/privatebin) +2026/09/24 12:13:10 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s) +2026/09/24 12:13:10 manager.go:1543: [INFO] [stacks] Stack privatebin post-start status: +2026/09/24 12:13:10 manager.go:1546: [INFO] [stacks] privatebin privatebin/pdo:2.0.6@sha256:4c141b2326f8b353598ce9ce7507a9cfecf2dad5c60a39fea903d430e296d8f5 running Up 3 seconds (health: starting) +2026/09/24 12:13:11 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:13:12 manager.go:1483: [DEBUG] Command completed: docker compose down (took 4.6s) +2026/09/24 12:13:12 manager.go:1295: [INFO] [stacks] Stack romm stopped successfully (took 4.6s) +2026/09/24 12:13:12 backup.go:796: [DEBUG] [backup] Dumping volume romm_romm_config for romm +2026/09/24 12:13:12 backup.go:821: [INFO] [backup] Volume dump: romm/romm_romm_config → 2.5 KB +2026/09/24 12:13:12 backup.go:796: [DEBUG] [backup] Dumping volume romm_romm_db_data for romm +2026/09/24 12:13:13 backup.go:821: [INFO] [backup] Volume dump: romm/romm_romm_db_data → 156.4 MB +2026/09/24 12:13:13 backup.go:796: [DEBUG] [backup] Dumping volume romm_romm_redis_data for romm +2026/09/24 12:13:14 backup.go:821: [INFO] [backup] Volume dump: romm/romm_romm_redis_data → 15.5 MB +2026/09/24 12:13:14 backup.go:930: [INFO] [backup] Restarting romm after volume dump +2026/09/24 12:13:14 manager.go:1194: [DEBUG] [stacks] StartStack romm: current state=stopped deployed=true +2026/09/24 12:13:14 manager.go:1197: [INFO] [stacks] Starting stack: romm +2026/09/24 12:13:14 manager.go:1204: [DEBUG] [stacks] StartStack romm: prepared 13 env vars for compose +2026/09/24 12:13:14 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/romm not mounted — skipping ensure (held by drive gate) +2026/09/24 12:13:14 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, ROMM_AUTH_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, USERDATA_PATH, IMPORT_PATH] (13 app + 0 system) +2026/09/24 12:13:14 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/romm) +2026/09/24 12:13:14 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:13:14 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:13:14 manager.go:851: [DEBUG] [stacks] restart-policy of down member "romm" = "unless-stopped" +2026/09/24 12:13:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 3m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m2s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:13:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:14 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 2 targets (5 skipped not due, 0 skipped no container) +2026/09/24 12:13:14 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:13:14 healthprobe.go:181: [DEBUG] Health probe privatebin: HTTP GET :8080/ → 200 (9ms) +2026/09/24 12:13:14 healthprobe.go:159: [WARN] Health probes: 1 ok, 1 unhealthy (of 2 probed) +2026/09/24 12:13:16 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:13:21 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:13:24 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:13:24 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4609MB avail≈21289MB +2026/09/24 12:13:24 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25248332 → total=25898MB avail=21289MB used=4609MB (17.8%) +2026/09/24 12:13:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%) +2026/09/24 12:13:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:13:24 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.94 3.15 3.19 11/1519 3036" → 1m=2.94 5m=3.15 15m=3.19 +2026/09/24 12:13:24 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:13:24 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 72.8°C (hwmon2) +2026/09/24 12:13:24 info.go:13: [DEBUG] [system] GetInfo done in 74ms — mem=4609MB/25898MB (17.8%), rootDisk=25.5GB/68.4GB (37.3%), load=2.94/3.15/3.19, temp=72.8°C (hwmon2), cpu=40.6% +2026/09/24 12:13:24 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:13:24 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan +2026/09/24 12:13:24 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting +2026/09/24 12:13:24 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:13:24 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:13:24 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:13:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m12s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:13:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:13:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 3m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:24 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:13:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:13:24 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:13:24 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:13:24 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 12:13:25 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 111ms) +2026/09/24 12:13:25 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 11.4s) +2026/09/24 12:13:25 manager.go:1212: [INFO] [stacks] Stack romm started successfully (took 11.4s) +2026/09/24 12:13:25 installed.go:409: [DEBUG] [stacks] installed-images romm: unchanged (3 service(s)) — app.yaml not rewritten +2026/09/24 12:13:25 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:13:25 backup.go:920: [INFO] [backup] Stopping vikunja for safe volume dump +2026/09/24 12:13:25 manager.go:1283: [DEBUG] [stacks] StopStack vikunja: current state=unhealthy deployed=true containers=1 +2026/09/24 12:13:25 manager.go:1286: [INFO] [stacks] Stopping stack: vikunja +2026/09/24 12:13:25 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, VIKUNJA_SERVICE_JWTSECRET, DOMAIN, SUBDOMAIN, IMPORT_PATH] (9 app + 0 system) +2026/09/24 12:13:25 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/vikunja) +2026/09/24 12:13:26 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.4s) +2026/09/24 12:13:26 manager.go:1295: [INFO] [stacks] Stack vikunja stopped successfully (took 0.4s) +2026/09/24 12:13:26 backup.go:796: [DEBUG] [backup] Dumping volume vikunja_vikunja_data for vikunja +2026/09/24 12:13:26 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:13:26 backup.go:821: [INFO] [backup] Volume dump: vikunja/vikunja_vikunja_data → 1.5 KB +2026/09/24 12:13:26 backup.go:796: [DEBUG] [backup] Dumping volume vikunja_vikunja_db for vikunja +2026/09/24 12:13:27 backup.go:821: [INFO] [backup] Volume dump: vikunja/vikunja_vikunja_db → 2.0 MB +2026/09/24 12:13:27 backup.go:930: [INFO] [backup] Restarting vikunja after volume dump +2026/09/24 12:13:27 manager.go:1194: [DEBUG] [stacks] StartStack vikunja: current state=stopped deployed=true +2026/09/24 12:13:27 manager.go:1197: [INFO] [stacks] Starting stack: vikunja +2026/09/24 12:13:27 manager.go:1204: [DEBUG] [stacks] StartStack vikunja: prepared 9 env vars for compose +2026/09/24 12:13:27 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, VIKUNJA_SERVICE_JWTSECRET, IMPORT_PATH] (9 app + 0 system) +2026/09/24 12:13:27 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/vikunja) +2026/09/24 12:13:27 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.5s) +2026/09/24 12:13:27 manager.go:1212: [INFO] [stacks] Stack vikunja started successfully (took 0.5s) +2026/09/24 12:13:28 installed.go:409: [DEBUG] [stacks] installed-images vikunja: unchanged (1 service(s)) — app.yaml not rewritten +2026/09/24 12:13:28 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:13:28 backup.go:920: [INFO] [backup] Stopping wishlist for safe volume dump +2026/09/24 12:13:28 manager.go:1283: [DEBUG] [stacks] StopStack wishlist: current state=running deployed=true containers=1 +2026/09/24 12:13:28 manager.go:1286: [INFO] [stacks] Stopping stack: wishlist +2026/09/24 12:13:28 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:13:28 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/wishlist) +2026/09/24 12:13:28 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.6s) +2026/09/24 12:13:28 manager.go:1295: [INFO] [stacks] Stack wishlist stopped successfully (took 0.6s) +2026/09/24 12:13:28 backup.go:796: [DEBUG] [backup] Dumping volume wishlist_wishlist_data for wishlist +2026/09/24 12:13:28 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, ROMM_AUTH_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, USERDATA_PATH, IMPORT_PATH] (13 app + 0 system) +2026/09/24 12:13:28 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/romm) +2026/09/24 12:13:29 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.2s) +2026/09/24 12:13:29 manager.go:1543: [INFO] [stacks] Stack romm post-start status: +2026/09/24 12:13:29 manager.go:1546: [INFO] [stacks] romm rommapp/romm:5.3.1@sha256:0d66b4ea152a237c7f24b95e87459f46d3c596a7c0b35a82f26bc971487278b3 running Up 3 seconds (health: starting) +2026/09/24 12:13:29 manager.go:1546: [INFO] [stacks] romm-db mariadb:11.8@sha256:79d59758afc91b89b120b0a8904d637f5a3b3e1c4900f29b740d6d46c72fef68 running Up 14 seconds (healthy) +2026/09/24 12:13:29 manager.go:1546: [INFO] [stacks] romm-redis redis:7-alpine@sha256:858f009f9709ce576febc734aa78b8f6d624b82571f9ddb6bda4377c833b3499 running Up 14 seconds (healthy) +2026/09/24 12:13:29 backup.go:821: [INFO] [backup] Volume dump: wishlist/wishlist_wishlist_data → 302.0 KB +2026/09/24 12:13:29 backup.go:796: [DEBUG] [backup] Dumping volume wishlist_wishlist_uploads for wishlist +2026/09/24 12:13:30 backup.go:821: [INFO] [backup] Volume dump: wishlist/wishlist_wishlist_uploads → 1.5 KB +2026/09/24 12:13:30 backup.go:930: [INFO] [backup] Restarting wishlist after volume dump +2026/09/24 12:13:30 manager.go:1194: [DEBUG] [stacks] StartStack wishlist: current state=stopped deployed=true +2026/09/24 12:13:30 manager.go:1197: [INFO] [stacks] Starting stack: wishlist +2026/09/24 12:13:30 manager.go:1204: [DEBUG] [stacks] StartStack wishlist: prepared 8 env vars for compose +2026/09/24 12:13:30 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:13:30 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/wishlist) +2026/09/24 12:13:30 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.5s) +2026/09/24 12:13:30 manager.go:1212: [INFO] [stacks] Stack wishlist started successfully (took 0.5s) +2026/09/24 12:13:30 installed.go:409: [DEBUG] [stacks] installed-images wishlist: unchanged (1 service(s)) — app.yaml not rewritten +2026/09/24 12:13:31 backup.go:705: [WARN] [backup] Skipping volume dump for chaosoom — the app is HELD stopped (its restore point is preserved) +2026/09/24 12:13:31 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:13:31 backup.go:920: [INFO] [backup] Stopping n8n for safe volume dump +2026/09/24 12:13:31 manager.go:1283: [DEBUG] [stacks] StopStack n8n: current state=running deployed=true containers=1 +2026/09/24 12:13:31 manager.go:1286: [INFO] [stacks] Stopping stack: n8n +2026/09/24 12:13:31 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, N8N_ENCRYPTION_KEY, SUBDOMAIN, IMPORT_PATH] (9 app + 0 system) +2026/09/24 12:13:31 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/n8n) +2026/09/24 12:13:31 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, VIKUNJA_SERVICE_JWTSECRET, IMPORT_PATH] (9 app + 0 system) +2026/09/24 12:13:31 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/vikunja) +2026/09/24 12:13:31 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.3s) +2026/09/24 12:13:31 manager.go:1543: [INFO] [stacks] Stack vikunja post-start status: +2026/09/24 12:13:31 manager.go:1546: [INFO] [stacks] vikunja vikunja/vikunja:2.3.0 running Up 3 seconds +2026/09/24 12:13:31 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:13:32 manager.go:1483: [DEBUG] Command completed: docker compose down (took 1.5s) +2026/09/24 12:13:32 manager.go:1295: [INFO] [stacks] Stack n8n stopped successfully (took 1.5s) +2026/09/24 12:13:32 backup.go:796: [DEBUG] [backup] Dumping volume n8n_n8n_data for n8n +2026/09/24 12:13:33 backup.go:821: [INFO] [backup] Volume dump: n8n/n8n_n8n_data → 5.4 MB +2026/09/24 12:13:33 backup.go:930: [INFO] [backup] Restarting n8n after volume dump +2026/09/24 12:13:33 manager.go:1194: [DEBUG] [stacks] StartStack n8n: current state=stopped deployed=true +2026/09/24 12:13:33 manager.go:1197: [INFO] [stacks] Starting stack: n8n +2026/09/24 12:13:33 manager.go:1204: [DEBUG] [stacks] StartStack n8n: prepared 9 env vars for compose +2026/09/24 12:13:33 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, N8N_ENCRYPTION_KEY, SUBDOMAIN, IMPORT_PATH] (9 app + 0 system) +2026/09/24 12:13:33 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/n8n) +2026/09/24 12:13:33 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:13:33 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/wishlist) +2026/09/24 12:13:34 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.4s) +2026/09/24 12:13:34 manager.go:1543: [INFO] [stacks] Stack wishlist post-start status: +2026/09/24 12:13:34 manager.go:1546: [INFO] [stacks] wishlist ghcr.io/cmintey/wishlist:v0.67.1@sha256:4b89bfb5b57ffb087c33978d21b09048e5c37f4506326e9ccd2705a0a1d86548 running Up 4 seconds (health: starting) +2026/09/24 12:13:34 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 1.1s) +2026/09/24 12:13:34 manager.go:1212: [INFO] [stacks] Stack n8n started successfully (took 1.1s) +2026/09/24 12:13:34 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:13:34 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:13:35 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:35 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:13:35 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:35 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (3 skipped not due, 0 skipped no container) +2026/09/24 12:13:35 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:13:35 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:13:35 installed.go:409: [DEBUG] [stacks] installed-images n8n: unchanged (1 service(s)) — app.yaml not rewritten +2026/09/24 12:13:35 backup.go:636: [INFO] [backup] App-data backup completed: 3 databases (1.3 MB total), 7 volume dump(s) (1m3.85s) +2026/09/24 12:13:35 recovery_unit.go:224: [INFO] [backup] Recovery unit captured for wishlist → /mnt/sys_drive/felhom-data/backups/primary/wishlist (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0) +2026/09/24 12:13:35 recovery_unit.go:224: [INFO] [backup] Recovery unit captured for n8n → /mnt/sys_drive/felhom-data/backups/primary/n8n (images=1, secrets-referenced=1, data_keys=0, portable-carried=1/1, withheld=0) +2026/09/24 12:13:37 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:13:38 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, N8N_ENCRYPTION_KEY, SUBDOMAIN, IMPORT_PATH] (9 app + 0 system) +2026/09/24 12:13:38 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/n8n) +2026/09/24 12:13:38 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.3s) +2026/09/24 12:13:38 manager.go:1543: [INFO] [stacks] Stack n8n post-start status: +2026/09/24 12:13:38 manager.go:1546: [INFO] [stacks] n8n n8nio/n8n:2.31.3 running Up 4 seconds (health: starting) +2026/09/24 12:13:42 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:13:44 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:13:44 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:13:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:13:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:13:44 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (4 skipped not due, 0 skipped no container) +2026/09/24 12:13:47 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:13:52 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:13:54 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:13:54 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:13:54 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:13:54 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:13:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3s ago, effective interval 10s, healthy=false +2026/09/24 12:13:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:13:54 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 4 targets (3 skipped not due, 0 skipped no container) +2026/09/24 12:13:54 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:13:54 healthprobe.go:181: [DEBUG] Health probe n8n: API GET :5678/healthz → 200 (3ms) +2026/09/24 12:13:54 healthprobe.go:181: [DEBUG] Health probe wishlist: HTTP GET :3000/ → 307 (11ms) +2026/09/24 12:13:54 healthprobe.go:181: [DEBUG] Health probe paperless-ngx: HTTP GET :8000/ → 302 (11ms) +2026/09/24 12:13:54 healthprobe.go:159: [WARN] Health probes: 3 ok, 1 unhealthy (of 4 probed) +2026/09/24 12:13:57 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:14:02 healthprobe.go:190: [WARN] Health probe navidrome: API GET :8999/ping → Get "http://navidrome:8999/ping": dial tcp 172.18.0.3:8999: connect: connection refused +2026/09/24 12:14:02 update.go:969: [ERROR] [stacks] update navidrome FAILED after the new version was started: not healthy: not healthy within 1m30s (last: health check failing) +2026/09/24 12:14:02 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, HDD_PATH, SUBDOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system) +2026/09/24 12:14:02 manager.go:1463: [DEBUG] Running: docker compose logs --no-color --tail 400 (in /opt/docker/stacks/navidrome) +2026/09/24 12:14:02 manager.go:1483: [DEBUG] Command completed: docker compose logs --no-color --tail 400 (took 0.2s) +2026/09/24 12:14:02 update.go:961: [INFO] [stacks] update navidrome: kept 4222 bytes of the app's own log at /opt/docker/stacks/navidrome/hold-logs/20260924T121402Z/compose-logs.txt before stopping it (R-621) +2026/09/24 12:14:02 update.go:1260: [INFO] [stacks] update navidrome: phase undoing +2026/09/24 12:14:02 undo.go:501: [WARN] [stacks] update navidrome: UNDO — putting back the previous version and its 1 volume copy(ies) (reason: not healthy: not healthy within 1m30s (last: health check failing)) +2026/09/24 12:14:02 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, HDD_PATH, SUBDOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system) +2026/09/24 12:14:02 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/navidrome) +2026/09/24 12:14:03 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.5s) +2026/09/24 12:14:04 pin.go:93: [INFO] [stacks] pin navidrome: navidrome=deluan/navidrome:0.64.1 +2026/09/24 12:14:04 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/navidrome — 3 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:14:04 [INFO] [stacks] SaveAppConfig: saved config for navidrome +2026/09/24 12:14:04 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/navidrome not mounted — skipping ensure (held by drive gate) +2026/09/24 12:14:04 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, HDD_PATH, SUBDOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system) +2026/09/24 12:14:04 manager.go:1463: [DEBUG] Running: docker compose up -d --remove-orphans (in /opt/docker/stacks/navidrome) +2026/09/24 12:14:04 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:14:04 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:14:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:04 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (5 skipped not due, 0 skipped no container) +2026/09/24 12:14:04 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:14:04 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:14:05 manager.go:1483: [DEBUG] Command completed: docker compose up -d --remove-orphans (took 0.8s) +2026/09/24 12:14:05 [ERROR] [stacks] .felhom.yml backup block rejected in /opt/docker/stacks/navidrome/pre-update-meta: docker-compose.yml unreadable: stat /opt/docker/stacks/navidrome/pre-update-meta/docker-compose.yml: no such file or directory +2026/09/24 12:14:10 healthprobe.go:181: [DEBUG] Health probe navidrome: API GET :4533/ping → 200 (1ms) +2026/09/24 12:14:10 installed.go:409: [DEBUG] [stacks] installed-images navidrome: unchanged (1 service(s)) — app.yaml not rewritten +2026/09/24 12:14:10 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/navidrome — 3 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:14:10 [INFO] [stacks] SaveAppConfig: saved config for navidrome +2026/09/24 12:14:10 undo.go:621: [INFO] [stacks] update navidrome: event app_update_undone +2026/09/24 12:14:10 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_update_undone (severity warning) +2026/09/24 12:14:10 undo.go:549: [INFO] [stacks] update navidrome: UNDONE in 8s — the previous version is running on the data from before the update (the app's health check passed) +2026/09/24 12:14:12 router.go:1065: [INFO] [api] Manual catalog sync requested +2026/09/24 12:14:12 sync.go:208: [INFO] [sync] Starting catalog sync +2026/09/24 12:14:12 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main) +2026/09/24 12:14:12 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache +2026/09/24 12:14:12 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main +2026/09/24 12:14:12 sync.go:627: [DEBUG] [sync] Running: git reset --hard origin/main +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] chaoscrash/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] chaoscrash/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] chaosoom/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] chaosoom/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] chaosoomb/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] chaosoomb/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:533: [DEBUG] [sync] n8n: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] n8n/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:416: [INFO] [sync] Updated navidrome/.felhom.yml +2026/09/24 12:14:12 sync.go:565: [DEBUG] [sync] navidrome/.felhom.yml: src=5b235499bcaad6a8, dst=5b235499bcaad6a8 (changed) +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] nextcloud/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:533: [DEBUG] [sync] vikunja: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] wishlist/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped +2026/09/24 12:14:12 sync.go:440: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:14:12 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:14:12 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:14:12 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:14:12 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 12:14:12 sync.go:244: [DEBUG] [sync] Post-sync hook: triggering missing field injection for 1 stack(s): [navidrome] +2026/09/24 12:14:12 deploy.go:1104: [DEBUG] [stacks] InjectMissingFields: checking 1 stacks +2026/09/24 12:14:12 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack navidrome — 3 deploy fields, 3 existing env vars +2026/09/24 12:14:12 deploy.go:1189: [INFO] [stacks] InjectMissingFields: processed 1 stacks +2026/09/24 12:14:12 sync.go:263: [INFO] [sync] Catalog sync complete +2026/09/24 12:14:12 router.go:1071: [INFO] [api] Catalog sync completed: Sablonok frissítve — frissítve: navidrome +2026/09/24 12:14:14 router.go:362: [INFO] [api] Manual stack rescan requested +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:14:14 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:14:14 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:14:14 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:14:14 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 12:14:14 router.go:369: [INFO] [api] Stack rescan completed: 58 stacks found +2026/09/24 12:14:14 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:14:14 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:14:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 5s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:14:14 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:14:14 healthprobe.go:181: [DEBUG] Health probe romm: HTTP GET :8080/ → 200 (1ms) +2026/09/24 12:14:14 healthprobe.go:161: [INFO] Health probes: 1 ok (of 1 probed) +2026/09/24 12:14:16 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/navidrome from 172.18.0.10:35772 +2026/09/24 12:14:16 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/navidrome from 172.18.0.10:35772 +2026/09/24 12:14:16 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/navidrome from 172.18.0.10:35772 +2026/09/24 12:14:16 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/navidrome from 172.18.0.10:35772 diff --git a/documentation/audits/night-2026-09-24/E/round-06.json b/documentation/audits/night-2026-09-24/E/round-06.json new file mode 100644 index 00000000..c004c73b --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-06.json @@ -0,0 +1,195 @@ +{ + "round": 6, + "action": "failing_step", + "accident": "POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 14:12:31", + "app": "navidrome", + "started": "2026-09-24T12:12:20Z", + "before": { + "state": { + "deployed": true, + "state": "running", + "update_phase": null, + "hold_reason": null, + "hold_kind": null, + "update_error": null, + "ladder_steps_left": null + }, + "badges": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "page_hu": [ + "Temperature high: 78°C (hwmon2) Rendszermonitor →", + "+ 1 további figyelmeztetés →", + "Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el." + ], + "page_en": [ + "Temperature high: 78°C (hwmon2) System monitor →", + "+ 1 more warning →", + "Support is working on this app, so its data stays: for now you can remove only the app itself." + ] + }, + "badge_catchup_s": 4.6, + "act": "Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}", + "armed_at": "14:12:31", + "armed_why": "at verifying", + "phases": [ + [ + 5.9, + "backing-up" + ], + [ + 7.5, + "safety-dump" + ], + [ + 8.0, + "pulling" + ], + [ + 9.6, + "copying" + ], + [ + 10.1, + "starting" + ], + [ + 10.6, + "verifying" + ], + [ + 102.0, + "undoing" + ], + [ + 109.9, + "undone" + ] + ], + "time_to_steady_s": 109.9, + "after": { + "state": { + "deployed": true, + "state": "running", + "update_phase": "undone", + "hold_reason": null, + "hold_kind": null, + "update_error": null, + "ladder_steps_left": null + }, + "badges": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "page_hu": [ + "Temperature high: 78°C (hwmon2) Rendszermonitor →", + "+ 1 további figyelmeztetés →", + "A(z) navidrome frissítése 2026-09-24 14:14-kor nem sikerült. A doboz automatikusan visszaállította az előző változatot és az adatokat — semmi nem veszett el.", + "Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el." + ], + "page_en": [ + "Temperature high: 78°C (hwmon2) System monitor →", + "+ 1 more warning →", + "The update of navidrome at 2026-09-24 14:14 did not succeed. The box put back the previous version and its data automatically — nothing was lost.", + "Support is working on this app, so its data stays: for now you can remove only the app itself." + ] + }, + "readback": { + "A": true + }, + "events": [], + "box_log": [ + "2026-09-24T12:12:31Z INFO [stacks] navidrome deluan/navidrome:latest running Up Less than a second (health: starting)", + "2026-09-24T12:12:31Z INFO [api] Manual app-data backup (DB dump) triggered", + "2026-09-24T12:12:31Z INFO [backup] Starting database dump run", + "2026-09-24T12:12:31Z INFO [backup] Discovered 3 databases", + "2026-09-24T12:12:31Z INFO [backup] Discovered 3 database(s): nextcloud-db(mariadb), romm-db(mariadb), paperless-postgres(postgres)", + "2026-09-24T12:12:32Z INFO [backup] DB dump: nextcloud-db → nextcloud-mariadb.sql (855.4 KB, 490ms, 131 tables)", + "2026-09-24T12:12:32Z INFO [backup] DB dump: romm-db → romm-mariadb.sql (112.9 KB, 306ms, 36 tables)", + "2026-09-24T12:12:33Z INFO [backup] DB dump: paperless-postgres → paperless-ngx-postgres.sql (364.1 KB, 390ms, 72 tables)", + "2026-09-24T12:12:33Z WARN [backup] Skipping volume dump for navidrome — the app is HELD stopped (its restore point is preserved)", + "2026-09-24T12:12:33Z INFO [backup] Stopping nextcloud for safe volume dump", + "2026-09-24T12:12:35Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_db_data → 164.9 MB", + "2026-09-24T12:12:36Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:12:38Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_html → 761.6 MB", + "2026-09-24T12:12:39Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_redis_data → 281.0 KB", + "2026-09-24T12:12:39Z INFO [backup] Restarting nextcloud after volume dump", + "2026-09-24T12:12:41Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:12:45Z INFO [backup] Stopping paperless-ngx for safe volume dump", + "2026-09-24T12:12:46Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:12:51Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:12:53Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_data → 1.0 MB", + "2026-09-24T12:12:54Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_postgres_data → 67.9 MB", + "2026-09-24T12:12:54Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_redis_data → 1.0 MB", + "2026-09-24T12:12:54Z INFO [backup] Restarting paperless-ngx after volume dump", + "2026-09-24T12:12:56Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:13:01Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:13:06Z INFO [backup] Stopping privatebin for safe volume dump", + "2026-09-24T12:13:06Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:13:06Z INFO [backup] Volume dump: privatebin/privatebin_privatebin_data → 1.5 KB", + "2026-09-24T12:13:06Z INFO [backup] Restarting privatebin after volume dump", + "2026-09-24T12:13:07Z INFO [backup] Stopping romm for safe volume dump", + "2026-09-24T12:13:11Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:13:12Z INFO [backup] Volume dump: romm/romm_romm_config → 2.5 KB", + "2026-09-24T12:13:13Z INFO [backup] Volume dump: romm/romm_romm_db_data → 156.4 MB", + "2026-09-24T12:13:14Z INFO [backup] Volume dump: romm/romm_romm_redis_data → 15.5 MB", + "2026-09-24T12:13:14Z INFO [backup] Restarting romm after volume dump", + "2026-09-24T12:13:16Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:13:21Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:13:25Z INFO [backup] Stopping vikunja for safe volume dump", + "2026-09-24T12:13:26Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:13:26Z INFO [backup] Volume dump: vikunja/vikunja_vikunja_data → 1.5 KB", + "2026-09-24T12:13:27Z INFO [backup] Volume dump: vikunja/vikunja_vikunja_db → 2.0 MB", + "2026-09-24T12:13:27Z INFO [backup] Restarting vikunja after volume dump", + "2026-09-24T12:13:28Z INFO [backup] Stopping wishlist for safe volume dump", + "2026-09-24T12:13:29Z INFO [backup] Volume dump: wishlist/wishlist_wishlist_data → 302.0 KB", + "2026-09-24T12:13:30Z INFO [backup] Volume dump: wishlist/wishlist_wishlist_uploads → 1.5 KB", + "2026-09-24T12:13:30Z INFO [backup] Restarting wishlist after volume dump", + "2026-09-24T12:13:31Z WARN [backup] Skipping volume dump for chaosoom — the app is HELD stopped (its restore point is preserved)", + "2026-09-24T12:13:31Z INFO [backup] Stopping n8n for safe volume dump", + "2026-09-24T12:13:31Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:13:33Z INFO [backup] Volume dump: n8n/n8n_n8n_data → 5.4 MB", + "2026-09-24T12:13:33Z INFO [backup] Restarting n8n after volume dump", + "2026-09-24T12:13:35Z INFO [backup] App-data backup completed: 3 databases (1.3 MB total), 7 volume dump(s) (1m3.85s)", + "2026-09-24T12:13:35Z INFO [backup] Recovery unit captured for wishlist → /mnt/sys_drive/felhom-data/backups/primary/wishlist (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0)", + "2026-09-24T12:13:35Z INFO [backup] Recovery unit captured for n8n → /mnt/sys_drive/felhom-data/backups/primary/n8n (images=1, secrets-referenced=1, data_keys=0, portable-carried=1/1, withheld=0)", + "2026-09-24T12:13:37Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:13:42Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:13:47Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:13:52Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:13:57Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:14:02Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused", + "2026-09-24T12:14:02Z ERROR [stacks] update navidrome FAILED after the new version was started: not healthy: not healthy within 1m30s (last: health check failing)", + "2026-09-24T12:14:02Z INFO [stacks] update navidrome: kept 4222 bytes of the app's own log at /opt/docker/stacks/navidrome/hold-logs/20260924T121402Z/compose-logs.txt before stopping it (R-621)", + "2026-09-24T12:14:02Z INFO [stacks] update navidrome: phase undoing", + "2026-09-24T12:14:02Z WARN [stacks] update navidrome: UNDO — putting back the previous version and its 1 volume copy(ies) (reason: not healthy: not healthy within 1m30s (last: health check failing))", + "2026-09-24T12:14:04Z INFO [stacks] pin navidrome: navidrome=deluan/navidrome:0.64.1", + "2026-09-24T12:14:04Z INFO [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/navidrome not mounted — skipping ensure (held by drive gate)", + "2026-09-24T12:14:10Z INFO [stacks] update navidrome: event app_update_undone", + "2026-09-24T12:14:10Z INFO [stacks] update navidrome: UNDONE in 8s — the previous version is running on the data from before the update (the app's health check passed)", + "2026-09-24T12:14:12Z INFO [sync] Updated navidrome/.felhom.yml", + "2026-09-24T12:14:12Z INFO [api] Catalog sync completed: Sablonok frissítve — frissítve: navidrome" + ], + "undo_copies_left": "0" +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/round-06.log b/documentation/audits/night-2026-09-24/E/round-06.log new file mode 100644 index 00000000..9bd77714 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-06.log @@ -0,0 +1,16 @@ +14:12:20 ==== ROUND 6: failing_step on navidrome x whole_box_backup (2026-09-24T12:12:20Z) +14:12:22 drill: navidrome: failing step deluan/navidrome:0.64.1 -> deluan/navidrome:latest + probe 8999 +14:12:26 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +14:12:26 + 5.9s phase=backing-up +14:12:28 + 7.5s phase=safety-dump +14:12:29 + 8.0s phase=pulling +14:12:30 + 9.6s phase=copying +14:12:31 + 10.1s phase=starting +14:12:31 + 10.6s phase=verifying +14:12:31 >>> ARMED accident whole_box_backup (at verifying) +14:12:31 >>> POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 14:12:31 +14:14:03 + 102.0s phase=undoing +14:14:10 + 109.9s phase=undone +14:14:10 + 109.9s navidrome: deployed=True state=running updating=False phase=undone hold=None +14:14:11 drill: navidrome: back to deluan/navidrome:0.64.1 and its real probe +14:14:16 navidrome: login as the seeded user http=200 ok=True diff --git a/documentation/audits/night-2026-09-24/E/round-06.stdout b/documentation/audits/night-2026-09-24/E/round-06.stdout new file mode 100644 index 00000000..a4175478 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-06.stdout @@ -0,0 +1,17 @@ +14:12:20 ==== ROUND 6: failing_step on navidrome x whole_box_backup (2026-09-24T12:12:20Z) +14:12:22 drill: navidrome: failing step deluan/navidrome:0.64.1 -> deluan/navidrome:latest + probe 8999 +14:12:26 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'} +14:12:26 + 5.9s phase=backing-up +14:12:28 + 7.5s phase=safety-dump +14:12:29 + 8.0s phase=pulling +14:12:30 + 9.6s phase=copying +14:12:31 + 10.1s phase=starting +14:12:31 + 10.6s phase=verifying +14:12:31 >>> ARMED accident whole_box_backup (at verifying) +14:12:31 >>> POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 14:12:31 +14:14:03 + 102.0s phase=undoing +14:14:10 + 109.9s phase=undone +14:14:10 + 109.9s navidrome: deployed=True state=running updating=False phase=undone hold=None +14:14:11 drill: navidrome: back to deluan/navidrome:0.64.1 and its real probe +14:14:16 navidrome: login as the seeded user http=200 ok=True +14:14:24 ==== ROUND 6 END: steady in 109.9s; readback={'A': True}; events=[] diff --git a/documentation/audits/night-2026-09-24/E/round-07-controller.log b/documentation/audits/night-2026-09-24/E/round-07-controller.log new file mode 100644 index 00000000..8b159a33 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-07-controller.log @@ -0,0 +1,622 @@ +2026/09/24 12:14:30 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.10:35772 (X-Forwarded-For: 192.168.0.180) +2026/09/24 12:14:30 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 12:14:30 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T12:14:30Z, active_sessions=5 +2026/09/24 12:14:30 auth.go:222: [INFO] [web] Login from 172.18.0.10:35772 +2026/09/24 12:14:30 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.10:35772 +2026/09/24 12:14:30 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.10:35772 +2026/09/24 12:14:30 router.go:1065: [INFO] [api] Manual catalog sync requested +2026/09/24 12:14:32 router.go:362: [INFO] [api] Manual stack rescan requested +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:14:32 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:14:32 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:14:32 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available) +2026/09/24 12:14:32 router.go:369: [INFO] [api] Stack rescan completed: 58 stacks found +2026/09/24 12:14:34 router.go:431: [INFO] [api] Deploy requested for stack: chaoscrash +2026/09/24 12:14:34 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.3GB (37.3%) +2026/09/24 12:14:34 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:14:34 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 25s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:34 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container) +2026/09/24 12:14:34 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5475MB avail≈20423MB +2026/09/24 12:14:34 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24220444 → total=25898MB avail=20423MB used=5475MB (21.1%) +2026/09/24 12:14:35 deploy.go:1250: [INFO] [stacks] Memory check: total=25898MB, reserved=384MB, usable=25514MB, committed_used=1818MB, new_req=8MB, remaining=23688MB +2026/09/24 12:14:35 deploy.go:253: [DEBUG] Deploy chaoscrash: received 2 user values +2026/09/24 12:14:35 deploy.go:258: [DEBUG] SUBDOMAIN = "chaoscrash" +2026/09/24 12:14:35 deploy.go:258: [DEBUG] DOMAIN = "enkisfelhom.hu" +2026/09/24 12:14:35 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaoscrash — 2 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:14:35 [INFO] [stacks] SaveAppConfig: saved config for chaoscrash +2026/09/24 12:14:35 deploy.go:383: [INFO] [stacks] Deploying stack chaoscrash with 2 env vars: [DOMAIN, SUBDOMAIN] +2026/09/24 12:14:35 manager.go:1582: [INFO] [stacks] Deploying stack chaoscrash — checking 1 images... +2026/09/24 12:14:35 manager.go:1588: [DEBUG] alpine:3.20 — found locally +2026/09/24 12:14:35 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_deploy_started (severity info) — further app_deploy_started events are logged at DEBUG only +2026/09/24 12:14:35 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:14:35 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/chaoscrash) +2026/09/24 12:14:35 lifecycle.go:70: [DEBUG] [integrations] OnStackStart: stack=chaoscrash, waiting 5s for state refresh +2026/09/24 12:14:35 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaoscrash — 2 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:14:35 [INFO] [stacks] SaveAppConfig: saved config for chaoscrash +2026/09/24 12:14:35 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.4s) +2026/09/24 12:14:35 deploy.go:462: [INFO] [stacks] Stack chaoscrash deployed successfully (took 0.4s) +2026/09/24 12:14:35 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaoscrash — 2 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:14:35 [INFO] [stacks] SaveAppConfig: saved config for chaoscrash +2026/09/24 12:14:35 installed.go:420: [INFO] [stacks] installed-images chaoscrash: recorded 1 service(s) (chaoscrash=alpine:3.20 (sha256:d9e853e87e55…)) +2026/09/24 12:14:35 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaoscrash — 2 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:14:35 [INFO] [stacks] SaveAppConfig: saved config for chaoscrash +2026/09/24 12:14:35 pin.go:93: [INFO] [stacks] pin chaoscrash: chaoscrash=alpine:3.20 +2026/09/24 12:14:35 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_deployed (severity info) — further app_deployed events are logged at DEBUG only +2026/09/24 12:14:38 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:14:38 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/chaoscrash) +2026/09/24 12:14:38 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.2s) +2026/09/24 12:14:38 manager.go:1543: [INFO] [stacks] Stack chaoscrash post-start status: +2026/09/24 12:14:38 manager.go:1546: [INFO] [stacks] chaoscrash alpine:3.20 restarting Restarting (1) Less than a second ago +2026/09/24 12:14:40 lifecycle.go:86: [DEBUG] [integrations] OnStackStart: stack=chaoscrash integrationsFound=0 +2026/09/24 12:14:44 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:14:44 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:14:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 35s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:44 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:14:44 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:14:44 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:14:54 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:14:54 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:14:54 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:14:54 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:14:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 45s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:14:54 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:14:54 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:14:54 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:14:55 router.go:1201: [INFO] [api] Manual app-data backup (DB dump) triggered +2026/09/24 12:14:55 backup.go:522: [INFO] [backup] Starting database dump run +2026/09/24 12:14:55 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers +2026/09/24 12:14:55 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: f8196d9721e6 chaoscrash chaoscrash alpine:3.20 +642ad1cc5a7c navidrome navidrome deluan/navidrome:0.64.1 +124648859ae4 n8n n8n n8nio/n8n:2.31.3 +422cba16c96c wishlist wishlist ghcr.io/cmintey/wishlist:v0.67.1 +22b2c4451d37 vikunja vikunja vikunja/vikunja:2.3.0 +6d01f8e3b5ca romm romm rommapp/romm:5.3.1 +b613ce74ba5d romm-db romm mariadb:11.8 +aecb75c1bdbf romm-redis romm redis:7-alpine +3e311b8f4fdc privatebin privatebin privatebin/pdo:2.0.6 +e70d5bc9c661 paperless-webserver paperless-ngx ghcr.io/paperle... +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container chaoscrash (image=alpine:3.20, not a database) +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database) +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container n8n (image=n8nio/n8n:2.31.3, not a database) +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database) +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database) +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database) +2026/09/24 12:14:55 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=b613ce74ba5d) +2026/09/24 12:14:55 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database) +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database) +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database) +2026/09/24 12:14:55 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=41af1c5c28cc) +2026/09/24 12:14:55 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless") +2026/09/24 12:14:55 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database) +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database) +2026/09/24 12:14:55 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=55ce027b0fae) +2026/09/24 12:14:55 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database) +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database) +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database) +2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database) +2026/09/24 12:14:55 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 15 non-DB container(s) +2026/09/24 12:14:55 dbdump.go:208: [INFO] [backup] Discovered 3 databases +2026/09/24 12:14:55 backup.go:550: [INFO] [backup] Discovered 3 database(s): romm-db(mariadb), paperless-postgres(postgres), nextcloud-db(mariadb) +2026/09/24 12:14:55 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:14:55 dbdump.go:266: [DEBUG] DumpOne: starting dump for container=romm-db, stack=romm, dbType=mariadb, dest=/mnt/felhom-drives/scratch_hdd/userdata/romm/backups/primary/romm/db-dumps/romm-mariadb.sql +2026/09/24 12:14:55 dbdump.go:321: [DEBUG] DumpOne: mariadb-dump command: docker exec b613ce74ba5d mariadb-dump -u root -p*** --single-transaction --routines --triggers romm +2026/09/24 12:14:55 dbdump.go:405: [DEBUG] DumpOne: completed romm-db → romm-mariadb.sql (size=112.9 KB, valid=true, tables=36, duration=313ms) +2026/09/24 12:14:55 dbdump.go:410: [INFO] [backup] DB dump: romm-db → romm-mariadb.sql (112.9 KB, 313ms, 36 tables) +2026/09/24 12:14:55 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17657 bytes) +2026/09/24 12:14:55 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:14:55 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:14:55 dbdump.go:266: [DEBUG] DumpOne: starting dump for container=paperless-postgres, stack=paperless-ngx, dbType=postgres, dest=/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx/backups/primary/paperless-ngx/db-dumps/paperless-ngx-postgres.sql +2026/09/24 12:14:55 dbdump.go:303: [DEBUG] DumpOne: pg_dump command: docker exec 41af1c5c28cc pg_dump -U paperless -d paperless --clean --if-exists --no-owner --no-privileges +2026/09/24 12:14:55 dbdump.go:405: [DEBUG] DumpOne: completed paperless-postgres → paperless-ngx-postgres.sql (size=364.1 KB, valid=true, tables=72, duration=388ms) +2026/09/24 12:14:55 dbdump.go:410: [INFO] [backup] DB dump: paperless-postgres → paperless-ngx-postgres.sql (364.1 KB, 388ms, 72 tables) +2026/09/24 12:14:55 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17657 bytes) +2026/09/24 12:14:55 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:14:55 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:14:55 dbdump.go:266: [DEBUG] DumpOne: starting dump for container=nextcloud-db, stack=nextcloud, dbType=mariadb, dest=/mnt/felhom-drives/scratch_hdd/userdata/nextcloud/backups/primary/nextcloud/db-dumps/nextcloud-mariadb.sql +2026/09/24 12:14:55 dbdump.go:321: [DEBUG] DumpOne: mariadb-dump command: docker exec 55ce027b0fae mariadb-dump -u root -p*** --single-transaction --routines --triggers nextcloud +2026/09/24 12:14:56 dbdump.go:405: [DEBUG] DumpOne: completed nextcloud-db → nextcloud-mariadb.sql (size=855.4 KB, valid=true, tables=131, duration=634ms) +2026/09/24 12:14:56 dbdump.go:410: [INFO] [backup] DB dump: nextcloud-db → nextcloud-mariadb.sql (855.4 KB, 634ms, 131 tables) +2026/09/24 12:14:56 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17657 bytes) +2026/09/24 12:14:56 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:14:56 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%) +2026/09/24 12:14:56 backup.go:920: [INFO] [backup] Stopping navidrome for safe volume dump +2026/09/24 12:14:56 manager.go:1283: [DEBUG] [stacks] StopStack navidrome: current state=running deployed=true containers=1 +2026/09/24 12:14:56 manager.go:1286: [INFO] [stacks] Stopping stack: navidrome +2026/09/24 12:14:56 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, HDD_PATH, SUBDOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system) +2026/09/24 12:14:56 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/navidrome) +2026/09/24 12:14:56 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.3s) +2026/09/24 12:14:56 manager.go:1295: [INFO] [stacks] Stack navidrome stopped successfully (took 0.3s) +2026/09/24 12:14:56 backup.go:796: [DEBUG] [backup] Dumping volume navidrome_navidrome_data for navidrome +2026/09/24 12:14:57 backup.go:821: [INFO] [backup] Volume dump: navidrome/navidrome_navidrome_data → 707.0 KB +2026/09/24 12:14:57 backup.go:930: [INFO] [backup] Restarting navidrome after volume dump +2026/09/24 12:14:57 manager.go:1194: [DEBUG] [stacks] StartStack navidrome: current state=stopped deployed=true +2026/09/24 12:14:57 manager.go:1197: [INFO] [stacks] Starting stack: navidrome +2026/09/24 12:14:57 manager.go:1204: [DEBUG] [stacks] StartStack navidrome: prepared 10 env vars for compose +2026/09/24 12:14:57 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/navidrome not mounted — skipping ensure (held by drive gate) +2026/09/24 12:14:57 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, HDD_PATH, SUBDOMAIN, DOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system) +2026/09/24 12:14:57 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/navidrome) +2026/09/24 12:14:57 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.4s) +2026/09/24 12:14:57 manager.go:1212: [INFO] [stacks] Stack navidrome started successfully (took 0.4s) +2026/09/24 12:14:57 installed.go:409: [DEBUG] [stacks] installed-images navidrome: unchanged (1 service(s)) — app.yaml not rewritten +2026/09/24 12:14:57 backup.go:920: [INFO] [backup] Stopping nextcloud for safe volume dump +2026/09/24 12:14:57 manager.go:1283: [DEBUG] [stacks] StopStack nextcloud: current state=running deployed=true containers=3 +2026/09/24 12:14:57 manager.go:1286: [INFO] [stacks] Stopping stack: nextcloud +2026/09/24 12:14:57 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, NEXTCLOUD_ADMIN_USER, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system) +2026/09/24 12:14:57 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/nextcloud) +2026/09/24 12:14:59 manager.go:1483: [DEBUG] Command completed: docker compose down (took 1.8s) +2026/09/24 12:14:59 manager.go:1295: [INFO] [stacks] Stack nextcloud stopped successfully (took 1.8s) +2026/09/24 12:14:59 backup.go:796: [DEBUG] [backup] Dumping volume nextcloud_nextcloud_html for nextcloud +2026/09/24 12:15:00 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, HDD_PATH, SUBDOMAIN, DOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system) +2026/09/24 12:15:00 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/navidrome) +2026/09/24 12:15:00 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s) +2026/09/24 12:15:00 manager.go:1543: [INFO] [stacks] Stack navidrome post-start status: +2026/09/24 12:15:00 manager.go:1546: [INFO] [stacks] navidrome deluan/navidrome:0.64.1@sha256:df22d661b8d0322c33754d999b567150df9e131a47ae53be71fed0154bf8cef5 running Up 3 seconds (health: starting) +2026/09/24 12:15:02 backup.go:821: [INFO] [backup] Volume dump: nextcloud/nextcloud_nextcloud_html → 761.6 MB +2026/09/24 12:15:02 backup.go:796: [DEBUG] [backup] Dumping volume nextcloud_nextcloud_redis_data for nextcloud +2026/09/24 12:15:03 backup.go:821: [INFO] [backup] Volume dump: nextcloud/nextcloud_nextcloud_redis_data → 281.0 KB +2026/09/24 12:15:03 backup.go:796: [DEBUG] [backup] Dumping volume nextcloud_nextcloud_db_data for nextcloud +2026/09/24 12:15:04 backup.go:821: [INFO] [backup] Volume dump: nextcloud/nextcloud_nextcloud_db_data → 164.9 MB +2026/09/24 12:15:04 backup.go:930: [INFO] [backup] Restarting nextcloud after volume dump +2026/09/24 12:15:04 manager.go:1194: [DEBUG] [stacks] StartStack nextcloud: current state=stopped deployed=true +2026/09/24 12:15:04 manager.go:1197: [INFO] [stacks] Starting stack: nextcloud +2026/09/24 12:15:04 manager.go:1204: [DEBUG] [stacks] StartStack nextcloud: prepared 14 env vars for compose +2026/09/24 12:15:04 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping ensure (held by drive gate) +2026/09/24 12:15:04 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, NEXTCLOUD_ADMIN_USER, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system) +2026/09/24 12:15:04 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/nextcloud) +2026/09/24 12:15:04 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:15:04 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:15:04 manager.go:851: [DEBUG] [stacks] restart-policy of down member "nextcloud" = "unless-stopped" +2026/09/24 12:15:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:04 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 2 targets (6 skipped not due, 0 skipped no container) +2026/09/24 12:15:04 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:15:04 healthprobe.go:181: [DEBUG] Health probe navidrome: API GET :4533/ping → 200 (2ms) +2026/09/24 12:15:04 healthprobe.go:159: [WARN] Health probes: 1 ok, 1 unhealthy (of 2 probed) +2026/09/24 12:15:10 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 6.5s) +2026/09/24 12:15:10 manager.go:1212: [INFO] [stacks] Stack nextcloud started successfully (took 6.5s) +2026/09/24 12:15:10 installed.go:409: [DEBUG] [stacks] installed-images nextcloud: unchanged (3 service(s)) — app.yaml not rewritten +2026/09/24 12:15:10 backup.go:920: [INFO] [backup] Stopping paperless-ngx for safe volume dump +2026/09/24 12:15:10 manager.go:1283: [DEBUG] [stacks] StopStack paperless-ngx: current state=running deployed=true containers=3 +2026/09/24 12:15:10 manager.go:1286: [INFO] [stacks] Stopping stack: paperless-ngx +2026/09/24 12:15:10 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, PAPERLESS_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, PAPERLESS_ADMIN_PASSWORD, PAPERLESS_ADMIN_USER, PAPERLESS_OCR_LANGUAGE, USERDATA_PATH, IMPORT_PATH] (15 app + 0 system) +2026/09/24 12:15:10 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/paperless-ngx) +2026/09/24 12:15:13 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, NEXTCLOUD_ADMIN_USER, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system) +2026/09/24 12:15:13 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/nextcloud) +2026/09/24 12:15:14 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s) +2026/09/24 12:15:14 manager.go:1543: [INFO] [stacks] Stack nextcloud post-start status: +2026/09/24 12:15:14 manager.go:1546: [INFO] [stacks] nextcloud nextcloud:34.0.4-apache@sha256:a5ace30c695afe48c2c406e940ee7886a81e13fa382e57cd68b2416d1a66914c running Up 3 seconds (health: starting) +2026/09/24 12:15:14 manager.go:1546: [INFO] [stacks] nextcloud-db mariadb:12.3@sha256:805c8e104bd563d5bfa24fadd3f31cd419ea859cb5277f32b5dbf2db714f9ed1 running Up 9 seconds (healthy) +2026/09/24 12:15:14 manager.go:1546: [INFO] [stacks] nextcloud-redis redis:7-alpine@sha256:c35af3bbcef51a62c8bae5a9a563c6f1b60d7ebaea4cb5a3ccbcc157580ae098 running Up 9 seconds (healthy) +2026/09/24 12:15:14 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:15:14 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:15:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:15:14 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:15:18 manager.go:1483: [DEBUG] Command completed: docker compose down (took 7.3s) +2026/09/24 12:15:18 manager.go:1295: [INFO] [stacks] Stack paperless-ngx stopped successfully (took 7.3s) +2026/09/24 12:15:18 backup.go:796: [DEBUG] [backup] Dumping volume paperless-ngx_paperless_data for paperless-ngx +2026/09/24 12:15:18 backup.go:821: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_data → 1.0 MB +2026/09/24 12:15:18 backup.go:796: [DEBUG] [backup] Dumping volume paperless-ngx_paperless_postgres_data for paperless-ngx +2026/09/24 12:15:19 backup.go:821: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_postgres_data → 67.9 MB +2026/09/24 12:15:19 backup.go:796: [DEBUG] [backup] Dumping volume paperless-ngx_paperless_redis_data for paperless-ngx +2026/09/24 12:15:19 backup.go:821: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_redis_data → 1.0 MB +2026/09/24 12:15:19 backup.go:930: [INFO] [backup] Restarting paperless-ngx after volume dump +2026/09/24 12:15:19 manager.go:1194: [DEBUG] [stacks] StartStack paperless-ngx: current state=stopped deployed=true +2026/09/24 12:15:19 manager.go:1197: [INFO] [stacks] Starting stack: paperless-ngx +2026/09/24 12:15:19 manager.go:1204: [DEBUG] [stacks] StartStack paperless-ngx: prepared 15 env vars for compose +2026/09/24 12:15:19 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx not mounted — skipping ensure (held by drive gate) +2026/09/24 12:15:19 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, PAPERLESS_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, PAPERLESS_ADMIN_PASSWORD, PAPERLESS_ADMIN_USER, PAPERLESS_OCR_LANGUAGE, USERDATA_PATH, IMPORT_PATH] (15 app + 0 system) +2026/09/24 12:15:19 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/paperless-ngx) +2026/09/24 12:15:24 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:15:24 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4995MB avail≈20903MB +2026/09/24 12:15:24 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24789940 → total=25898MB avail=20903MB used=4995MB (19.3%) +2026/09/24 12:15:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%) +2026/09/24 12:15:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:15:24 info.go:13: [DEBUG] [system] readLoadAvg: raw="4.33 3.89 3.47 5/1533 5165" → 1m=4.33 5m=3.89 15m=3.47 +2026/09/24 12:15:24 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:15:24 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 69.0°C (hwmon2) +2026/09/24 12:15:24 info.go:13: [DEBUG] [system] GetInfo done in 70ms — mem=4995MB/25898MB (19.3%), rootDisk=25.5GB/68.4GB (37.3%), load=4.33/3.89/3.47, temp=69.0°C (hwmon2), cpu=32.1% +2026/09/24 12:15:24 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:15:24 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan +2026/09/24 12:15:24 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting +2026/09/24 12:15:24 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:15:24 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:15:24 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:15:24 manager.go:851: [DEBUG] [stacks] restart-policy of down member "paperless-webserver" = "unless-stopped" +2026/09/24 12:15:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:24 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 2 targets (6 skipped not due, 0 skipped no container) +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:15:24 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=true composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:15:25 healthprobe.go:181: [DEBUG] Health probe nextcloud: API GET :80/status.php → 200 (46ms) +2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:15:25 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:15:25 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:15:25 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:15:25 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 129ms) +2026/09/24 12:15:25 healthprobe.go:159: [WARN] Health probes: 1 ok, 1 unhealthy (of 2 probed) +2026/09/24 12:15:31 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 11.3s) +2026/09/24 12:15:31 manager.go:1212: [INFO] [stacks] Stack paperless-ngx started successfully (took 11.3s) +2026/09/24 12:15:31 installed.go:409: [DEBUG] [stacks] installed-images paperless-ngx: unchanged (3 service(s)) — app.yaml not rewritten +2026/09/24 12:15:31 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%) +2026/09/24 12:15:31 backup.go:920: [INFO] [backup] Stopping privatebin for safe volume dump +2026/09/24 12:15:31 manager.go:1283: [DEBUG] [stacks] StopStack privatebin: current state=running deployed=true containers=1 +2026/09/24 12:15:31 manager.go:1286: [INFO] [stacks] Stopping stack: privatebin +2026/09/24 12:15:31 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:15:31 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/privatebin) +2026/09/24 12:15:31 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.4s) +2026/09/24 12:15:31 manager.go:1295: [INFO] [stacks] Stack privatebin stopped successfully (took 0.4s) +2026/09/24 12:15:31 backup.go:796: [DEBUG] [backup] Dumping volume privatebin_privatebin_data for privatebin +2026/09/24 12:15:32 backup.go:821: [INFO] [backup] Volume dump: privatebin/privatebin_privatebin_data → 1.5 KB +2026/09/24 12:15:32 backup.go:930: [INFO] [backup] Restarting privatebin after volume dump +2026/09/24 12:15:32 manager.go:1194: [DEBUG] [stacks] StartStack privatebin: current state=stopped deployed=true +2026/09/24 12:15:32 manager.go:1197: [INFO] [stacks] Starting stack: privatebin +2026/09/24 12:15:32 manager.go:1204: [DEBUG] [stacks] StartStack privatebin: prepared 8 env vars for compose +2026/09/24 12:15:32 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:15:32 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/privatebin) +2026/09/24 12:15:32 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.4s) +2026/09/24 12:15:32 manager.go:1212: [INFO] [stacks] Stack privatebin started successfully (took 0.4s) +2026/09/24 12:15:32 installed.go:409: [DEBUG] [stacks] installed-images privatebin: unchanged (1 service(s)) — app.yaml not rewritten +2026/09/24 12:15:32 backup.go:920: [INFO] [backup] Stopping romm for safe volume dump +2026/09/24 12:15:32 manager.go:1283: [DEBUG] [stacks] StopStack romm: current state=running deployed=true containers=3 +2026/09/24 12:15:32 manager.go:1286: [INFO] [stacks] Stopping stack: romm +2026/09/24 12:15:32 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, ROMM_AUTH_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, USERDATA_PATH, IMPORT_PATH] (13 app + 0 system) +2026/09/24 12:15:32 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/romm) +2026/09/24 12:15:34 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, PAPERLESS_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, PAPERLESS_ADMIN_PASSWORD, PAPERLESS_ADMIN_USER, PAPERLESS_OCR_LANGUAGE, USERDATA_PATH, IMPORT_PATH] (15 app + 0 system) +2026/09/24 12:15:34 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/paperless-ngx) +2026/09/24 12:15:34 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s) +2026/09/24 12:15:34 manager.go:1543: [INFO] [stacks] Stack paperless-ngx post-start status: +2026/09/24 12:15:34 manager.go:1546: [INFO] [stacks] paperless-postgres postgres:16-alpine running Up 14 seconds (healthy) +2026/09/24 12:15:34 manager.go:1546: [INFO] [stacks] paperless-redis redis:7-alpine running Up 14 seconds (healthy) +2026/09/24 12:15:34 manager.go:1546: [INFO] [stacks] paperless-webserver ghcr.io/paperless-ngx/paperless-ngx:2.20.15 running Up 3 seconds (health: starting) +2026/09/24 12:15:34 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:15:34 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:15:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:15:34 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 0 skipped no container) +2026/09/24 12:15:35 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:15:35 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/privatebin) +2026/09/24 12:15:35 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.2s) +2026/09/24 12:15:35 manager.go:1543: [INFO] [stacks] Stack privatebin post-start status: +2026/09/24 12:15:35 manager.go:1546: [INFO] [stacks] privatebin privatebin/pdo:2.0.6@sha256:4c141b2326f8b353598ce9ce7507a9cfecf2dad5c60a39fea903d430e296d8f5 running Up 3 seconds (health: starting) +2026/09/24 12:15:38 manager.go:1483: [DEBUG] Command completed: docker compose down (took 5.5s) +2026/09/24 12:15:38 manager.go:1295: [INFO] [stacks] Stack romm stopped successfully (took 5.5s) +2026/09/24 12:15:38 backup.go:796: [DEBUG] [backup] Dumping volume romm_romm_redis_data for romm +2026/09/24 12:15:38 backup.go:821: [INFO] [backup] Volume dump: romm/romm_romm_redis_data → 15.6 MB +2026/09/24 12:15:38 backup.go:796: [DEBUG] [backup] Dumping volume romm_romm_config for romm +2026/09/24 12:15:39 backup.go:821: [INFO] [backup] Volume dump: romm/romm_romm_config → 2.5 KB +2026/09/24 12:15:39 backup.go:796: [DEBUG] [backup] Dumping volume romm_romm_db_data for romm +2026/09/24 12:15:40 backup.go:821: [INFO] [backup] Volume dump: romm/romm_romm_db_data → 156.4 MB +2026/09/24 12:15:40 backup.go:930: [INFO] [backup] Restarting romm after volume dump +2026/09/24 12:15:40 manager.go:1194: [DEBUG] [stacks] StartStack romm: current state=stopped deployed=true +2026/09/24 12:15:40 manager.go:1197: [INFO] [stacks] Starting stack: romm +2026/09/24 12:15:40 manager.go:1204: [DEBUG] [stacks] StartStack romm: prepared 13 env vars for compose +2026/09/24 12:15:40 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/romm not mounted — skipping ensure (held by drive gate) +2026/09/24 12:15:40 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, ROMM_AUTH_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, USERDATA_PATH, IMPORT_PATH] (13 app + 0 system) +2026/09/24 12:15:40 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/romm) +2026/09/24 12:15:44 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:15:44 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:15:44 manager.go:851: [DEBUG] [stacks] restart-policy of down member "romm" = "unless-stopped" +2026/09/24 12:15:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:44 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 2 targets (5 skipped not due, 0 skipped no container) +2026/09/24 12:15:44 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:15:44 healthprobe.go:181: [DEBUG] Health probe privatebin: HTTP GET :8080/ → 200 (5ms) +2026/09/24 12:15:44 healthprobe.go:159: [WARN] Health probes: 1 ok, 1 unhealthy (of 2 probed) +2026/09/24 12:15:51 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 11.4s) +2026/09/24 12:15:51 manager.go:1212: [INFO] [stacks] Stack romm started successfully (took 11.4s) +2026/09/24 12:15:51 installed.go:409: [DEBUG] [stacks] installed-images romm: unchanged (3 service(s)) — app.yaml not rewritten +2026/09/24 12:15:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.3GB (37.3%) +2026/09/24 12:15:51 backup.go:920: [INFO] [backup] Stopping vikunja for safe volume dump +2026/09/24 12:15:51 manager.go:1283: [DEBUG] [stacks] StopStack vikunja: current state=unhealthy deployed=true containers=1 +2026/09/24 12:15:51 manager.go:1286: [INFO] [stacks] Stopping stack: vikunja +2026/09/24 12:15:51 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, VIKUNJA_SERVICE_JWTSECRET, IMPORT_PATH] (9 app + 0 system) +2026/09/24 12:15:51 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/vikunja) +2026/09/24 12:15:52 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.4s) +2026/09/24 12:15:52 manager.go:1295: [INFO] [stacks] Stack vikunja stopped successfully (took 0.4s) +2026/09/24 12:15:52 backup.go:796: [DEBUG] [backup] Dumping volume vikunja_vikunja_data for vikunja +2026/09/24 12:15:52 backup.go:821: [INFO] [backup] Volume dump: vikunja/vikunja_vikunja_data → 1.5 KB +2026/09/24 12:15:52 backup.go:796: [DEBUG] [backup] Dumping volume vikunja_vikunja_db for vikunja +2026/09/24 12:15:53 backup.go:821: [INFO] [backup] Volume dump: vikunja/vikunja_vikunja_db → 2.0 MB +2026/09/24 12:15:53 backup.go:930: [INFO] [backup] Restarting vikunja after volume dump +2026/09/24 12:15:53 manager.go:1194: [DEBUG] [stacks] StartStack vikunja: current state=stopped deployed=true +2026/09/24 12:15:53 manager.go:1197: [INFO] [stacks] Starting stack: vikunja +2026/09/24 12:15:53 manager.go:1204: [DEBUG] [stacks] StartStack vikunja: prepared 9 env vars for compose +2026/09/24 12:15:53 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, VIKUNJA_SERVICE_JWTSECRET, IMPORT_PATH] (9 app + 0 system) +2026/09/24 12:15:53 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/vikunja) +2026/09/24 12:15:54 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.6s) +2026/09/24 12:15:54 manager.go:1212: [INFO] [stacks] Stack vikunja started successfully (took 0.6s) +2026/09/24 12:15:54 installed.go:409: [DEBUG] [stacks] installed-images vikunja: unchanged (1 service(s)) — app.yaml not rewritten +2026/09/24 12:15:54 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.3GB (37.3%) +2026/09/24 12:15:54 backup.go:920: [INFO] [backup] Stopping wishlist for safe volume dump +2026/09/24 12:15:54 manager.go:1283: [DEBUG] [stacks] StopStack wishlist: current state=running deployed=true containers=1 +2026/09/24 12:15:54 manager.go:1286: [INFO] [stacks] Stopping stack: wishlist +2026/09/24 12:15:54 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:15:54 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/wishlist) +2026/09/24 12:15:54 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, ROMM_AUTH_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, USERDATA_PATH, IMPORT_PATH] (13 app + 0 system) +2026/09/24 12:15:54 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/romm) +2026/09/24 12:15:54 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:15:54 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:15:54 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:15:54 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:15:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:15:54 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (5 skipped not due, 0 skipped no container) +2026/09/24 12:15:54 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:15:54 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:15:55 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.3s) +2026/09/24 12:15:55 manager.go:1543: [INFO] [stacks] Stack romm post-start status: +2026/09/24 12:15:55 manager.go:1546: [INFO] [stacks] romm rommapp/romm:5.3.1@sha256:0d66b4ea152a237c7f24b95e87459f46d3c596a7c0b35a82f26bc971487278b3 running Up 3 seconds (health: starting) +2026/09/24 12:15:55 manager.go:1546: [INFO] [stacks] romm-db mariadb:11.8@sha256:79d59758afc91b89b120b0a8904d637f5a3b3e1c4900f29b740d6d46c72fef68 running Up 14 seconds (healthy) +2026/09/24 12:15:55 manager.go:1546: [INFO] [stacks] romm-redis redis:7-alpine@sha256:858f009f9709ce576febc734aa78b8f6d624b82571f9ddb6bda4377c833b3499 running Up 14 seconds (healthy) +2026/09/24 12:15:55 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.9s) +2026/09/24 12:15:55 manager.go:1295: [INFO] [stacks] Stack wishlist stopped successfully (took 0.9s) +2026/09/24 12:15:55 backup.go:796: [DEBUG] [backup] Dumping volume wishlist_wishlist_data for wishlist +2026/09/24 12:15:55 manager.go:1502: [ERROR] [stacks] execCommand failed: exit status 1 +2026/09/24 12:15:56 backup.go:821: [INFO] [backup] Volume dump: wishlist/wishlist_wishlist_data → 302.0 KB +2026/09/24 12:15:56 backup.go:796: [DEBUG] [backup] Dumping volume wishlist_wishlist_uploads for wishlist +2026/09/24 12:15:56 backup.go:821: [INFO] [backup] Volume dump: wishlist/wishlist_wishlist_uploads → 1.5 KB +2026/09/24 12:15:56 backup.go:930: [INFO] [backup] Restarting wishlist after volume dump +2026/09/24 12:15:56 manager.go:1194: [DEBUG] [stacks] StartStack wishlist: current state=stopped deployed=true +2026/09/24 12:15:56 manager.go:1197: [INFO] [stacks] Starting stack: wishlist +2026/09/24 12:15:56 manager.go:1204: [DEBUG] [stacks] StartStack wishlist: prepared 8 env vars for compose +2026/09/24 12:15:56 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:15:56 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/wishlist) +2026/09/24 12:15:57 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, VIKUNJA_SERVICE_JWTSECRET, IMPORT_PATH] (9 app + 0 system) +2026/09/24 12:15:57 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/vikunja) +2026/09/24 12:15:57 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.3s) +2026/09/24 12:15:57 manager.go:1543: [INFO] [stacks] Stack vikunja post-start status: +2026/09/24 12:15:57 manager.go:1546: [INFO] [stacks] vikunja vikunja/vikunja:2.3.0 running Up 3 seconds +2026/09/24 12:15:57 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.9s) +2026/09/24 12:15:57 manager.go:1212: [INFO] [stacks] Stack wishlist started successfully (took 0.9s) +2026/09/24 12:15:58 installed.go:409: [DEBUG] [stacks] installed-images wishlist: unchanged (1 service(s)) — app.yaml not rewritten +2026/09/24 12:15:58 backup.go:712: [DEBUG] [backup] chaoscrash has no named volumes — volume dump skipped +2026/09/24 12:15:58 backup.go:705: [WARN] [backup] Skipping volume dump for chaosoom — the app is HELD stopped (its restore point is preserved) +2026/09/24 12:15:58 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.3GB (37.3%) +2026/09/24 12:15:58 backup.go:920: [INFO] [backup] Stopping n8n for safe volume dump +2026/09/24 12:15:58 manager.go:1283: [DEBUG] [stacks] StopStack n8n: current state=running deployed=true containers=1 +2026/09/24 12:15:58 manager.go:1286: [INFO] [stacks] Stopping stack: n8n +2026/09/24 12:15:58 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, N8N_ENCRYPTION_KEY, SUBDOMAIN, DOMAIN, IMPORT_PATH] (9 app + 0 system) +2026/09/24 12:15:58 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/n8n) +2026/09/24 12:15:59 manager.go:1483: [DEBUG] Command completed: docker compose down (took 1.4s) +2026/09/24 12:15:59 manager.go:1295: [INFO] [stacks] Stack n8n stopped successfully (took 1.4s) +2026/09/24 12:15:59 backup.go:796: [DEBUG] [backup] Dumping volume n8n_n8n_data for n8n +2026/09/24 12:16:00 backup.go:821: [INFO] [backup] Volume dump: n8n/n8n_n8n_data → 5.4 MB +2026/09/24 12:16:00 backup.go:930: [INFO] [backup] Restarting n8n after volume dump +2026/09/24 12:16:00 manager.go:1194: [DEBUG] [stacks] StartStack n8n: current state=stopped deployed=true +2026/09/24 12:16:00 manager.go:1197: [INFO] [stacks] Starting stack: n8n +2026/09/24 12:16:00 manager.go:1204: [DEBUG] [stacks] StartStack n8n: prepared 9 env vars for compose +2026/09/24 12:16:00 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, N8N_ENCRYPTION_KEY, SUBDOMAIN, IMPORT_PATH] (9 app + 0 system) +2026/09/24 12:16:00 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/n8n) +2026/09/24 12:16:01 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:16:01 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/wishlist) +2026/09/24 12:16:01 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.7s) +2026/09/24 12:16:01 manager.go:1212: [INFO] [stacks] Stack n8n started successfully (took 0.7s) +2026/09/24 12:16:01 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.3s) +2026/09/24 12:16:01 manager.go:1543: [INFO] [stacks] Stack wishlist post-start status: +2026/09/24 12:16:01 manager.go:1546: [INFO] [stacks] wishlist ghcr.io/cmintey/wishlist:v0.67.1@sha256:4b89bfb5b57ffb087c33978d21b09048e5c37f4506326e9ccd2705a0a1d86548 running Up 4 seconds (health: starting) +2026/09/24 12:16:01 installed.go:409: [DEBUG] [stacks] installed-images n8n: unchanged (1 service(s)) — app.yaml not rewritten +2026/09/24 12:16:01 backup.go:636: [INFO] [backup] App-data backup completed: 3 databases (1.3 MB total), 8 volume dump(s) (1m6.606s) +2026/09/24 12:16:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.4 GB avail=39.4GB (37.2%) +2026/09/24 12:16:01 recovery_unit.go:224: [INFO] [backup] Recovery unit captured for chaoscrash → /mnt/sys_drive/felhom-data/backups/primary/chaoscrash (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0) +2026/09/24 12:16:04 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, N8N_ENCRYPTION_KEY, SUBDOMAIN, IMPORT_PATH] (9 app + 0 system) +2026/09/24 12:16:04 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/n8n) +2026/09/24 12:16:04 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.2s) +2026/09/24 12:16:04 manager.go:1543: [INFO] [stacks] Stack n8n post-start status: +2026/09/24 12:16:04 manager.go:1546: [INFO] [stacks] n8n n8nio/n8n:2.31.3 running Up 4 seconds (health: starting) +2026/09/24 12:16:04 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:16:04 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:16:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:16:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:04 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (4 skipped not due, 0 skipped no container) +2026/09/24 12:16:14 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:16:14 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:16:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:14 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 3 targets (3 skipped not due, 0 skipped no container) +2026/09/24 12:16:14 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:16:14 healthprobe.go:181: [DEBUG] Health probe paperless-ngx: HTTP GET :8000/ → 302 (7ms) +2026/09/24 12:16:14 healthprobe.go:181: [DEBUG] Health probe wishlist: HTTP GET :3000/ → 307 (8ms) +2026/09/24 12:16:14 healthprobe.go:159: [WARN] Health probes: 2 ok, 1 unhealthy (of 3 probed) +2026/09/24 12:16:24 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:16:24 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5260MB avail≈20638MB +2026/09/24 12:16:24 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24474944 → total=25898MB avail=20638MB used=5260MB (20.3%) +2026/09/24 12:16:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.3GB (37.3%) +2026/09/24 12:16:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:16:24 info.go:13: [DEBUG] [system] readLoadAvg: raw="6.22 4.52 3.72 9/1506 6307" → 1m=6.22 5m=4.52 15m=3.72 +2026/09/24 12:16:24 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:16:24 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 75.0°C (hwmon2) +2026/09/24 12:16:24 info.go:13: [DEBUG] [system] GetInfo done in 60ms — mem=5260MB/25898MB (20.3%), rootDisk=25.5GB/68.4GB (37.3%), load=6.22/4.52/3.72, temp=75.0°C (hwmon2), cpu=59.7% +2026/09/24 12:16:24 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:16:24 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:16:24 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:16:24 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:16:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:16:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:24 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container) +2026/09/24 12:16:24 healthprobe.go:181: [DEBUG] Health probe n8n: API GET :5678/healthz → 200 (3ms) +2026/09/24 12:16:24 healthprobe.go:161: [INFO] Health probes: 1 ok (of 1 probed) +2026/09/24 12:16:25 main.go:3671: [WARN] [deadapp] chaoscrash: crash_loop — 10 in 10m0s; STOPPING it (decision 28) +2026/09/24 12:16:25 manager.go:1283: [DEBUG] [stacks] StopStack chaoscrash: current state=restarting deployed=true containers=1 +2026/09/24 12:16:25 manager.go:1286: [INFO] [stacks] Stopping stack: chaoscrash +2026/09/24 12:16:25 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:16:25 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/chaoscrash) +2026/09/24 12:16:25 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.1s) +2026/09/24 12:16:25 manager.go:1295: [INFO] [stacks] Stack chaoscrash stopped successfully (took 0.1s) +2026/09/24 12:16:25 settings.go:1814: [WARN] [settings] restore hold SET for chaoscrash — the app stays stopped until it is cleared +2026/09/24 12:16:25 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17837 bytes) +2026/09/24 12:16:25 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:16:25 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17879 bytes) +2026/09/24 12:16:25 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:16:25 update_guard.go:776: [WARN] [backup] chaoscrash is STOPPED by the box: crash_loop (trip 1 within 24h0m0s) — Start gives it one more try (decision 28) +2026/09/24 12:16:25 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_stopped_unhealthy (severity warning) — further app_stopped_unhealthy events are logged at DEBUG only +2026/09/24 12:16:26 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaoscrash from 172.18.0.10:35772 +2026/09/24 12:16:26 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaoscrash from 172.18.0.10:35772 +2026/09/24 12:16:26 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaoscrash from 172.18.0.10:35772 +2026/09/24 12:16:26 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaoscrash from 172.18.0.10:35772 diff --git a/documentation/audits/night-2026-09-24/E/round-07.json b/documentation/audits/night-2026-09-24/E/round-07.json new file mode 100644 index 00000000..8d6cfd86 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-07.json @@ -0,0 +1,121 @@ +{ + "round": 7, + "action": "crash_loop", + "accident": "POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 14:14:55", + "app": "chaoscrash", + "started": "2026-09-24T12:14:30Z", + "before": { + "state": { + "deployed": false, + "state": "not_deployed", + "update_phase": null, + "hold_reason": null, + "hold_kind": null, + "update_error": null, + "ladder_steps_left": null + } + }, + "act": "deploy -> 202", + "armed_at": "14:14:55", + "armed_why": "20 s after the install", + "time_to_steady_s": 115.9, + "after": { + "state": { + "deployed": true, + "state": "stopped", + "update_phase": null, + "hold_reason": "Az alkalmazást leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). Az Indítás gombbal újra megpróbálhatod.", + "hold_kind": "unhealthy_stop", + "update_error": null, + "ladder_steps_left": null + }, + "badges": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "page_hu": [ + "Temperature high: 76°C (hwmon2) Rendszermonitor →", + "+ 1 további figyelmeztetés →", + "Az alkalmazást leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). Az Indítás gombbal újra megpróbálhatod.", + "Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el." + ], + "page_en": [ + "Temperature high: 76°C (hwmon2) System monitor →", + "+ 1 more warning →", + "We stopped the app because it kept crashing (or ran out of memory). Press Start to try again.", + "Support is working on this app, so its data stays: for now you can remove only the app itself." + ] + }, + "readback": null, + "events": [ + "2026-09-24T12:16:25Z app_stopped_unhealthy (warning)" + ], + "box_log": [ + "2026-09-24T12:14:34Z INFO [api] Deploy requested for stack: chaoscrash", + "2026-09-24T12:14:35Z INFO [stacks] Deploying stack chaoscrash with 2 env vars: [DOMAIN, SUBDOMAIN]", + "2026-09-24T12:14:35Z INFO [stacks] Deploying stack chaoscrash — checking 1 images...", + "2026-09-24T12:14:35Z INFO [stacks] Stack chaoscrash deployed successfully (took 0.4s)", + "2026-09-24T12:14:35Z INFO [stacks] installed-images chaoscrash: recorded 1 service(s) (chaoscrash=alpine:3.20 (sha256:d9e853e87e55…))", + "2026-09-24T12:14:35Z INFO [stacks] pin chaoscrash: chaoscrash=alpine:3.20", + "2026-09-24T12:14:38Z INFO [stacks] Stack chaoscrash post-start status:", + "2026-09-24T12:14:38Z INFO [stacks] chaoscrash alpine:3.20 restarting Restarting (1) Less than a second ago", + "2026-09-24T12:14:55Z INFO [api] Manual app-data backup (DB dump) triggered", + "2026-09-24T12:14:55Z INFO [backup] Starting database dump run", + "2026-09-24T12:14:55Z INFO [backup] Discovered 3 databases", + "2026-09-24T12:14:55Z INFO [backup] Discovered 3 database(s): romm-db(mariadb), paperless-postgres(postgres), nextcloud-db(mariadb)", + "2026-09-24T12:14:55Z INFO [backup] DB dump: romm-db → romm-mariadb.sql (112.9 KB, 313ms, 36 tables)", + "2026-09-24T12:14:55Z INFO [backup] DB dump: paperless-postgres → paperless-ngx-postgres.sql (364.1 KB, 388ms, 72 tables)", + "2026-09-24T12:14:56Z INFO [backup] DB dump: nextcloud-db → nextcloud-mariadb.sql (855.4 KB, 634ms, 131 tables)", + "2026-09-24T12:14:56Z INFO [backup] Stopping navidrome for safe volume dump", + "2026-09-24T12:14:57Z INFO [backup] Volume dump: navidrome/navidrome_navidrome_data → 707.0 KB", + "2026-09-24T12:14:57Z INFO [backup] Restarting navidrome after volume dump", + "2026-09-24T12:14:57Z INFO [backup] Stopping nextcloud for safe volume dump", + "2026-09-24T12:15:02Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_html → 761.6 MB", + "2026-09-24T12:15:03Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_redis_data → 281.0 KB", + "2026-09-24T12:15:04Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_db_data → 164.9 MB", + "2026-09-24T12:15:04Z INFO [backup] Restarting nextcloud after volume dump", + "2026-09-24T12:15:10Z INFO [backup] Stopping paperless-ngx for safe volume dump", + "2026-09-24T12:15:18Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_data → 1.0 MB", + "2026-09-24T12:15:19Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_postgres_data → 67.9 MB", + "2026-09-24T12:15:19Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_redis_data → 1.0 MB", + "2026-09-24T12:15:19Z INFO [backup] Restarting paperless-ngx after volume dump", + "2026-09-24T12:15:31Z INFO [backup] Stopping privatebin for safe volume dump", + "2026-09-24T12:15:32Z INFO [backup] Volume dump: privatebin/privatebin_privatebin_data → 1.5 KB", + "2026-09-24T12:15:32Z INFO [backup] Restarting privatebin after volume dump", + "2026-09-24T12:15:32Z INFO [backup] Stopping romm for safe volume dump", + "2026-09-24T12:15:38Z INFO [backup] Volume dump: romm/romm_romm_redis_data → 15.6 MB", + "2026-09-24T12:15:39Z INFO [backup] Volume dump: romm/romm_romm_config → 2.5 KB", + "2026-09-24T12:15:40Z INFO [backup] Volume dump: romm/romm_romm_db_data → 156.4 MB", + "2026-09-24T12:15:40Z INFO [backup] Restarting romm after volume dump", + "2026-09-24T12:15:51Z INFO [backup] Stopping vikunja for safe volume dump", + "2026-09-24T12:15:52Z INFO [backup] Volume dump: vikunja/vikunja_vikunja_data → 1.5 KB", + "2026-09-24T12:15:53Z INFO [backup] Volume dump: vikunja/vikunja_vikunja_db → 2.0 MB", + "2026-09-24T12:15:53Z INFO [backup] Restarting vikunja after volume dump", + "2026-09-24T12:15:54Z INFO [backup] Stopping wishlist for safe volume dump", + "2026-09-24T12:15:56Z INFO [backup] Volume dump: wishlist/wishlist_wishlist_data → 302.0 KB", + "2026-09-24T12:15:56Z INFO [backup] Volume dump: wishlist/wishlist_wishlist_uploads → 1.5 KB", + "2026-09-24T12:15:56Z INFO [backup] Restarting wishlist after volume dump", + "2026-09-24T12:15:58Z WARN [backup] Skipping volume dump for chaosoom — the app is HELD stopped (its restore point is preserved)", + "2026-09-24T12:15:58Z INFO [backup] Stopping n8n for safe volume dump", + "2026-09-24T12:16:00Z INFO [backup] Volume dump: n8n/n8n_n8n_data → 5.4 MB", + "2026-09-24T12:16:00Z INFO [backup] Restarting n8n after volume dump", + "2026-09-24T12:16:01Z INFO [backup] App-data backup completed: 3 databases (1.3 MB total), 8 volume dump(s) (1m6.606s)", + "2026-09-24T12:16:01Z INFO [backup] Recovery unit captured for chaoscrash → /mnt/sys_drive/felhom-data/backups/primary/chaoscrash (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0)", + "2026-09-24T12:16:25Z WARN [deadapp] chaoscrash: crash_loop — 10 in 10m0s; STOPPING it (decision 28)", + "2026-09-24T12:16:25Z INFO [stacks] Stopping stack: chaoscrash", + "2026-09-24T12:16:25Z INFO [stacks] Stack chaoscrash stopped successfully (took 0.1s)", + "2026-09-24T12:16:25Z WARN [settings] restore hold SET for chaoscrash — the app stays stopped until it is cleared", + "2026-09-24T12:16:25Z WARN [backup] chaoscrash is STOPPED by the box: crash_loop (trip 1 within 24h0m0s) — Start gives it one more try (decision 28)" + ], + "undo_copies_left": "0" +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/round-07.log b/documentation/audits/night-2026-09-24/E/round-07.log new file mode 100644 index 00000000..a60f8657 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-07.log @@ -0,0 +1,10 @@ +14:14:30 ==== ROUND 7: crash_loop on chaoscrash x whole_box_backup (2026-09-24T12:14:30Z) +14:14:35 deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:14:35 + 4.4s chaoscrash: deployed=True state=deploying updating=False phase=None hold=None +14:14:37 + 6.4s chaoscrash: deployed=True state=running updating=False phase=None hold=None +14:14:55 >>> ARMED accident whole_box_backup (20 s after the install) +14:14:55 >>> POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 14:14:55 +14:15:01 + 30.7s chaoscrash: deployed=True state=restarting updating=False phase=None hold=None +14:15:58 + 87.5s chaoscrash: deployed=True state=running updating=False phase=None hold=None +14:16:00 + 89.5s chaoscrash: deployed=True state=restarting updating=False phase=None hold=None +14:16:26 + 115.9s chaoscrash: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop diff --git a/documentation/audits/night-2026-09-24/E/round-07.stdout b/documentation/audits/night-2026-09-24/E/round-07.stdout new file mode 100644 index 00000000..e2c636e4 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-07.stdout @@ -0,0 +1,11 @@ +14:14:30 ==== ROUND 7: crash_loop on chaoscrash x whole_box_backup (2026-09-24T12:14:30Z) +14:14:35 deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:14:35 + 4.4s chaoscrash: deployed=True state=deploying updating=False phase=None hold=None +14:14:37 + 6.4s chaoscrash: deployed=True state=running updating=False phase=None hold=None +14:14:55 >>> ARMED accident whole_box_backup (20 s after the install) +14:14:55 >>> POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 14:14:55 +14:15:01 + 30.7s chaoscrash: deployed=True state=restarting updating=False phase=None hold=None +14:15:58 + 87.5s chaoscrash: deployed=True state=running updating=False phase=None hold=None +14:16:00 + 89.5s chaoscrash: deployed=True state=restarting updating=False phase=None hold=None +14:16:26 + 115.9s chaoscrash: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop +14:16:35 ==== ROUND 7 END: steady in 115.9s; readback=None; events=['2026-09-24T12:16:25Z app_stopped_unhealthy (warning)'] diff --git a/documentation/audits/night-2026-09-24/E/round-08-controller.log b/documentation/audits/night-2026-09-24/E/round-08-controller.log new file mode 100644 index 00000000..7f44563f --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-08-controller.log @@ -0,0 +1,465 @@ +2026/09/24 12:16:51 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.10:35772 (X-Forwarded-For: 192.168.0.180) +2026/09/24 12:16:51 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session +2026/09/24 12:16:51 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T12:16:51Z, active_sessions=6 +2026/09/24 12:16:51 auth.go:222: [INFO] [web] Login from 172.18.0.10:35772 +2026/09/24 12:16:51 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.10:35772 +2026/09/24 12:16:51 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.10:35772 +2026/09/24 12:16:51 router.go:1065: [INFO] [api] Manual catalog sync requested +2026/09/24 12:16:51 sync.go:208: [INFO] [sync] Starting catalog sync +2026/09/24 12:16:51 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main) +2026/09/24 12:16:51 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache +2026/09/24 12:16:51 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main +2026/09/24 12:16:51 sync.go:627: [DEBUG] [sync] Running: git reset --hard origin/main +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] chaoscrash/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] chaoscrash/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] chaosoom/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] chaosoom/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] chaosoomb/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] chaosoomb/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:533: [DEBUG] [sync] n8n: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] n8n/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] navidrome/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] nextcloud/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:533: [DEBUG] [sync] vikunja: catalog has moved past the pin — rendering the stored applied definition +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] wishlist/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped +2026/09/24 12:16:51 sync.go:263: [INFO] [sync] Catalog sync complete +2026/09/24 12:16:51 router.go:1071: [INFO] [api] Catalog sync completed: Sablonok naprakészek — nincs változás +2026/09/24 12:16:53 router.go:362: [INFO] [api] Manual stack rescan requested +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=true composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:16:53 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:16:53 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:16:53 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available) +2026/09/24 12:16:53 router.go:369: [INFO] [api] Stack rescan completed: 58 stacks found +2026/09/24 12:16:54 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:16:54 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:16:54 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:16:54 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:16:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:16:54 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:16:54 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:16:54 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:16:56 router.go:431: [INFO] [api] Deploy requested for stack: chaosoomb +2026/09/24 12:16:56 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.3GB (37.3%) +2026/09/24 12:16:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5430MB avail≈20468MB +2026/09/24 12:16:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24274344 → total=25898MB avail=20468MB used=5430MB (21.0%) +2026/09/24 12:16:56 deploy.go:1250: [INFO] [stacks] Memory check: total=25898MB, reserved=384MB, usable=25514MB, committed_used=1818MB, new_req=8MB, remaining=23688MB +2026/09/24 12:16:56 deploy.go:253: [DEBUG] Deploy chaosoomb: received 2 user values +2026/09/24 12:16:56 deploy.go:258: [DEBUG] DOMAIN = "enkisfelhom.hu" +2026/09/24 12:16:56 deploy.go:258: [DEBUG] SUBDOMAIN = "chaosoomb" +2026/09/24 12:16:56 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaosoomb — 2 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:16:56 [INFO] [stacks] SaveAppConfig: saved config for chaosoomb +2026/09/24 12:16:56 deploy.go:383: [INFO] [stacks] Deploying stack chaosoomb with 2 env vars: [DOMAIN, SUBDOMAIN] +2026/09/24 12:16:56 manager.go:1582: [INFO] [stacks] Deploying stack chaosoomb — checking 1 images... +2026/09/24 12:16:56 manager.go:1588: [DEBUG] alpine:3.20 — found locally +2026/09/24 12:16:56 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_deploy_started (severity info) +2026/09/24 12:16:56 lifecycle.go:70: [DEBUG] [integrations] OnStackStart: stack=chaosoomb, waiting 5s for state refresh +2026/09/24 12:16:56 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:16:56 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/chaosoomb) +2026/09/24 12:16:56 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaosoomb — 2 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:16:56 [INFO] [stacks] SaveAppConfig: saved config for chaosoomb +2026/09/24 12:16:56 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.3s) +2026/09/24 12:16:56 deploy.go:462: [INFO] [stacks] Stack chaosoomb deployed successfully (took 0.4s) +2026/09/24 12:16:56 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaosoomb — 2 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:16:56 [INFO] [stacks] SaveAppConfig: saved config for chaosoomb +2026/09/24 12:16:56 installed.go:420: [INFO] [stacks] installed-images chaosoomb: recorded 1 service(s) (chaosoomb=alpine:3.20 (sha256:d9e853e87e55…)) +2026/09/24 12:16:56 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaosoomb — 2 env vars, 0 encrypted, 0 sensitive fields +2026/09/24 12:16:56 [INFO] [stacks] SaveAppConfig: saved config for chaosoomb +2026/09/24 12:16:56 pin.go:93: [INFO] [stacks] pin chaosoomb: chaosoomb=alpine:3.20 +2026/09/24 12:16:56 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_deployed (severity info) +2026/09/24 12:16:59 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:16:59 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/chaosoomb) +2026/09/24 12:16:59 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s) +2026/09/24 12:16:59 manager.go:1543: [INFO] [stacks] Stack chaosoomb post-start status: +2026/09/24 12:16:59 manager.go:1546: [INFO] [stacks] chaosoomb alpine:3.20 running Up 3 seconds +2026/09/24 12:17:01 lifecycle.go:86: [DEBUG] [integrations] OnStackStart: stack=chaosoomb integrationsFound=0 +2026/09/24 12:17:04 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:17:04 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:17:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:04 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:17:04 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:17:04 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:17:14 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:17:14 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:14 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container) +2026/09/24 12:17:24 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:17:24 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5461MB avail≈20437MB +2026/09/24 12:17:24 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24237404 → total=25898MB avail=20437MB used=5461MB (21.1%) +2026/09/24 12:17:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.3GB (37.3%) +2026/09/24 12:17:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:17:24 info.go:13: [DEBUG] [system] readLoadAvg: raw="5.47 4.63 3.81 13/1552 6674" → 1m=5.47 5m=4.63 15m=3.81 +2026/09/24 12:17:24 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:17:24 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 72.1°C (hwmon2) +2026/09/24 12:17:24 info.go:13: [DEBUG] [system] GetInfo done in 67ms — mem=5461MB/25898MB (21.1%), rootDisk=25.5GB/68.4GB (37.3%), load=5.47/4.63/3.81, temp=72.1°C (hwmon2), cpu=29.5% +2026/09/24 12:17:24 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan +2026/09/24 12:17:24 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting +2026/09/24 12:17:24 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml +2026/09/24 12:17:24 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml +2026/09/24 12:17:24 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:17:24 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=true composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=true composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml +2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml +2026/09/24 12:17:24 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates +2026/09/24 12:17:24 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection +2026/09/24 12:17:24 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (11 deployed, 47 available) +2026/09/24 12:17:24 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 92ms) +2026/09/24 12:17:25 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:25 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:25 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:25 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:25 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:25 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:25 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:25 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:17:25 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:17:25 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:17:25 main.go:872: [WARN] [deadapp] chaosoomb: container chaosoomb was OOM-killed (started 2026-09-24T12:17:22.994688333Z; kills 2, limit 32M, peak 32M) +2026/09/24 12:17:25 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_oom (severity warning) — further app_oom events are logged at DEBUG only +2026/09/24 12:17:34 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:17:34 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:34 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container) +2026/09/24 12:17:44 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:17:44 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:17:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:44 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:17:44 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:17:44 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:17:54 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:17:54 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:17:54 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:17:54 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:17:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:17:54 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:17:54 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:17:54 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:17:55 main.go:872: [WARN] [deadapp] chaosoomb: container chaosoomb was OOM-killed (started 2026-09-24T12:17:36.838256991Z; kills 13, limit 32M, peak 32M) +2026/09/24 12:17:55 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_oom (severity warning) +2026/09/24 12:18:04 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:18:04 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:18:04 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container) +2026/09/24 12:18:14 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:18:14 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:18:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:14 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:18:14 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:18:14 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) +2026/09/24 12:18:24 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true) +2026/09/24 12:18:24 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5453MB avail≈20445MB +2026/09/24 12:18:24 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24247068 → total=25898MB avail=20445MB used=5453MB (21.1%) +2026/09/24 12:18:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=61.8GB avail=3.0GB (90.5%) +2026/09/24 12:18:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%) +2026/09/24 12:18:24 info.go:13: [DEBUG] [system] readLoadAvg: raw="4.80 4.57 3.84 12/1537 6850" → 1m=4.80 5m=4.57 15m=3.84 +2026/09/24 12:18:24 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones +2026/09/24 12:18:24 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 70.2°C (hwmon2) +2026/09/24 12:18:24 info.go:13: [DEBUG] [system] GetInfo done in 80ms — mem=5453MB/25898MB (21.1%), rootDisk=61.8GB/68.4GB (90.5%), load=4.80/4.57/3.84, temp=70.2°C (hwmon2), cpu=30.7% +2026/09/24 12:18:24 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:18:24 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting +2026/09/24 12:18:24 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:18:24 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting +2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m40s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 2m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m0s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false +2026/09/24 12:18:24 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container) +2026/09/24 12:18:25 main.go:3671: [WARN] [deadapp] chaosoomb: crash_loop — 6 in 10m0s; STOPPING it (decision 28) +2026/09/24 12:18:25 manager.go:1283: [DEBUG] [stacks] StopStack chaosoomb: current state=running deployed=true containers=1 +2026/09/24 12:18:25 manager.go:1286: [INFO] [stacks] Stopping stack: chaosoomb +2026/09/24 12:18:25 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system) +2026/09/24 12:18:25 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/chaosoomb) +2026/09/24 12:18:32 manager.go:1483: [DEBUG] Command completed: docker compose down (took 7.4s) +2026/09/24 12:18:32 manager.go:1295: [INFO] [stacks] Stack chaosoomb stopped successfully (took 7.4s) +2026/09/24 12:18:32 settings.go:1814: [WARN] [settings] restore hold SET for chaosoomb — the app stays stopped until it is cleared +2026/09/24 12:18:32 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (18057 bytes) +2026/09/24 12:18:32 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:18:32 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (18098 bytes) +2026/09/24 12:18:32 settings.go:847: [INFO] [settings] Settings saved +2026/09/24 12:18:32 update_guard.go:776: [WARN] [backup] chaosoomb is STOPPED by the box: crash_loop (trip 1 within 24h0m0s) — Start gives it one more try (decision 28) +2026/09/24 12:18:32 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_stopped_unhealthy (severity warning) +2026/09/24 12:18:33 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoomb from 172.18.0.10:35772 +2026/09/24 12:18:33 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoomb from 172.18.0.10:35772 +2026/09/24 12:18:33 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoomb from 172.18.0.10:35772 +2026/09/24 12:18:33 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoomb from 172.18.0.10:35772 +2026/09/24 12:18:34 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting +2026/09/24 12:18:34 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting +2026/09/24 12:18:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m30s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m20s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m50s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 2m10s ago, effective interval 5m0s, healthy=true +2026/09/24 12:18:34 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container) +2026/09/24 12:18:34 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused +2026/09/24 12:18:34 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed) diff --git a/documentation/audits/night-2026-09-24/E/round-08.json b/documentation/audits/night-2026-09-24/E/round-08.json new file mode 100644 index 00000000..ce7975a2 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-08.json @@ -0,0 +1,88 @@ +{ + "round": 8, + "action": "oom_app", + "accident": { + "kind": "disk_to_floor_plus_1g", + "cmd": "fallocate /var/lib/docker/chaos-fill leaving 3 GB free (floor 2 GB + 1 GB)", + "fired_at": "14:17:25", + "result": "rc=0 filled 39025688576 bytes /dev/loop1 69G 62G 3.0G 96% /var/lib/docker " + }, + "app": "chaosoomb", + "started": "2026-09-24T12:16:51Z", + "before": { + "state": { + "deployed": false, + "state": "not_deployed", + "update_phase": null, + "hold_reason": null, + "hold_kind": null, + "update_error": null, + "ladder_steps_left": null + } + }, + "act": "deploy -> 202", + "armed_at": "14:17:16", + "armed_why": "20 s after the install", + "time_to_steady_s": 102.0, + "after": { + "state": { + "deployed": true, + "state": "stopped", + "update_phase": null, + "hold_reason": "Az alkalmazást leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). Az Indítás gombbal újra megpróbálhatod.", + "hold_kind": "unhealthy_stop", + "update_error": null, + "ladder_steps_left": null + }, + "badges": { + "hu": [ + { + "title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.", + "text": "Naprakész" + } + ], + "en": [ + { + "title": "This app is running the newest version available.", + "text": "Up to date" + } + ] + }, + "page_hu": [ + "Temperature high: 76°C (hwmon2) Rendszermonitor →", + "+ 1 további figyelmeztetés →", + "Az alkalmazást leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). Az Indítás gombbal újra megpróbálhatod.", + "Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el." + ], + "page_en": [ + "Temperature high: 76°C (hwmon2) System monitor →", + "+ 1 more warning →", + "We stopped the app because it kept crashing (or ran out of memory). Press Start to try again.", + "Support is working on this app, so its data stays: for now you can remove only the app itself." + ] + }, + "readback": null, + "events": [ + "2026-09-24T12:17:25Z app_oom (warning)", + "2026-09-24T12:17:55Z app_oom (warning)", + "2026-09-24T12:18:32Z app_stopped_unhealthy (warning)" + ], + "box_log": [ + "2026-09-24T12:16:56Z INFO [api] Deploy requested for stack: chaosoomb", + "2026-09-24T12:16:56Z INFO [stacks] Deploying stack chaosoomb with 2 env vars: [DOMAIN, SUBDOMAIN]", + "2026-09-24T12:16:56Z INFO [stacks] Deploying stack chaosoomb — checking 1 images...", + "2026-09-24T12:16:56Z INFO [stacks] Stack chaosoomb deployed successfully (took 0.4s)", + "2026-09-24T12:16:56Z INFO [stacks] installed-images chaosoomb: recorded 1 service(s) (chaosoomb=alpine:3.20 (sha256:d9e853e87e55…))", + "2026-09-24T12:16:56Z INFO [stacks] pin chaosoomb: chaosoomb=alpine:3.20", + "2026-09-24T12:16:59Z INFO [stacks] Stack chaosoomb post-start status:", + "2026-09-24T12:16:59Z INFO [stacks] chaosoomb alpine:3.20 running Up 3 seconds", + "2026-09-24T12:17:25Z WARN [deadapp] chaosoomb: container chaosoomb was OOM-killed (started 2026-09-24T12:17:22.994688333Z; kills 2, limit 32M, peak 32M)", + "2026-09-24T12:17:55Z WARN [deadapp] chaosoomb: container chaosoomb was OOM-killed (started 2026-09-24T12:17:36.838256991Z; kills 13, limit 32M, peak 32M)", + "2026-09-24T12:18:25Z WARN [deadapp] chaosoomb: crash_loop — 6 in 10m0s; STOPPING it (decision 28)", + "2026-09-24T12:18:25Z INFO [stacks] Stopping stack: chaosoomb", + "2026-09-24T12:18:32Z INFO [stacks] Stack chaosoomb stopped successfully (took 7.4s)", + "2026-09-24T12:18:32Z WARN [settings] restore hold SET for chaosoomb — the app stays stopped until it is cleared", + "2026-09-24T12:18:32Z WARN [backup] chaosoomb is STOPPED by the box: crash_loop (trip 1 within 24h0m0s) — Start gives it one more try (decision 28)" + ], + "undo_copies_left": "0" +} \ No newline at end of file diff --git a/documentation/audits/night-2026-09-24/E/round-08.log b/documentation/audits/night-2026-09-24/E/round-08.log new file mode 100644 index 00000000..dcfc5c17 --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-08.log @@ -0,0 +1,9 @@ +14:16:51 ==== ROUND 8: oom_app on chaosoomb x disk_to_floor_plus_1g (2026-09-24T12:16:51Z) +14:16:56 deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:16:56 + 4.8s chaosoomb: deployed=True state=not_deployed updating=False phase=None hold=None +14:16:58 + 6.8s chaosoomb: deployed=True state=running updating=False phase=None hold=None +14:17:16 >>> ARMED accident disk_to_floor_plus_1g (20 s after the install) +14:18:05 + 73.6s chaosoomb: deployed=True state=restarting updating=False phase=None hold=None +14:18:15 + 83.8s chaosoomb: deployed=True state=running updating=False phase=None hold=None +14:18:33 + 102.0s chaosoomb: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop +14:18:33 >>> accident done: {'kind': 'disk_to_floor_plus_1g', 'cmd': 'fallocate /var/lib/docker/chaos-fill leaving 3 GB free (floor 2 GB + 1 GB)', 'fired_at': '14:17:25', 'result': 'rc=0 filled 39025688576 bytes /dev/loop1 69G 62G 3.0G 96% /var/lib/docker '} diff --git a/documentation/audits/night-2026-09-24/E/round-08.stdout b/documentation/audits/night-2026-09-24/E/round-08.stdout new file mode 100644 index 00000000..7272852c --- /dev/null +++ b/documentation/audits/night-2026-09-24/E/round-08.stdout @@ -0,0 +1,10 @@ +14:16:51 ==== ROUND 8: oom_app on chaosoomb x disk_to_floor_plus_1g (2026-09-24T12:16:51Z) +14:16:56 deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} +14:16:56 + 4.8s chaosoomb: deployed=True state=not_deployed updating=False phase=None hold=None +14:16:58 + 6.8s chaosoomb: deployed=True state=running updating=False phase=None hold=None +14:17:16 >>> ARMED accident disk_to_floor_plus_1g (20 s after the install) +14:18:05 + 73.6s chaosoomb: deployed=True state=restarting updating=False phase=None hold=None +14:18:15 + 83.8s chaosoomb: deployed=True state=running updating=False phase=None hold=None +14:18:33 + 102.0s chaosoomb: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop +14:18:33 >>> accident done: {'kind': 'disk_to_floor_plus_1g', 'cmd': 'fallocate /var/lib/docker/chaos-fill leaving 3 GB free (floor 2 GB + 1 GB)', 'fired_at': '14:17:25', 'result': 'rc=0 filled 39025688576 bytes /dev/loop1 69G 62G 3.0G 96% /var/lib/docker '} +14:18:40 ==== ROUND 8 END: steady in 102.0s; readback=None; events=['2026-09-24T12:17:25Z app_oom (warning)', '2026-09-24T12:17:55Z app_oom (warning)', '2026-09-24T12:18:32Z app_stopped_unhealthy (warning)'] diff --git a/documentation/audits/night-2026-09-24/PROGRESS.md b/documentation/audits/night-2026-09-24/PROGRESS.md index 4fd2fe7b..4d378912 100644 --- a/documentation/audits/night-2026-09-24/PROGRESS.md +++ b/documentation/audits/night-2026-09-24/PROGRESS.md @@ -28,3 +28,6 @@ ROWS TO FILE: R-668 (Tier-2 target on a missing path, fixed); applied-meta after - 13:07 FOUND (Part C read of the chain): demo-hp's thin pool `local-lvm` 100 % FULL (out_of_data_space, error_if_no_space) since 10:35 CEST. Cause (agent journal, C-04): the SCHEDULED restore-test at 10:29 restored 9201's 22 GiB archive into the SAME pool as scratch guest 990000 with no free-space check; start failed; teardown failed („filesystem in use") → "left for Recover", and Recover runs only at agent start. The agent logged „a full pool corrupts every guest on it" every few seconds and did nothing else. 9201's controller: „no space left on device" from 10:38 CEST, its docker log stops 10:39. 9201 also carried a stale `snapshot-delete` lock; its whole-box backups failed 06:59–08:22 (CT is locked). Before tonight's run; not caused by it (9202 lives on nvme-scratch). - 13:09 INTERVENTION 1: `systemctl restart felhom-agent` on demo-hp so the agent's own Recover tears the scratch down (a direct `pct destroy` was refused by the session's permission check). Result (C-05): „recover: destroyed leaked restore-test scratch guest" vmid=990000; pool 100 % → 58.91 %, state rw; 9201's lock gone. A further read of the morning vzdump task logs was refused by the permission check — left for the operator. ROWS TO FILE (agent, P1): restore-test fills the production pool (no space check) and its leaked scratch waits for an agent restart; the pool-fill WARN has no action; 9201 stale snapshot-delete lock blocked whole-box backups all morning. +- 13:45 Part E round 1 (oom_app × power cut): OOM storm counted again after the boot, stopped +185 s; events app_oom_storm (error) + app_stopped_unhealthy (warning). PASS. +- 13:49 Part E round 2 (install × docker restart): the restart killed the controller mid-deploy; n8n came back NOT installed, no event, no page message; leftovers app.yaml/applied files in the stack dir. FINDING (row). n8n reinstalled through the product (211 s, leftovers did not block) so round 10 has its step. +- 14:04 Part E round 3 (cutoff file app × power cut at verifying): after the boot the update RESUMED, undo found the cut copy → HELD naming the second drive (whole) → whole restore 37 s → account + files read back. PASS. BUT the hold named the Tier-2 copy from 13:04, not a fresh one — the update's own backup did not refresh Tier 2 (to reproduce in round 11); the pre-cut controller log was lost with the container (runner now saves it at arm time). diff --git a/documentation/audits/night-2026-09-24/tools/chaos.py b/documentation/audits/night-2026-09-24/tools/chaos.py index 8ea6736e..cf3a9347 100644 --- a/documentation/audits/night-2026-09-24/tools/chaos.py +++ b/documentation/audits/night-2026-09-24/tools/chaos.py @@ -103,7 +103,7 @@ def readback(app, s): "files": nf.verify_files(w, SUB[app], A, {names[0]: S["files"][names[0]], names[2]: S["files"][names[2]]}, w.say)} if not A: return {"A": None, "note": "no seed recorded"} - w.wait_app(SUB[app], "/", tries=90, delay=4) + w.wait_app(SUB[app], "/", want=("200", "302", "303", "307", "401", "403"), tries=90, delay=4) return {"A": bool(FX[app].verify(w, SUB[app], A, w.say))} @@ -185,6 +185,11 @@ class Arm: self.note["accident"] = f"POST /api/backup/run -> {code} {str(d)[:160]} at {time.strftime('%H:%M:%S')}" w.say(" >>> " + self.note["accident"]) return + # R-320: the box's log off the machine BEFORE the accident — round 3's power cut replaced the controller + # container and took the pre-cut lines with it. Only from the main thread: walk.guest shares one temp file. + if threading.current_thread() is threading.main_thread(): + open(os.path.join(EVD, f"round-{self.n:02d}-controller-pre.log"), "w").write( + w.guest(f"docker logs --since {self.note['started']} felhom-controller 2>&1 | grep -vE 'auth: valid session|router.go:81|Status refresh' | tail -3000")) json.dump({"round": self.n, "kind": self.kind, "at": time.time(), "why": why}, open(os.path.join(EVD, f"arm-{self.n:02d}.json"), "w")) @@ -216,8 +221,14 @@ def wait_controller(cap=900): # ------------------------------------------------------------------------------------------ actions def a_unhealthy_install(app, note, arm, t0): """crash_loop / oom_app: install the drill app through the product; the box must stop it by itself.""" + for _ in range(12): # the drill template must be on the box first (attempt 0 of round 1: "not found") + w.sync_rescan() + if w.ctl("GET", f"/api/stacks/{app}/deploy-fields")[0] == "200": + break + time.sleep(5) vals = w.deploy_values(app, app) code, d = w.ctl("POST", f"/api/stacks/{app}/deploy", {"values": vals}) + w.say(f" deploy -> {code} {str(d)[:120]}") note["act"] = f"deploy -> {code}" threading.Timer(20, arm, args=("20 s after the install",)).start() return steady(app, t0, cap=1500, until=lambda st: st.get("hold_kind") == "unhealthy_stop") @@ -262,7 +273,7 @@ def a_install(app, note, arm, t0, s): return secs, st -def a_update(app, note, arm, t0, on_verify=None): +def a_update(app, note, arm, t0, on_verify=None, arm_at_starting=False): code, d = w.ctl("POST", f"/api/stacks/{app}/update") note["act"] = f"Update -> {code} {str(d)[:140]}" w.say(" " + note["act"]) @@ -281,7 +292,7 @@ def a_update(app, note, arm, t0, on_verify=None): if on_verify: on_verify() arm("at verifying") - if ph == "starting": + if ph == "starting" and arm_at_starting: arm("at starting") if st and not st.get("updating") and ph in ("done", "failed", "undone") and time.time() - t0 > 3: break @@ -352,7 +363,7 @@ def a_ladder_step(app, note, arm, t0, s): st = w.stack(app) note["steps_left_before"] = st.get("ladder_steps_left") note["pinned_before"] = (st.get("app_config") or {}).get("pinned_images") - r = a_update(app, note, arm, t0) + r = a_update(app, note, arm, t0, arm_at_starting=True) w.sync_rescan() st = w.stack(app) note["steps_left_after"] = st.get("ladder_steps_left") @@ -443,8 +454,29 @@ def run_round(n): w.say(f"==== ROUND {n} END: steady in {note['time_to_steady_s']}s; readback={note['readback']}; events={note['events']}") +def collect(n, t_iso, extra): + """Finish a round whose runner was stopped: the same five observations, no action.""" + s = load() + sched = {r["round"]: r for r in schedule()}[n] + app = TARGET[n] + w.login() + note = {"round": n, **sched, "app": app, "started": t_iso, "collected_by_hand": True, **extra} + note["after"] = household(app) + if not w.stack(app).get("deployed"): + note["after"]["leftovers"] = w.guest(f"docker ps -a --filter label=com.docker.compose.project={app} --format '{{{{.Names}}}} {{{{.Status}}}}'; docker volume ls -q | grep '^{app}_' || true; ls /opt/docker/stacks/{app}/ 2>/dev/null || true").strip() + note["readback"] = readback(app, s) + note["events"] = events_since(t_iso) + note["box_log"] = box_log(t_iso, app) + open(os.path.join(EVD, f"round-{n:02d}-controller.log"), "w").write( + w.guest(f"docker logs --since {t_iso} felhom-controller 2>&1 | grep -vE 'auth: valid session|router.go:81|Status refresh' | tail -3000")) + json.dump(note, open(os.path.join(EVD, f"round-{n:02d}.json"), "w"), indent=2, ensure_ascii=False, default=str) + w.say(f"==== ROUND {n} COLLECTED: after={json.dumps(note['after'], ensure_ascii=False)[:400]} events={note['events']}") + + if __name__ == "__main__": - if sys.argv[1] == "setup": + if sys.argv[1] == "collect": + collect(int(sys.argv[2]), sys.argv[3], json.loads(sys.argv[4]) if len(sys.argv) > 4 else {}) + elif sys.argv[1] == "setup": setup() elif sys.argv[1] == "round": run_round(int(sys.argv[2])) diff --git a/documentation/audits/night-2026-09-24/tools/reinstall_n8n.py b/documentation/audits/night-2026-09-24/tools/reinstall_n8n.py new file mode 100644 index 00000000..a16011b5 --- /dev/null +++ b/documentation/audits/night-2026-09-24/tools/reinstall_n8n.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 +"""After round 2 (the install lost to a docker restart): install n8n again through the product, with no accident, +so round 10 has its ladder step. Also shows whether the lost install's leftovers block a fresh one.""" +import json, sys, time +sys.path.insert(0, ".") +import walk as w +import chaos as c +s = c.load() +w.login() +comp = f"{w.DRILL}/templates/n8n/docker-compose.yml" +w.say("drill n8n image line: " + [l for l in open(comp).read().split("\n") if "image:" in l][0].strip()) +w.sync_rescan() +t0 = time.time() +ok = w.deploy("n8n", c.SUB["n8n"]) +st = w.stack("n8n") +w.say(f"deploy ok={ok} in {round(time.time()-t0)} s pinned={(st.get('app_config') or {}).get('pinned_images')}") +w.wait_app(c.SUB["n8n"], "/", tries=90, delay=4) +A = c.FX["n8n"].seed(w, c.SUB["n8n"], w.say) +s.setdefault("apps", {}).setdefault("n8n", {})["A"] = A +c.save(s) +head = s.get("heads", {}).get("n8n") +if head: + c.drill(lambda: open(comp, "w").write(head), "n8n back to the head (2 steps offered)") +w.sync_rescan(); time.sleep(3); w.sync_rescan() +st = w.stack("n8n") +w.say(f"steps_left={st.get('ladder_steps_left')} badge={w.badges('n8n')['en'][:1]}") +open("../E/round-02b-reinstall.log", "w").write("\n".join(w.LOG) + "\n") diff --git a/documentation/backlog/OPEN-ITEMS.md b/documentation/backlog/OPEN-ITEMS.md index 74b6fe8f..014de1d7 100644 --- a/documentation/backlog/OPEN-ITEMS.md +++ b/documentation/backlog/OPEN-ITEMS.md @@ -825,6 +825,7 @@ class (an image `VOLUME` at an unmounted path) is still live — `immich-server` | **R-678** | **[P3-LOW] After an update step ends `done`, the app's „steps left" and its badge stay STALE until the next scan.** MEASURED 2026-09-24 on 9202 (Part C, first caller run): wishlist read `ladder_steps_left` 1 after its only step, navidrome 2 after both of its steps — for ~50 s, through six presses. A person sees „Frissítés elérhető" for an app that just updated; an automatic caller re-presses. **Fix:** the update's finish refreshes the app's catalog/ladder fields (the same read the scan does). `audits/night-2026-09-24/C/30-night-run1.json` | **READY — P3; owner: CC (controller)** | | **R-679** | **[P2-MEDIUM] An Update pressed on an app that is already current runs the whole guarded update — backup, pull, restart — and reports `done`.** MEASURED 2026-09-24 on 9202: navidrome at the head was pressed four times by the stale-read caller (R-678); each press made a safety dump and restarted the app (8.5 s of downtime each) and changed nothing. There is no `current` refusal (`UpdatePreflight`, `update.go:366`; `UpdateOrderCurrent` falls through). Harmless by hand, costly for the automatic leg (`09` §6.4.2). **Fix:** the preflight refuses with reason `current` when the pin equals the catalog head and no newer tested digest exists. `audits/night-2026-09-24/C/30-night-run1.json` | **READY — P2; owner: CC (controller)** | | **R-680** | **[P2-MEDIUM] The box does not remember a failed update step — after an undo it offers the same step again.** MEASURED 2026-09-24 on 9202: vikunja's failing step was undone (104 s) and its badge went straight back to „Frissítés elérhető"; only the test caller's own memory stopped a re-press. Decision 15 („a failed step is never pressed again") therefore holds for a person only by their judgement and not at all for the automatic leg. **Fix (part 7 (b), `09` §6.4.2):** record the failed `to` per app; the leg skips it until the catalog's ladder for that app changes; the page says the step was tried and put back. `audits/night-2026-09-24/C/31-night.json` | **READY — P2; owner: CC (controller, with part 7)** | +| **R-681** | **[P2-MEDIUM] An install interrupted by a controller restart is lost SILENTLY — no event, no page sentence, and its half-written files stay.** MEASURED 2026-09-24 on 9202 (Part E round 2, v0.269.1): n8n's install pressed at 11:48:42Z ("Deploying stack n8n … checking 1 images"); `systemctl restart docker` 20 s later took the controller down with it. After the restart the box logged NOTHING about n8n, the app read `not_deployed`, and the household's page showed it as never installed — while `app.yaml` (with its generated `N8N_ENCRYPTION_KEY`), `applied-compose.yml` and `applied-meta/` stayed in the stack dir. A fresh install through the product afterwards worked (211 s) and was not blocked by the leftovers. Compare the update path, which journals and RESUMES after the same accident (round 3/4). **Fix direction:** journal the install like the update; on boot either resume it or say on the page (and in an event) that it was interrupted, and clean the half-written files. `audits/night-2026-09-24/E/round-02*` | **READY — P2; owner: CC (controller)** |