Files
felhom.eu/documentation/audits/release-2026-10-26/d47-setaside-rc7/9202-controller.log
T

1588 lines
207 KiB
Plaintext

2026/10/25 16:40:00 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:40:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:40:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping tandoor — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:40:00 healthprobe.go:105: [DEBUG] [stacks] RunHealthProbes: paperless-ngx has a health check but no container to probe — candidates: [paperless-webserver(stopped) paperless-postgres(starting) paperless-redis(starting)]
2026/10/25 16:40:00 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 1 skipped no container)
2026/10/25 16:40:00 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:40:00 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:40:01 manager.go:1719: [DEBUG] Command completed: docker compose up -d (took 11.5s)
2026/10/25 16:40:01 manager.go:1368: [INFO] [stacks] Stack paperless-ngx started successfully (took 11.5s)
2026/10/25 16:40:01 installed.go:409: [DEBUG] [stacks] installed-images paperless-ngx: unchanged (3 service(s)) — app.yaml not rewritten
2026/10/25 16:40:01 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:40:01 backup.go:1038: [INFO] [backup] Stopping privatebin for safe volume dump
2026/10/25 16:40:01 manager.go:1439: [DEBUG] [stacks] StopStack privatebin: current state=stopped deployed=true containers=0
2026/10/25 16:40:01 manager.go:1442: [INFO] [stacks] Stopping stack: privatebin
2026/10/25 16:40:01 manager.go:1688: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/10/25 16:40:01 manager.go:1697: [DEBUG] Running: docker compose down (in /opt/docker/stacks/privatebin)
2026/10/25 16:40:01 manager.go:1719: [DEBUG] Command completed: docker compose down (took 0.1s)
2026/10/25 16:40:01 manager.go:1451: [INFO] [stacks] Stack privatebin stopped successfully (took 0.1s)
2026/10/25 16:40:01 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:40:01 backup.go:910: [DEBUG] [backup] Dumping volume privatebin_privatebin_data for privatebin
2026/10/25 16:40:02 backup.go:935: [INFO] [backup] Volume dump: privatebin/privatebin_privatebin_data → 1.5 KB
2026/10/25 16:40:02 data_versions.go:131: [DEBUG] [backup] privatebin: stamped volume-dumps/privatebin_privatebin_data.tar (1536 B) with pins [privatebin/pdo:2.0.6@sha256:4c141b2326f8b353598ce9ce7507a9cfecf2dad5c60a39fea903d430e296d8f5]
2026/10/25 16:40:02 backup.go:1050: [INFO] [backup] privatebin NOT restarted after the volume dump: the household stopped it meanwhile
2026/10/25 16:40:02 backup.go:1038: [INFO] [backup] Stopping tandoor for safe volume dump
2026/10/25 16:40:02 manager.go:1439: [DEBUG] [stacks] StopStack tandoor: current state=running deployed=true containers=2
2026/10/25 16:40:02 manager.go:1442: [INFO] [stacks] Stopping stack: tandoor
2026/10/25 16:40:02 manager.go:1688: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DB_PASSWORD, DOMAIN, SECRET_KEY, SUBDOMAIN, IMPORT_PATH] (10 app + 0 system)
2026/10/25 16:40:02 manager.go:1697: [DEBUG] Running: docker compose down (in /opt/docker/stacks/tandoor)
2026/10/25 16:40:04 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/status
2026/10/25 16:40:04 router.go:78: [DEBUG] [api] GET /api/backup/status (path=/backup/status)
2026/10/25 16:40:04 manager.go:1688: [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/10/25 16:40:04 manager.go:1697: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/paperless-ngx)
2026/10/25 16:40:04 manager.go:1719: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s)
2026/10/25 16:40:04 manager.go:1813: [INFO] [stacks] Stack paperless-ngx post-start status:
2026/10/25 16:40:04 manager.go:1816: [INFO] [stacks] paperless-postgres postgres:18-alpine running Up 14 seconds (healthy)
2026/10/25 16:40:04 manager.go:1816: [INFO] [stacks] paperless-redis redis:7-alpine running Up 14 seconds (healthy)
2026/10/25 16:40:04 manager.go:1816: [INFO] [stacks] paperless-webserver ghcr.io/paperless-ngx/paperless-ngx:2.20.15 running Up 3 seconds (health: starting)
2026/10/25 16:40:05 manager.go:1719: [DEBUG] Command completed: docker compose down (took 3.7s)
2026/10/25 16:40:05 manager.go:1451: [INFO] [stacks] Stack tandoor stopped successfully (took 3.7s)
2026/10/25 16:40:05 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:40:05 backup.go:910: [DEBUG] [backup] Dumping volume tandoor_tandoor_media for tandoor
2026/10/25 16:40:05 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:40:06 backup.go:935: [INFO] [backup] Volume dump: tandoor/tandoor_tandoor_media → 1.5 KB
2026/10/25 16:40:06 data_versions.go:131: [DEBUG] [backup] tandoor: stamped volume-dumps/tandoor_tandoor_media.tar (1536 B) with pins [ghcr.io/tandoorrecipes/recipes:2.6.15@sha256:2e759dd1478a2ed119ee474e28522079fb1cfa50b3fd25cba89f6b9a67abad72 postgres:17-alpine@sha256:b0f9560a2de083e2cc7382e75f808c7381a32852a7ec49117deedb300e552b24]
2026/10/25 16:40:06 backup.go:910: [DEBUG] [backup] Dumping volume tandoor_tandoor_postgres_data for tandoor
2026/10/25 16:40:07 backup.go:935: [INFO] [backup] Volume dump: tandoor/tandoor_tandoor_postgres_data → 53.9 MB
2026/10/25 16:40:07 data_versions.go:131: [DEBUG] [backup] tandoor: stamped volume-dumps/tandoor_tandoor_postgres_data.tar (56563200 B) with pins [ghcr.io/tandoorrecipes/recipes:2.6.15@sha256:2e759dd1478a2ed119ee474e28522079fb1cfa50b3fd25cba89f6b9a67abad72 postgres:17-alpine@sha256:b0f9560a2de083e2cc7382e75f808c7381a32852a7ec49117deedb300e552b24]
2026/10/25 16:40:07 backup.go:910: [DEBUG] [backup] Dumping volume tandoor_tandoor_static for tandoor
2026/10/25 16:40:09 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/status
2026/10/25 16:40:09 router.go:78: [DEBUG] [api] GET /api/backup/status (path=/backup/status)
2026/10/25 16:40:10 backup.go:935: [INFO] [backup] Volume dump: tandoor/tandoor_tandoor_static → 90.0 MB
2026/10/25 16:40:10 data_versions.go:131: [DEBUG] [backup] tandoor: stamped volume-dumps/tandoor_tandoor_static.tar (94322176 B) with pins [ghcr.io/tandoorrecipes/recipes:2.6.15@sha256:2e759dd1478a2ed119ee474e28522079fb1cfa50b3fd25cba89f6b9a67abad72 postgres:17-alpine@sha256:b0f9560a2de083e2cc7382e75f808c7381a32852a7ec49117deedb300e552b24]
2026/10/25 16:40:10 backup.go:1054: [INFO] [backup] Restarting tandoor after volume dump
2026/10/25 16:40:10 manager.go:1350: [DEBUG] [stacks] StartStack tandoor: current state=stopped deployed=true
2026/10/25 16:40:10 manager.go:1353: [INFO] [stacks] Starting stack: tandoor
2026/10/25 16:40:10 manager.go:1360: [DEBUG] [stacks] StartStack tandoor: prepared 10 env vars for compose
2026/10/25 16:40:10 manager.go:1688: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DB_PASSWORD, DOMAIN, SECRET_KEY, SUBDOMAIN, IMPORT_PATH] (10 app + 0 system)
2026/10/25 16:40:10 manager.go:1697: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/tandoor)
2026/10/25 16:40:10 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:40:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:40:10 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (1 skipped not due, 0 skipped no container)
2026/10/25 16:40:10 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:40:10 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:40:14 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/status
2026/10/25 16:40:14 router.go:78: [DEBUG] [api] GET /api/backup/status (path=/backup/status)
2026/10/25 16:40:16 manager.go:1719: [DEBUG] Command completed: docker compose up -d (took 6.4s)
2026/10/25 16:40:16 manager.go:1368: [INFO] [stacks] Stack tandoor started successfully (took 6.4s)
2026/10/25 16:40:16 installed.go:409: [DEBUG] [stacks] installed-images tandoor: unchanged (2 service(s)) — app.yaml not rewritten
2026/10/25 16:40:16 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:40:16 backup.go:737: [INFO] [backup] App-data backup completed: 3 databases (52.3 MB total), 4 volume dump(s) (1m13.057s)
2026/10/25 16:40:16 recovery_unit.go:297: [INFO] [backup] Recovery unit captured for paperless-ngx → /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx/backups/primary/paperless-ngx (images=3, secrets-referenced=3, data_keys=0, portable-carried=2/2, withheld=1)
2026/10/25 16:40:16 recovery_unit.go:297: [INFO] [backup] Recovery unit captured for privatebin → /mnt/sys_drive/felhom-data/backups/primary/privatebin (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0)
2026/10/25 16:40:16 recovery_unit.go:297: [INFO] [backup] Recovery unit captured for tandoor → /mnt/sys_drive/felhom-data/backups/primary/tandoor (images=2, secrets-referenced=2, data_keys=0, portable-carried=2/2, withheld=0)
2026/10/25 16:40:16 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:40:16 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:40:17 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:40:17 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:40:19 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/status
2026/10/25 16:40:19 router.go:78: [DEBUG] [api] GET /api/backup/status (path=/backup/status)
2026/10/25 16:40:19 manager.go:1688: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DB_PASSWORD, DOMAIN, SECRET_KEY, SUBDOMAIN, IMPORT_PATH] (10 app + 0 system)
2026/10/25 16:40:19 manager.go:1697: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/tandoor)
2026/10/25 16:40:19 manager.go:1719: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s)
2026/10/25 16:40:19 manager.go:1813: [INFO] [stacks] Stack tandoor post-start status:
2026/10/25 16:40:19 manager.go:1816: [INFO] [stacks] tandoor ghcr.io/tandoorrecipes/recipes:2.6.15@sha256:2e759dd1478a2ed119ee474e28522079fb1cfa50b3fd25cba89f6b9a67abad72 running Up 3 seconds (health: starting)
2026/10/25 16:40:19 manager.go:1816: [INFO] [stacks] tandoor-postgres postgres:17-alpine@sha256:b0f9560a2de083e2cc7382e75f808c7381a32852a7ec49117deedb300e552b24 running Up 9 seconds (healthy)
2026/10/25 16:40:20 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/10/25 16:40:20 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714380KB) → used≈13228MB avail≈12670MB
2026/10/25 16:40:20 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714380 availKB=15025740 → total=25898MB avail=12670MB used=13228MB (51.1%)
2026/10/25 16:40:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=13.0GB avail=51.8GB (20.1%)
2026/10/25 16:40:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=219.7GB avail=670.4GB (24.7%)
2026/10/25 16:40:20 info.go:13: [DEBUG] [system] readLoadAvg: raw="3.35 2.79 2.06 13/1818 2508" → 1m=3.35 5m=2.79 15m=2.06
2026/10/25 16:40:20 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/10/25 16:40:20 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 63.1°C (hwmon2)
2026/10/25 16:40:20 info.go:13: [DEBUG] [system] GetInfo done in 66ms — mem=13228MB/25898MB (51.1%), rootDisk=13.0GB/68.4GB (20.1%), load=3.35/2.79/2.06, temp=63.1°C (hwmon2), cpu=29.9%
2026/10/25 16:40:20 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:40:20 scheduler.go:450: [INFO] [scheduler] Running job: stack-scan
2026/10/25 16:40:20 scheduler.go:85: [DEBUG] [scheduler] job stack-scan: execution starting
2026/10/25 16:40:20 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:40:20 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:40:20 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:40:20 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:40:20 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:40:20 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:40:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:40:20 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (1 skipped not due, 0 skipped no container)
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=false composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "dawarich" deployed=false composePath=/opt/docker/stacks/dawarich/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grimmory" deployed=false composePath=/opt/docker/stacks/grimmory/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grocy" deployed=false composePath=/opt/docker/stacks/grocy/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=true composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "karakeep" deployed=false composePath=/opt/docker/stacks/karakeep/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "lubelogger" deployed=false composePath=/opt/docker/stacks/lubelogger/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "metube" deployed=false composePath=/opt/docker/stacks/metube/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "nzbget" deployed=false composePath=/opt/docker/stacks/nzbget/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/10/25 16:40:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "prowlarr" deployed=false composePath=/opt/docker/stacks/prowlarr/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "qbittorrent" deployed=false composePath=/opt/docker/stacks/qbittorrent/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "radicale" deployed=false composePath=/opt/docker/stacks/radicale/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=false composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sabnzbd" deployed=false composePath=/opt/docker/stacks/sabnzbd/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=true composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "transmission" deployed=false composePath=/opt/docker/stacks/transmission/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/10/25 16:40:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/10/25 16:40:21 manager.go:1960: [DEBUG] [stacks] getCatalogTemplateSlugs: found 65 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/10/25 16:40:21 manager.go:757: [DEBUG] [stacks] ScanStacks: catalog has 65 template slugs for orphan detection
2026/10/25 16:40:21 manager.go:788: [INFO] [stacks] ScanStacks complete: 70 stacks found (4 deployed, 66 available)
2026/10/25 16:40:21 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:40:21 scheduler.go:467: [INFO] [scheduler] Job stack-scan completed (took 179ms)
2026/10/25 16:40:23 auth.go:144: [DEBUG] [web] auth: valid session for POST /api/stacks/tandoor/stop
2026/10/25 16:40:23 router.go:78: [DEBUG] [api] POST /api/stacks/tandoor/stop (path=/stacks/tandoor/stop)
2026/10/25 16:40:23 router.go:663: [INFO] [api] stop requested for stack: tandoor
2026/10/25 16:40:23 router.go:78: [DEBUG] [api] actionStack: action=stop name=tandoor
2026/10/25 16:40:23 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/tandoor — 4 env vars, 0 encrypted, 2 sensitive fields
2026/10/25 16:40:23 [INFO] [stacks] SaveAppConfig: saved config for tandoor
2026/10/25 16:40:23 desiredstate.go:81: [INFO] [stacks] desired state for tandoor recorded as "stopped" (was "running")
2026/10/25 16:40:23 manager.go:1439: [DEBUG] [stacks] StopStack tandoor: current state=starting deployed=true containers=2
2026/10/25 16:40:23 manager.go:1442: [INFO] [stacks] Stopping stack: tandoor
2026/10/25 16:40:23 manager.go:1688: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DB_PASSWORD, DOMAIN, SECRET_KEY, IMPORT_PATH] (10 app + 0 system)
2026/10/25 16:40:23 manager.go:1697: [DEBUG] Running: docker compose down (in /opt/docker/stacks/tandoor)
2026/10/25 16:40:24 manager.go:1719: [DEBUG] Command completed: docker compose down (took 0.9s)
2026/10/25 16:40:24 manager.go:1451: [INFO] [stacks] Stack tandoor stopped successfully (took 0.9s)
2026/10/25 16:40:24 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:40:24 lifecycle.go:24: [DEBUG] [integrations] OnStackStop: stack=tandoor integrationsFound=0
2026/10/25 16:40:29 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:40:29 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:40:29 auth.go:144: [DEBUG] [web] auth: valid session for POST /api/stacks/tandoor/remove
2026/10/25 16:40:29 router.go:78: [DEBUG] [api] POST /api/stacks/tandoor/remove (path=/stacks/tandoor/remove)
2026/10/25 16:40:29 router.go:1025: [INFO] [api] Remove requested for stack: tandoor
2026/10/25 16:40:29 router.go:78: [DEBUG] [api] removeStack: name=tandoor
2026/10/25 16:40:29 router.go:78: [DEBUG] [api] removeStack: name=tandoor removeHDDData=false removeBackups=false
2026/10/25 16:40:29 delete.go:626: [DEBUG] [stacks] RemoveStack called: name="tandoor", removeHDDData=false, backupPathsToRemove=0
2026/10/25 16:40:29 delete.go:640: [DEBUG] [stacks] RemoveStack tandoor: state=stopped, deployed=true, orphaned=false, deploying=false
2026/10/25 16:40:29 delete.go:697: [INFO] Removing deployed stack: tandoor (removeHDDData=false, hddDeclared=false, backupPaths=0)
2026/10/25 16:40:29 delete.go:710: [DEBUG] [stacks] RemoveStack tandoor: found 0 HDD mounts from compose file
2026/10/25 16:40:29 manager.go:1688: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DB_PASSWORD, DOMAIN, SECRET_KEY, SUBDOMAIN, IMPORT_PATH] (10 app + 0 system)
2026/10/25 16:40:29 manager.go:1697: [DEBUG] Running: docker compose down --volumes (in /opt/docker/stacks/tandoor)
2026/10/25 16:40:29 manager.go:1719: [DEBUG] Command completed: docker compose down --volumes (took 0.5s)
2026/10/25 16:40:29 delete.go:736: [DEBUG] [stacks] RemoveStack tandoor: compose down output:
2026/10/25 16:40:30 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:40:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:40:30 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (1 skipped not due, 0 skipped no container)
2026/10/25 16:40:30 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:40:30 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:40:35 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:40:40 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:40:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:40:40 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (1 skipped not due, 0 skipped no container)
2026/10/25 16:40:40 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:40:40 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:40:50 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:40:50 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:40:50 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:40:50 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:40:50 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:40:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:40:50 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (1 skipped not due, 0 skipped no container)
2026/10/25 16:40:50 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:40:50 healthprobe.go:187: [DEBUG] Health probe paperless-ngx: HTTP GET :8000/ → 302 (4ms)
2026/10/25 16:40:50 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:40:50 healthprobe.go:167: [INFO] Health probes: 1 ok (of 1 probed)
2026/10/25 16:40:56 delete.go:774: [INFO] [stacks] RemoveStack tandoor: removed volume(s) [tandoor_tandoor_media tandoor_tandoor_postgres_data tandoor_tandoor_static]
2026/10/25 16:40:56 delete.go:837: [DEBUG] [stacks] RemoveStack tandoor: processing 0 backup paths for removal (base=/mnt/sys_drive/felhom-data/backups)
2026/10/25 16:40:56 delete.go:862: [DEBUG] [stacks] RemoveStack tandoor: removing app.yaml at /opt/docker/stacks/tandoor/app.yaml
2026/10/25 16:40:56 delete.go:879: [INFO] Stack tandoor removed successfully (took 27.2s)
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=false composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "dawarich" deployed=false composePath=/opt/docker/stacks/dawarich/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grimmory" deployed=false composePath=/opt/docker/stacks/grimmory/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grocy" deployed=false composePath=/opt/docker/stacks/grocy/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=true composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "karakeep" deployed=false composePath=/opt/docker/stacks/karakeep/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "lubelogger" deployed=false composePath=/opt/docker/stacks/lubelogger/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "metube" deployed=false composePath=/opt/docker/stacks/metube/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "nzbget" deployed=false composePath=/opt/docker/stacks/nzbget/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "prowlarr" deployed=false composePath=/opt/docker/stacks/prowlarr/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "qbittorrent" deployed=false composePath=/opt/docker/stacks/qbittorrent/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "radicale" deployed=false composePath=/opt/docker/stacks/radicale/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=false composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sabnzbd" deployed=false composePath=/opt/docker/stacks/sabnzbd/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "transmission" deployed=false composePath=/opt/docker/stacks/transmission/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/10/25 16:40:56 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/10/25 16:40:56 manager.go:1960: [DEBUG] [stacks] getCatalogTemplateSlugs: found 65 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/10/25 16:40:56 manager.go:757: [DEBUG] [stacks] ScanStacks: catalog has 65 template slugs for orphan detection
2026/10/25 16:40:56 manager.go:788: [INFO] [stacks] ScanStacks complete: 70 stacks found (3 deployed, 67 available)
2026/10/25 16:40:56 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:40:56 notifier.go:1463: [WARN] notifier disabled (no hub configured): DROPPED event app_removed (severity info) — further app_removed events are logged at DEBUG only
2026/10/25 16:40:56 lifecycle.go:176: [DEBUG] [integrations] OnStackRemove: stack=tandoor integrationsFound=0
2026/10/25 16:40:58 image_retention.go:265: [INFO] [stacks] image retention (remove of tandoor): deleted [ghcr.io/tandoorrecipes/recipes:<none>] (21ca08430f20, 919MB) — no container, installed app or undo names it (decision 53)
2026/10/25 16:40:59 image_retention.go:265: [INFO] [stacks] image retention (remove of tandoor): deleted [postgres:<none>] (79bd7c99e923, 297MB) — no container, installed app or undo names it (decision 53)
2026/10/25 16:40:59 image_retention.go:238: [INFO] [stacks] image retention (remove of tandoor): pass over 45 image(s) of [ghcr.io/tandoorrecipes/recipes postgres] — 2 candidate(s), 2 deleted, the rest kept
2026/10/25 16:41:00 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:41:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:41:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:41:00 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:41:00 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:41:00 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:41:00 setup_gate.go:492: [INFO] [stacks] tandoor: removed a setup-gate file for an app whose gate is not closed
2026/10/25 16:41:01 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:41:01 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:41:01 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:41:01 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:41:01 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor/deploy-fields
2026/10/25 16:41:01 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor/deploy-fields (path=/stacks/tandoor/deploy-fields)
2026/10/25 16:41:01 auth.go:144: [DEBUG] [web] auth: valid session for POST /api/stacks/tandoor/deploy
2026/10/25 16:41:01 router.go:78: [DEBUG] [api] POST /api/stacks/tandoor/deploy (path=/stacks/tandoor/deploy)
2026/10/25 16:41:01 router.go:442: [INFO] [api] Deploy requested for stack: tandoor
2026/10/25 16:41:01 router.go:78: [DEBUG] [api] deployStack: name=tandoor contentLength=64
2026/10/25 16:41:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=11.5 GB avail=53.3GB (17.8%)
2026/10/25 16:41:01 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714380KB) → used≈13606MB avail≈12292MB
2026/10/25 16:41:01 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714380 availKB=14578080 → total=25898MB avail=12292MB used=13606MB (52.5%)
2026/10/25 16:41:01 deploy.go:1604: [INFO] [stacks] Memory check: total=25898MB, reserved=384MB, usable=25514MB, committed_used=2648MB, new_req=900MB, remaining=21966MB
2026/10/25 16:41:01 deploy.go:338: [DEBUG] Deploy tandoor: received 2 user values
2026/10/25 16:41:01 deploy.go:343: [DEBUG] DOMAIN = "enkisfelhom.hu"
2026/10/25 16:41:01 deploy.go:343: [DEBUG] SUBDOMAIN = "recipes"
2026/10/25 16:41:01 setup_gate.go:295: [INFO] [stacks] tandoor: setup gate CLOSED before the first start — only the household reaches [recipes.enkisfelhom.hu] until the first setup is done
2026/10/25 16:41:01 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/tandoor — 4 env vars, 2 encrypted, 2 sensitive fields
2026/10/25 16:41:01 [INFO] [stacks] SaveAppConfig: saved config for tandoor
2026/10/25 16:41:01 deploy.go:574: [INFO] [stacks] Deploying stack tandoor with 4 env vars: [DOMAIN, SUBDOMAIN, SECRET_KEY, DB_PASSWORD]
2026/10/25 16:41:01 manager.go:1852: [INFO] [stacks] Deploying stack tandoor — checking 2 images...
2026/10/25 16:41:01 manager.go:1856: [DEBUG] ghcr.io/tandoorrecipes/recipes:2.6.15@sha256:2e759dd1478a2ed119ee474e28522079fb1cfa50b3fd25cba89f6b9a67abad72 — not found locally, will pull
2026/10/25 16:41:02 manager.go:1856: [DEBUG] postgres:17-alpine@sha256:b0f9560a2de083e2cc7382e75f808c7381a32852a7ec49117deedb300e552b24 — not found locally, will pull
2026/10/25 16:41:02 notifier.go:1467: [DEBUG] notifier disabled: dropped event app_deploy_started (severity info)
2026/10/25 16:41:02 lifecycle.go:70: [DEBUG] [integrations] OnStackStart: stack=tandoor, waiting 5s for state refresh
2026/10/25 16:41:02 manager.go:1688: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DB_PASSWORD, DOMAIN, SUBDOMAIN, SECRET_KEY, DOMAIN, IMPORT_PATH] (10 app + 0 system)
2026/10/25 16:41:02 manager.go:1697: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/tandoor)
2026/10/25 16:41:05 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:41:07 lifecycle.go:86: [DEBUG] [integrations] OnStackStart: stack=tandoor integrationsFound=0
2026/10/25 16:41:07 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:41:07 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:41:10 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:41:10 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:41:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:41:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:41:10 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:41:10 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:41:12 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:41:12 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:41:17 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:41:17 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:41:20 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/10/25 16:41:20 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714380KB) → used≈13530MB avail≈12368MB
2026/10/25 16:41:20 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714380 availKB=14667220 → total=25898MB avail=12368MB used=13530MB (52.2%)
2026/10/25 16:41:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=12.2GB avail=52.7GB (18.8%)
2026/10/25 16:41:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=219.7GB avail=670.4GB (24.7%)
2026/10/25 16:41:20 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.79 2.72 2.09 12/1725 3111" → 1m=2.79 5m=2.72 15m=2.09
2026/10/25 16:41:20 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/10/25 16:41:20 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 56.0°C (hwmon2)
2026/10/25 16:41:20 info.go:13: [DEBUG] [system] GetInfo done in 56ms — mem=13530MB/25898MB (52.2%), rootDisk=12.2GB/68.4GB (18.8%), load=2.79/2.72/2.09, temp=56.0°C (hwmon2), cpu=33.8%
2026/10/25 16:41:20 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:41:20 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:41:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:41:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:41:20 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:41:20 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:41:20 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:41:20 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:41:20 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:41:20 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:41:22 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:41:22 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:41:27 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:41:27 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:41:30 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:41:30 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:41:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:41:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:41:30 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:41:30 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:41:32 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:41:32 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:41:35 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:41:37 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:41:37 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:41:40 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:41:40 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:41:40 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:41:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:41:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:41:40 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:41:42 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:41:42 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:41:47 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:41:47 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:41:50 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:41:50 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:41:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:41:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:41:50 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:41:50 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:41:50 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:41:50 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:41:50 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:41:50 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:41:52 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:41:52 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:41:57 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:41:57 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:42:00 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:42:00 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:42:00 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:42:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:42:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:42:00 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:42:02 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:42:02 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:42:05 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:42:07 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:42:07 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:42:10 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:42:10 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:42:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:42:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:42:10 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:42:10 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:42:12 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:42:12 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:42:17 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:42:17 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:42:20 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/10/25 16:42:20 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714380KB) → used≈13125MB avail≈12773MB
2026/10/25 16:42:20 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714380 availKB=15148204 → total=25898MB avail=12773MB used=13125MB (50.7%)
2026/10/25 16:42:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=12.8GB avail=52.0GB (19.8%)
2026/10/25 16:42:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=219.7GB avail=670.4GB (24.7%)
2026/10/25 16:42:20 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.93 2.74 2.13 6/1708 3266" → 1m=2.93 5m=2.74 15m=2.13
2026/10/25 16:42:20 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/10/25 16:42:20 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 49.9°C (hwmon2)
2026/10/25 16:42:20 info.go:13: [DEBUG] [system] GetInfo done in 92ms — mem=13125MB/25898MB (50.7%), rootDisk=12.8GB/68.4GB (19.8%), load=2.93/2.74/2.13, temp=49.9°C (hwmon2), cpu=16.7%
2026/10/25 16:42:20 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:42:20 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:42:20 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:42:20 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:42:20 scheduler.go:450: [INFO] [scheduler] Running job: stack-scan
2026/10/25 16:42:20 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:42:20 scheduler.go:85: [DEBUG] [scheduler] job stack-scan: execution starting
2026/10/25 16:42:20 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:42:20 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:42:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:42:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:42:20 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=false composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "dawarich" deployed=false composePath=/opt/docker/stacks/dawarich/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grimmory" deployed=false composePath=/opt/docker/stacks/grimmory/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grocy" deployed=false composePath=/opt/docker/stacks/grocy/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=true composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "karakeep" deployed=false composePath=/opt/docker/stacks/karakeep/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "lubelogger" deployed=false composePath=/opt/docker/stacks/lubelogger/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "metube" deployed=false composePath=/opt/docker/stacks/metube/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "nzbget" deployed=false composePath=/opt/docker/stacks/nzbget/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "prowlarr" deployed=false composePath=/opt/docker/stacks/prowlarr/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "qbittorrent" deployed=false composePath=/opt/docker/stacks/qbittorrent/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "radicale" deployed=false composePath=/opt/docker/stacks/radicale/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=false composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sabnzbd" deployed=false composePath=/opt/docker/stacks/sabnzbd/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "transmission" deployed=false composePath=/opt/docker/stacks/transmission/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/10/25 16:42:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/10/25 16:42:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/10/25 16:42:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/10/25 16:42:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/10/25 16:42:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/10/25 16:42:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/10/25 16:42:21 manager.go:1960: [DEBUG] [stacks] getCatalogTemplateSlugs: found 65 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/10/25 16:42:21 manager.go:757: [DEBUG] [stacks] ScanStacks: catalog has 65 template slugs for orphan detection
2026/10/25 16:42:21 manager.go:788: [INFO] [stacks] ScanStacks complete: 70 stacks found (4 deployed, 66 available)
2026/10/25 16:42:21 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:42:21 scheduler.go:467: [INFO] [scheduler] Job stack-scan completed (took 154ms)
2026/10/25 16:42:22 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:42:22 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:42:27 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:42:27 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:42:30 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:42:30 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:42:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:42:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:42:30 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:42:30 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:42:30 manager.go:921: [DEBUG] [stacks] restart-policy of down member "tandoor" = "unless-stopped"
2026/10/25 16:42:32 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:42:32 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:42:32 manager.go:1719: [DEBUG] Command completed: docker compose up -d (took 90.9s)
2026/10/25 16:42:32 deploy.go:664: [INFO] [stacks] Stack tandoor deployed successfully (took 90.9s)
2026/10/25 16:42:32 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/tandoor — 4 env vars, 2 encrypted, 2 sensitive fields
2026/10/25 16:42:32 [INFO] [stacks] SaveAppConfig: saved config for tandoor
2026/10/25 16:42:33 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/tandoor — 4 env vars, 0 encrypted, 2 sensitive fields
2026/10/25 16:42:33 [INFO] [stacks] SaveAppConfig: saved config for tandoor
2026/10/25 16:42:33 installed.go:420: [INFO] [stacks] installed-images tandoor: recorded 2 service(s) (tandoor=ghcr.io/tandoorrecipes/recipes:2.6.15 (sha256:2e759dd1478a…), tandoor-postgres=postgres:17-alpine (sha256:b0f9560a2de0…))
2026/10/25 16:42:33 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/tandoor — 4 env vars, 0 encrypted, 2 sensitive fields
2026/10/25 16:42:33 [INFO] [stacks] SaveAppConfig: saved config for tandoor
2026/10/25 16:42:33 pin.go:93: [INFO] [stacks] pin tandoor: tandoor=ghcr.io/tandoorrecipes/recipes:2.6.15, tandoor-postgres=postgres:17-alpine
2026/10/25 16:42:33 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:42:33 [DEBUG] [backup] tandoor: off-site default not applied: no off-site target
2026/10/25 16:42:33 notifier.go:1467: [DEBUG] notifier disabled: dropped event app_deployed (severity info)
2026/10/25 16:42:35 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:42:36 manager.go:1688: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, IMPORT_PATH] (10 app + 0 system)
2026/10/25 16:42:36 manager.go:1697: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/tandoor)
2026/10/25 16:42:36 manager.go:1719: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s)
2026/10/25 16:42:36 manager.go:1813: [INFO] [stacks] Stack tandoor post-start status:
2026/10/25 16:42:36 manager.go:1816: [INFO] [stacks] tandoor ghcr.io/tandoorrecipes/recipes:2.6.15@sha256:2e759dd1478a2ed119ee474e28522079fb1cfa50b3fd25cba89f6b9a67abad72 running Up 3 seconds (health: starting)
2026/10/25 16:42:36 manager.go:1816: [INFO] [stacks] tandoor-postgres postgres:17-alpine@sha256:b0f9560a2de083e2cc7382e75f808c7381a32852a7ec49117deedb300e552b24 running Up 9 seconds (healthy)
2026/10/25 16:42:37 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:42:37 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:42:40 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:42:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:42:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:42:40 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:42:40 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:42:40 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:42:42 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:42:42 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:42:47 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:42:47 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:42:50 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:42:50 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:42:50 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:42:50 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:42:50 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:42:50 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:42:50 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:42:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:42:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:42:50 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:42:52 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:42:52 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:42:57 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:42:57 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:43:00 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:43:00 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:43:00 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:43:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:43:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:43:00 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:43:02 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:43:02 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:43:05 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:43:07 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:43:07 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:43:10 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:43:10 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:43:10 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:43:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:43:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:43:10 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:43:12 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:43:12 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:43:18 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:43:18 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:43:20 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/10/25 16:43:20 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714380KB) → used≈13331MB avail≈12567MB
2026/10/25 16:43:20 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714380 availKB=14904040 → total=25898MB avail=12567MB used=13331MB (51.5%)
2026/10/25 16:43:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=12.9GB avail=51.9GB (19.9%)
2026/10/25 16:43:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=219.7GB avail=670.4GB (24.7%)
2026/10/25 16:43:20 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.70 2.74 2.17 4/1706 3553" → 1m=2.70 5m=2.74 15m=2.17
2026/10/25 16:43:20 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/10/25 16:43:20 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 58.5°C (hwmon2)
2026/10/25 16:43:20 info.go:13: [DEBUG] [system] GetInfo done in 78ms — mem=13331MB/25898MB (51.5%), rootDisk=12.9GB/68.4GB (19.9%), load=2.70/2.74/2.17, temp=58.5°C (hwmon2), cpu=36.8%
2026/10/25 16:43:20 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:43:20 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:43:20 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:43:20 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:43:20 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:43:20 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:43:20 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:43:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:43:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:43:20 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:43:23 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:43:23 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:43:28 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:43:28 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:43:30 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:43:30 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:43:30 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:43:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:43:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:43:30 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:43:33 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:43:33 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:43:35 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:43:38 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:43:38 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:43:40 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:43:40 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:43:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:43:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:43:40 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:43:40 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:43:43 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:43:43 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:43:50 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:43:50 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:43:50 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:43:50 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:43:50 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:43:50 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:43:50 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:43:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:43:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:43:50 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:43:51 healthprobe.go:187: [DEBUG] Health probe tandoor: HTTP GET :80/accounts/login/ → 400 (190ms)
2026/10/25 16:43:51 healthprobe.go:167: [INFO] Health probes: 1 ok (of 1 probed)
2026/10/25 16:44:00 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:44:00 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:44:00 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:44:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping tandoor — last check 10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:00 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (3 skipped not due, 0 skipped no container)
2026/10/25 16:44:05 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:44:10 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:44:10 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:44:10 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:44:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping tandoor — last check 20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:10 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (3 skipped not due, 0 skipped no container)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714380KB) → used≈13957MB avail≈11941MB
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714380 availKB=14161592 → total=25898MB avail=11941MB used=13957MB (53.9%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=13.0GB avail=51.8GB (20.0%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=219.7GB avail=670.4GB (24.7%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.50 2.79 2.23 9/1727 3714" → 1m=2.50 5m=2.79 15m=2.23
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 48.9°C (hwmon2)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetInfo done in 71ms — mem=13957MB/25898MB (53.9%), rootDisk=13.0GB/68.4GB (20.0%), load=2.50/2.79/2.23, temp=48.9°C (hwmon2), cpu=12.5%
2026/10/25 16:44:20 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:44:20 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:44:20 scheduler.go:450: [INFO] [scheduler] Running job: docker-socket-users
2026/10/25 16:44:20 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-users: execution starting
2026/10/25 16:44:20 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:44:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping tandoor — last check 30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:20 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (3 skipped not due, 0 skipped no container)
2026/10/25 16:44:20 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:44:20 scheduler.go:450: [INFO] [scheduler] Running job: stack-scan
2026/10/25 16:44:20 scheduler.go:85: [DEBUG] [scheduler] job stack-scan: execution starting
2026/10/25 16:44:20 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:44:20 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:44:20 scheduler.go:450: [INFO] [scheduler] Running job: backup-cache
2026/10/25 16:44:20 scheduler.go:85: [DEBUG] [scheduler] job backup-cache: execution starting
2026/10/25 16:44:20 scheduler.go:450: [INFO] [scheduler] Running job: fill-watch-interval
2026/10/25 16:44:20 scheduler.go:85: [DEBUG] [scheduler] job fill-watch-interval: execution starting
2026/10/25 16:44:20 scheduler.go:450: [INFO] [scheduler] Running job: offsite-credential-retry
2026/10/25 16:44:20 scheduler.go:85: [DEBUG] [scheduler] job offsite-credential-retry: execution starting
2026/10/25 16:44:20 scheduler.go:467: [INFO] [scheduler] Job offsite-credential-retry completed (took 0s)
2026/10/25 16:44:20 scheduler.go:450: [INFO] [scheduler] Running job: system-health
2026/10/25 16:44:20 scheduler.go:85: [DEBUG] [scheduler] job system-health: execution starting
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=13.0 GB avail=51.8GB (20.0%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/audiobookshelf" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/calibre-web" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetDiskUsage: statfs("/mnt/felhom-drives/scratch_hdd/userdata/grimmory") failed: no such file or directory
2026/10/25 16:44:20 fillwatch.go:233: [DEBUG] [fillwatch] /mnt/felhom-drives/scratch_hdd/userdata/grimmory: usage unreadable — skipped (an unreadable filesystem is not a full one)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/immich" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetDiskUsage: statfs("/mnt/felhom-drives/scratch_hdd/userdata/metube") failed: no such file or directory
2026/10/25 16:44:20 fillwatch.go:233: [DEBUG] [fillwatch] /mnt/felhom-drives/scratch_hdd/userdata/metube: usage unreadable — skipped (an unreadable filesystem is not a full one)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sizing-bench" total=31.2 GB used=2.7 GB avail=26.9GB (9.1%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=13.0 GB avail=51.8GB (20.0%)
2026/10/25 16:44:20 fillwatch.go:284: [INFO] [fillwatch] checked 11 filesystem(s), 2 unreadable/skipped, 0 notification(s); bands: all ok
2026/10/25 16:44:20 scheduler.go:467: [INFO] [scheduler] Job fill-watch-interval completed (took 2ms)
2026/10/25 16:44:20 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=false composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "dawarich" deployed=false composePath=/opt/docker/stacks/dawarich/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grimmory" deployed=false composePath=/opt/docker/stacks/grimmory/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grocy" deployed=false composePath=/opt/docker/stacks/grocy/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=true composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "karakeep" deployed=false composePath=/opt/docker/stacks/karakeep/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "lubelogger" deployed=false composePath=/opt/docker/stacks/lubelogger/docker-compose.yml
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714380KB) → used≈13976MB avail≈11922MB
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714380 availKB=14138580 → total=25898MB avail=11922MB used=13976MB (54.0%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=13.0GB avail=51.8GB (20.0%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=219.7GB avail=670.4GB (24.7%)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.50 2.79 2.23 5/1740 3788" → 1m=2.50 5m=2.79 15m=2.23
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 58.6°C (hwmon2)
2026/10/25 16:44:20 info.go:13: [DEBUG] [system] GetInfo done in 107ms — mem=13976MB/25898MB (54.0%), rootDisk=13.0GB/68.4GB (20.0%), load=2.50/2.79/2.23, temp=58.6°C (hwmon2), cpu=12.1%
2026/10/25 16:44:20 healthcheck.go:128: [DEBUG] [monitor] Raw values: disk=20.0%, hdd=24.7% (configured=true), mem=54.0% (13976MB/25898MB), cpu=12.1%, temp=58.6°C (hwmon2)
2026/10/25 16:44:20 healthcheck.go:409: [DEBUG] [monitor] SSD disk: OK (20%)
2026/10/25 16:44:20 healthcheck.go:445: [DEBUG] [monitor] Memory: OK (54%)
2026/10/25 16:44:20 healthcheck.go:464: [DEBUG] [monitor] CPU: OK (12%)
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "metube" deployed=false composePath=/opt/docker/stacks/metube/docker-compose.yml
2026/10/25 16:44:20 healthcheck.go:483: [DEBUG] [monitor] Temperature: OK (59°C)
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/10/25 16:44:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "nzbget" deployed=false composePath=/opt/docker/stacks/nzbget/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "prowlarr" deployed=false composePath=/opt/docker/stacks/prowlarr/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "qbittorrent" deployed=false composePath=/opt/docker/stacks/qbittorrent/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "radicale" deployed=false composePath=/opt/docker/stacks/radicale/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=false composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sabnzbd" deployed=false composePath=/opt/docker/stacks/sabnzbd/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=true composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "transmission" deployed=false composePath=/opt/docker/stacks/transmission/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/10/25 16:44:21 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/10/25 16:44:21 manager.go:1960: [DEBUG] [stacks] getCatalogTemplateSlugs: found 65 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/10/25 16:44:21 manager.go:757: [DEBUG] [stacks] ScanStacks: catalog has 65 template slugs for orphan detection
2026/10/25 16:44:21 manager.go:788: [INFO] [stacks] ScanStacks complete: 70 stacks found (4 deployed, 66 available)
2026/10/25 16:44:21 healthcheck.go:145: [DEBUG] [monitor] Docker daemon: OK
2026/10/25 16:44:21 healthcheck.go:153: [DEBUG] [monitor] Checking 1 protected containers: [traefik]
2026/10/25 16:44:21 scheduler.go:467: [INFO] [scheduler] Job docker-socket-users completed (took 189ms)
2026/10/25 16:44:21 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:44:21 scheduler.go:467: [INFO] [scheduler] Job stack-scan completed (took 194ms)
2026/10/25 16:44:21 backup.go:540: [DEBUG] groupStacksByDrive: /mnt/sys_drive → [privatebin, tandoor]
2026/10/25 16:44:21 backup.go:540: [DEBUG] groupStacksByDrive: /mnt/sizing-bench → [immich]
2026/10/25 16:44:21 backup.go:540: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx → [paperless-ngx]
2026/10/25 16:44:21 backup.go:1246: [INFO] [backup] Found 4 DB dump files across drives
2026/10/25 16:44:21 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers
2026/10/25 16:44:21 healthcheck.go:161: [DEBUG] [monitor] All protected containers running
2026/10/25 16:44:21 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:21 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:21 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:21 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:21 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:21 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/audiobookshelf" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:21 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/immich" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:21 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/calibre-web" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:21 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sizing-bench" total=31.2 GB used=2.7 GB avail=26.9GB (9.1%)
2026/10/25 16:44:21 healthcheck.go:176: [INFO] [monitor] Health check: status=warn
2026/10/25 16:44:21 healthcheck.go:180: [DEBUG] [monitor] Final status: warn (issues=0, warnings=10, info=5)
2026/10/25 16:44:21 notifier.go:1467: [DEBUG] notifier disabled: dropped event health_change (severity warning)
2026/10/25 16:44:21 scheduler.go:467: [INFO] [scheduler] Job system-health completed (took 205ms)
2026/10/25 16:44:21 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 24af7267c1a4 tandoor tandoor ghcr.io/tandoorrecipes/recipes:2.6.15
979b7ec19f49 tandoor-postgres tandoor postgres:17-alpine
74f0a38fc983 paperless-webserver paperless-ngx ghcr.io/paperless-ngx/paperless-ngx:2.20.15
cb44703bbadd paperless-postgres paperless-ngx postgres:18-alpine
cd225421c992 paperless-redis paperless-ngx redis:7-alpine
f062a2761fab immich-server immich ghcr.io/immich-app/immich-server:v3.2.4
6041eb882834 immich-postgres immich ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgve...
2026/10/25 16:44:21 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container tandoor (image=ghcr.io/tandoorrecipes/recipes:2.6.15, not a database)
2026/10/25 16:44:21 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: tandoor-postgres (id=979b7ec19f49)
2026/10/25 16:44:21 dbdump.go:198: [DEBUG] DiscoverDatabases: tandoor-postgres → stack=tandoor, dbUser=tandoor, dbName=tandoor
2026/10/25 16:44:21 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database)
2026/10/25 16:44:21 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=cb44703bbadd)
2026/10/25 16:44:21 dbdump.go:915: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless")
2026/10/25 16:44:21 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless
2026/10/25 16:44:21 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database)
2026/10/25 16:44:21 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container immich-server (image=ghcr.io/immich-app/immich-server:v3.2.4, not a database)
2026/10/25 16:44:21 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: immich-postgres (id=6041eb882834)
2026/10/25 16:44:21 dbdump.go:198: [DEBUG] DiscoverDatabases: immich-postgres → stack=immich, dbUser=immich, dbName=immich
2026/10/25 16:44:21 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container immich-machine-learning (image=ghcr.io/immich-app/immich-machine-learning:v3.2.4, not a database)
2026/10/25 16:44:21 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container immich-redis (image=redis:7-alpine, not a database)
2026/10/25 16:44:21 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.343.0-rc.7, not a database)
2026/10/25 16:44:21 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.5.6-stable, not a database)
2026/10/25 16:44:21 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.7.13, not a database)
2026/10/25 16:44:21 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 9 non-DB container(s)
2026/10/25 16:44:21 dbdump.go:208: [INFO] [backup] Discovered 3 databases
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/immich/docker-compose.yml
2026/10/25 16:44:21 infra.go:97: [INFO] [infra] cloudflared skipped — no cf_tunnel_token configured (LAN-only node)
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 2 HDD mounts for /opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:44:21 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:44:21 [INFO] [backup] Discovered app data: 4 apps
2026/10/25 16:44:21 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sizing-bench" total=31.2 GB used=2.7 GB avail=26.9GB (9.1%)
2026/10/25 16:44:21 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=219.7 GB avail=670.4GB (24.7%)
2026/10/25 16:44:21 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=13.0 GB avail=51.8GB (20.0%)
2026/10/25 16:44:21 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=13.0 GB avail=51.8GB (20.0%)
2026/10/25 16:44:21 kept_copies.go:64: [INFO] [settings] kept copy recorded: kind=unit source="tandoor" reason=earlier_install path=/mnt/sys_drive/felhom-data/backups/set-aside/tandoor/20261025T164421Z
2026/10/25 16:44:21 settings.go:970: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (27730 bytes)
2026/10/25 16:44:21 settings.go:973: [INFO] [settings] Settings saved
2026/10/25 16:44:21 tier2_kept.go:42: [INFO] [backup] copy KEPT (earlier_install): unit "tandoor" at /mnt/sys_drive/felhom-data/backups/set-aside/tandoor/20261025T164421Z
2026/10/25 16:44:21 unit_owner.go:182: [INFO] [backup] tandoor: the recovery unit of an earlier install (c3b2e33d5bc82152; the install ids differ) is SET ASIDE whole → /mnt/sys_drive/felhom-data/backups/set-aside/tandoor/20261025T164421Z; this install (8c1656d41509efbc) gets its own unit from its first backup (D47)
2026/10/25 16:44:21 notifier.go:1463: [WARN] notifier disabled (no hub configured): DROPPED event backup_run_failures (severity error) — further backup_run_failures events are logged at DEBUG only
2026/10/25 16:44:21 recovery_unit.go:297: [INFO] [backup] Recovery unit captured for tandoor → /mnt/sys_drive/felhom-data/backups/primary/tandoor (images=2, secrets-referenced=2, data_keys=0, portable-carried=2/2, withheld=0)
2026/10/25 16:44:21 backup.go:1317: [INFO] [backup] Backup status cache refreshed
2026/10/25 16:44:21 scheduler.go:467: [INFO] [scheduler] Job backup-cache completed (took 515ms)
2026/10/25 16:44:30 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:44:30 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:44:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping tandoor — last check 40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:30 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (3 skipped not due, 0 skipped no container)
2026/10/25 16:44:30 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:44:33 auth.go:144: [DEBUG] [web] auth: valid session for GET /backups/restore
2026/10/25 16:44:33 server.go:644: [DEBUG] [web] ServeHTTP: GET /backups/restore from 172.18.0.4:53858
2026/10/25 16:44:33 auth.go:144: [DEBUG] [web] auth: valid session for POST /backup/kept/restore
2026/10/25 16:44:33 server.go:644: [DEBUG] [web] ServeHTTP: POST /backup/kept/restore from 172.18.0.4:53858
2026/10/25 16:44:33 kept_copies.go:108: [WARN] [web] Restore of tandoor from a set-aside unit requested (async): /mnt/sys_drive/felhom-data/backups/set-aside/tandoor/20261025T164421Z from 172.18.0.4:53858
2026/10/25 16:44:33 unit_owner.go:324: [INFO] [backup] restore tandoor from the set-aside unit /mnt/sys_drive/felhom-data/backups/set-aside/tandoor/20261025T164421Z (an earlier install, D47)
2026/10/25 16:44:33 restore_dbcreds.go:114: [INFO] [backup] Restore tandoor: database password(s) [DB_PASSWORD] come from the backup, [] stay as installed (older than the data) — values not logged (R-1106)
2026/10/25 16:44:33 restore_unit.go:410: [INFO] [backup] Restoring tandoor from recovery unit /mnt/sys_drive/felhom-data/backups/set-aside/tandoor/20261025T164421Z: images=2, secrets recovered=2/2, data_keys=0
2026/10/25 16:44:34 manager.go:1439: [DEBUG] [stacks] StopStack tandoor: current state=running deployed=true containers=2
2026/10/25 16:44:34 manager.go:1442: [INFO] [stacks] Stopping stack: tandoor
2026/10/25 16:44:34 manager.go:1688: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SECRET_KEY, SUBDOMAIN, DB_PASSWORD, IMPORT_PATH] (10 app + 0 system)
2026/10/25 16:44:34 manager.go:1697: [DEBUG] Running: docker compose down (in /opt/docker/stacks/tandoor)
2026/10/25 16:44:35 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:44:37 manager.go:1719: [DEBUG] Command completed: docker compose down (took 2.7s)
2026/10/25 16:44:37 manager.go:1451: [INFO] [stacks] Stack tandoor stopped successfully (took 2.7s)
2026/10/25 16:44:37 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:44:38 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:44:38 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:44:40 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:44:40 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:44:40 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:44:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:40 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:44:41 offbox_restore_undo.go:169: [INFO] [offbox] tandoor: the live volumes are copied before the restore (3 copied, 0 new from the snapshot) in 4.295s — /mnt/sys_drive/felhom-data/backups/restore-undo/tandoor/20261025T164437Z (R-893)
2026/10/25 16:44:41 restore_crash_putback.go:89: [INFO] [backup] tandoor: the restore copy is recorded — a power cut from here on puts the app back on start (R-1195)
2026/10/25 16:44:41 restore.go:225: [INFO] [backup] Restoring Docker volume tandoor_tandoor_media for tandoor
2026/10/25 16:44:42 restore.go:263: [DEBUG] [backup] Volume tandoor_tandoor_media restored successfully
2026/10/25 16:44:42 restore.go:225: [INFO] [backup] Restoring Docker volume tandoor_tandoor_postgres_data for tandoor
2026/10/25 16:44:43 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:44:43 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:44:44 restore.go:263: [DEBUG] [backup] Volume tandoor_tandoor_postgres_data restored successfully
2026/10/25 16:44:44 restore.go:225: [INFO] [backup] Restoring Docker volume tandoor_tandoor_static for tandoor
2026/10/25 16:44:47 restore.go:263: [DEBUG] [backup] Volume tandoor_tandoor_static restored successfully
2026/10/25 16:44:47 restore.go:268: [INFO] [backup] Restored 3 Docker volume(s) for tandoor
2026/10/25 16:44:47 deploy.go:866: [INFO] [stacks] tandoor: the restored data belongs to install c3b2e33d5bc82152 (was 8c1656d41509efbc) — its backups follow it (D47)
2026/10/25 16:44:47 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/tandoor — 4 env vars, 2 encrypted, 2 sensitive fields
2026/10/25 16:44:47 [INFO] [stacks] SaveAppConfig: saved config for tandoor
2026/10/25 16:44:47 deploy.go:911: [INFO] [stacks] Redeploying tandoor from recovery unit with 4 env vars
2026/10/25 16:44:47 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/tandoor — 4 env vars, 0 encrypted, 2 sensitive fields
2026/10/25 16:44:47 [INFO] [stacks] SaveAppConfig: saved config for tandoor
2026/10/25 16:44:47 pin.go:93: [INFO] [stacks] pin tandoor: tandoor=ghcr.io/tandoorrecipes/recipes:2.6.15, tandoor-postgres=postgres:17-alpine
2026/10/25 16:44:47 manager.go:1406: [INFO] [stacks] Starting stack tandoor services only: [tandoor-postgres]
2026/10/25 16:44:47 manager.go:1688: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SECRET_KEY, SUBDOMAIN, DB_PASSWORD, IMPORT_PATH] (10 app + 0 system)
2026/10/25 16:44:47 manager.go:1697: [DEBUG] Running: docker compose up -d tandoor-postgres (in /opt/docker/stacks/tandoor)
2026/10/25 16:44:47 manager.go:1719: [DEBUG] Command completed: docker compose up -d tandoor-postgres (took 0.5s)
2026/10/25 16:44:47 manager.go:1417: [INFO] [stacks] Stack tandoor services [tandoor-postgres] started (took 0.5s)
2026/10/25 16:44:47 manager.go:839: [INFO] [stacks] Status refresh: 10 containers across 70 stacks
2026/10/25 16:44:47 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers
2026/10/25 16:44:47 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 7e6376839afe tandoor-postgres tandoor postgres:17-alpine
74f0a38fc983 paperless-webserver paperless-ngx ghcr.io/paperless-ngx/paperless-ngx:2.20.15
cb44703bbadd paperless-postgres paperless-ngx postgres:18-alpine
cd225421c992 paperless-redis paperless-ngx redis:7-alpine
f062a2761fab immich-server immich ghcr.io/immich-app/immich-server:v3.2.4
6041eb882834 immich-postgres immich ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0
ac5b8fbc0332 immich-machine-learning immich ghcr.io/immi...
2026/10/25 16:44:47 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: tandoor-postgres (id=7e6376839afe)
2026/10/25 16:44:48 dbdump.go:198: [DEBUG] DiscoverDatabases: tandoor-postgres → stack=tandoor, dbUser=tandoor, dbName=tandoor
2026/10/25 16:44:48 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database)
2026/10/25 16:44:48 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=cb44703bbadd)
2026/10/25 16:44:48 dbdump.go:915: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless")
2026/10/25 16:44:48 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless
2026/10/25 16:44:48 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database)
2026/10/25 16:44:48 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container immich-server (image=ghcr.io/immich-app/immich-server:v3.2.4, not a database)
2026/10/25 16:44:48 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: immich-postgres (id=6041eb882834)
2026/10/25 16:44:48 dbdump.go:198: [DEBUG] DiscoverDatabases: immich-postgres → stack=immich, dbUser=immich, dbName=immich
2026/10/25 16:44:48 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container immich-machine-learning (image=ghcr.io/immich-app/immich-machine-learning:v3.2.4, not a database)
2026/10/25 16:44:48 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container immich-redis (image=redis:7-alpine, not a database)
2026/10/25 16:44:48 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.343.0-rc.7, not a database)
2026/10/25 16:44:48 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.5.6-stable, not a database)
2026/10/25 16:44:48 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.7.13, not a database)
2026/10/25 16:44:48 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 8 non-DB container(s)
2026/10/25 16:44:48 dbdump.go:208: [INFO] [backup] Discovered 3 databases
2026/10/25 16:44:48 restore_db.go:87: [INFO] [backup] Restore tandoor: replaying DB dump into tandoor-postgres (postgres)
2026/10/25 16:44:48 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:44:48 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:44:50 dbdump.go:800: [DEBUG] [backup] ImportDump: importing /mnt/sys_drive/felhom-data/backups/set-aside/tandoor/20261025T164421Z/db-dumps/tandoor-postgres.sql into tandoor-postgres (postgres)
2026/10/25 16:44:50 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:44:50 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:44:50 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:44:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 5m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:44:50 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:44:50 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:44:50 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:44:50 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:44:50 manager.go:839: [INFO] [stacks] Status refresh: 10 containers across 70 stacks
2026/10/25 16:44:52 dbdump.go:820: [INFO] [backup] Imported DB dump tandoor-postgres.sql into tandoor-postgres (postgres)
2026/10/25 16:44:52 restore_db.go:97: [INFO] [backup] Restore tandoor: replayed 1 DB dump(s)
2026/10/25 16:44:52 manager.go:1350: [DEBUG] [stacks] StartStack tandoor: current state=starting deployed=true
2026/10/25 16:44:52 manager.go:1353: [INFO] [stacks] Starting stack: tandoor
2026/10/25 16:44:52 manager.go:1360: [DEBUG] [stacks] StartStack tandoor: prepared 10 env vars for compose
2026/10/25 16:44:52 manager.go:1688: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DB_PASSWORD, DOMAIN, SECRET_KEY, SUBDOMAIN, IMPORT_PATH] (10 app + 0 system)
2026/10/25 16:44:52 manager.go:1697: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/tandoor)
2026/10/25 16:44:53 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:44:53 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:44:53 manager.go:1719: [DEBUG] Command completed: docker compose up -d (took 1.1s)
2026/10/25 16:44:53 manager.go:1368: [INFO] [stacks] Stack tandoor started successfully (took 1.1s)
2026/10/25 16:44:53 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/tandoor — 4 env vars, 0 encrypted, 2 sensitive fields
2026/10/25 16:44:53 [INFO] [stacks] SaveAppConfig: saved config for tandoor
2026/10/25 16:44:53 installed.go:420: [INFO] [stacks] installed-images tandoor: recorded 2 service(s) (tandoor=ghcr.io/tandoorrecipes/recipes:2.6.15 (sha256:2e759dd1478a…), tandoor-postgres=postgres:17-alpine (sha256:b0f9560a2de0…))
2026/10/25 16:44:53 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:44:56 manager.go:1688: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DB_PASSWORD, DOMAIN, SECRET_KEY, SUBDOMAIN, IMPORT_PATH] (10 app + 0 system)
2026/10/25 16:44:56 manager.go:1697: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/tandoor)
2026/10/25 16:44:56 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:44:56 restore.go:308: [DEBUG] [backup] Post-restore health check: tandoor not yet running, waiting...
2026/10/25 16:44:56 manager.go:1719: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s)
2026/10/25 16:44:56 manager.go:1813: [INFO] [stacks] Stack tandoor post-start status:
2026/10/25 16:44:56 manager.go:1816: [INFO] [stacks] tandoor ghcr.io/tandoorrecipes/recipes:2.6.15@sha256:2e759dd1478a2ed119ee474e28522079fb1cfa50b3fd25cba89f6b9a67abad72 running Up 3 seconds (health: starting)
2026/10/25 16:44:56 manager.go:1816: [INFO] [stacks] tandoor-postgres postgres:17-alpine@sha256:b0f9560a2de083e2cc7382e75f808c7381a32852a7ec49117deedb300e552b24 running Up 9 seconds (healthy)
2026/10/25 16:44:58 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:44:58 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:45:00 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:45:00 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:45:00 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:45:00 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (1 skipped not due, 0 skipped no container)
2026/10/25 16:45:00 healthprobe.go:187: [DEBUG] Health probe immich: API GET :2283/api/server/ping → 200 (3ms)
2026/10/25 16:45:00 healthprobe.go:167: [INFO] Health probes: 1 ok (of 1 probed)
2026/10/25 16:45:01 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:01 restore.go:308: [DEBUG] [backup] Post-restore health check: tandoor not yet running, waiting...
2026/10/25 16:45:03 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:45:03 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:45:05 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:45:07 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:07 restore.go:308: [DEBUG] [backup] Post-restore health check: tandoor not yet running, waiting...
2026/10/25 16:45:08 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:45:08 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:45:10 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:45:10 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:45:10 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:45:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:45:10 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:45:12 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:12 restore.go:308: [DEBUG] [backup] Post-restore health check: tandoor not yet running, waiting...
2026/10/25 16:45:13 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:45:13 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:45:17 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:17 restore.go:303: [DEBUG] [backup] Post-restore health check: tandoor is running
2026/10/25 16:45:17 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:18 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:45:18 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:45:20 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/10/25 16:45:20 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714380KB) → used≈13971MB avail≈11927MB
2026/10/25 16:45:20 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714380 availKB=14145112 → total=25898MB avail=11927MB used=13971MB (53.9%)
2026/10/25 16:45:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=13.1GB avail=51.7GB (20.3%)
2026/10/25 16:45:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=219.7GB avail=670.4GB (24.7%)
2026/10/25 16:45:20 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.50 2.76 2.26 7/1719 4747" → 1m=2.50 5m=2.76 15m=2.26
2026/10/25 16:45:20 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/10/25 16:45:20 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 57.8°C (hwmon2)
2026/10/25 16:45:20 info.go:13: [DEBUG] [system] GetInfo done in 62ms — mem=13971MB/25898MB (53.9%), rootDisk=13.1GB/68.4GB (20.3%), load=2.50/2.76/2.26, temp=57.8°C (hwmon2), cpu=51.0%
2026/10/25 16:45:20 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:45:20 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:45:20 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:45:20 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:45:20 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:45:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:45:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:45:20 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:45:20 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:45:20 healthprobe.go:187: [DEBUG] Health probe tandoor: HTTP GET :80/accounts/login/ → 400 (9ms)
2026/10/25 16:45:20 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:20 healthprobe.go:167: [INFO] Health probes: 1 ok (of 1 probed)
2026/10/25 16:45:21 main.go:2394: [INFO] [deadapp] check alive: 20 scans since boot, 4 deployed app(s) evaluated, 0 currently down
2026/10/25 16:45:23 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:45:23 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:45:27 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:28 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:45:28 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:45:30 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:45:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:45:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping tandoor — last check 10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:45:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:45:30 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (3 skipped not due, 0 skipped no container)
2026/10/25 16:45:30 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:45:30 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:33 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:45:33 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:45:35 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:45:37 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:38 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:45:38 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:45:40 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:45:40 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:45:40 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:45:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping tandoor — last check 20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:45:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:45:40 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (3 skipped not due, 0 skipped no container)
2026/10/25 16:45:43 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:45:43 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:45:47 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:48 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:45:48 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:45:50 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:45:50 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:45:50 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:45:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:45:50 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:45:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping tandoor — last check 30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:45:50 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:45:50 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:45:50 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:45:50 healthprobe.go:187: [DEBUG] Health probe paperless-ngx: HTTP GET :8000/ → 302 (4ms)
2026/10/25 16:45:50 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:50 healthprobe.go:167: [INFO] Health probes: 1 ok (of 1 probed)
2026/10/25 16:45:53 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:45:53 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:45:57 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:45:58 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:45:58 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:46:00 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:46:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping tandoor — last check 40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:00 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (3 skipped not due, 0 skipped no container)
2026/10/25 16:46:00 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:46:00 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:46:03 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:46:03 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:46:05 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:46:07 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:46:07 restore_unit.go:591: [INFO] [backup] Restore-from-unit completed: tandoor — 3 volume(s) of 3 listed, 1 database(s) of 1 listed
2026/10/25 16:46:07 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:46:08 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/backup/restore-status
2026/10/25 16:46:08 router.go:78: [DEBUG] [api] GET /api/backup/restore-status (path=/backup/restore-status)
2026/10/25 16:46:10 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:46:10 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:46:10 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:46:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping tandoor — last check 50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:10 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (3 skipped not due, 0 skipped no container)
2026/10/25 16:46:18 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:46:20 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/10/25 16:46:20 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714380KB) → used≈13950MB avail≈11948MB
2026/10/25 16:46:20 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714380 availKB=14170100 → total=25898MB avail=11948MB used=13950MB (53.9%)
2026/10/25 16:46:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=13.1GB avail=51.7GB (20.3%)
2026/10/25 16:46:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=219.7GB avail=670.4GB (24.7%)
2026/10/25 16:46:20 info.go:13: [DEBUG] [system] readLoadAvg: raw="1.90 2.49 2.20 7/1717 5149" → 1m=1.90 5m=2.49 15m=2.20
2026/10/25 16:46:20 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/10/25 16:46:20 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 59.9°C (hwmon2)
2026/10/25 16:46:20 info.go:13: [DEBUG] [system] GetInfo done in 56ms — mem=13950MB/25898MB (53.9%), rootDisk=13.1GB/68.4GB (20.3%), load=1.90/2.49/2.20, temp=59.9°C (hwmon2), cpu=19.1%
2026/10/25 16:46:20 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:46:20 scheduler.go:450: [INFO] [scheduler] Running job: stack-scan
2026/10/25 16:46:20 scheduler.go:85: [DEBUG] [scheduler] job stack-scan: execution starting
2026/10/25 16:46:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:20 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:46:20 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:46:20 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:46:20 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:46:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping tandoor — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:20 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (3 skipped not due, 0 skipped no container)
2026/10/25 16:46:20 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=false composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "dawarich" deployed=false composePath=/opt/docker/stacks/dawarich/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grimmory" deployed=false composePath=/opt/docker/stacks/grimmory/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grocy" deployed=false composePath=/opt/docker/stacks/grocy/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=true composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "karakeep" deployed=false composePath=/opt/docker/stacks/karakeep/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "lubelogger" deployed=false composePath=/opt/docker/stacks/lubelogger/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "metube" deployed=false composePath=/opt/docker/stacks/metube/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "nzbget" deployed=false composePath=/opt/docker/stacks/nzbget/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "prowlarr" deployed=false composePath=/opt/docker/stacks/prowlarr/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "qbittorrent" deployed=false composePath=/opt/docker/stacks/qbittorrent/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "radicale" deployed=false composePath=/opt/docker/stacks/radicale/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=false composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sabnzbd" deployed=false composePath=/opt/docker/stacks/sabnzbd/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=true composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "transmission" deployed=false composePath=/opt/docker/stacks/transmission/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/10/25 16:46:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/10/25 16:46:20 manager.go:1960: [DEBUG] [stacks] getCatalogTemplateSlugs: found 65 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/10/25 16:46:20 manager.go:757: [DEBUG] [stacks] ScanStacks: catalog has 65 template slugs for orphan detection
2026/10/25 16:46:20 manager.go:788: [INFO] [stacks] ScanStacks complete: 70 stacks found (4 deployed, 66 available)
2026/10/25 16:46:21 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:46:21 scheduler.go:467: [INFO] [scheduler] Job stack-scan completed (took 119ms)
2026/10/25 16:46:21 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:46:28 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:46:28 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:46:28 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:46:30 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:46:30 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:46:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping tandoor — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:30 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (3 skipped not due, 0 skipped no container)
2026/10/25 16:46:30 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:46:35 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:46:38 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:46:40 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:46:40 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:46:40 manager.go:839: [INFO] [stacks] Status refresh: 11 containers across 70 stacks
2026/10/25 16:46:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping tandoor — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:40 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (3 skipped not due, 0 skipped no container)
2026/10/25 16:46:44 auth.go:144: [DEBUG] [web] auth: valid session for POST /api/stacks/tandoor/stop
2026/10/25 16:46:44 router.go:78: [DEBUG] [api] POST /api/stacks/tandoor/stop (path=/stacks/tandoor/stop)
2026/10/25 16:46:44 router.go:663: [INFO] [api] stop requested for stack: tandoor
2026/10/25 16:46:44 router.go:78: [DEBUG] [api] actionStack: action=stop name=tandoor
2026/10/25 16:46:44 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/tandoor — 4 env vars, 0 encrypted, 2 sensitive fields
2026/10/25 16:46:44 [INFO] [stacks] SaveAppConfig: saved config for tandoor
2026/10/25 16:46:44 desiredstate.go:81: [INFO] [stacks] desired state for tandoor recorded as "stopped" (was "running")
2026/10/25 16:46:44 manager.go:1439: [DEBUG] [stacks] StopStack tandoor: current state=running deployed=true containers=2
2026/10/25 16:46:44 manager.go:1442: [INFO] [stacks] Stopping stack: tandoor
2026/10/25 16:46:44 manager.go:1688: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, IMPORT_PATH] (10 app + 0 system)
2026/10/25 16:46:44 manager.go:1697: [DEBUG] Running: docker compose down (in /opt/docker/stacks/tandoor)
2026/10/25 16:46:46 manager.go:1719: [DEBUG] Command completed: docker compose down (took 2.8s)
2026/10/25 16:46:46 manager.go:1451: [INFO] [stacks] Stack tandoor stopped successfully (took 2.8s)
2026/10/25 16:46:46 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:46:46 lifecycle.go:24: [DEBUG] [integrations] OnStackStop: stack=tandoor integrationsFound=0
2026/10/25 16:46:48 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:46:48 restore_verdict.go:172: [DEBUG] [backup] stable-start sample tandoor: not ok — the stack does not read running
2026/10/25 16:46:50 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:46:50 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:46:50 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:46:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:46:50 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:46:50 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:46:50 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:46:50 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:46:50 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:46:51 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:46:51 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:46:51 auth.go:144: [DEBUG] [web] auth: valid session for POST /api/stacks/tandoor/remove
2026/10/25 16:46:51 router.go:78: [DEBUG] [api] POST /api/stacks/tandoor/remove (path=/stacks/tandoor/remove)
2026/10/25 16:46:51 router.go:1025: [INFO] [api] Remove requested for stack: tandoor
2026/10/25 16:46:51 router.go:78: [DEBUG] [api] removeStack: name=tandoor
2026/10/25 16:46:51 router.go:78: [DEBUG] [api] removeStack: name=tandoor removeHDDData=true removeBackups=true
2026/10/25 16:46:52 delete.go:626: [DEBUG] [stacks] RemoveStack called: name="tandoor", removeHDDData=true, backupPathsToRemove=3
2026/10/25 16:46:52 delete.go:640: [DEBUG] [stacks] RemoveStack tandoor: state=stopped, deployed=true, orphaned=false, deploying=false
2026/10/25 16:46:52 delete.go:697: [INFO] Removing deployed stack: tandoor (removeHDDData=true, hddDeclared=false, backupPaths=3)
2026/10/25 16:46:52 delete.go:710: [DEBUG] [stacks] RemoveStack tandoor: found 0 HDD mounts from compose file
2026/10/25 16:46:52 manager.go:1688: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SECRET_KEY, SUBDOMAIN, DB_PASSWORD, IMPORT_PATH] (10 app + 0 system)
2026/10/25 16:46:52 manager.go:1697: [DEBUG] Running: docker compose down --volumes (in /opt/docker/stacks/tandoor)
2026/10/25 16:46:52 manager.go:1719: [DEBUG] Command completed: docker compose down --volumes (took 0.3s)
2026/10/25 16:46:52 delete.go:736: [DEBUG] [stacks] RemoveStack tandoor: compose down output:
2026/10/25 16:46:58 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:46:58 restore_verdict.go:172: [DEBUG] [backup] stable-start sample tandoor: not ok — the stack does not read running
2026/10/25 16:47:00 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:47:00 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:47:00 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:47:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:47:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:47:00 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:47:05 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:47:08 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:47:08 restore_verdict.go:172: [DEBUG] [backup] stable-start sample tandoor: not ok — the stack does not read running
2026/10/25 16:47:10 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:47:10 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:47:10 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:47:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:47:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:47:10 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:47:18 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:47:18 restore_verdict.go:172: [DEBUG] [backup] stable-start sample tandoor: not ok — the stack does not read running
2026/10/25 16:47:18 delete.go:774: [INFO] [stacks] RemoveStack tandoor: removed volume(s) [tandoor_tandoor_media tandoor_tandoor_postgres_data tandoor_tandoor_static]
2026/10/25 16:47:19 delete.go:837: [DEBUG] [stacks] RemoveStack tandoor: processing 3 backup paths for removal (base=/mnt/sys_drive/felhom-data/backups)
2026/10/25 16:47:19 delete.go:854: [INFO] Removed backup data: /mnt/sys_drive/felhom-data/backups/primary/tandoor (32K)
2026/10/25 16:47:19 delete.go:854: [INFO] Removed backup data: /mnt/sys_drive/felhom-data/backups/restore-undo/tandoor (144M)
2026/10/25 16:47:19 delete.go:862: [DEBUG] [stacks] RemoveStack tandoor: removing app.yaml at /opt/docker/stacks/tandoor/app.yaml
2026/10/25 16:47:19 delete.go:879: [INFO] Stack tandoor removed successfully (took 27.0s)
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=false composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "dawarich" deployed=false composePath=/opt/docker/stacks/dawarich/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grimmory" deployed=false composePath=/opt/docker/stacks/grimmory/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grocy" deployed=false composePath=/opt/docker/stacks/grocy/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=true composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "karakeep" deployed=false composePath=/opt/docker/stacks/karakeep/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "lubelogger" deployed=false composePath=/opt/docker/stacks/lubelogger/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "metube" deployed=false composePath=/opt/docker/stacks/metube/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "nzbget" deployed=false composePath=/opt/docker/stacks/nzbget/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "prowlarr" deployed=false composePath=/opt/docker/stacks/prowlarr/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "qbittorrent" deployed=false composePath=/opt/docker/stacks/qbittorrent/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "radicale" deployed=false composePath=/opt/docker/stacks/radicale/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=false composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sabnzbd" deployed=false composePath=/opt/docker/stacks/sabnzbd/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "transmission" deployed=false composePath=/opt/docker/stacks/transmission/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/10/25 16:47:19 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/10/25 16:47:19 manager.go:1960: [DEBUG] [stacks] getCatalogTemplateSlugs: found 65 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/10/25 16:47:19 manager.go:757: [DEBUG] [stacks] ScanStacks: catalog has 65 template slugs for orphan detection
2026/10/25 16:47:19 manager.go:788: [INFO] [stacks] ScanStacks complete: 70 stacks found (3 deployed, 67 available)
2026/10/25 16:47:19 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:47:19 unit_owner.go:280: [INFO] [backup] remove tandoor: the set-aside units of earlier installs deleted with its backups: /mnt/sys_drive/felhom-data/backups/set-aside/tandoor (144.3 MB)
2026/10/25 16:47:19 settings.go:970: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (27286 bytes)
2026/10/25 16:47:19 settings.go:973: [INFO] [settings] Settings saved
2026/10/25 16:47:19 tier2_kept.go:95: [INFO] [backup] kept copy /mnt/sys_drive/felhom-data/backups/set-aside/tandoor/20261025T164421Z was deleted with its app's backups — record dropped
2026/10/25 16:47:19 notifier.go:1467: [DEBUG] notifier disabled: dropped event app_removed (severity info)
2026/10/25 16:47:19 lifecycle.go:176: [DEBUG] [integrations] OnStackRemove: stack=tandoor integrationsFound=0
2026/10/25 16:47:20 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/10/25 16:47:20 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:47:20 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:47:20 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:47:20 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:47:20 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:47:20 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:47:20 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:47:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:47:20 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:47:20 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:47:20 setup_gate.go:492: [INFO] [stacks] tandoor: removed a setup-gate file for an app whose gate is not closed
2026/10/25 16:47:21 image_retention.go:265: [INFO] [stacks] image retention (remove of tandoor): deleted [ghcr.io/tandoorrecipes/recipes:<none>] (21ca08430f20, 919MB) — no container, installed app or undo names it (decision 53)
2026/10/25 16:47:21 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714380KB) → used≈13189MB avail≈12709MB
2026/10/25 16:47:21 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714380 availKB=15071312 → total=25898MB avail=12709MB used=13189MB (50.9%)
2026/10/25 16:47:21 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=11.7GB avail=53.2GB (18.0%)
2026/10/25 16:47:21 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=219.7GB avail=670.4GB (24.7%)
2026/10/25 16:47:21 info.go:13: [DEBUG] [system] readLoadAvg: raw="1.39 2.24 2.12 5/1677 5826" → 1m=1.39 5m=2.24 15m=2.12
2026/10/25 16:47:21 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/10/25 16:47:21 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 54.2°C (hwmon2)
2026/10/25 16:47:21 info.go:13: [DEBUG] [system] GetInfo done in 697ms — mem=13189MB/25898MB (50.9%), rootDisk=11.7GB/68.4GB (18.0%), load=1.39/2.24/2.12, temp=54.2°C (hwmon2), cpu=18.4%
2026/10/25 16:47:21 image_retention.go:265: [INFO] [stacks] image retention (remove of tandoor): deleted [postgres:<none>] (79bd7c99e923, 297MB) — no container, installed app or undo names it (decision 53)
2026/10/25 16:47:21 image_retention.go:238: [INFO] [stacks] image retention (remove of tandoor): pass over 45 image(s) of [ghcr.io/tandoorrecipes/recipes postgres] — 2 candidate(s), 2 deleted, the rest kept
2026/10/25 16:47:24 auth.go:144: [DEBUG] [web] auth: valid session for GET /api/stacks/tandoor
2026/10/25 16:47:24 router.go:78: [DEBUG] [api] GET /api/stacks/tandoor (path=/stacks/tandoor)
2026/10/25 16:47:28 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:47:28 restore_verdict.go:172: [DEBUG] [backup] stable-start sample tandoor: not ok — the stack does not read running
2026/10/25 16:47:30 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:47:30 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:47:30 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:47:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:47:30 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:47:30 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:47:35 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:47:38 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:47:38 restore_verdict.go:172: [DEBUG] [backup] stable-start sample tandoor: not ok — the stack does not read running
2026/10/25 16:47:40 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:47:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:47:40 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/10/25 16:47:40 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:47:40 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:47:40 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:47:48 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:47:48 restore_verdict.go:172: [DEBUG] [backup] stable-start sample tandoor: not ok — the stack does not read running
2026/10/25 16:47:50 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:47:50 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:47:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/10/25 16:47:50 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:47:50 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:47:50 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:47:50 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:47:50 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:47:50 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:47:50 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:47:58 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:47:58 restore_verdict.go:172: [DEBUG] [backup] stable-start sample tandoor: not ok — the stack does not read running
2026/10/25 16:48:00 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:48:00 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:48:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/10/25 16:48:00 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:48:00 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:48:00 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:48:05 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:48:08 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:48:08 restore_verdict.go:172: [DEBUG] [backup] stable-start sample tandoor: not ok — the stack does not read running
2026/10/25 16:48:10 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:48:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/10/25 16:48:10 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:48:10 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:48:10 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:48:10 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:48:18 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:48:18 restore_verdict.go:172: [DEBUG] [backup] stable-start sample tandoor: not ok — the stack does not read running
2026/10/25 16:48:20 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/10/25 16:48:20 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714380KB) → used≈13214MB avail≈12684MB
2026/10/25 16:48:20 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714380 availKB=15042476 → total=25898MB avail=12684MB used=13214MB (51.0%)
2026/10/25 16:48:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=11.4GB avail=53.4GB (17.6%)
2026/10/25 16:48:20 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=219.7GB avail=670.4GB (24.7%)
2026/10/25 16:48:20 info.go:13: [DEBUG] [system] readLoadAvg: raw="1.02 1.95 2.03 8/1673 6030" → 1m=1.02 5m=1.95 15m=2.03
2026/10/25 16:48:20 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/10/25 16:48:20 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 55.4°C (hwmon2)
2026/10/25 16:48:20 info.go:13: [DEBUG] [system] GetInfo done in 65ms — mem=13214MB/25898MB (51.0%), rootDisk=11.4GB/68.4GB (17.6%), load=1.02/1.95/2.03, temp=55.4°C (hwmon2), cpu=11.2%
2026/10/25 16:48:20 scheduler.go:85: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/10/25 16:48:20 scheduler.go:450: [INFO] [scheduler] Running job: stack-scan
2026/10/25 16:48:20 scheduler.go:85: [DEBUG] [scheduler] job stack-scan: execution starting
2026/10/25 16:48:20 scheduler.go:85: [DEBUG] [scheduler] job ring-spill: execution starting
2026/10/25 16:48:20 scheduler.go:85: [DEBUG] [scheduler] job docker-socket-watch: execution starting
2026/10/25 16:48:20 scheduler.go:85: [DEBUG] [scheduler] job health-probes: execution starting
2026/10/25 16:48:20 scheduler.go:85: [DEBUG] [scheduler] job after-unclean-boot: execution starting
2026/10/25 16:48:20 scheduler.go:85: [DEBUG] [scheduler] job status-refresh: execution starting
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=false composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "dawarich" deployed=false composePath=/opt/docker/stacks/dawarich/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grimmory" deployed=false composePath=/opt/docker/stacks/grimmory/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "grocy" deployed=false composePath=/opt/docker/stacks/grocy/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=true composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "karakeep" deployed=false composePath=/opt/docker/stacks/karakeep/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "lubelogger" deployed=false composePath=/opt/docker/stacks/lubelogger/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "metube" deployed=false composePath=/opt/docker/stacks/metube/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "nzbget" deployed=false composePath=/opt/docker/stacks/nzbget/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "prowlarr" deployed=false composePath=/opt/docker/stacks/prowlarr/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "qbittorrent" deployed=false composePath=/opt/docker/stacks/qbittorrent/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "radicale" deployed=false composePath=/opt/docker/stacks/radicale/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=false composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sabnzbd" deployed=false composePath=/opt/docker/stacks/sabnzbd/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "transmission" deployed=false composePath=/opt/docker/stacks/transmission/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/10/25 16:48:20 manager.go:676: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/10/25 16:48:20 manager.go:1960: [DEBUG] [stacks] getCatalogTemplateSlugs: found 65 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/10/25 16:48:20 manager.go:757: [DEBUG] [stacks] ScanStacks: catalog has 65 template slugs for orphan detection
2026/10/25 16:48:20 manager.go:788: [INFO] [stacks] ScanStacks complete: 70 stacks found (3 deployed, 67 available)
2026/10/25 16:48:21 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks
2026/10/25 16:48:21 scheduler.go:467: [INFO] [scheduler] Job stack-scan completed (took 129ms)
2026/10/25 16:48:21 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping immich — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/10/25 16:48:21 healthprobe.go:64: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/10/25 16:48:21 healthprobe.go:110: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (2 skipped not due, 0 skipped no container)
2026/10/25 16:48:21 manager.go:839: [INFO] [stacks] Status refresh: 9 containers across 70 stacks