night 2026-09-24: chaos rounds 1-8 evidence; 07/08/09/capability map for decisions 26-28 + digests; R-681
gates / gates (push) Successful in 24s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-09-24 14:21:14 +02:00
parent 3208cb2083
commit 4502af6bb1
54 changed files with 9647 additions and 9 deletions
@@ -0,0 +1,11 @@
13:38:05 app never answered on c-wish/ (last rc=0 code=307)
13:38:06 wishlist: /signup http=200 type=success
13:38:06 seeded wishlist: True
13:38:06 navidrome: createAdmin http=200
13:38:06 seeded navidrome: True
13:44:09 app never answered on c-wish/ (last rc=0 code=307)
13:44:09 wishlist: sign-in as the seeded user type=success ok=True (wrong password refused)
13:44:10 navidrome: login as the seeded user http=200 ok=True
13:44:18 nextcloud: readback of the seeded user found=True
13:44:19 nextcloud files read back: 2/2 (negative control http=404)
13:44:19 setup readback: {"wishlist": {"A": true}, "navidrome": {"A": true}, "nextcloud": {"A": true, "files": [{"felhom-seed-0-e19728.txt": true, "felhom-seed-2-8620d3.txt": true}, "404"]}}
@@ -0,0 +1 @@
{"round": 1, "kind": "power_cut", "at": 1790250333.5386832, "why": "20 s after the install"}
@@ -0,0 +1 @@
{"round": 2, "kind": "docker_restart", "at": 1790250542.5067534, "why": "20 s after the install press"}
@@ -0,0 +1 @@
{"round": 3, "kind": "power_cut", "at": 1790251485.0719452, "why": "at verifying"}
@@ -0,0 +1 @@
{"round": 4, "kind": "controller_killed", "at": 1790251757.7804189, "why": "at verifying"}
@@ -0,0 +1 @@
{"round": 8, "kind": "disk_to_floor_plus_1g", "at": 1790252236.2424479, "why": "20 s after the install"}
@@ -0,0 +1,43 @@
{
"apps": {
"wishlist": {
"A": {
"u": "drill299dcd",
"pw": "Drill-59cfd7e5d859fcd1"
}
},
"navidrome": {
"A": {
"user": "drill84ab65",
"pw": "Drill-305976efc5c354dedca6"
}
},
"n8n": {
"A": {
"email": "drill-97a95a4e@gate.invalid",
"pw": "Drilldef711af0d342c2b1"
}
}
},
"setup_readback": {
"wishlist": {
"A": true
},
"navidrome": {
"A": true
},
"nextcloud": {
"A": true,
"files": [
{
"felhom-seed-0-e19728.txt": true,
"felhom-seed-2-8620d3.txt": true
},
"404"
]
}
},
"heads": {
"n8n": "# n8n - Workflow automatizálás vizuális szerkesztővel\n# Domain: ${SUBDOMAIN}.${DOMAIN}\n# Database: None (file-based)\n# RAM: ~150M (mem_limit: 512M) | Pi-compatible: No\n#\n# Environment variables:\n# DOMAIN - Your domain (e.g., demo-felhom.eu)\n# N8N_ENCRYPTION_KEY- Titkosítási kulcs (auto-generated)\n\nservices:\n n8n:\n image: n8nio/n8n:2.41.1\n container_name: n8n\n restart: unless-stopped\n environment:\n - TZ=Europe/Budapest\n - N8N_HOST=${SUBDOMAIN}.${DOMAIN}\n - N8N_PROTOCOL=https\n - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN}/\n - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}\n volumes:\n - n8n_data:/home/node/.n8n\n networks:\n - traefik-public\n deploy:\n resources:\n limits:\n memory: 1536M\n healthcheck:\n test: [\"CMD\", \"wget\", \"--spider\", \"-q\", \"http://127.0.0.1:5678/healthz\"]\n interval: 30s\n timeout: 5s\n retries: 3\n start_period: 30s\n labels:\n - \"traefik.enable=true\"\n - \"traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN}`)\"\n - \"traefik.http.routers.n8n.entrypoints=websecure\"\n - \"traefik.http.routers.n8n.tls=true\"\n - \"traefik.http.routers.n8n.tls.certresolver=letsencrypt\"\n - \"traefik.http.services.n8n.loadbalancer.server.port=5678\"\n\nvolumes:\n n8n_data:\n\nnetworks:\n traefik-public:\n external: true\n"
}
}
@@ -0,0 +1 @@
{"kind": "power_cut", "cmd": "pct stop 9202; pct start 9202", "fired_at": "13:45:41", "result": "stop_rc=0 start_rc=0 "}
@@ -0,0 +1 @@
{"kind": "docker_restart", "cmd": "pct exec 9202 -- systemctl restart docker", "fired_at": "13:49:08", "result": "rc=0"}
@@ -0,0 +1 @@
{"kind": "power_cut", "cmd": "pct stop 9202; pct start 9202", "fired_at": "14:04:51", "result": "stop_rc=0 start_rc=0 "}
@@ -0,0 +1 @@
{"kind": "controller_killed", "cmd": "kill -9 of the controller PID (1 of max 3)", "fired_at": "14:09:22", "result": "killed pid 2474 rc=0"}
@@ -0,0 +1 @@
{"kind": "disk_to_floor_plus_1g", "cmd": "fallocate /var/lib/docker/chaos-fill leaving 3 GB free (floor 2 GB + 1 GB)", "fired_at": "14:17:25", "result": "rc=0 filled 39025688576 bytes /dev/loop1 69G 62G 3.0G 96% /var/lib/docker ", "undone": "14:19 rm -f /var/lib/docker/chaos-fill -> /dev/loop1 69G 26G 40G 40% /var/lib/docker"}
@@ -0,0 +1,3 @@
13:44:27 ==== ROUND 1: oom_app on chaosoom x power_cut (2026-09-24T11:44:27Z)
13:44:27 + 0.1s chaosoom: deployed=None state=None updating=None phase=None hold=None
13:44:47 >>> ARMED accident power_cut (20 s after the install)
@@ -0,0 +1,554 @@
2026/09/24 11:45:59 main.go:335: [INFO] felhom-controller 0.269.1 starting (customer: demo-hp, domain: enkisfelhom.hu)
2026/09/24 11:45:59 settings.go:709: [INFO] [settings] Loaded settings from /opt/docker/felhom-controller/data/settings.json
2026/09/24 11:45:59 settings.go:1671: [DEBUG] [settings] AutoDiscoverStoragePaths discovered=[/mnt/felhom-drives/scratch_hdd/userdata/navidrome /mnt/felhom-drives/scratch_hdd/userdata/nextcloud /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx /mnt/felhom-drives/scratch_hdd/userdata/romm] fallback="" existing=5
2026/09/24 11:45:59 main.go:361: [INFO] Encryption key loaded from /opt/docker/felhom-controller/data/encryption.key
2026/09/24 11:46:00 manager.go:328: [INFO] [stacks] Using compose command: docker compose
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 11:46:00 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/09/24 11:46:00 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/09/24 11:46:00 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection
2026/09/24 11:46:00 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available)
2026/09/24 11:46:00 deploy.go:1104: [DEBUG] [stacks] InjectMissingFields: checking 9 stacks
2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack wishlist — 2 deploy fields, 2 existing env vars
2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack privatebin — 2 deploy fields, 2 existing env vars
2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack paperless-ngx — 8 deploy fields, 8 existing env vars
2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack nextcloud — 7 deploy fields, 7 existing env vars
2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack romm — 6 deploy fields, 6 existing env vars
2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack navidrome — 3 deploy fields, 3 existing env vars
2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack gokapi — 3 deploy fields, 3 existing env vars
2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack chaosoom — 2 deploy fields, 2 existing env vars
2026/09/24 11:46:00 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack vikunja — 3 deploy fields, 3 existing env vars
2026/09/24 11:46:00 deploy.go:1189: [INFO] [stacks] InjectMissingFields: processed 9 stacks
2026/09/24 11:46:00 manager.go:467: [DEBUG] [stacks] MigrateEncryption: checking 9 deployed stacks for plaintext sensitive values
2026/09/24 11:46:00 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "paperless-ngx" (3 sensitive fields)
2026/09/24 11:46:00 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "nextcloud" (3 sensitive fields)
2026/09/24 11:46:00 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "romm" (3 sensitive fields)
2026/09/24 11:46:00 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "gokapi" (1 sensitive fields)
2026/09/24 11:46:00 manager.go:487: [DEBUG] [stacks] MigrateEncryption: checking stack "vikunja" (1 sensitive fields)
2026/09/24 11:46:00 manager.go:511: [INFO] [stacks] Encryption migration: no stacks needed migration
2026/09/24 11:46:00 desiredstate.go:137: [INFO] [stacks] desired-state backfill: 0 app(s) recorded as running, 0 left unrecorded (state ambiguous — legacy boot behaviour retained)
2026/09/24 11:46:00 installed.go:537: [INFO] [stacks] installed-images backfill: 0 app(s) recorded, 9 already had a record, 0 left unrecorded (could not be observed completely — unknown, which renders nothing)
2026/09/24 11:46:00 pin.go:290: [INFO] [stacks] pin adoption: 0 pinned, 9 already pinned, 0 left unpinned (0 not completely observed, 0 running something the template no longer offers)
2026/09/24 11:46:00 undo.go:656: [INFO] [stacks] applied-meta backfill (R-646): recorded 0 []; skipped 0 [] — not current with the catalog, their pinned version's .felhom.yml is no longer on the box
2026/09/24 11:46:00 sync.go:117: [INFO] [sync] Starting catalog sync (repo: https://gitea.dooplex.hu/admin/app-catalog-drill.git, interval: 15m0s)
2026/09/24 11:46:00 info.go:13: [DEBUG] [system] CPUCollector.Start: sampleRate=5s
2026/09/24 11:46:00 sync.go:208: [INFO] [sync] Starting catalog sync
2026/09/24 11:46:00 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main)
2026/09/24 11:46:00 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache
2026/09/24 11:46:00 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main
2026/09/24 11:46:00 main.go:515: [INFO] Metrics store opened at /opt/docker/felhom-controller/data/metrics.db
2026/09/24 11:46:00 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/09/24 11:46:00 main.go:527: [INFO] Metrics collector started (60s interval)
2026/09/24 11:46:00 restore_record_wiring.go:35: [INFO] [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false)
2026/09/24 11:46:00 notifier.go:81: [INFO] Notifier disabled (hub not configured)
2026/09/24 11:46:00 main.go:692: [INFO] [mailrelay] app-email shim unavailable (no hub configured or disabled in config)
2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: status-refresh (every 10s)
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="status-refresh" interval=10s totalJobs=1
2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: stack-scan (every 2m0s)
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="stack-scan" interval=2m0s totalJobs=2
2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: health-probes (every 10s)
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="health-probes" interval=10s totalJobs=3
2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: system-health (every 5m0s)
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="system-health" interval=5m0s totalJobs=4
2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: deadapp-check (every 30s)
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="deadapp-check" interval=30s totalJobs=5
2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: ring-spill (every 30s)
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="ring-spill" interval=30s totalJobs=6
2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job db-dump scheduled for 2026-09-25 13:20 CEST
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="db-dump" schedule="13:20" nextRun=2026-09-25T13:20:00+02:00 totalJobs=7
2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: offsite-credential-retry (every 5m0s)
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="offsite-credential-retry" interval=5m0s totalJobs=8
2026/09/24 11:46:00 scheduler.go:102: [INFO] [scheduler] Registered periodic job: backup-cache (every 5m0s)
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="backup-cache" interval=5m0s totalJobs=9
2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job tier2-backup scheduled for 2026-09-24 14:20 CEST
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="tier2-backup" schedule="14:20" nextRun=2026-09-24T14:20:00+02:00 totalJobs=10
2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job offbox-backup scheduled for 2026-09-24 15:05 CEST
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offbox-backup" schedule="15:05" nextRun=2026-09-24T15:05:00+02:00 totalJobs=11
2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job offsite-abandon-sweep scheduled for 2026-09-25 05:10 CEST
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-abandon-sweep" schedule="05:10" nextRun=2026-09-25T05:10:00+02:00 totalJobs=12
2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job offsite-integrity scheduled for 2026-09-25 06:00 CEST
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-integrity" schedule="06:00" nextRun=2026-09-25T06:00:00+02:00 totalJobs=13
2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job offsite-proof scheduled for 2026-09-25 05:30 CEST
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-proof" schedule="05:30" nextRun=2026-09-25T05:30:00+02:00 totalJobs=14
2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job metrics-prune scheduled for 2026-09-25 04:00 CEST
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="metrics-prune" schedule="04:00" nextRun=2026-09-25T04:00:00+02:00 totalJobs=15
2026/09/24 11:46:00 scheduler.go:132: [INFO] [scheduler] Daily job fill-watch scheduled for 2026-09-25 03:30 CEST
2026/09/24 11:46:00 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="fill-watch" schedule="03:30" nextRun=2026-09-25T03:30:00+02:00 totalJobs=16
2026/09/24 11:46:00 selftest.go:50: [INFO] ========== Startup Self-Test ==========
2026/09/24 11:46:00 sync.go:212: [ERROR] [sync] Catalog sync failed: git fetch: git fetch --depth 1 origin main: exit status 128
stderr: fatal: unable to access 'https://gitea.dooplex.hu/admin/app-catalog-drill.git/': Could not resolve host: gitea.dooplex.hu
2026/09/24 11:46:00 sync.go:122: [INFO] [sync] Initial sync: Git hiba: git fetch: git fetch --depth 1 origin main: exit status 128
stderr: fatal: unable to access 'https://gitea.dooplex.hu/admin/app-catalog-drill.git/': Could not resolve host: gitea.dooplex.hu
2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] Docker socket: reachable (v29.8.0)
2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] Stacks directory: /opt/docker/stacks
2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] Data directory: /opt/docker/felhom-controller/data (writable)
2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] System data path: /mnt/sys_drive
2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] Storage paths: 1 connected, 4 disconnected
2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] Git catalog: 56 app definitions found
2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] Hub connectivity: hub disabled, skipped
2026/09/24 11:46:01 selftest.go:68: [INFO] [PASS] Metrics DB: 8.1 MB
2026/09/24 11:46:01 selftest.go:70: [INFO] ========================================
2026/09/24 11:46:01 selftest.go:71: [INFO] Self-test complete: 8 passed, 0 warnings, 0 failed
2026/09/24 11:46:01 scheduler.go:206: [INFO] [scheduler] Starting scheduler with 16 jobs
2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] scheduler started: periodic=8 daily=8
2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job db-dump: next run at 2026-09-25 13:20:00 CEST (waiting 23h33m59s)
2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-abandon-sweep: next run at 2026-09-25 05:10:00 CEST (waiting 15h23m59s)
2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job tier2-backup: next run at 2026-09-24 14:20:00 CEST (waiting 33m59s)
2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job offbox-backup: next run at 2026-09-24 15:05:00 CEST (waiting 1h18m59s)
2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-proof: next run at 2026-09-25 05:30:00 CEST (waiting 15h43m59s)
2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-integrity: next run at 2026-09-25 06:00:00 CEST (waiting 16h13m59s)
2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job metrics-prune: next run at 2026-09-25 04:00:00 CEST (waiting 14h13m59s)
2026/09/24 11:46:01 scheduler.go:67: [DEBUG] [scheduler] daily job fill-watch: next run at 2026-09-25 03:30:00 CEST (waiting 13h43m59s)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4187MB avail≈21711MB
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25748124 → total=25898MB avail=21711MB used=4187MB (16.2%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.5GB avail=42.4GB (32.8%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readLoadAvg: raw="5.31 2.81 2.70 19/1482 125" → 1m=5.31 5m=2.81 15m=2.70
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 80.8°C (hwmon2)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetInfo done in 421ms — mem=4187MB/25898MB (16.2%), rootDisk=22.5GB/68.4GB (32.8%), load=5.31/2.81/2.70, temp=80.8°C (hwmon2), cpu=0.0%
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/09/24 11:46:01 server.go:250: [DEBUG] [web] NewServer: initializing web server v0.269.1
2026/09/24 11:46:01 server.go:251: [DEBUG] [web] NewServer: backup=true scheduler=true alertMgr=true notifier=true updater=false
2026/09/24 11:46:01 infra.go:228: [INFO] [infra] connected felhom-controller to traefik-public
2026/09/24 11:46:01 infra.go:67: [INFO] [infra] cloudflared skipped — no cf_tunnel_token configured (LAN-only node)
2026/09/24 11:46:01 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/navidrome → [navidrome]
2026/09/24 11:46:01 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/nextcloud → [nextcloud]
2026/09/24 11:46:01 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx → [paperless-ngx]
2026/09/24 11:46:01 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/scratch_hdd/userdata/romm → [romm]
2026/09/24 11:46:01 backup.go:467: [DEBUG] groupStacksByDrive: /mnt/sys_drive → [gokapi, privatebin, vikunja, wishlist, chaosoom]
2026/09/24 11:46:01 backup.go:1119: [INFO] [backup] Found 9 DB dump files across drives
2026/09/24 11:46:01 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers
2026/09/24 11:46:01 server.go:327: [DEBUG] [web] loadTemplates: lang=hu loaded 81 templates, 1886 markers expanded in 117.796502ms
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4223MB avail≈21675MB
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25706264 → total=25898MB avail=21675MB used=4223MB (16.3%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.5GB avail=42.4GB (32.8%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readLoadAvg: raw="5.31 2.81 2.70 16/1476 174" → 1m=5.31 5m=2.81 15m=2.70
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 80.9°C (hwmon2)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetInfo done in 260ms — mem=4223MB/25898MB (16.3%), rootDisk=22.5GB/68.4GB (32.8%), load=5.31/2.81/2.70, temp=80.9°C (hwmon2), cpu=0.0%
2026/09/24 11:46:01 healthcheck.go:86: [DEBUG] [monitor] Raw values: disk=32.8%, hdd=7.8% (configured=true), mem=16.3% (4223MB/25898MB), cpu=0.0%, temp=80.9°C (hwmon2)
2026/09/24 11:46:01 healthcheck.go:118: [DEBUG] [monitor] SSD disk: OK (33%)
2026/09/24 11:46:01 healthcheck.go:151: [DEBUG] [monitor] Memory: OK (16%)
2026/09/24 11:46:01 healthcheck.go:179: [WARN] [monitor] Temperature threshold breached: 81°C (limit: 75°C)
2026/09/24 11:46:01 healthcheck.go:182: [DEBUG] [monitor] Temperature: WARN (81°C >= 75°C)
2026/09/24 11:46:01 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 86ba63e28bd7 felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1
557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0
8ed284296786 romm-db romm mariadb:11.8
0a82332f8e1c romm romm rommapp/romm:5.3.1
9ec77cdb422a romm-redis romm redis:7-alpine
d9846695ae0d wishlist wishlist ghcr.io/cmintey/wishlist:v0.67.1
8867e567d339 privatebin privatebin privatebin/pdo:2.0.6
0732d8573acd paperless-webserver paperless-ngx ghcr.io/paperless-ngx/paperless-ngx:2.20.15
3df88f0fdd1d paperless-redis pap...
2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database)
2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database)
2026/09/24 11:46:01 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786)
2026/09/24 11:46:01 server.go:327: [DEBUG] [web] loadTemplates: lang=en loaded 81 templates, 1886 markers expanded in 172.029097ms
2026/09/24 11:46:01 server.go:270: [INFO] [web] Auth: using password from settings.json
2026/09/24 11:46:01 server.go:814: [DEBUG] [web] CatchAllMiddleware: controller host=felhom.enkisfelhom.hu
2026/09/24 11:46:01 main.go:1950: [INFO] Web UI listening on :8080
2026/09/24 11:46:01 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping userdata skeleton
2026/09/24 11:46:01 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx not mounted — skipping userdata skeleton
2026/09/24 11:46:01 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/romm not mounted — skipping userdata skeleton
2026/09/24 11:46:01 handlers.go:3492: [INFO] [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/navidrome not mounted — skipping userdata skeleton
2026/09/24 11:46:01 manager.go:258: [DEBUG] [integrations] ReapplyConfigForTarget: target=filebrowser integrations=0
2026/09/24 11:46:01 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm
2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database)
2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database)
2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database)
2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database)
2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database)
2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database)
2026/09/24 11:46:01 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973)
2026/09/24 11:46:01 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless")
2026/09/24 11:46:01 auth.go:123: [DEBUG] [web] auth: rejected GET /api/stacks/chaosoom from 172.18.0.6:51320 (invalid/expired session)
2026/09/24 11:46:01 auth.go:126: [WARN] [api] Unauthorized request to /api/stacks/chaosoom from 172.18.0.6:51320
2026/09/24 11:46:01 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.6:51320 (X-Forwarded-For: 192.168.0.180)
2026/09/24 11:46:01 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless
2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database)
2026/09/24 11:46:01 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=9837f4d677cb)
2026/09/24 11:46:01 healthcheck.go:201: [DEBUG] [monitor] Docker daemon: OK
2026/09/24 11:46:01 healthcheck.go:209: [DEBUG] [monitor] Checking 1 protected containers: [traefik]
2026/09/24 11:46:01 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud
2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database)
2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database)
2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database)
2026/09/24 11:46:01 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database)
2026/09/24 11:46:01 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 13 non-DB container(s)
2026/09/24 11:46:01 dbdump.go:208: [INFO] [backup] Discovered 3 databases
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/navidrome/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 2 HDD mounts for /opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 11:46:01 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/romm/docker-compose.yml
2026/09/24 11:46:01 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T11:46:01Z, active_sessions=1
2026/09/24 11:46:01 auth.go:222: [INFO] [web] Login from 172.18.0.6:51320
2026/09/24 11:46:01 healthcheck.go:219: [DEBUG] [monitor] All protected containers running
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 11:46:01 healthcheck.go:238: [INFO] [monitor] Health check: status=warn
2026/09/24 11:46:01 healthcheck.go:242: [DEBUG] [monitor] Final status: warn (issues=0, warnings=5, info=3)
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 11:46:01 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 11:46:01 [INFO] [backup] Discovered app data: 9 apps
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 11:46:01 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.6:51320
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 11:46:01 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.6:51320
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.5 GB avail=42.4GB (32.8%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.5 GB avail=42.4GB (32.8%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.5 GB avail=42.4GB (32.8%)
2026/09/24 11:46:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.5 GB avail=42.4GB (32.8%)
2026/09/24 11:46:01 recovery_unit.go:224: [INFO] [backup] Recovery unit captured for chaosoom → /mnt/sys_drive/felhom-data/backups/primary/chaosoom (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0)
2026/09/24 11:46:01 backup.go:1189: [INFO] [backup] Backup status cache refreshed
2026/09/24 11:46:01 handlers.go:3432: [INFO] [web] FileBrowser sync — no config/compose change, ensured running without recreate (5 storage path(s))
2026/09/24 11:46:05 info.go:13: [DEBUG] [system] CPUCollector: first sample — cpu=97.1% (idle=116 total=3976)
2026/09/24 11:46:06 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event controller_started (severity info) — further controller_started events are logged at DEBUG only
2026/09/24 11:46:10 main.go:2356: [DEBUG] [bootrecon] boot window: fleet still changing (9 app(s)) — resampling
2026/09/24 11:46:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 11:46:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 11:46:11 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 4 targets (0 skipped not due, 0 skipped no container)
2026/09/24 11:46:11 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused
2026/09/24 11:46:11 healthprobe.go:181: [DEBUG] Health probe privatebin: HTTP GET :8080/ → 200 (12ms)
2026/09/24 11:46:11 healthprobe.go:181: [DEBUG] Health probe navidrome: API GET :4533/ping → 200 (15ms)
2026/09/24 11:46:11 healthprobe.go:181: [DEBUG] Health probe nextcloud: API GET :80/status.php → 200 (67ms)
2026/09/24 11:46:11 healthprobe.go:159: [WARN] Health probes: 3 ok, 1 unhealthy (of 4 probed)
2026/09/24 11:46:15 main.go:2356: [DEBUG] [bootrecon] boot window: fleet still changing (9 app(s)) — resampling
2026/09/24 11:46:21 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 11:46:21 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 11:46:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 10s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 10s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 10s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:21 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 2 targets (3 skipped not due, 0 skipped no container)
2026/09/24 11:46:21 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused
2026/09/24 11:46:21 healthprobe.go:181: [DEBUG] Health probe wishlist: HTTP GET :3000/ → 307 (7ms)
2026/09/24 11:46:21 healthprobe.go:159: [WARN] Health probes: 1 ok, 1 unhealthy (of 2 probed)
2026/09/24 11:46:25 main.go:2367: [INFO] [bootrecon] boot window: fleet settled after 20s (3 identical samples 5s apart) — sweeping
2026/09/24 11:46:25 bootrecon.go:236: [INFO] [bootrecon] "gokapi" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T10:37:48Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery
2026/09/24 11:46:25 bootrecon.go:251: [INFO] [bootrecon] Boot reconciliation: nothing to start — 1 app(s) held (absent drive / quiesce / app-data operation): [gokapi]
2026/09/24 11:46:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 11:46:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 11:46:31 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/09/24 11:46:31 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/09/24 11:46:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 10s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 20s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 20s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 20s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:31 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (4 skipped not due, 0 skipped no container)
2026/09/24 11:46:31 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused
2026/09/24 11:46:31 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 11:46:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 11:46:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 30s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 11:46:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 20s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 30s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 30s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:41 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (5 skipped not due, 0 skipped no container)
2026/09/24 11:46:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 11:46:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 11:46:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 11:46:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 30s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 11:46:51 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 3 targets (4 skipped not due, 0 skipped no container)
2026/09/24 11:46:51 healthprobe.go:181: [DEBUG] Health probe romm: HTTP GET :8080/ → 200 (1ms)
2026/09/24 11:46:51 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused
2026/09/24 11:46:51 healthprobe.go:181: [DEBUG] Health probe paperless-ngx: HTTP GET :8000/ → 302 (6ms)
2026/09/24 11:46:51 healthprobe.go:159: [WARN] Health probes: 2 ok, 1 unhealthy (of 3 probed)
2026/09/24 11:47:00 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/09/24 11:47:00 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5236MB avail≈20662MB
2026/09/24 11:47:00 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24504156 → total=25898MB avail=20662MB used=5236MB (20.2%)
2026/09/24 11:47:00 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.5GB avail=42.4GB (32.8%)
2026/09/24 11:47:00 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%)
2026/09/24 11:47:00 info.go:13: [DEBUG] [system] readLoadAvg: raw="6.18 3.55 2.97 8/1495 392" → 1m=6.18 5m=3.55 15m=2.97
2026/09/24 11:47:00 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/09/24 11:47:00 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 76.9°C (hwmon2)
2026/09/24 11:47:00 info.go:13: [DEBUG] [system] GetInfo done in 74ms — mem=5236MB/25898MB (20.2%), rootDisk=22.5GB/68.4GB (32.8%), load=6.18/3.55/2.97, temp=76.9°C (hwmon2), cpu=53.9%
2026/09/24 11:47:01 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/09/24 11:47:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 11:47:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 11:47:01 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/09/24 11:47:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 10s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 10s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 11:47:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:01 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container)
2026/09/24 11:47:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 11:47:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 20s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 11:47:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:11 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container)
2026/09/24 11:47:11 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused
2026/09/24 11:47:11 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 11:47:21 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 11:47:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 30s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:21 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 11:47:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:21 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:21 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container)
2026/09/24 11:47:21 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused
2026/09/24 11:47:21 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 11:47:30 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=22.5 GB avail=42.4GB (32.8%)
2026/09/24 11:47:30 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 11:47:30 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 11:47:30 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 11:47:30 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 11:47:30 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 11:47:30 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=22.5 GB avail=42.4GB (32.8%)
2026/09/24 11:47:30 fillwatch.go:256: [INFO] [fillwatch] checked 7 filesystem(s), 0 unreadable/skipped, 0 notification(s); bands: all ok
2026/09/24 11:47:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 11:47:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 11:47:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 11:47:31 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/09/24 11:47:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:31 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/09/24 11:47:31 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:31 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container)
2026/09/24 11:47:31 main.go:872: [WARN] [deadapp] chaosoom: container chaosoom was OOM-killed (started 2026-09-24T11:47:10.100857309Z; kills 15, limit 32M, peak 32M)
2026/09/24 11:47:31 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_oom (severity warning) — further app_oom events are logged at DEBUG only
2026/09/24 11:47:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 11:47:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 11:47:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:41 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:41 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container)
2026/09/24 11:47:41 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused
2026/09/24 11:47:41 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 11:47:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 11:47:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 11:47:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:51 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/09/24 11:47:51 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container)
2026/09/24 11:47:51 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused
2026/09/24 11:47:51 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 11:48:00 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/09/24 11:48:00 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5188MB avail≈20710MB
2026/09/24 11:48:00 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24561624 → total=25898MB avail=20710MB used=5188MB (20.0%)
2026/09/24 11:48:00 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=22.5GB avail=42.4GB (32.8%)
2026/09/24 11:48:00 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%)
2026/09/24 11:48:00 info.go:13: [DEBUG] [system] readLoadAvg: raw="4.01 3.41 2.95 4/1501 529" → 1m=4.01 5m=3.41 15m=2.95
2026/09/24 11:48:00 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/09/24 11:48:00 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 69.5°C (hwmon2)
2026/09/24 11:48:00 info.go:13: [DEBUG] [system] GetInfo done in 61ms — mem=5188MB/25898MB (20.0%), rootDisk=22.5GB/68.4GB (32.8%), load=4.01/3.41/2.95, temp=69.5°C (hwmon2), cpu=32.9%
2026/09/24 11:48:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 11:48:01 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/09/24 11:48:01 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/09/24 11:48:01 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan
2026/09/24 11:48:01 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting
2026/09/24 11:48:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 11:48:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 11:48:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/09/24 11:48:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 11:48:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 11:48:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 11:48:01 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 11:48:01 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container)
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/09/24 11:48:01 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.7:8999: connect: connection refused
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 11:48:01 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/09/24 11:48:01 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/09/24 11:48:01 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection
2026/09/24 11:48:01 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available)
2026/09/24 11:48:01 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 91ms)
2026/09/24 11:48:01 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 11:48:01 main.go:872: [WARN] [deadapp] chaosoom: container chaosoom was OOM-killed (started 2026-09-24T11:47:10.100857309Z; kills 38, limit 32M, peak 32M)
2026/09/24 11:48:01 notifier.go:738: [ERROR] [notify] chaosoom: container chaosoom OOM STORM — 38 kills in 30 min (limit 32M, peak 32M)
2026/09/24 11:48:01 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_oom_storm (severity error) — further app_oom_storm events are logged at DEBUG only
2026/09/24 11:48:01 main.go:3671: [WARN] [deadapp] chaosoom: oom_storm — 23 in 30m0s; STOPPING it (decision 28)
2026/09/24 11:48:01 manager.go:1283: [DEBUG] [stacks] StopStack chaosoom: current state=running deployed=true containers=1
2026/09/24 11:48:01 manager.go:1286: [INFO] [stacks] Stopping stack: chaosoom
2026/09/24 11:48:01 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 11:48:01 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/chaosoom)
2026/09/24 11:48:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 11:48:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 11:48:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 11:48:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/09/24 11:48:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 11:48:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/09/24 11:48:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 11:48:11 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/09/24 11:48:11 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container)
2026/09/24 11:48:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 11:48:11 manager.go:1483: [DEBUG] Command completed: docker compose down (took 10.3s)
2026/09/24 11:48:11 manager.go:1295: [INFO] [stacks] Stack chaosoom stopped successfully (took 10.3s)
2026/09/24 11:48:11 settings.go:1814: [WARN] [settings] restore hold SET for chaosoom — the app stays stopped until it is cleared
2026/09/24 11:48:11 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17886 bytes)
2026/09/24 11:48:11 settings.go:847: [INFO] [settings] Settings saved
2026/09/24 11:48:11 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17926 bytes)
2026/09/24 11:48:11 settings.go:847: [INFO] [settings] Settings saved
2026/09/24 11:48:11 update_guard.go:776: [WARN] [backup] chaosoom is STOPPED by the box: oom_storm (trip 1 within 24h0m0s) — Start gives it one more try (decision 28)
2026/09/24 11:48:11 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_stopped_unhealthy (severity warning) — further app_stopped_unhealthy events are logged at DEBUG only
2026/09/24 11:48:13 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.6:51320 (X-Forwarded-For: 192.168.0.180)
2026/09/24 11:48:13 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session
2026/09/24 11:48:13 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T11:48:13Z, active_sessions=2
2026/09/24 11:48:13 auth.go:222: [INFO] [web] Login from 172.18.0.6:51320
2026/09/24 11:48:13 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.6:51320
2026/09/24 11:48:13 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.6:51320
2026/09/24 11:48:13 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoom from 172.18.0.6:51320
2026/09/24 11:48:13 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoom from 172.18.0.6:51320
2026/09/24 11:48:13 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoom from 172.18.0.6:51320
2026/09/24 11:48:13 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoom from 172.18.0.6:51320
@@ -0,0 +1,106 @@
{
"round": 1,
"action": "oom_app",
"accident": {
"kind": "power_cut",
"cmd": "pct stop 9202; pct start 9202",
"fired_at": "13:45:41",
"result": "stop_rc=0 start_rc=0 "
},
"app": "chaosoom",
"started": "2026-09-24T11:45:08Z",
"before": {
"state": {
"deployed": null,
"state": null,
"update_phase": null,
"hold_reason": null,
"hold_kind": null,
"update_error": null,
"ladder_steps_left": null
}
},
"act": "deploy -> 202",
"armed_at": "13:45:33",
"armed_why": "20 s after the install",
"controller_back_s": 0.2,
"time_to_steady_s": 184.9,
"after": {
"state": {
"deployed": true,
"state": "stopped",
"update_phase": null,
"hold_reason": "Az alkalmazást leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). Az Indítás gombbal újra megpróbálhatod.",
"hold_kind": "unhealthy_stop",
"update_error": null,
"ladder_steps_left": null
},
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"page_hu": [
"Temperature high: 81°C (hwmon2) Rendszermonitor →",
"+ 1 további figyelmeztetés →",
"Az alkalmazást leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). Az Indítás gombbal újra megpróbálhatod.",
"Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el."
],
"page_en": [
"Temperature high: 81°C (hwmon2) System monitor →",
"+ 1 more warning →",
"We stopped the app because it kept crashing (or ran out of memory). Press Start to try again.",
"Support is working on this app, so its data stays: for now you can remove only the app itself."
]
},
"readback": null,
"events": [
"2026-09-24T11:48:01Z app_oom_storm (error)",
"2026-09-24T11:48:11Z app_stopped_unhealthy (warning)"
],
"box_log": [
"2026-09-24T11:45:09Z INFO [sync] Updated chaosoom/docker-compose.yml",
"2026-09-24T11:45:09Z INFO [sync] Updated chaosoom/.felhom.yml",
"2026-09-24T11:45:09Z INFO [sync] Updated chaosoomb/docker-compose.yml",
"2026-09-24T11:45:09Z INFO [sync] Updated chaosoomb/.felhom.yml",
"2026-09-24T11:45:09Z INFO [api] Catalog sync completed: Sablonok frissítve — új: chaoscrash, chaosoom, chaosoomb",
"2026-09-24T11:45:13Z INFO [api] Deploy requested for stack: chaosoom",
"2026-09-24T11:45:13Z INFO [stacks] Deploying stack chaosoom with 2 env vars: [DOMAIN, SUBDOMAIN]",
"2026-09-24T11:45:13Z INFO [stacks] Deploying stack chaosoom — checking 1 images...",
"2026-09-24T11:45:13Z INFO [stacks] Stack chaosoom deployed successfully (took 0.4s)",
"2026-09-24T11:45:14Z INFO [stacks] installed-images chaosoom: recorded 1 service(s) (chaosoom=alpine:3.20 (sha256:d9e853e87e55…))",
"2026-09-24T11:45:14Z INFO [stacks] pin chaosoom: chaosoom=alpine:3.20",
"2026-09-24T11:45:17Z INFO [stacks] Stack chaosoom post-start status:",
"2026-09-24T11:45:17Z INFO [stacks] chaosoom alpine:3.20 running Up 3 seconds",
"2026-09-24T11:46:00Z INFO [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false)",
"2026-09-24T11:46:00Z INFO [scheduler] Registered periodic job: deadapp-check (every 30s)",
"2026-09-24T11:46:00Z INFO [scheduler] Registered periodic job: backup-cache (every 5m0s)",
"2026-09-24T11:46:00Z INFO [scheduler] Daily job tier2-backup scheduled for 2026-09-24 14:20 CEST",
"2026-09-24T11:46:00Z INFO [scheduler] Daily job offbox-backup scheduled for 2026-09-24 15:05 CEST",
"2026-09-24T11:46:01Z INFO [backup] Found 9 DB dump files across drives",
"2026-09-24T11:46:01Z WARN [monitor] Temperature threshold breached: 81°C (limit: 75°C)",
"2026-09-24T11:46:01Z WARN [api] Unauthorized request to /api/stacks/chaosoom from 172.18.0.6:51320",
"2026-09-24T11:46:01Z INFO [backup] Discovered 3 databases",
"2026-09-24T11:46:01Z INFO [backup] Recovery unit captured for chaosoom → /mnt/sys_drive/felhom-data/backups/primary/chaosoom (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0)",
"2026-09-24T11:46:01Z INFO [backup] Backup status cache refreshed",
"2026-09-24T11:46:25Z INFO [bootrecon] \"gokapi\" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T10:37:48Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery",
"2026-09-24T11:47:31Z WARN [deadapp] chaosoom: container chaosoom was OOM-killed (started 2026-09-24T11:47:10.100857309Z; kills 15, limit 32M, peak 32M)",
"2026-09-24T11:48:01Z WARN [deadapp] chaosoom: container chaosoom was OOM-killed (started 2026-09-24T11:47:10.100857309Z; kills 38, limit 32M, peak 32M)",
"2026-09-24T11:48:01Z ERROR [notify] chaosoom: container chaosoom OOM STORM — 38 kills in 30 min (limit 32M, peak 32M)",
"2026-09-24T11:48:01Z WARN [deadapp] chaosoom: oom_storm — 23 in 30m0s; STOPPING it (decision 28)",
"2026-09-24T11:48:01Z INFO [stacks] Stopping stack: chaosoom",
"2026-09-24T11:48:11Z INFO [stacks] Stack chaosoom stopped successfully (took 10.3s)",
"2026-09-24T11:48:11Z WARN [settings] restore hold SET for chaosoom — the app stays stopped until it is cleared",
"2026-09-24T11:48:11Z WARN [backup] chaosoom is STOPPED by the box: oom_storm (trip 1 within 24h0m0s) — Start gives it one more try (decision 28)"
],
"undo_copies_left": "0"
}
@@ -0,0 +1,11 @@
13:45:08 ==== ROUND 1: oom_app on chaosoom x power_cut (2026-09-24T11:45:08Z)
13:45:13 deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
13:45:13 + 4.8s chaosoom: deployed=True state=not_deployed updating=False phase=None hold=None
13:45:15 + 6.8s chaosoom: deployed=True state=running updating=False phase=None hold=None
13:45:33 >>> ARMED accident power_cut (20 s after the install)
13:45:55 + 46.5s chaosoom: deployed=None state=None updating=None phase=None hold=None
13:46:01 + 53.0s chaosoom: deployed=True state=restarting updating=False phase=None hold=None
13:46:05 + 57.1s chaosoom: deployed=True state=running updating=False phase=None hold=None
13:48:13 + 184.7s chaosoom: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop
13:48:13 >>> accident done: {'kind': 'power_cut', 'cmd': 'pct stop 9202; pct start 9202', 'fired_at': '13:45:41', 'result': 'stop_rc=0 start_rc=0 '}
13:48:13 + 184.9s chaosoom: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop
@@ -0,0 +1,12 @@
13:45:08 ==== ROUND 1: oom_app on chaosoom x power_cut (2026-09-24T11:45:08Z)
13:45:13 deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
13:45:13 + 4.8s chaosoom: deployed=True state=not_deployed updating=False phase=None hold=None
13:45:15 + 6.8s chaosoom: deployed=True state=running updating=False phase=None hold=None
13:45:33 >>> ARMED accident power_cut (20 s after the install)
13:45:55 + 46.5s chaosoom: deployed=None state=None updating=None phase=None hold=None
13:46:01 + 53.0s chaosoom: deployed=True state=restarting updating=False phase=None hold=None
13:46:05 + 57.1s chaosoom: deployed=True state=running updating=False phase=None hold=None
13:48:13 + 184.7s chaosoom: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop
13:48:13 >>> accident done: {'kind': 'power_cut', 'cmd': 'pct stop 9202; pct start 9202', 'fired_at': '13:45:41', 'result': 'stop_rc=0 start_rc=0 '}
13:48:13 + 184.9s chaosoom: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop
13:48:20 ==== ROUND 1 END: steady in 184.9s; readback=None; events=['2026-09-24T11:48:01Z app_oom_storm (error)', '2026-09-24T11:48:11Z app_stopped_unhealthy (warning)']
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,44 @@
{
"round": 2,
"action": "install",
"accident": {
"kind": "docker_restart",
"fired_at": "13:49:08",
"result": "rc=0"
},
"app": "n8n",
"started": "2026-09-24T11:48:29Z",
"collected_by_hand": true,
"runner_stopped": "13:5x — the install was lost to the docker restart; the runner would have waited 25 min for a deploy that no longer existed",
"after": {
"state": {
"deployed": false,
"state": "not_deployed",
"update_phase": null,
"hold_reason": null,
"hold_kind": null,
"update_error": null,
"ladder_steps_left": null
},
"leftovers": "app.yaml\napplied-compose.yml\napplied-meta\ndocker-compose.yml"
},
"readback": null,
"events": [
"2026-09-24T11:59:19Z health_change (warning)"
],
"box_log": [
"2026-09-24T11:49:21Z WARN [api] Unauthorized request to /api/stacks/n8n from 172.18.0.11:52882",
"2026-09-24T11:49:44Z INFO [bootrecon] \"gokapi\" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T10:37:48Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery",
"2026-09-24T11:49:44Z INFO [bootrecon] \"chaosoom\" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T11:48:01Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery",
"2026-09-24T11:54:19Z INFO [scheduler] Running job: backup-cache",
"2026-09-24T11:54:19Z INFO [backup] Found 9 DB dump files across drives",
"2026-09-24T11:54:19Z INFO [backup] Discovered 3 databases",
"2026-09-24T11:54:19Z INFO [backup] Backup status cache refreshed",
"2026-09-24T11:54:19Z INFO [scheduler] Job backup-cache completed (took 201ms)",
"2026-09-24T11:59:19Z INFO [scheduler] Running job: backup-cache",
"2026-09-24T11:59:19Z INFO [backup] Found 9 DB dump files across drives",
"2026-09-24T11:59:19Z INFO [backup] Discovered 3 databases",
"2026-09-24T11:59:19Z INFO [backup] Backup status cache refreshed",
"2026-09-24T11:59:19Z INFO [scheduler] Job backup-cache completed (took 252ms)"
]
}
@@ -0,0 +1,7 @@
13:48:29 ==== ROUND 2: install on n8n x docker_restart (2026-09-24T11:48:29Z)
13:48:30 drill: n8n at the ladder's first from {'n8n': 'n8nio/n8n:2.31.3'}
13:48:42 + 13.0s n8n: deployed=True state=not_deployed updating=False phase=None hold=None
13:48:52 + 23.2s n8n: deployed=True state=deploying updating=False phase=None hold=None
13:49:02 >>> ARMED accident docker_restart (20 s after the install press)
13:49:11 + 41.4s n8n: deployed=None state=None updating=None phase=None hold=None
13:49:21 + 51.7s n8n: deployed=False state=not_deployed updating=False phase=None hold=None
@@ -0,0 +1,7 @@
14:00:08 drill n8n image line: image: n8nio/n8n:2.31.3
14:00:13 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
14:03:44 [1] deployed, controller state=running, pinned={'n8n': 'n8nio/n8n:2.31.3'}
14:03:44 deploy ok=True in 211 s pinned={'n8n': 'n8nio/n8n:2.31.3'}
14:03:45 n8n: /rest/owner/setup http=200
14:03:46 drill: n8n back to the head (2 steps offered)
14:03:57 steps_left=2 badge=[{'title': 'A newer version of this app is available. Select the Update button to start it.', 'text': 'Update available — 1 day ago'}]
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,258 @@
{
"round": 3,
"action": "cutoff_undo_file_app",
"accident": {
"kind": "power_cut",
"cmd": "pct stop 9202; pct start 9202",
"fired_at": "14:04:51",
"result": "stop_rc=0 start_rc=0 "
},
"app": "nextcloud",
"started": "2026-09-24T12:04:09Z",
"before": {
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"hold_kind": null,
"update_error": null,
"ladder_steps_left": null
},
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"page_hu": [
"Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el."
],
"page_en": [
"Support is working on this app, so its data stays: for now you can remove only the app itself."
]
},
"badge_catchup_s": 10.3,
"act": "Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}",
"cutoff": "copy: nextcloud_nextcloud_redis_data.pre-update-20260924T120426Z\ndata",
"armed_at": "14:04:45",
"armed_why": "at verifying",
"phases": [
[
11.7,
"safety-dump"
],
[
14.4,
"pulling"
],
[
15.4,
"copying"
],
[
25.4,
"starting"
],
[
31.7,
"verifying"
],
[
158.4,
"undoing"
],
[
161.5,
"failed"
]
],
"held": {
"update_phase": "failed",
"hold_kind": "update_failed",
"hold_no_whole_copy": null,
"hold_reason": "A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) nextcloud frissítése 2026-09-24 14:06-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: második meghajtó, 2026-09-24 13:04 — ez a másolat a beállításokat, az adatbázist és a fájlokat tartalmazza."
},
"held_page": {
"state": {
"deployed": true,
"state": "stopped",
"update_phase": "failed",
"hold_reason": "A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) nextcloud frissítése 2026-09-24 14:06-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: második meghajtó, 2026-09-24 13:04 — ez a másolat a beállításokat, az adatbázist és a fájlokat tartalmazza.",
"hold_kind": "update_failed",
"update_error": "A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) nextcloud frissítése 2026-09-24 14:06-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: második meghajtó, 2026-09-24 13:04 — ez a másolat a beállításokat, az adatbázist és a fájlokat tartalmazza.",
"ladder_steps_left": null
},
"badges": {
"hu": [
{
"title": "A frissítés nem sikerült, és az automatikus visszaállítás sem.",
"text": "Megállítva — visszaállítás szükséges"
}
],
"en": [
{
"title": "The update did not succeed, and the automatic undo did not either.",
"text": "Stopped — restore needed"
}
]
},
"page_hu": [
"Temperature high: 84°C (hwmon2) Rendszermonitor →",
"+ 1 további figyelmeztetés →",
"A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) nextcloud frissítése 2026-09-24 14:06-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: második meghajtó, 2026-09-2",
"Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el."
],
"page_en": [
"Temperature high: 84°C (hwmon2) System monitor →",
"+ 1 more warning →",
"The update did not succeed, and the automatic undo did not either. The data is as the new version left it. The update of nextcloud at 2026-09-24 14:06 did not succeed, and the app did not start on the new version. The app stays stopped for safety, so that its data is not damaged. It can be restored on the Backups page from this backup: second drive, 2026-09-24 13:04 — this copy holds the settings,",
"Support is working on this app, so its data stays: for now you can remove only the app itself."
]
},
"whole_restore_press": "302",
"whole_restore": {
"op": "tier2-whole-restore",
"stack": "nextcloud",
"ok": true,
"message": "A(z) nextcloud: 3 adatkötet és az adatbázis visszaállítva — az alkalmazás újraindult. A meghajtó fájljai: 0 visszahozva, 0 kicserélve (a régebbi élő példány megmaradt mellette, .felhom-… végződéssel), 0 újabb példány érintetlenül hagyva, 142 változatlan. Fájl nem lett törölve.",
"finished_at": "2026-09-24T12:07:31.638297502Z"
},
"controller_back_s": 0.2,
"time_to_steady_s": 203.9,
"after": {
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"hold_kind": null,
"update_error": null,
"ladder_steps_left": null
},
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"page_hu": [
"Temperature high: 84°C (hwmon2) Rendszermonitor →",
"+ 1 további figyelmeztetés →",
"Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el."
],
"page_en": [
"Temperature high: 84°C (hwmon2) System monitor →",
"+ 1 more warning →",
"Support is working on this app, so its data stays: for now you can remove only the app itself."
]
},
"readback": {
"A": true,
"files": [
{
"felhom-seed-0-e19728.txt": true,
"felhom-seed-2-8620d3.txt": true
},
"404"
]
},
"events": [],
"box_log": [
"2026-09-24T12:05:09Z INFO [scheduler] Daily job offbox-backup scheduled for 2026-09-24 15:05 CEST",
"2026-09-24T12:05:09Z INFO [stacks] update nextcloud: resuming after a controller restart — `up -d` then the health wait",
"2026-09-24T12:05:09Z INFO [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping ensure (held by drive gate)",
"2026-09-24T12:05:09Z INFO [backup] Found 10 DB dump files across drives",
"2026-09-24T12:05:10Z INFO [web] FileBrowser: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping userdata skeleton",
"2026-09-24T12:05:10Z WARN [monitor] Temperature threshold breached: 84°C (limit: 75°C)",
"2026-09-24T12:05:10Z INFO [backup] Discovered 3 databases",
"2026-09-24T12:05:10Z INFO [backup] Backup status cache refreshed",
"2026-09-24T12:05:15Z WARN [api] Unauthorized request to /api/stacks/nextcloud from 172.18.0.10:33128",
"2026-09-24T12:05:16Z INFO [stacks] update nextcloud: phase verifying",
"2026-09-24T12:05:19Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:05:21Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:05:26Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:05:31Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:05:34Z INFO [bootrecon] \"gokapi\" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T10:37:48Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery",
"2026-09-24T12:05:34Z INFO [bootrecon] \"chaosoom\" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T11:48:01Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery",
"2026-09-24T12:05:36Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:05:41Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:05:46Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:05:51Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:05:56Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:06:02Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:06:07Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:06:12Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:06:17Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:06:22Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:06:27Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:06:32Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:06:37Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:06:42Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:06:47Z WARN Health probe nextcloud: API GET :8999/status.php → Get \"http://nextcloud:8999/status.php\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-24T12:06:47Z ERROR [stacks] update nextcloud FAILED after the new version was started: not healthy: not healthy within 1m30s (last: health check failing)",
"2026-09-24T12:06:47Z INFO [stacks] update nextcloud: kept 13773 bytes of the app's own log at /opt/docker/stacks/nextcloud/hold-logs/20260924T120647Z/compose-logs.txt before stopping it (R-621)",
"2026-09-24T12:06:47Z INFO [stacks] update nextcloud: phase undoing",
"2026-09-24T12:06:47Z WARN [stacks] update nextcloud: UNDO — putting back the previous version and its 3 volume copy(ies) (reason: not healthy: not healthy within 1m30s (last: health check failing))",
"2026-09-24T12:06:50Z ERROR [stacks] update nextcloud: the undo copy nextcloud_nextcloud_redis_data.pre-update-20260924T120426Z has no finished-marker — it is cut off or missing; NOTHING is put back",
"2026-09-24T12:06:50Z ERROR [stacks] update nextcloud: the UNDO failed too (untouched) — HOLDING the app; the undo copies are kept: [{nextcloud_nextcloud_db_data nextcloud_nextcloud_db_data.pre-update-20260924T120426Z} {nextcloud_nextcloud_html nextcloud_nextcloud_html.pre-update-20260924T120426Z} {nextcloud_nextcloud_redis_da",
"2026-09-24T12:06:50Z WARN [settings] restore hold SET for nextcloud — the app stays stopped until it is cleared",
"2026-09-24T12:06:50Z WARN [backup] nextcloud is HELD STOPPED after a failed update (restore point: tier 2 \"második meghajtó\", 2026-09-24T11:04:21Z; holds: \"a beállításokat, az adatbázist és a fájlokat tartalmazza\"; undo: \"untouched\")",
"2026-09-24T12:06:50Z WARN [settings] restore hold SET for nextcloud — the app stays stopped until it is cleared",
"2026-09-24T12:06:50Z INFO [stacks] update nextcloud: event app_update_held (hold recorded: true)",
"2026-09-24T12:06:52Z INFO [sync] Updated nextcloud/.felhom.yml",
"2026-09-24T12:06:52Z INFO [api] Catalog sync completed: Sablonok frissítve — frissítve: nextcloud",
"2026-09-24T12:06:56Z WARN [web] Tier-2 WHOLE restore requested (async, files + database): stack=nextcloud from 172.18.0.10:33128",
"2026-09-24T12:06:56Z WARN [backup] WHOLE restore for nextcloud from the second drive /mnt/sys_drive/felhom-data/backups/secondary/nextcloud: files by the four rules (never delete, never overwrite newer), then the unit",
"2026-09-24T12:06:56Z INFO [stacks] Stopping stack: nextcloud",
"2026-09-24T12:06:56Z INFO [stacks] Stack nextcloud stopped successfully (took 0.1s)",
"2026-09-24T12:06:57Z INFO [backup] whole restore nextcloud: files restored=0 replaced=0 (live kept beside as *.felhom-20260924T120656Z) kept-newer=0 unchanged=142",
"2026-09-24T12:06:57Z INFO [backup] Restoring nextcloud from recovery unit /mnt/sys_drive/felhom-data/backups/secondary/nextcloud/recovery-unit: images=3, secrets recovered=3/3, data_keys=0",
"2026-09-24T12:06:57Z INFO [stacks] Stopping stack: nextcloud",
"2026-09-24T12:06:57Z INFO [stacks] Stack nextcloud stopped successfully (took 0.1s)",
"2026-09-24T12:06:57Z INFO [backup] Restoring Docker volume nextcloud_nextcloud_db_data for nextcloud",
"2026-09-24T12:06:58Z INFO [backup] Restoring Docker volume nextcloud_nextcloud_html for nextcloud",
"2026-09-24T12:07:07Z INFO [backup] Restoring Docker volume nextcloud_nextcloud_redis_data for nextcloud",
"2026-09-24T12:07:07Z INFO [backup] Restored 3 Docker volume(s) for nextcloud",
"2026-09-24T12:07:07Z INFO [stacks] Redeploying nextcloud from recovery unit with 7 env vars",
"2026-09-24T12:07:07Z INFO [stacks] pin nextcloud: nextcloud=nextcloud:34.0.4-apache, nextcloud-db=mariadb:12.3, nextcloud-redis=redis:7-alpine",
"2026-09-24T12:07:07Z INFO [stacks] Starting stack nextcloud services only: [nextcloud-db]",
"2026-09-24T12:07:07Z INFO [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping ensure (held by drive gate)",
"2026-09-24T12:07:08Z INFO [stacks] Stack nextcloud services [nextcloud-db] started (took 0.4s)",
"2026-09-24T12:07:08Z INFO [backup] Discovered 3 databases",
"2026-09-24T12:07:08Z INFO [backup] Restore nextcloud: replaying DB dump into nextcloud-db (mariadb)",
"2026-09-24T12:07:17Z INFO [backup] Imported DB dump nextcloud-mariadb.sql into nextcloud-db (mariadb)",
"2026-09-24T12:07:17Z INFO [backup] Restore nextcloud: replayed 1 DB dump(s)",
"2026-09-24T12:07:17Z INFO [stacks] Starting stack: nextcloud",
"2026-09-24T12:07:17Z INFO [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping ensure (held by drive gate)",
"2026-09-24T12:07:19Z WARN Health probe nextcloud: API GET :80/status.php → Get \"http://nextcloud-db:80/status.php\": dial tcp: lookup nextcloud-db on 127.0.0.11:53: no such host",
"2026-09-24T12:07:23Z INFO [stacks] Stack nextcloud started successfully (took 6.2s)",
"2026-09-24T12:07:23Z INFO [stacks] installed-images nextcloud: recorded 3 service(s) (nextcloud=nextcloud:34.0.4-apache (sha256:a5ace30c695a…), nextcloud-db=mariadb:12.3 (sha256:805c8e104bd5…), nextcloud-redis=redis:7-alpine (sha256:c35af3bbcef5…))",
"2026-09-24T12:07:26Z INFO [stacks] Stack nextcloud post-start status:",
"2026-09-24T12:07:26Z INFO [stacks] nextcloud nextcloud:34.0.4-apache@sha256:a5ace30c695afe48c2c406e940ee7886a81e13fa382e57cd68b2416d1a66914c running Up 3 seconds (health: starting)",
"2026-09-24T12:07:26Z INFO [stacks] nextcloud-db mariadb:12.3@sha256:805c8e104bd563d5bfa24fadd3f31cd419ea859cb5277f32b5dbf2db714f9ed1 running Up 18 seconds (healthy)",
"2026-09-24T12:07:26Z INFO [stacks] nextcloud-redis redis:7-alpine@sha256:c35af3bbcef51a62c8bae5a9a563c6f1b60d7ebaea4cb5a3ccbcc157580ae098 running Up 9 seconds (healthy)",
"2026-09-24T12:07:31Z INFO [backup] Restore-from-unit completed: nextcloud — 3 volume(s) of 3 listed, 1 database(s) of 1 listed",
"2026-09-24T12:07:31Z INFO [settings] restore hold CLEARED for nextcloud",
"2026-09-24T12:07:31Z INFO [backup] nextcloud: restore completed — the update hold (set 2026-09-24T12:06:50Z) is CLEARED",
"2026-09-24T12:07:31Z INFO [backup] nextcloud: primary unit already carries data — left untouched (R-403 never overwrites a richer package with a poorer one)",
"2026-09-24T12:07:31Z INFO [web] Tier-2 whole restore completed (async): stack=nextcloud in 35.07797221s (files restored 0, replaced 0, kept-newer 0, unchanged 142; volumes 3/3, dbs 1/1)"
],
"undo_copies_left": "9"
}
@@ -0,0 +1,25 @@
14:04:09 ==== ROUND 3: cutoff_undo_file_app on nextcloud x power_cut (2026-09-24T12:04:09Z)
14:04:10 drill: nextcloud: failing step redis:7-alpine -> redis:7.4.0-alpine + probe 8999
14:04:20 [sync] the badge needed 10.3s and 2 sync+rescan rounds to catch up to redis:7.4.0-alpine — R-607's window, measured
14:04:21 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
14:04:21 + 11.7s phase=safety-dump
14:04:23 + 14.4s phase=pulling
14:04:24 + 15.4s phase=copying
14:04:34 + 25.4s phase=starting
14:04:41 + 31.7s phase=verifying
14:04:45 >>> finished-marker removed from the NEWEST undo copy:
copy: nextcloud_nextcloud_redis_data.pre-update-20260924T120426Z
data
14:04:45 >>> ARMED accident power_cut (at verifying)
14:06:47 + 158.4s phase=undoing
14:06:50 + 161.5s phase=failed
14:06:50 + 161.6s nextcloud: deployed=True state=stopped updating=False phase=failed hold=update_failed
14:06:51 drill: nextcloud: back to redis:7-alpine and its real probe
14:06:56 whole restore (the second drive) -> 302
14:07:33 whole restore: {'op': 'tier2-whole-restore', 'stack': 'nextcloud', 'ok': True, 'message': 'A(z) nextcloud: 3 adatkötet és az adatbázis visszaállítva — az alkalmazás újraindult. A meghajtó fájljai: 0 visszahozva, 0 kicserélve (a régebbi élő példány megmaradt mellette, .felhom-… végződéssel), 0 újabb példány érintet
14:07:33 + 203.7s nextcloud: deployed=True state=running updating=False phase=None hold=None
14:07:33 >>> accident done: {'kind': 'power_cut', 'cmd': 'pct stop 9202; pct start 9202', 'fired_at': '14:04:51', 'result': 'stop_rc=0 start_rc=0 '}
14:07:33 + 203.9s nextcloud: deployed=True state=running updating=False phase=None hold=None
14:07:41 nextcloud: readback of the seeded user found=True
14:07:42 nextcloud files read back: 2/2 (negative control http=404)
@@ -0,0 +1,26 @@
14:04:09 ==== ROUND 3: cutoff_undo_file_app on nextcloud x power_cut (2026-09-24T12:04:09Z)
14:04:10 drill: nextcloud: failing step redis:7-alpine -> redis:7.4.0-alpine + probe 8999
14:04:20 [sync] the badge needed 10.3s and 2 sync+rescan rounds to catch up to redis:7.4.0-alpine — R-607's window, measured
14:04:21 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
14:04:21 + 11.7s phase=safety-dump
14:04:23 + 14.4s phase=pulling
14:04:24 + 15.4s phase=copying
14:04:34 + 25.4s phase=starting
14:04:41 + 31.7s phase=verifying
14:04:45 >>> finished-marker removed from the NEWEST undo copy:
copy: nextcloud_nextcloud_redis_data.pre-update-20260924T120426Z
data
14:04:45 >>> ARMED accident power_cut (at verifying)
14:06:47 + 158.4s phase=undoing
14:06:50 + 161.5s phase=failed
14:06:50 + 161.6s nextcloud: deployed=True state=stopped updating=False phase=failed hold=update_failed
14:06:51 drill: nextcloud: back to redis:7-alpine and its real probe
14:06:56 whole restore (the second drive) -> 302
14:07:33 whole restore: {'op': 'tier2-whole-restore', 'stack': 'nextcloud', 'ok': True, 'message': 'A(z) nextcloud: 3 adatkötet és az adatbázis visszaállítva — az alkalmazás újraindult. A meghajtó fájljai: 0 visszahozva, 0 kicserélve (a régebbi élő példány megmaradt mellette, .felhom-… végződéssel), 0 újabb példány érintet
14:07:33 + 203.7s nextcloud: deployed=True state=running updating=False phase=None hold=None
14:07:33 >>> accident done: {'kind': 'power_cut', 'cmd': 'pct stop 9202; pct start 9202', 'fired_at': '14:04:51', 'result': 'stop_rc=0 start_rc=0 '}
14:07:33 + 203.9s nextcloud: deployed=True state=running updating=False phase=None hold=None
14:07:41 nextcloud: readback of the seeded user found=True
14:07:42 nextcloud files read back: 2/2 (negative control http=404)
14:07:49 ==== ROUND 3 END: steady in 203.9s; readback={'A': True, 'files': ({'felhom-seed-0-e19728.txt': True, 'felhom-seed-2-8620d3.txt': True}, '404')}; events=[]
@@ -0,0 +1,512 @@
2026/09/24 12:08:51 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.10:33128 (X-Forwarded-For: 192.168.0.180)
2026/09/24 12:08:51 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session
2026/09/24 12:08:51 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T12:08:51Z, active_sessions=3
2026/09/24 12:08:51 auth.go:222: [INFO] [web] Login from 172.18.0.10:33128
2026/09/24 12:08:51 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.10:33128
2026/09/24 12:08:51 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.10:33128
2026/09/24 12:08:51 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:33128
2026/09/24 12:08:52 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:33128
2026/09/24 12:08:52 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:33128
2026/09/24 12:08:52 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/wishlist from 172.18.0.10:33128
2026/09/24 12:08:53 router.go:1065: [INFO] [api] Manual catalog sync requested
2026/09/24 12:08:53 sync.go:208: [INFO] [sync] Starting catalog sync
2026/09/24 12:08:53 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main)
2026/09/24 12:08:53 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache
2026/09/24 12:08:53 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main
2026/09/24 12:08:53 sync.go:627: [DEBUG] [sync] Running: git reset --hard origin/main
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaoscrash/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaoscrash/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaosoom/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaosoom/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaosoomb/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] chaosoomb/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:533: [DEBUG] [sync] n8n: catalog has moved past the pin — rendering the stored applied definition
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] n8n/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] navidrome/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] nextcloud/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:533: [DEBUG] [sync] vikunja: catalog has moved past the pin — rendering the stored applied definition
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:533: [DEBUG] [sync] wishlist: catalog has moved past the pin — rendering the stored applied definition
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:416: [INFO] [sync] Updated wishlist/.felhom.yml
2026/09/24 12:08:53 sync.go:565: [DEBUG] [sync] wishlist/.felhom.yml: src=cb6beaf058c0066c, dst=cb6beaf058c0066c (changed)
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped
2026/09/24 12:08:53 sync.go:440: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:08:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/09/24 12:08:53 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/09/24 12:08:53 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection
2026/09/24 12:08:53 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available)
2026/09/24 12:08:53 sync.go:244: [DEBUG] [sync] Post-sync hook: triggering missing field injection for 1 stack(s): [wishlist]
2026/09/24 12:08:53 deploy.go:1104: [DEBUG] [stacks] InjectMissingFields: checking 1 stacks
2026/09/24 12:08:53 deploy.go:1126: [DEBUG] [stacks] InjectMissingFields: checking stack wishlist — 2 deploy fields, 2 existing env vars
2026/09/24 12:08:53 deploy.go:1189: [INFO] [stacks] InjectMissingFields: processed 1 stacks
2026/09/24 12:08:53 sync.go:263: [INFO] [sync] Catalog sync complete
2026/09/24 12:08:53 router.go:1071: [INFO] [api] Catalog sync completed: Sablonok frissítve — frissítve: wishlist
2026/09/24 12:08:55 router.go:362: [INFO] [api] Manual stack rescan requested
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:08:55 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/09/24 12:08:55 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/09/24 12:08:55 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection
2026/09/24 12:08:55 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available)
2026/09/24 12:08:55 router.go:369: [INFO] [api] Stack rescan completed: 58 stacks found
2026/09/24 12:08:57 router.go:591: [INFO] [api] update requested for stack: wishlist
2026/09/24 12:08:57 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5427MB avail≈20471MB
2026/09/24 12:08:57 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24277336 → total=25898MB avail=20471MB used=5427MB (21.0%)
2026/09/24 12:08:58 deploy.go:1250: [INFO] [stacks] Memory check: total=25898MB, reserved=384MB, usable=25514MB, committed_used=1698MB, new_req=120MB, remaining=23696MB
2026/09/24 12:08:58 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%)
2026/09/24 12:08:58 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5446MB avail≈20452MB
2026/09/24 12:08:58 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24255092 → total=25898MB avail=20452MB used=5446MB (21.0%)
2026/09/24 12:08:58 deploy.go:1250: [INFO] [stacks] Memory check: total=25898MB, reserved=384MB, usable=25514MB, committed_used=1698MB, new_req=120MB, remaining=23696MB
2026/09/24 12:08:58 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%)
2026/09/24 12:08:58 update.go:512: [INFO] [stacks] update wishlist: accepted — guarded update started
2026/09/24 12:08:58 update.go:1260: [INFO] [stacks] update wishlist: phase checking
2026/09/24 12:08:58 update.go:762: [INFO] [stacks] update wishlist: ladder — the installed version wishlist=ghcr.io/cmintey/wishlist:v0.67.1 matches no update_ladder entry (1 entries) — an app older than the ladder has no record to climb; the catalog's current definition
2026/09/24 12:08:58 update.go:777: [INFO] [stacks] update wishlist: no usable copy on any tier — younger than 1m0s and not older than this install's deploy (2026-09-24T11:14:25Z) (found: Tier 2 (second drive) at 2026-09-24T11:18:44Z (50m0s old); Tier 1 (own recovery unit) at 2026-09-24T11:20:55Z (48m0s old)) — backing up first
2026/09/24 12:08:58 update.go:1260: [INFO] [stacks] update wishlist: phase backing-up
2026/09/24 12:08:58 update_guard.go:360: [INFO] [backup] update pre-backup for wishlist: starting (DB dump → volume dump → unit capture → Tier 2)
2026/09/24 12:08:58 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%)
2026/09/24 12:08:58 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers
2026/09/24 12:08:58 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 7a34056c6ac0 nextcloud nextcloud nextcloud:34.0.4-apache
3a9300356092 nextcloud-redis nextcloud redis:7-alpine
a2b3dc9582ee nextcloud-db nextcloud mariadb:12.3
115834f20aff felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1
49227c9e347d n8n n8n n8nio/n8n:2.31.3
557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0
8ed284296786 romm-db romm mariadb:11.8
0a82332f8e1c romm romm rommapp/romm:5.3.1
9ec77cdb422a romm-redis romm redis:7-alpine
d9846695ae0d wishlist wishlist ghcr.io/cminte...
2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database)
2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database)
2026/09/24 12:08:58 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=a2b3dc9582ee)
2026/09/24 12:08:58 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud
2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database)
2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container n8n (image=n8nio/n8n:2.31.3, not a database)
2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database)
2026/09/24 12:08:58 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786)
2026/09/24 12:08:58 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm
2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database)
2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database)
2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database)
2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database)
2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database)
2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database)
2026/09/24 12:08:58 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973)
2026/09/24 12:08:58 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless")
2026/09/24 12:08:58 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless
2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database)
2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database)
2026/09/24 12:08:58 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database)
2026/09/24 12:08:58 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 14 non-DB container(s)
2026/09/24 12:08:58 dbdump.go:208: [INFO] [backup] Discovered 3 databases
2026/09/24 12:08:58 backup.go:920: [INFO] [backup] Stopping wishlist for safe volume dump
2026/09/24 12:08:58 manager.go:1283: [DEBUG] [stacks] StopStack wishlist: current state=running deployed=true containers=1
2026/09/24 12:08:58 manager.go:1286: [INFO] [stacks] Stopping stack: wishlist
2026/09/24 12:08:58 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:08:58 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/wishlist)
2026/09/24 12:08:58 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.4s)
2026/09/24 12:08:58 manager.go:1295: [INFO] [stacks] Stack wishlist stopped successfully (took 0.4s)
2026/09/24 12:08:58 backup.go:796: [DEBUG] [backup] Dumping volume wishlist_wishlist_data for wishlist
2026/09/24 12:08:59 backup.go:821: [INFO] [backup] Volume dump: wishlist/wishlist_wishlist_data → 302.0 KB
2026/09/24 12:08:59 backup.go:796: [DEBUG] [backup] Dumping volume wishlist_wishlist_uploads for wishlist
2026/09/24 12:08:59 backup.go:821: [INFO] [backup] Volume dump: wishlist/wishlist_wishlist_uploads → 1.5 KB
2026/09/24 12:08:59 backup.go:930: [INFO] [backup] Restarting wishlist after volume dump
2026/09/24 12:08:59 manager.go:1194: [DEBUG] [stacks] StartStack wishlist: current state=stopped deployed=true
2026/09/24 12:08:59 manager.go:1197: [INFO] [stacks] Starting stack: wishlist
2026/09/24 12:08:59 manager.go:1204: [DEBUG] [stacks] StartStack wishlist: prepared 8 env vars for compose
2026/09/24 12:08:59 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:08:59 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/wishlist)
2026/09/24 12:08:59 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:08:59 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:08:59 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:08:59 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container)
2026/09/24 12:08:59 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:08:59 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 12:08:59 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.4s)
2026/09/24 12:08:59 manager.go:1212: [INFO] [stacks] Stack wishlist started successfully (took 0.4s)
2026/09/24 12:09:00 installed.go:409: [DEBUG] [stacks] installed-images wishlist: unchanged (1 service(s)) — app.yaml not rewritten
2026/09/24 12:09:00 update_guard.go:410: [INFO] [backup] update pre-backup for wishlist: volume dump OK
2026/09/24 12:09:00 recovery_unit.go:224: [INFO] [backup] Recovery unit captured for wishlist → /mnt/sys_drive/felhom-data/backups/primary/wishlist (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0)
2026/09/24 12:09:00 update_guard.go:416: [INFO] [backup] update pre-backup for wishlist: recovery unit captured (0 database dump(s))
2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:09:00 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:09:00 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (18154 bytes)
2026/09/24 12:09:00 settings.go:847: [INFO] [settings] Settings saved
2026/09/24 12:09:00 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event crossdrive_completed (severity info) — further crossdrive_completed events are logged at DEBUG only
2026/09/24 12:09:00 tier2.go:425: [INFO] [backup] Tier 2 copied wishlist → /mnt/felhom-drives/scratch_hdd/backups/secondary/wishlist (323.7 KB, 0 leg(s), 0s)
2026/09/24 12:09:00 update_guard.go:425: [INFO] [backup] update pre-backup for wishlist: complete in 2.015s
2026/09/24 12:09:00 update.go:792: [INFO] [stacks] update wishlist: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-24T12:09:00Z
2026/09/24 12:09:00 update.go:1260: [INFO] [stacks] update wishlist: phase safety-dump
2026/09/24 12:09:00 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers
2026/09/24 12:09:00 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: 08ac8b284e25 wishlist wishlist ghcr.io/cmintey/wishlist:v0.67.1
7a34056c6ac0 nextcloud nextcloud nextcloud:34.0.4-apache
3a9300356092 nextcloud-redis nextcloud redis:7-alpine
a2b3dc9582ee nextcloud-db nextcloud mariadb:12.3
115834f20aff felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.269.1
49227c9e347d n8n n8n n8nio/n8n:2.31.3
557bdb05d3bd vikunja vikunja vikunja/vikunja:2.3.0
8ed284296786 romm-db romm mariadb:11.8
0a82332f8e1c romm romm rommapp/romm:5.3.1
9ec77cdb422a romm-redis r...
2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database)
2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database)
2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database)
2026/09/24 12:09:00 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=a2b3dc9582ee)
2026/09/24 12:09:00 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud
2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database)
2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container n8n (image=n8nio/n8n:2.31.3, not a database)
2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database)
2026/09/24 12:09:00 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=8ed284296786)
2026/09/24 12:09:00 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm
2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database)
2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database)
2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database)
2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database)
2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database)
2026/09/24 12:09:00 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=5da8830bc973)
2026/09/24 12:09:00 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless")
2026/09/24 12:09:00 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless
2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database)
2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database)
2026/09/24 12:09:00 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database)
2026/09/24 12:09:00 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 14 non-DB container(s)
2026/09/24 12:09:00 dbdump.go:208: [INFO] [backup] Discovered 3 databases
2026/09/24 12:09:00 update_guard.go:476: [INFO] [backup] update safety dump for wishlist: the app has no database — nothing to copy (no-op)
2026/09/24 12:09:00 update.go:807: [INFO] [stacks] update wishlist: safety dump done (0 file(s)) []
2026/09/24 12:09:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%)
2026/09/24 12:09:01 undo.go:273: [INFO] [stacks] update wishlist: the undo copy will hold 2 named volume(s), 0.3 MiB
2026/09/24 12:09:01 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/wishlist — 2 env vars, 0 encrypted, 0 sensitive fields
2026/09/24 12:09:01 [INFO] [stacks] SaveAppConfig: saved config for wishlist
2026/09/24 12:09:01 update.go:1260: [INFO] [stacks] update wishlist: phase pinning
2026/09/24 12:09:01 pin.go:373: [INFO] [stacks] update wishlist: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/wishlist/docker-compose.yml (wishlist=ghcr.io/cmintey/wishlist:latest)
2026/09/24 12:09:01 update.go:1260: [INFO] [stacks] update wishlist: phase pulling
2026/09/24 12:09:01 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:09:01 manager.go:1463: [DEBUG] Running: docker compose pull (in /opt/docker/stacks/wishlist)
2026/09/24 12:09:02 manager.go:1483: [DEBUG] Command completed: docker compose pull (took 0.9s)
2026/09/24 12:09:02 update.go:1260: [INFO] [stacks] update wishlist: phase copying
2026/09/24 12:09:02 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:09:02 manager.go:1463: [DEBUG] Running: docker compose stop (in /opt/docker/stacks/wishlist)
2026/09/24 12:09:03 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:09:03 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/wishlist)
2026/09/24 12:09:03 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s)
2026/09/24 12:09:03 manager.go:1543: [INFO] [stacks] Stack wishlist post-start status:
2026/09/24 12:09:03 manager.go:1546: [INFO] [stacks] wishlist ghcr.io/cmintey/wishlist:v0.67.1@sha256:4b89bfb5b57ffb087c33978d21b09048e5c37f4506326e9ccd2705a0a1d86548 running Up 3 seconds (health: starting)
2026/09/24 12:09:09 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5590MB avail≈20308MB
2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24083552 → total=25898MB avail=20308MB used=5590MB (21.6%)
2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%)
2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%)
2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readLoadAvg: raw="2.63 3.61 3.30 8/1545 2224" → 1m=2.63 5m=3.61 15m=3.30
2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/09/24 12:09:09 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 69.8°C (hwmon2)
2026/09/24 12:09:09 info.go:13: [DEBUG] [system] GetInfo done in 71ms — mem=5590MB/25898MB (21.6%), rootDisk=25.5GB/68.4GB (37.3%), load=2.63/3.61/3.30, temp=69.8°C (hwmon2), cpu=47.0%
2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/09/24 12:09:09 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan
2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting
2026/09/24 12:09:09 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 12:09:09 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:09:09 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container)
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=true composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:09:09 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/09/24 12:09:09 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/09/24 12:09:09 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection
2026/09/24 12:09:09 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available)
2026/09/24 12:09:09 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 108ms)
2026/09/24 12:09:12 manager.go:1483: [DEBUG] Command completed: docker compose stop (took 10.4s)
2026/09/24 12:09:12 update.go:1260: [INFO] [stacks] update wishlist: phase copying
2026/09/24 12:09:12 undo.go:423: [INFO] [stacks] update wishlist: copied wishlist_wishlist_data → wishlist_wishlist_data.pre-update-20260924T120912Z in 431ms
2026/09/24 12:09:12 update.go:1260: [INFO] [stacks] update wishlist: phase copying
2026/09/24 12:09:13 undo.go:423: [INFO] [stacks] update wishlist: copied wishlist_wishlist_uploads → wishlist_wishlist_uploads.pre-update-20260924T120912Z in 434ms
2026/09/24 12:09:13 update.go:1260: [INFO] [stacks] update wishlist: phase starting
2026/09/24 12:09:13 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:09:13 manager.go:1463: [DEBUG] Running: docker compose up -d --remove-orphans (in /opt/docker/stacks/wishlist)
2026/09/24 12:09:13 manager.go:1483: [DEBUG] Command completed: docker compose up -d --remove-orphans (took 0.4s)
2026/09/24 12:09:13 update.go:1260: [INFO] [stacks] update wishlist: phase verifying
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,196 @@
{
"round": 4,
"action": "failing_step",
"accident": {
"kind": "controller_killed",
"cmd": "kill -9 of the controller PID (1 of max 3)",
"fired_at": "14:09:22",
"result": "killed pid 2474 rc=0"
},
"app": "wishlist",
"started": "2026-09-24T12:08:51Z",
"before": {
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"hold_kind": null,
"update_error": null,
"ladder_steps_left": null
},
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"page_hu": [
"Temperature high: 84°C (hwmon2) Rendszermonitor →",
"+ 1 további figyelmeztetés →",
"Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el."
],
"page_en": [
"Temperature high: 84°C (hwmon2) System monitor →",
"+ 1 more warning →",
"Support is working on this app, so its data stays: for now you can remove only the app itself."
]
},
"badge_catchup_s": 4.7,
"act": "Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}",
"armed_at": "14:09:13",
"armed_why": "at verifying",
"phases": [
[
6.1,
"backing-up"
],
[
8.2,
"safety-dump"
],
[
9.3,
"pulling"
],
[
10.3,
"copying"
],
[
21.4,
"starting"
],
[
21.9,
"verifying"
],
[
123.9,
"undoing"
],
[
141.8,
"undone"
]
],
"controller_back_s": 0.2,
"time_to_steady_s": 147.7,
"after": {
"state": {
"deployed": true,
"state": "running",
"update_phase": "undone",
"hold_reason": null,
"hold_kind": null,
"update_error": null,
"ladder_steps_left": null
},
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"page_hu": [
"Temperature high: 78°C (hwmon2) Rendszermonitor →",
"+ 1 további figyelmeztetés →",
"A(z) wishlist frissítése 2026-09-24 14:10-kor nem sikerült. A doboz automatikusan visszaállította az előző változatot és az adatokat — semmi nem veszett el.",
"Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el."
],
"page_en": [
"Temperature high: 78°C (hwmon2) System monitor →",
"+ 1 more warning →",
"The update of wishlist at 2026-09-24 14:10 did not succeed. The box put back the previous version and its data automatically — nothing was lost.",
"Support is working on this app, so its data stays: for now you can remove only the app itself."
]
},
"readback": {
"A": true
},
"events": [],
"box_log": [
"2026-09-24T12:08:59Z INFO [stacks] Stack wishlist started successfully (took 0.4s)",
"2026-09-24T12:09:00Z INFO [backup] update pre-backup for wishlist: volume dump OK",
"2026-09-24T12:09:00Z INFO [backup] Recovery unit captured for wishlist → /mnt/sys_drive/felhom-data/backups/primary/wishlist (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0)",
"2026-09-24T12:09:00Z INFO [backup] update pre-backup for wishlist: recovery unit captured (0 database dump(s))",
"2026-09-24T12:09:00Z INFO [backup] Tier 2 copied wishlist → /mnt/felhom-drives/scratch_hdd/backups/secondary/wishlist (323.7 KB, 0 leg(s), 0s)",
"2026-09-24T12:09:00Z INFO [backup] update pre-backup for wishlist: complete in 2.015s",
"2026-09-24T12:09:00Z INFO [stacks] update wishlist: precondition met after the backup — Tier 2 (second drive) copy from 2026-09-24T12:09:00Z",
"2026-09-24T12:09:00Z INFO [stacks] update wishlist: phase safety-dump",
"2026-09-24T12:09:00Z INFO [backup] Discovered 3 databases",
"2026-09-24T12:09:00Z INFO [backup] update safety dump for wishlist: the app has no database — nothing to copy (no-op)",
"2026-09-24T12:09:00Z INFO [stacks] update wishlist: safety dump done (0 file(s)) []",
"2026-09-24T12:09:01Z INFO [stacks] update wishlist: the undo copy will hold 2 named volume(s), 0.3 MiB",
"2026-09-24T12:09:01Z INFO [stacks] update wishlist: phase pinning",
"2026-09-24T12:09:01Z INFO [stacks] update wishlist: pin advanced to /opt/docker/felhom-controller/data/catalog-cache/templates/wishlist/docker-compose.yml (wishlist=ghcr.io/cmintey/wishlist:latest)",
"2026-09-24T12:09:01Z INFO [stacks] update wishlist: phase pulling",
"2026-09-24T12:09:02Z INFO [stacks] update wishlist: phase copying",
"2026-09-24T12:09:03Z INFO [stacks] Stack wishlist post-start status:",
"2026-09-24T12:09:03Z INFO [stacks] wishlist ghcr.io/cmintey/wishlist:v0.67.1@sha256:4b89bfb5b57ffb087c33978d21b09048e5c37f4506326e9ccd2705a0a1d86548 running Up 3 seconds (health: starting)",
"2026-09-24T12:09:24Z WARN [stacks] update recovery: wishlist was interrupted in verifying (started 2026-09-24T12:08:58Z) — the new version may have run; marking it Updating and RESUMING the health wait",
"2026-09-24T12:09:24Z WARN [update] 1 interrupted update(s) will resume after the backup side is wired: [wishlist]",
"2026-09-24T12:09:24Z INFO [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false)",
"2026-09-24T12:09:24Z INFO [scheduler] Registered periodic job: deadapp-check (every 30s)",
"2026-09-24T12:09:24Z INFO [scheduler] Registered periodic job: backup-cache (every 5m0s)",
"2026-09-24T12:09:24Z INFO [scheduler] Daily job tier2-backup scheduled for 2026-09-24 14:20 CEST",
"2026-09-24T12:09:24Z INFO [scheduler] Daily job offbox-backup scheduled for 2026-09-24 15:05 CEST",
"2026-09-24T12:09:24Z INFO [stacks] update wishlist: resuming after a controller restart — `up -d` then the health wait",
"2026-09-24T12:09:24Z INFO [backup] Found 10 DB dump files across drives",
"2026-09-24T12:09:24Z INFO [stacks] update wishlist: phase verifying",
"2026-09-24T12:09:25Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:09:25Z WARN [monitor] Temperature threshold breached: 78°C (limit: 75°C)",
"2026-09-24T12:09:25Z INFO [backup] Discovered 3 databases",
"2026-09-24T12:09:25Z INFO [backup] nextcloud: pruned old undo copy pre-restore-20260924T104416Z-nextcloud-mariadb.sql (keeping the newest 3)",
"2026-09-24T12:09:25Z INFO [backup] Recovery unit captured for nextcloud → /mnt/felhom-drives/scratch_hdd/userdata/nextcloud/backups/primary/nextcloud (images=3, secrets-referenced=3, data_keys=0, portable-carried=2/2, withheld=1)",
"2026-09-24T12:09:25Z INFO [backup] Backup status cache refreshed",
"2026-09-24T12:09:29Z WARN [api] Unauthorized request to /api/stacks/wishlist from 172.18.0.10:35772",
"2026-09-24T12:09:30Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:09:35Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:09:40Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:09:45Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:09:49Z INFO [bootrecon] \"gokapi\" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T10:37:48Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery",
"2026-09-24T12:09:49Z INFO [bootrecon] \"chaosoom\" is a boot orphan by intent but is HELD (held after a failed restore whose rollback also failed (2026-09-24T11:48:01Z) — clear the hold to start it) — NOT starting it; whatever is holding it owns its recovery",
"2026-09-24T12:09:50Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:09:55Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:10:00Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:10:05Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:10:10Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:10:15Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:10:20Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:10:25Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:10:30Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:10:35Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:10:40Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:10:45Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:10:50Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:10:55Z WARN Health probe wishlist: HTTP GET :8999/ → Get \"http://wishlist:8999/\": dial tcp 172.18.0.5:8999: connect: connection refused",
"2026-09-24T12:10:55Z ERROR [stacks] update wishlist FAILED after the new version was started: not healthy: not healthy within 1m30s (last: health check failing)",
"2026-09-24T12:10:55Z INFO [stacks] update wishlist: kept 3084 bytes of the app's own log at /opt/docker/stacks/wishlist/hold-logs/20260924T121055Z/compose-logs.txt before stopping it (R-621)",
"2026-09-24T12:10:55Z INFO [stacks] update wishlist: phase undoing",
"2026-09-24T12:10:55Z WARN [stacks] update wishlist: UNDO — putting back the previous version and its 2 volume copy(ies) (reason: not healthy: not healthy within 1m30s (last: health check failing))",
"2026-09-24T12:10:57Z INFO [stacks] pin wishlist: wishlist=ghcr.io/cmintey/wishlist:v0.67.1",
"2026-09-24T12:11:13Z INFO [stacks] update wishlist: event app_update_undone",
"2026-09-24T12:11:13Z WARN notifier disabled (no hub configured): DROPPED event app_update_undone (severity warning) — further app_update_undone events are logged at DEBUG only",
"2026-09-24T12:11:13Z INFO [stacks] update wishlist: UNDONE in 18s — the previous version is running on the data from before the update (the app's health check passed)",
"2026-09-24T12:11:15Z INFO [sync] Updated wishlist/.felhom.yml",
"2026-09-24T12:11:15Z INFO [api] Catalog sync completed: Sablonok frissítve — frissítve: wishlist"
],
"undo_copies_left": "0"
}
@@ -0,0 +1,17 @@
14:08:51 ==== ROUND 4: failing_step on wishlist x controller_killed (2026-09-24T12:08:51Z)
14:08:53 drill: wishlist: failing step ghcr.io/cmintey/wishlist:v0.67.1 -> ghcr.io/cmintey/wishlist:latest + probe 8999
14:08:58 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
14:08:58 + 6.1s phase=backing-up
14:09:00 + 8.2s phase=safety-dump
14:09:01 + 9.3s phase=pulling
14:09:02 + 10.3s phase=copying
14:09:13 + 21.4s phase=starting
14:09:13 + 21.9s phase=verifying
14:09:13 >>> ARMED accident controller_killed (at verifying)
14:10:55 + 123.9s phase=undoing
14:11:13 + 141.8s phase=undone
14:11:13 + 141.8s wishlist: deployed=True state=running updating=False phase=undone hold=None
14:11:14 drill: wishlist: back to ghcr.io/cmintey/wishlist:v0.67.1 and its real probe
14:11:19 >>> accident done: {'kind': 'controller_killed', 'cmd': 'kill -9 of the controller PID (1 of max 3)', 'fired_at': '14:09:22', 'result': 'killed pid 2474 rc=0'}
14:11:19 + 147.7s wishlist: deployed=True state=running updating=False phase=undone hold=None
14:11:20 wishlist: sign-in as the seeded user type=success ok=True (wrong password refused)
@@ -0,0 +1,18 @@
14:08:51 ==== ROUND 4: failing_step on wishlist x controller_killed (2026-09-24T12:08:51Z)
14:08:53 drill: wishlist: failing step ghcr.io/cmintey/wishlist:v0.67.1 -> ghcr.io/cmintey/wishlist:latest + probe 8999
14:08:58 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
14:08:58 + 6.1s phase=backing-up
14:09:00 + 8.2s phase=safety-dump
14:09:01 + 9.3s phase=pulling
14:09:02 + 10.3s phase=copying
14:09:13 + 21.4s phase=starting
14:09:13 + 21.9s phase=verifying
14:09:13 >>> ARMED accident controller_killed (at verifying)
14:10:55 + 123.9s phase=undoing
14:11:13 + 141.8s phase=undone
14:11:13 + 141.8s wishlist: deployed=True state=running updating=False phase=undone hold=None
14:11:14 drill: wishlist: back to ghcr.io/cmintey/wishlist:v0.67.1 and its real probe
14:11:19 >>> accident done: {'kind': 'controller_killed', 'cmd': 'kill -9 of the controller PID (1 of max 3)', 'fired_at': '14:09:22', 'result': 'killed pid 2474 rc=0'}
14:11:19 + 147.7s wishlist: deployed=True state=running updating=False phase=undone hold=None
14:11:20 wishlist: sign-in as the seeded user type=success ok=True (wrong password refused)
14:11:27 ==== ROUND 4 END: steady in 147.7s; readback={'A': True}; events=[]
@@ -0,0 +1,127 @@
2026/09/24 12:11:35 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.10:35772 (X-Forwarded-For: 192.168.0.180)
2026/09/24 12:11:35 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session
2026/09/24 12:11:35 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T12:11:35Z, active_sessions=3
2026/09/24 12:11:35 auth.go:222: [INFO] [web] Login from 172.18.0.10:35772
2026/09/24 12:11:35 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.10:35772
2026/09/24 12:11:35 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.10:35772
2026/09/24 12:11:35 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/gokapi from 172.18.0.10:35772
2026/09/24 12:11:35 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/gokapi from 172.18.0.10:35772
2026/09/24 12:11:35 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/gokapi from 172.18.0.10:35772
2026/09/24 12:11:35 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/gokapi from 172.18.0.10:35772
2026/09/24 12:11:35 router.go:907: [INFO] [api] Remove requested for stack: gokapi
2026/09/24 12:11:35 delete.go:526: [DEBUG] [stacks] RemoveStack called: name="gokapi", removeHDDData=true, backupPathsToRemove=2
2026/09/24 12:11:35 delete.go:540: [DEBUG] [stacks] RemoveStack gokapi: state=stopped, deployed=true, orphaned=false, deploying=false
2026/09/24 12:11:35 delete.go:597: [INFO] Removing deployed stack: gokapi (removeHDDData=true, hddDeclared=false, backupPaths=2)
2026/09/24 12:11:35 delete.go:609: [DEBUG] [stacks] RemoveStack gokapi: found 0 HDD mounts from compose file
2026/09/24 12:11:35 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, GOKAPI_PASSWORD, SUBDOMAIN, IMPORT_PATH] (9 app + 0 system)
2026/09/24 12:11:35 manager.go:1463: [DEBUG] Running: docker compose down --volumes (in /opt/docker/stacks/gokapi)
2026/09/24 12:11:36 manager.go:1483: [DEBUG] Command completed: docker compose down --volumes (took 0.1s)
2026/09/24 12:11:36 delete.go:623: [DEBUG] [stacks] RemoveStack gokapi: compose down output:
2026/09/24 12:11:44 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:11:44 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:11:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:11:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:11:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:11:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 32s ago, effective interval 5m0s, healthy=true
2026/09/24 12:11:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:11:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:11:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:11:44 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container)
2026/09/24 12:11:44 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:11:44 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 12:11:54 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:11:54 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/09/24 12:11:54 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/09/24 12:11:54 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:11:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:11:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:11:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:11:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:11:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 42s ago, effective interval 5m0s, healthy=true
2026/09/24 12:11:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:11:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:11:54 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container)
2026/09/24 12:11:54 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:11:54 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 12:12:02 delete.go:650: [INFO] [stacks] RemoveStack gokapi: removed volume(s) [gokapi_gokapi_config gokapi_gokapi_data]
2026/09/24 12:12:02 delete.go:707: [DEBUG] [stacks] RemoveStack gokapi: processing 2 backup paths for removal (base=/mnt/sys_drive/felhom-data/backups)
2026/09/24 12:12:02 delete.go:724: [INFO] Removed backup data: /mnt/sys_drive/felhom-data/backups/primary/gokapi (132K)
2026/09/24 12:12:02 delete.go:732: [DEBUG] [stacks] RemoveStack gokapi: removing app.yaml at /opt/docker/stacks/gokapi/app.yaml
2026/09/24 12:12:02 delete.go:749: [INFO] Stack gokapi removed successfully (took 26.6s)
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:12:02 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/09/24 12:12:02 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/09/24 12:12:02 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection
2026/09/24 12:12:02 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available)
2026/09/24 12:12:02 r474_remove_mirrors.go:91: [INFO] [backup] remove gokapi: Tier-2 mirror deleted: /mnt/felhom-drives/scratch_hdd/backups/secondary/gokapi (126.8 KB)
2026/09/24 12:12:02 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17657 bytes)
2026/09/24 12:12:02 settings.go:847: [INFO] [settings] Settings saved
2026/09/24 12:12:02 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_removed (severity info) — further app_removed events are logged at DEBUG only
2026/09/24 12:12:02 lifecycle.go:176: [DEBUG] [integrations] OnStackRemove: stack=gokapi integrationsFound=0
2026/09/24 12:12:04 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:12:04 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 52s ago, effective interval 5m0s, healthy=true
2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:12:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 12:12:04 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container)
@@ -0,0 +1,76 @@
{
"round": 5,
"action": "remove_held",
"accident": "none",
"app": "gokapi",
"started": "2026-09-24T12:11:35Z",
"before": {
"state": {
"deployed": true,
"state": "stopped",
"update_phase": null,
"hold_reason": "Az alkalmazást ismét leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). A Felhom ügyfélszolgálatát értesítettük. Az Indítás gombbal újra megpróbálhatod.",
"hold_kind": "unhealthy_stop",
"update_error": null,
"ladder_steps_left": null
},
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"page_hu": [
"Temperature high: 78°C (hwmon2) Rendszermonitor →",
"+ 1 további figyelmeztetés →",
"Az alkalmazást ismét leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). A Felhom ügyfélszolgálatát értesítettük. Az Indítás gombbal újra megpróbálhatod.",
"Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el."
],
"page_en": [
"Temperature high: 78°C (hwmon2) System monitor →",
"+ 1 more warning →",
"We stopped the app again because it kept crashing (or ran out of memory). Felhom support has been told. Press Start to try again.",
"Support is working on this app, so its data stays: for now you can remove only the app itself."
]
},
"held_before": {
"deployed": true,
"hold_kind": "unhealthy_stop",
"hold_reason": "Az alkalmazást ismét leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). A Felhom ügyfélszolgálatát értesítettük. Az Indítás gombbal újra megpróbálhatod."
},
"act": "remove (data + backups) -> 200 {'ok': True, 'data': {'removed': 'gokapi', 'volumes_removed': ['gokapi_gokapi_config', 'gokapi_gokapi_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalmazás nem tárolt ",
"time_to_steady_s": 26.8,
"after": {
"state": {
"deployed": false,
"state": "not_deployed",
"update_phase": null,
"hold_reason": null,
"hold_kind": null,
"update_error": null,
"ladder_steps_left": null
},
"leftovers": ""
},
"readback": null,
"events": [
"2026-09-24T12:12:02Z app_removed (info)"
],
"box_log": [
"2026-09-24T12:11:35Z INFO [api] Remove requested for stack: gokapi",
"2026-09-24T12:11:35Z INFO Removing deployed stack: gokapi (removeHDDData=true, hddDeclared=false, backupPaths=2)",
"2026-09-24T12:12:02Z INFO [stacks] RemoveStack gokapi: removed volume(s) [gokapi_gokapi_config gokapi_gokapi_data]",
"2026-09-24T12:12:02Z INFO Removed backup data: /mnt/sys_drive/felhom-data/backups/primary/gokapi (132K)",
"2026-09-24T12:12:02Z INFO Stack gokapi removed successfully (took 26.6s)",
"2026-09-24T12:12:02Z INFO [backup] remove gokapi: Tier-2 mirror deleted: /mnt/felhom-drives/scratch_hdd/backups/secondary/gokapi (126.8 KB)"
],
"undo_copies_left": "0"
}
@@ -0,0 +1,3 @@
14:11:35 ==== ROUND 5: remove_held on gokapi x none (2026-09-24T12:11:35Z)
14:12:02 remove (data + backups) -> 200 {'ok': True, 'data': {'removed': 'gokapi', 'volumes_removed': ['gokapi_gokapi_config', 'gokapi_gokapi_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalmazás nem tárolt
14:12:02 + 26.8s gokapi: deployed=False state=not_deployed updating=False phase=None hold=None
@@ -0,0 +1,4 @@
14:11:35 ==== ROUND 5: remove_held on gokapi x none (2026-09-24T12:11:35Z)
14:12:02 remove (data + backups) -> 200 {'ok': True, 'data': {'removed': 'gokapi', 'volumes_removed': ['gokapi_gokapi_config', 'gokapi_gokapi_data'], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalmazás nem tárolt
14:12:02 + 26.8s gokapi: deployed=False state=not_deployed updating=False phase=None hold=None
14:12:13 ==== ROUND 5 END: steady in 26.8s; readback=None; events=['2026-09-24T12:12:02Z app_removed (info)']
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,195 @@
{
"round": 6,
"action": "failing_step",
"accident": "POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 14:12:31",
"app": "navidrome",
"started": "2026-09-24T12:12:20Z",
"before": {
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"hold_kind": null,
"update_error": null,
"ladder_steps_left": null
},
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"page_hu": [
"Temperature high: 78°C (hwmon2) Rendszermonitor →",
"+ 1 további figyelmeztetés →",
"Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el."
],
"page_en": [
"Temperature high: 78°C (hwmon2) System monitor →",
"+ 1 more warning →",
"Support is working on this app, so its data stays: for now you can remove only the app itself."
]
},
"badge_catchup_s": 4.6,
"act": "Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}",
"armed_at": "14:12:31",
"armed_why": "at verifying",
"phases": [
[
5.9,
"backing-up"
],
[
7.5,
"safety-dump"
],
[
8.0,
"pulling"
],
[
9.6,
"copying"
],
[
10.1,
"starting"
],
[
10.6,
"verifying"
],
[
102.0,
"undoing"
],
[
109.9,
"undone"
]
],
"time_to_steady_s": 109.9,
"after": {
"state": {
"deployed": true,
"state": "running",
"update_phase": "undone",
"hold_reason": null,
"hold_kind": null,
"update_error": null,
"ladder_steps_left": null
},
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"page_hu": [
"Temperature high: 78°C (hwmon2) Rendszermonitor →",
"+ 1 további figyelmeztetés →",
"A(z) navidrome frissítése 2026-09-24 14:14-kor nem sikerült. A doboz automatikusan visszaállította az előző változatot és az adatokat — semmi nem veszett el.",
"Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el."
],
"page_en": [
"Temperature high: 78°C (hwmon2) System monitor →",
"+ 1 more warning →",
"The update of navidrome at 2026-09-24 14:14 did not succeed. The box put back the previous version and its data automatically — nothing was lost.",
"Support is working on this app, so its data stays: for now you can remove only the app itself."
]
},
"readback": {
"A": true
},
"events": [],
"box_log": [
"2026-09-24T12:12:31Z INFO [stacks] navidrome deluan/navidrome:latest running Up Less than a second (health: starting)",
"2026-09-24T12:12:31Z INFO [api] Manual app-data backup (DB dump) triggered",
"2026-09-24T12:12:31Z INFO [backup] Starting database dump run",
"2026-09-24T12:12:31Z INFO [backup] Discovered 3 databases",
"2026-09-24T12:12:31Z INFO [backup] Discovered 3 database(s): nextcloud-db(mariadb), romm-db(mariadb), paperless-postgres(postgres)",
"2026-09-24T12:12:32Z INFO [backup] DB dump: nextcloud-db → nextcloud-mariadb.sql (855.4 KB, 490ms, 131 tables)",
"2026-09-24T12:12:32Z INFO [backup] DB dump: romm-db → romm-mariadb.sql (112.9 KB, 306ms, 36 tables)",
"2026-09-24T12:12:33Z INFO [backup] DB dump: paperless-postgres → paperless-ngx-postgres.sql (364.1 KB, 390ms, 72 tables)",
"2026-09-24T12:12:33Z WARN [backup] Skipping volume dump for navidrome — the app is HELD stopped (its restore point is preserved)",
"2026-09-24T12:12:33Z INFO [backup] Stopping nextcloud for safe volume dump",
"2026-09-24T12:12:35Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_db_data → 164.9 MB",
"2026-09-24T12:12:36Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:12:38Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_html → 761.6 MB",
"2026-09-24T12:12:39Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_redis_data → 281.0 KB",
"2026-09-24T12:12:39Z INFO [backup] Restarting nextcloud after volume dump",
"2026-09-24T12:12:41Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:12:45Z INFO [backup] Stopping paperless-ngx for safe volume dump",
"2026-09-24T12:12:46Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:12:51Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:12:53Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_data → 1.0 MB",
"2026-09-24T12:12:54Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_postgres_data → 67.9 MB",
"2026-09-24T12:12:54Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_redis_data → 1.0 MB",
"2026-09-24T12:12:54Z INFO [backup] Restarting paperless-ngx after volume dump",
"2026-09-24T12:12:56Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:13:01Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:13:06Z INFO [backup] Stopping privatebin for safe volume dump",
"2026-09-24T12:13:06Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:13:06Z INFO [backup] Volume dump: privatebin/privatebin_privatebin_data → 1.5 KB",
"2026-09-24T12:13:06Z INFO [backup] Restarting privatebin after volume dump",
"2026-09-24T12:13:07Z INFO [backup] Stopping romm for safe volume dump",
"2026-09-24T12:13:11Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:13:12Z INFO [backup] Volume dump: romm/romm_romm_config → 2.5 KB",
"2026-09-24T12:13:13Z INFO [backup] Volume dump: romm/romm_romm_db_data → 156.4 MB",
"2026-09-24T12:13:14Z INFO [backup] Volume dump: romm/romm_romm_redis_data → 15.5 MB",
"2026-09-24T12:13:14Z INFO [backup] Restarting romm after volume dump",
"2026-09-24T12:13:16Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:13:21Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:13:25Z INFO [backup] Stopping vikunja for safe volume dump",
"2026-09-24T12:13:26Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:13:26Z INFO [backup] Volume dump: vikunja/vikunja_vikunja_data → 1.5 KB",
"2026-09-24T12:13:27Z INFO [backup] Volume dump: vikunja/vikunja_vikunja_db → 2.0 MB",
"2026-09-24T12:13:27Z INFO [backup] Restarting vikunja after volume dump",
"2026-09-24T12:13:28Z INFO [backup] Stopping wishlist for safe volume dump",
"2026-09-24T12:13:29Z INFO [backup] Volume dump: wishlist/wishlist_wishlist_data → 302.0 KB",
"2026-09-24T12:13:30Z INFO [backup] Volume dump: wishlist/wishlist_wishlist_uploads → 1.5 KB",
"2026-09-24T12:13:30Z INFO [backup] Restarting wishlist after volume dump",
"2026-09-24T12:13:31Z WARN [backup] Skipping volume dump for chaosoom — the app is HELD stopped (its restore point is preserved)",
"2026-09-24T12:13:31Z INFO [backup] Stopping n8n for safe volume dump",
"2026-09-24T12:13:31Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:13:33Z INFO [backup] Volume dump: n8n/n8n_n8n_data → 5.4 MB",
"2026-09-24T12:13:33Z INFO [backup] Restarting n8n after volume dump",
"2026-09-24T12:13:35Z INFO [backup] App-data backup completed: 3 databases (1.3 MB total), 7 volume dump(s) (1m3.85s)",
"2026-09-24T12:13:35Z INFO [backup] Recovery unit captured for wishlist → /mnt/sys_drive/felhom-data/backups/primary/wishlist (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0)",
"2026-09-24T12:13:35Z INFO [backup] Recovery unit captured for n8n → /mnt/sys_drive/felhom-data/backups/primary/n8n (images=1, secrets-referenced=1, data_keys=0, portable-carried=1/1, withheld=0)",
"2026-09-24T12:13:37Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:13:42Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:13:47Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:13:52Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:13:57Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:14:02Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.3:8999: connect: connection refused",
"2026-09-24T12:14:02Z ERROR [stacks] update navidrome FAILED after the new version was started: not healthy: not healthy within 1m30s (last: health check failing)",
"2026-09-24T12:14:02Z INFO [stacks] update navidrome: kept 4222 bytes of the app's own log at /opt/docker/stacks/navidrome/hold-logs/20260924T121402Z/compose-logs.txt before stopping it (R-621)",
"2026-09-24T12:14:02Z INFO [stacks] update navidrome: phase undoing",
"2026-09-24T12:14:02Z WARN [stacks] update navidrome: UNDO — putting back the previous version and its 1 volume copy(ies) (reason: not healthy: not healthy within 1m30s (last: health check failing))",
"2026-09-24T12:14:04Z INFO [stacks] pin navidrome: navidrome=deluan/navidrome:0.64.1",
"2026-09-24T12:14:04Z INFO [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/navidrome not mounted — skipping ensure (held by drive gate)",
"2026-09-24T12:14:10Z INFO [stacks] update navidrome: event app_update_undone",
"2026-09-24T12:14:10Z INFO [stacks] update navidrome: UNDONE in 8s — the previous version is running on the data from before the update (the app's health check passed)",
"2026-09-24T12:14:12Z INFO [sync] Updated navidrome/.felhom.yml",
"2026-09-24T12:14:12Z INFO [api] Catalog sync completed: Sablonok frissítve — frissítve: navidrome"
],
"undo_copies_left": "0"
}
@@ -0,0 +1,16 @@
14:12:20 ==== ROUND 6: failing_step on navidrome x whole_box_backup (2026-09-24T12:12:20Z)
14:12:22 drill: navidrome: failing step deluan/navidrome:0.64.1 -> deluan/navidrome:latest + probe 8999
14:12:26 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
14:12:26 + 5.9s phase=backing-up
14:12:28 + 7.5s phase=safety-dump
14:12:29 + 8.0s phase=pulling
14:12:30 + 9.6s phase=copying
14:12:31 + 10.1s phase=starting
14:12:31 + 10.6s phase=verifying
14:12:31 >>> ARMED accident whole_box_backup (at verifying)
14:12:31 >>> POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 14:12:31
14:14:03 + 102.0s phase=undoing
14:14:10 + 109.9s phase=undone
14:14:10 + 109.9s navidrome: deployed=True state=running updating=False phase=undone hold=None
14:14:11 drill: navidrome: back to deluan/navidrome:0.64.1 and its real probe
14:14:16 navidrome: login as the seeded user http=200 ok=True
@@ -0,0 +1,17 @@
14:12:20 ==== ROUND 6: failing_step on navidrome x whole_box_backup (2026-09-24T12:12:20Z)
14:12:22 drill: navidrome: failing step deluan/navidrome:0.64.1 -> deluan/navidrome:latest + probe 8999
14:12:26 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
14:12:26 + 5.9s phase=backing-up
14:12:28 + 7.5s phase=safety-dump
14:12:29 + 8.0s phase=pulling
14:12:30 + 9.6s phase=copying
14:12:31 + 10.1s phase=starting
14:12:31 + 10.6s phase=verifying
14:12:31 >>> ARMED accident whole_box_backup (at verifying)
14:12:31 >>> POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 14:12:31
14:14:03 + 102.0s phase=undoing
14:14:10 + 109.9s phase=undone
14:14:10 + 109.9s navidrome: deployed=True state=running updating=False phase=undone hold=None
14:14:11 drill: navidrome: back to deluan/navidrome:0.64.1 and its real probe
14:14:16 navidrome: login as the seeded user http=200 ok=True
14:14:24 ==== ROUND 6 END: steady in 109.9s; readback={'A': True}; events=[]
@@ -0,0 +1,622 @@
2026/09/24 12:14:30 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.10:35772 (X-Forwarded-For: 192.168.0.180)
2026/09/24 12:14:30 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session
2026/09/24 12:14:30 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T12:14:30Z, active_sessions=5
2026/09/24 12:14:30 auth.go:222: [INFO] [web] Login from 172.18.0.10:35772
2026/09/24 12:14:30 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.10:35772
2026/09/24 12:14:30 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.10:35772
2026/09/24 12:14:30 router.go:1065: [INFO] [api] Manual catalog sync requested
2026/09/24 12:14:32 router.go:362: [INFO] [api] Manual stack rescan requested
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=false composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:14:32 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/09/24 12:14:32 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/09/24 12:14:32 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection
2026/09/24 12:14:32 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (9 deployed, 49 available)
2026/09/24 12:14:32 router.go:369: [INFO] [api] Stack rescan completed: 58 stacks found
2026/09/24 12:14:34 router.go:431: [INFO] [api] Deploy requested for stack: chaoscrash
2026/09/24 12:14:34 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.3GB (37.3%)
2026/09/24 12:14:34 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:14:34 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 25s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:34 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container)
2026/09/24 12:14:34 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5475MB avail≈20423MB
2026/09/24 12:14:34 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24220444 → total=25898MB avail=20423MB used=5475MB (21.1%)
2026/09/24 12:14:35 deploy.go:1250: [INFO] [stacks] Memory check: total=25898MB, reserved=384MB, usable=25514MB, committed_used=1818MB, new_req=8MB, remaining=23688MB
2026/09/24 12:14:35 deploy.go:253: [DEBUG] Deploy chaoscrash: received 2 user values
2026/09/24 12:14:35 deploy.go:258: [DEBUG] SUBDOMAIN = "chaoscrash"
2026/09/24 12:14:35 deploy.go:258: [DEBUG] DOMAIN = "enkisfelhom.hu"
2026/09/24 12:14:35 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaoscrash — 2 env vars, 0 encrypted, 0 sensitive fields
2026/09/24 12:14:35 [INFO] [stacks] SaveAppConfig: saved config for chaoscrash
2026/09/24 12:14:35 deploy.go:383: [INFO] [stacks] Deploying stack chaoscrash with 2 env vars: [DOMAIN, SUBDOMAIN]
2026/09/24 12:14:35 manager.go:1582: [INFO] [stacks] Deploying stack chaoscrash — checking 1 images...
2026/09/24 12:14:35 manager.go:1588: [DEBUG] alpine:3.20 — found locally
2026/09/24 12:14:35 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_deploy_started (severity info) — further app_deploy_started events are logged at DEBUG only
2026/09/24 12:14:35 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:14:35 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/chaoscrash)
2026/09/24 12:14:35 lifecycle.go:70: [DEBUG] [integrations] OnStackStart: stack=chaoscrash, waiting 5s for state refresh
2026/09/24 12:14:35 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaoscrash — 2 env vars, 0 encrypted, 0 sensitive fields
2026/09/24 12:14:35 [INFO] [stacks] SaveAppConfig: saved config for chaoscrash
2026/09/24 12:14:35 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.4s)
2026/09/24 12:14:35 deploy.go:462: [INFO] [stacks] Stack chaoscrash deployed successfully (took 0.4s)
2026/09/24 12:14:35 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaoscrash — 2 env vars, 0 encrypted, 0 sensitive fields
2026/09/24 12:14:35 [INFO] [stacks] SaveAppConfig: saved config for chaoscrash
2026/09/24 12:14:35 installed.go:420: [INFO] [stacks] installed-images chaoscrash: recorded 1 service(s) (chaoscrash=alpine:3.20 (sha256:d9e853e87e55…))
2026/09/24 12:14:35 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaoscrash — 2 env vars, 0 encrypted, 0 sensitive fields
2026/09/24 12:14:35 [INFO] [stacks] SaveAppConfig: saved config for chaoscrash
2026/09/24 12:14:35 pin.go:93: [INFO] [stacks] pin chaoscrash: chaoscrash=alpine:3.20
2026/09/24 12:14:35 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_deployed (severity info) — further app_deployed events are logged at DEBUG only
2026/09/24 12:14:38 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:14:38 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/chaoscrash)
2026/09/24 12:14:38 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.2s)
2026/09/24 12:14:38 manager.go:1543: [INFO] [stacks] Stack chaoscrash post-start status:
2026/09/24 12:14:38 manager.go:1546: [INFO] [stacks] chaoscrash alpine:3.20 restarting Restarting (1) Less than a second ago
2026/09/24 12:14:40 lifecycle.go:86: [DEBUG] [integrations] OnStackStart: stack=chaoscrash integrationsFound=0
2026/09/24 12:14:44 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:14:44 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:14:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 35s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:44 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container)
2026/09/24 12:14:44 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:14:44 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 12:14:54 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:14:54 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/09/24 12:14:54 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/09/24 12:14:54 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:14:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 45s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:14:54 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container)
2026/09/24 12:14:54 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:14:54 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 12:14:55 router.go:1201: [INFO] [api] Manual app-data backup (DB dump) triggered
2026/09/24 12:14:55 backup.go:522: [INFO] [backup] Starting database dump run
2026/09/24 12:14:55 dbdump.go:130: [DEBUG] DiscoverDatabases: running docker ps to find database containers
2026/09/24 12:14:55 dbdump.go:149: [DEBUG] DiscoverDatabases: docker ps output: f8196d9721e6 chaoscrash chaoscrash alpine:3.20
642ad1cc5a7c navidrome navidrome deluan/navidrome:0.64.1
124648859ae4 n8n n8n n8nio/n8n:2.31.3
422cba16c96c wishlist wishlist ghcr.io/cmintey/wishlist:v0.67.1
22b2c4451d37 vikunja vikunja vikunja/vikunja:2.3.0
6d01f8e3b5ca romm romm rommapp/romm:5.3.1
b613ce74ba5d romm-db romm mariadb:11.8
aecb75c1bdbf romm-redis romm redis:7-alpine
3e311b8f4fdc privatebin privatebin privatebin/pdo:2.0.6
e70d5bc9c661 paperless-webserver paperless-ngx ghcr.io/paperle...
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container chaoscrash (image=alpine:3.20, not a database)
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container navidrome (image=deluan/navidrome:0.64.1, not a database)
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container n8n (image=n8nio/n8n:2.31.3, not a database)
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container wishlist (image=ghcr.io/cmintey/wishlist:v0.67.1, not a database)
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container vikunja (image=vikunja/vikunja:2.3.0, not a database)
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.3.1, not a database)
2026/09/24 12:14:55 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=b613ce74ba5d)
2026/09/24 12:14:55 dbdump.go:198: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database)
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container privatebin (image=privatebin/pdo:2.0.6, not a database)
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database)
2026/09/24 12:14:55 dbdump.go:178: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=41af1c5c28cc)
2026/09/24 12:14:55 dbdump.go:896: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless")
2026/09/24 12:14:55 dbdump.go:198: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database)
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud (image=nextcloud:34.0.4-apache, not a database)
2026/09/24 12:14:55 dbdump.go:178: [DEBUG] DiscoverDatabases: found mariadb container: nextcloud-db (id=55ce027b0fae)
2026/09/24 12:14:55 dbdump.go:198: [DEBUG] DiscoverDatabases: nextcloud-db → stack=nextcloud, dbUser=root, dbName=nextcloud
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container nextcloud-redis (image=redis:7-alpine, not a database)
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.269.1, not a database)
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database)
2026/09/24 12:14:55 dbdump.go:171: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database)
2026/09/24 12:14:55 dbdump.go:205: [DEBUG] DiscoverDatabases: found 3 database(s), skipped 15 non-DB container(s)
2026/09/24 12:14:55 dbdump.go:208: [INFO] [backup] Discovered 3 databases
2026/09/24 12:14:55 backup.go:550: [INFO] [backup] Discovered 3 database(s): romm-db(mariadb), paperless-postgres(postgres), nextcloud-db(mariadb)
2026/09/24 12:14:55 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/romm" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 12:14:55 dbdump.go:266: [DEBUG] DumpOne: starting dump for container=romm-db, stack=romm, dbType=mariadb, dest=/mnt/felhom-drives/scratch_hdd/userdata/romm/backups/primary/romm/db-dumps/romm-mariadb.sql
2026/09/24 12:14:55 dbdump.go:321: [DEBUG] DumpOne: mariadb-dump command: docker exec b613ce74ba5d mariadb-dump -u root -p*** --single-transaction --routines --triggers romm
2026/09/24 12:14:55 dbdump.go:405: [DEBUG] DumpOne: completed romm-db → romm-mariadb.sql (size=112.9 KB, valid=true, tables=36, duration=313ms)
2026/09/24 12:14:55 dbdump.go:410: [INFO] [backup] DB dump: romm-db → romm-mariadb.sql (112.9 KB, 313ms, 36 tables)
2026/09/24 12:14:55 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17657 bytes)
2026/09/24 12:14:55 settings.go:847: [INFO] [settings] Settings saved
2026/09/24 12:14:55 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 12:14:55 dbdump.go:266: [DEBUG] DumpOne: starting dump for container=paperless-postgres, stack=paperless-ngx, dbType=postgres, dest=/mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx/backups/primary/paperless-ngx/db-dumps/paperless-ngx-postgres.sql
2026/09/24 12:14:55 dbdump.go:303: [DEBUG] DumpOne: pg_dump command: docker exec 41af1c5c28cc pg_dump -U paperless -d paperless --clean --if-exists --no-owner --no-privileges
2026/09/24 12:14:55 dbdump.go:405: [DEBUG] DumpOne: completed paperless-postgres → paperless-ngx-postgres.sql (size=364.1 KB, valid=true, tables=72, duration=388ms)
2026/09/24 12:14:55 dbdump.go:410: [INFO] [backup] DB dump: paperless-postgres → paperless-ngx-postgres.sql (364.1 KB, 388ms, 72 tables)
2026/09/24 12:14:55 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17657 bytes)
2026/09/24 12:14:55 settings.go:847: [INFO] [settings] Settings saved
2026/09/24 12:14:55 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/nextcloud" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 12:14:55 dbdump.go:266: [DEBUG] DumpOne: starting dump for container=nextcloud-db, stack=nextcloud, dbType=mariadb, dest=/mnt/felhom-drives/scratch_hdd/userdata/nextcloud/backups/primary/nextcloud/db-dumps/nextcloud-mariadb.sql
2026/09/24 12:14:55 dbdump.go:321: [DEBUG] DumpOne: mariadb-dump command: docker exec 55ce027b0fae mariadb-dump -u root -p*** --single-transaction --routines --triggers nextcloud
2026/09/24 12:14:56 dbdump.go:405: [DEBUG] DumpOne: completed nextcloud-db → nextcloud-mariadb.sql (size=855.4 KB, valid=true, tables=131, duration=634ms)
2026/09/24 12:14:56 dbdump.go:410: [INFO] [backup] DB dump: nextcloud-db → nextcloud-mariadb.sql (855.4 KB, 634ms, 131 tables)
2026/09/24 12:14:56 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17657 bytes)
2026/09/24 12:14:56 settings.go:847: [INFO] [settings] Settings saved
2026/09/24 12:14:56 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/scratch_hdd/userdata/navidrome" total=937.8 GB used=73.4 GB avail=816.7GB (7.8%)
2026/09/24 12:14:56 backup.go:920: [INFO] [backup] Stopping navidrome for safe volume dump
2026/09/24 12:14:56 manager.go:1283: [DEBUG] [stacks] StopStack navidrome: current state=running deployed=true containers=1
2026/09/24 12:14:56 manager.go:1286: [INFO] [stacks] Stopping stack: navidrome
2026/09/24 12:14:56 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, HDD_PATH, SUBDOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system)
2026/09/24 12:14:56 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/navidrome)
2026/09/24 12:14:56 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.3s)
2026/09/24 12:14:56 manager.go:1295: [INFO] [stacks] Stack navidrome stopped successfully (took 0.3s)
2026/09/24 12:14:56 backup.go:796: [DEBUG] [backup] Dumping volume navidrome_navidrome_data for navidrome
2026/09/24 12:14:57 backup.go:821: [INFO] [backup] Volume dump: navidrome/navidrome_navidrome_data → 707.0 KB
2026/09/24 12:14:57 backup.go:930: [INFO] [backup] Restarting navidrome after volume dump
2026/09/24 12:14:57 manager.go:1194: [DEBUG] [stacks] StartStack navidrome: current state=stopped deployed=true
2026/09/24 12:14:57 manager.go:1197: [INFO] [stacks] Starting stack: navidrome
2026/09/24 12:14:57 manager.go:1204: [DEBUG] [stacks] StartStack navidrome: prepared 10 env vars for compose
2026/09/24 12:14:57 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/navidrome not mounted — skipping ensure (held by drive gate)
2026/09/24 12:14:57 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, HDD_PATH, SUBDOMAIN, DOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system)
2026/09/24 12:14:57 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/navidrome)
2026/09/24 12:14:57 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.4s)
2026/09/24 12:14:57 manager.go:1212: [INFO] [stacks] Stack navidrome started successfully (took 0.4s)
2026/09/24 12:14:57 installed.go:409: [DEBUG] [stacks] installed-images navidrome: unchanged (1 service(s)) — app.yaml not rewritten
2026/09/24 12:14:57 backup.go:920: [INFO] [backup] Stopping nextcloud for safe volume dump
2026/09/24 12:14:57 manager.go:1283: [DEBUG] [stacks] StopStack nextcloud: current state=running deployed=true containers=3
2026/09/24 12:14:57 manager.go:1286: [INFO] [stacks] Stopping stack: nextcloud
2026/09/24 12:14:57 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, NEXTCLOUD_ADMIN_USER, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system)
2026/09/24 12:14:57 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/nextcloud)
2026/09/24 12:14:59 manager.go:1483: [DEBUG] Command completed: docker compose down (took 1.8s)
2026/09/24 12:14:59 manager.go:1295: [INFO] [stacks] Stack nextcloud stopped successfully (took 1.8s)
2026/09/24 12:14:59 backup.go:796: [DEBUG] [backup] Dumping volume nextcloud_nextcloud_html for nextcloud
2026/09/24 12:15:00 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, HDD_PATH, SUBDOMAIN, DOMAIN, USERDATA_PATH, IMPORT_PATH] (10 app + 0 system)
2026/09/24 12:15:00 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/navidrome)
2026/09/24 12:15:00 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s)
2026/09/24 12:15:00 manager.go:1543: [INFO] [stacks] Stack navidrome post-start status:
2026/09/24 12:15:00 manager.go:1546: [INFO] [stacks] navidrome deluan/navidrome:0.64.1@sha256:df22d661b8d0322c33754d999b567150df9e131a47ae53be71fed0154bf8cef5 running Up 3 seconds (health: starting)
2026/09/24 12:15:02 backup.go:821: [INFO] [backup] Volume dump: nextcloud/nextcloud_nextcloud_html → 761.6 MB
2026/09/24 12:15:02 backup.go:796: [DEBUG] [backup] Dumping volume nextcloud_nextcloud_redis_data for nextcloud
2026/09/24 12:15:03 backup.go:821: [INFO] [backup] Volume dump: nextcloud/nextcloud_nextcloud_redis_data → 281.0 KB
2026/09/24 12:15:03 backup.go:796: [DEBUG] [backup] Dumping volume nextcloud_nextcloud_db_data for nextcloud
2026/09/24 12:15:04 backup.go:821: [INFO] [backup] Volume dump: nextcloud/nextcloud_nextcloud_db_data → 164.9 MB
2026/09/24 12:15:04 backup.go:930: [INFO] [backup] Restarting nextcloud after volume dump
2026/09/24 12:15:04 manager.go:1194: [DEBUG] [stacks] StartStack nextcloud: current state=stopped deployed=true
2026/09/24 12:15:04 manager.go:1197: [INFO] [stacks] Starting stack: nextcloud
2026/09/24 12:15:04 manager.go:1204: [DEBUG] [stacks] StartStack nextcloud: prepared 14 env vars for compose
2026/09/24 12:15:04 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping ensure (held by drive gate)
2026/09/24 12:15:04 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, NEXTCLOUD_ADMIN_USER, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system)
2026/09/24 12:15:04 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/nextcloud)
2026/09/24 12:15:04 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:15:04 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:15:04 manager.go:851: [DEBUG] [stacks] restart-policy of down member "nextcloud" = "unless-stopped"
2026/09/24 12:15:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:04 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 2 targets (6 skipped not due, 0 skipped no container)
2026/09/24 12:15:04 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:15:04 healthprobe.go:181: [DEBUG] Health probe navidrome: API GET :4533/ping → 200 (2ms)
2026/09/24 12:15:04 healthprobe.go:159: [WARN] Health probes: 1 ok, 1 unhealthy (of 2 probed)
2026/09/24 12:15:10 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 6.5s)
2026/09/24 12:15:10 manager.go:1212: [INFO] [stacks] Stack nextcloud started successfully (took 6.5s)
2026/09/24 12:15:10 installed.go:409: [DEBUG] [stacks] installed-images nextcloud: unchanged (3 service(s)) — app.yaml not rewritten
2026/09/24 12:15:10 backup.go:920: [INFO] [backup] Stopping paperless-ngx for safe volume dump
2026/09/24 12:15:10 manager.go:1283: [DEBUG] [stacks] StopStack paperless-ngx: current state=running deployed=true containers=3
2026/09/24 12:15:10 manager.go:1286: [INFO] [stacks] Stopping stack: paperless-ngx
2026/09/24 12:15:10 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, PAPERLESS_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, PAPERLESS_ADMIN_PASSWORD, PAPERLESS_ADMIN_USER, PAPERLESS_OCR_LANGUAGE, USERDATA_PATH, IMPORT_PATH] (15 app + 0 system)
2026/09/24 12:15:10 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/paperless-ngx)
2026/09/24 12:15:13 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, NEXTCLOUD_ADMIN_USER, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, NEXTCLOUD_ADMIN_PASSWORD, USERDATA_PATH, IMPORT_PATH] (14 app + 0 system)
2026/09/24 12:15:13 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/nextcloud)
2026/09/24 12:15:14 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s)
2026/09/24 12:15:14 manager.go:1543: [INFO] [stacks] Stack nextcloud post-start status:
2026/09/24 12:15:14 manager.go:1546: [INFO] [stacks] nextcloud nextcloud:34.0.4-apache@sha256:a5ace30c695afe48c2c406e940ee7886a81e13fa382e57cd68b2416d1a66914c running Up 3 seconds (health: starting)
2026/09/24 12:15:14 manager.go:1546: [INFO] [stacks] nextcloud-db mariadb:12.3@sha256:805c8e104bd563d5bfa24fadd3f31cd419ea859cb5277f32b5dbf2db714f9ed1 running Up 9 seconds (healthy)
2026/09/24 12:15:14 manager.go:1546: [INFO] [stacks] nextcloud-redis redis:7-alpine@sha256:c35af3bbcef51a62c8bae5a9a563c6f1b60d7ebaea4cb5a3ccbcc157580ae098 running Up 9 seconds (healthy)
2026/09/24 12:15:14 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:15:14 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:15:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 12:15:14 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 0 skipped no container)
2026/09/24 12:15:18 manager.go:1483: [DEBUG] Command completed: docker compose down (took 7.3s)
2026/09/24 12:15:18 manager.go:1295: [INFO] [stacks] Stack paperless-ngx stopped successfully (took 7.3s)
2026/09/24 12:15:18 backup.go:796: [DEBUG] [backup] Dumping volume paperless-ngx_paperless_data for paperless-ngx
2026/09/24 12:15:18 backup.go:821: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_data → 1.0 MB
2026/09/24 12:15:18 backup.go:796: [DEBUG] [backup] Dumping volume paperless-ngx_paperless_postgres_data for paperless-ngx
2026/09/24 12:15:19 backup.go:821: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_postgres_data → 67.9 MB
2026/09/24 12:15:19 backup.go:796: [DEBUG] [backup] Dumping volume paperless-ngx_paperless_redis_data for paperless-ngx
2026/09/24 12:15:19 backup.go:821: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_redis_data → 1.0 MB
2026/09/24 12:15:19 backup.go:930: [INFO] [backup] Restarting paperless-ngx after volume dump
2026/09/24 12:15:19 manager.go:1194: [DEBUG] [stacks] StartStack paperless-ngx: current state=stopped deployed=true
2026/09/24 12:15:19 manager.go:1197: [INFO] [stacks] Starting stack: paperless-ngx
2026/09/24 12:15:19 manager.go:1204: [DEBUG] [stacks] StartStack paperless-ngx: prepared 15 env vars for compose
2026/09/24 12:15:19 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx not mounted — skipping ensure (held by drive gate)
2026/09/24 12:15:19 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, PAPERLESS_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, PAPERLESS_ADMIN_PASSWORD, PAPERLESS_ADMIN_USER, PAPERLESS_OCR_LANGUAGE, USERDATA_PATH, IMPORT_PATH] (15 app + 0 system)
2026/09/24 12:15:19 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/paperless-ngx)
2026/09/24 12:15:24 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/09/24 12:15:24 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4995MB avail≈20903MB
2026/09/24 12:15:24 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24789940 → total=25898MB avail=20903MB used=4995MB (19.3%)
2026/09/24 12:15:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.4GB (37.3%)
2026/09/24 12:15:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%)
2026/09/24 12:15:24 info.go:13: [DEBUG] [system] readLoadAvg: raw="4.33 3.89 3.47 5/1533 5165" → 1m=4.33 5m=3.89 15m=3.47
2026/09/24 12:15:24 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/09/24 12:15:24 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 69.0°C (hwmon2)
2026/09/24 12:15:24 info.go:13: [DEBUG] [system] GetInfo done in 70ms — mem=4995MB/25898MB (19.3%), rootDisk=25.5GB/68.4GB (37.3%), load=4.33/3.89/3.47, temp=69.0°C (hwmon2), cpu=32.1%
2026/09/24 12:15:24 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:15:24 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan
2026/09/24 12:15:24 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting
2026/09/24 12:15:24 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/09/24 12:15:24 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/09/24 12:15:24 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:15:24 manager.go:851: [DEBUG] [stacks] restart-policy of down member "paperless-webserver" = "unless-stopped"
2026/09/24 12:15:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:24 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 2 targets (6 skipped not due, 0 skipped no container)
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/09/24 12:15:24 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=true composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/09/24 12:15:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/09/24 12:15:25 healthprobe.go:181: [DEBUG] Health probe nextcloud: API GET :80/status.php → 200 (46ms)
2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:15:25 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/09/24 12:15:25 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/09/24 12:15:25 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection
2026/09/24 12:15:25 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available)
2026/09/24 12:15:25 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 129ms)
2026/09/24 12:15:25 healthprobe.go:159: [WARN] Health probes: 1 ok, 1 unhealthy (of 2 probed)
2026/09/24 12:15:31 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 11.3s)
2026/09/24 12:15:31 manager.go:1212: [INFO] [stacks] Stack paperless-ngx started successfully (took 11.3s)
2026/09/24 12:15:31 installed.go:409: [DEBUG] [stacks] installed-images paperless-ngx: unchanged (3 service(s)) — app.yaml not rewritten
2026/09/24 12:15:31 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.4GB (37.3%)
2026/09/24 12:15:31 backup.go:920: [INFO] [backup] Stopping privatebin for safe volume dump
2026/09/24 12:15:31 manager.go:1283: [DEBUG] [stacks] StopStack privatebin: current state=running deployed=true containers=1
2026/09/24 12:15:31 manager.go:1286: [INFO] [stacks] Stopping stack: privatebin
2026/09/24 12:15:31 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:15:31 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/privatebin)
2026/09/24 12:15:31 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.4s)
2026/09/24 12:15:31 manager.go:1295: [INFO] [stacks] Stack privatebin stopped successfully (took 0.4s)
2026/09/24 12:15:31 backup.go:796: [DEBUG] [backup] Dumping volume privatebin_privatebin_data for privatebin
2026/09/24 12:15:32 backup.go:821: [INFO] [backup] Volume dump: privatebin/privatebin_privatebin_data → 1.5 KB
2026/09/24 12:15:32 backup.go:930: [INFO] [backup] Restarting privatebin after volume dump
2026/09/24 12:15:32 manager.go:1194: [DEBUG] [stacks] StartStack privatebin: current state=stopped deployed=true
2026/09/24 12:15:32 manager.go:1197: [INFO] [stacks] Starting stack: privatebin
2026/09/24 12:15:32 manager.go:1204: [DEBUG] [stacks] StartStack privatebin: prepared 8 env vars for compose
2026/09/24 12:15:32 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:15:32 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/privatebin)
2026/09/24 12:15:32 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.4s)
2026/09/24 12:15:32 manager.go:1212: [INFO] [stacks] Stack privatebin started successfully (took 0.4s)
2026/09/24 12:15:32 installed.go:409: [DEBUG] [stacks] installed-images privatebin: unchanged (1 service(s)) — app.yaml not rewritten
2026/09/24 12:15:32 backup.go:920: [INFO] [backup] Stopping romm for safe volume dump
2026/09/24 12:15:32 manager.go:1283: [DEBUG] [stacks] StopStack romm: current state=running deployed=true containers=3
2026/09/24 12:15:32 manager.go:1286: [INFO] [stacks] Stopping stack: romm
2026/09/24 12:15:32 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, ROMM_AUTH_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, USERDATA_PATH, IMPORT_PATH] (13 app + 0 system)
2026/09/24 12:15:32 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/romm)
2026/09/24 12:15:34 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, PAPERLESS_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, PAPERLESS_ADMIN_PASSWORD, PAPERLESS_ADMIN_USER, PAPERLESS_OCR_LANGUAGE, USERDATA_PATH, IMPORT_PATH] (15 app + 0 system)
2026/09/24 12:15:34 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/paperless-ngx)
2026/09/24 12:15:34 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s)
2026/09/24 12:15:34 manager.go:1543: [INFO] [stacks] Stack paperless-ngx post-start status:
2026/09/24 12:15:34 manager.go:1546: [INFO] [stacks] paperless-postgres postgres:16-alpine running Up 14 seconds (healthy)
2026/09/24 12:15:34 manager.go:1546: [INFO] [stacks] paperless-redis redis:7-alpine running Up 14 seconds (healthy)
2026/09/24 12:15:34 manager.go:1546: [INFO] [stacks] paperless-webserver ghcr.io/paperless-ngx/paperless-ngx:2.20.15 running Up 3 seconds (health: starting)
2026/09/24 12:15:34 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:15:34 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:15:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 12:15:34 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 0 skipped no container)
2026/09/24 12:15:35 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:15:35 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/privatebin)
2026/09/24 12:15:35 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.2s)
2026/09/24 12:15:35 manager.go:1543: [INFO] [stacks] Stack privatebin post-start status:
2026/09/24 12:15:35 manager.go:1546: [INFO] [stacks] privatebin privatebin/pdo:2.0.6@sha256:4c141b2326f8b353598ce9ce7507a9cfecf2dad5c60a39fea903d430e296d8f5 running Up 3 seconds (health: starting)
2026/09/24 12:15:38 manager.go:1483: [DEBUG] Command completed: docker compose down (took 5.5s)
2026/09/24 12:15:38 manager.go:1295: [INFO] [stacks] Stack romm stopped successfully (took 5.5s)
2026/09/24 12:15:38 backup.go:796: [DEBUG] [backup] Dumping volume romm_romm_redis_data for romm
2026/09/24 12:15:38 backup.go:821: [INFO] [backup] Volume dump: romm/romm_romm_redis_data → 15.6 MB
2026/09/24 12:15:38 backup.go:796: [DEBUG] [backup] Dumping volume romm_romm_config for romm
2026/09/24 12:15:39 backup.go:821: [INFO] [backup] Volume dump: romm/romm_romm_config → 2.5 KB
2026/09/24 12:15:39 backup.go:796: [DEBUG] [backup] Dumping volume romm_romm_db_data for romm
2026/09/24 12:15:40 backup.go:821: [INFO] [backup] Volume dump: romm/romm_romm_db_data → 156.4 MB
2026/09/24 12:15:40 backup.go:930: [INFO] [backup] Restarting romm after volume dump
2026/09/24 12:15:40 manager.go:1194: [DEBUG] [stacks] StartStack romm: current state=stopped deployed=true
2026/09/24 12:15:40 manager.go:1197: [INFO] [stacks] Starting stack: romm
2026/09/24 12:15:40 manager.go:1204: [DEBUG] [stacks] StartStack romm: prepared 13 env vars for compose
2026/09/24 12:15:40 manager.go:410: [INFO] [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/romm not mounted — skipping ensure (held by drive gate)
2026/09/24 12:15:40 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, ROMM_AUTH_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, USERDATA_PATH, IMPORT_PATH] (13 app + 0 system)
2026/09/24 12:15:40 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/romm)
2026/09/24 12:15:44 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:15:44 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:15:44 manager.go:851: [DEBUG] [stacks] restart-policy of down member "romm" = "unless-stopped"
2026/09/24 12:15:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:44 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 2 targets (5 skipped not due, 0 skipped no container)
2026/09/24 12:15:44 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:15:44 healthprobe.go:181: [DEBUG] Health probe privatebin: HTTP GET :8080/ → 200 (5ms)
2026/09/24 12:15:44 healthprobe.go:159: [WARN] Health probes: 1 ok, 1 unhealthy (of 2 probed)
2026/09/24 12:15:51 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 11.4s)
2026/09/24 12:15:51 manager.go:1212: [INFO] [stacks] Stack romm started successfully (took 11.4s)
2026/09/24 12:15:51 installed.go:409: [DEBUG] [stacks] installed-images romm: unchanged (3 service(s)) — app.yaml not rewritten
2026/09/24 12:15:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.3GB (37.3%)
2026/09/24 12:15:51 backup.go:920: [INFO] [backup] Stopping vikunja for safe volume dump
2026/09/24 12:15:51 manager.go:1283: [DEBUG] [stacks] StopStack vikunja: current state=unhealthy deployed=true containers=1
2026/09/24 12:15:51 manager.go:1286: [INFO] [stacks] Stopping stack: vikunja
2026/09/24 12:15:51 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, VIKUNJA_SERVICE_JWTSECRET, IMPORT_PATH] (9 app + 0 system)
2026/09/24 12:15:51 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/vikunja)
2026/09/24 12:15:52 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.4s)
2026/09/24 12:15:52 manager.go:1295: [INFO] [stacks] Stack vikunja stopped successfully (took 0.4s)
2026/09/24 12:15:52 backup.go:796: [DEBUG] [backup] Dumping volume vikunja_vikunja_data for vikunja
2026/09/24 12:15:52 backup.go:821: [INFO] [backup] Volume dump: vikunja/vikunja_vikunja_data → 1.5 KB
2026/09/24 12:15:52 backup.go:796: [DEBUG] [backup] Dumping volume vikunja_vikunja_db for vikunja
2026/09/24 12:15:53 backup.go:821: [INFO] [backup] Volume dump: vikunja/vikunja_vikunja_db → 2.0 MB
2026/09/24 12:15:53 backup.go:930: [INFO] [backup] Restarting vikunja after volume dump
2026/09/24 12:15:53 manager.go:1194: [DEBUG] [stacks] StartStack vikunja: current state=stopped deployed=true
2026/09/24 12:15:53 manager.go:1197: [INFO] [stacks] Starting stack: vikunja
2026/09/24 12:15:53 manager.go:1204: [DEBUG] [stacks] StartStack vikunja: prepared 9 env vars for compose
2026/09/24 12:15:53 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, VIKUNJA_SERVICE_JWTSECRET, IMPORT_PATH] (9 app + 0 system)
2026/09/24 12:15:53 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/vikunja)
2026/09/24 12:15:54 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.6s)
2026/09/24 12:15:54 manager.go:1212: [INFO] [stacks] Stack vikunja started successfully (took 0.6s)
2026/09/24 12:15:54 installed.go:409: [DEBUG] [stacks] installed-images vikunja: unchanged (1 service(s)) — app.yaml not rewritten
2026/09/24 12:15:54 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.3GB (37.3%)
2026/09/24 12:15:54 backup.go:920: [INFO] [backup] Stopping wishlist for safe volume dump
2026/09/24 12:15:54 manager.go:1283: [DEBUG] [stacks] StopStack wishlist: current state=running deployed=true containers=1
2026/09/24 12:15:54 manager.go:1286: [INFO] [stacks] Stopping stack: wishlist
2026/09/24 12:15:54 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:15:54 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/wishlist)
2026/09/24 12:15:54 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, ROMM_AUTH_SECRET_KEY, SUBDOMAIN, DB_PASSWORD, DOMAIN, HDD_PATH, MYSQL_ROOT_PASSWORD, USERDATA_PATH, IMPORT_PATH] (13 app + 0 system)
2026/09/24 12:15:54 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/romm)
2026/09/24 12:15:54 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:15:54 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/09/24 12:15:54 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/09/24 12:15:54 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:15:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:15:54 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (5 skipped not due, 0 skipped no container)
2026/09/24 12:15:54 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:15:54 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 12:15:55 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.3s)
2026/09/24 12:15:55 manager.go:1543: [INFO] [stacks] Stack romm post-start status:
2026/09/24 12:15:55 manager.go:1546: [INFO] [stacks] romm rommapp/romm:5.3.1@sha256:0d66b4ea152a237c7f24b95e87459f46d3c596a7c0b35a82f26bc971487278b3 running Up 3 seconds (health: starting)
2026/09/24 12:15:55 manager.go:1546: [INFO] [stacks] romm-db mariadb:11.8@sha256:79d59758afc91b89b120b0a8904d637f5a3b3e1c4900f29b740d6d46c72fef68 running Up 14 seconds (healthy)
2026/09/24 12:15:55 manager.go:1546: [INFO] [stacks] romm-redis redis:7-alpine@sha256:858f009f9709ce576febc734aa78b8f6d624b82571f9ddb6bda4377c833b3499 running Up 14 seconds (healthy)
2026/09/24 12:15:55 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.9s)
2026/09/24 12:15:55 manager.go:1295: [INFO] [stacks] Stack wishlist stopped successfully (took 0.9s)
2026/09/24 12:15:55 backup.go:796: [DEBUG] [backup] Dumping volume wishlist_wishlist_data for wishlist
2026/09/24 12:15:55 manager.go:1502: [ERROR] [stacks] execCommand failed: exit status 1
2026/09/24 12:15:56 backup.go:821: [INFO] [backup] Volume dump: wishlist/wishlist_wishlist_data → 302.0 KB
2026/09/24 12:15:56 backup.go:796: [DEBUG] [backup] Dumping volume wishlist_wishlist_uploads for wishlist
2026/09/24 12:15:56 backup.go:821: [INFO] [backup] Volume dump: wishlist/wishlist_wishlist_uploads → 1.5 KB
2026/09/24 12:15:56 backup.go:930: [INFO] [backup] Restarting wishlist after volume dump
2026/09/24 12:15:56 manager.go:1194: [DEBUG] [stacks] StartStack wishlist: current state=stopped deployed=true
2026/09/24 12:15:56 manager.go:1197: [INFO] [stacks] Starting stack: wishlist
2026/09/24 12:15:56 manager.go:1204: [DEBUG] [stacks] StartStack wishlist: prepared 8 env vars for compose
2026/09/24 12:15:56 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:15:56 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/wishlist)
2026/09/24 12:15:57 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, VIKUNJA_SERVICE_JWTSECRET, IMPORT_PATH] (9 app + 0 system)
2026/09/24 12:15:57 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/vikunja)
2026/09/24 12:15:57 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.3s)
2026/09/24 12:15:57 manager.go:1543: [INFO] [stacks] Stack vikunja post-start status:
2026/09/24 12:15:57 manager.go:1546: [INFO] [stacks] vikunja vikunja/vikunja:2.3.0 running Up 3 seconds
2026/09/24 12:15:57 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.9s)
2026/09/24 12:15:57 manager.go:1212: [INFO] [stacks] Stack wishlist started successfully (took 0.9s)
2026/09/24 12:15:58 installed.go:409: [DEBUG] [stacks] installed-images wishlist: unchanged (1 service(s)) — app.yaml not rewritten
2026/09/24 12:15:58 backup.go:712: [DEBUG] [backup] chaoscrash has no named volumes — volume dump skipped
2026/09/24 12:15:58 backup.go:705: [WARN] [backup] Skipping volume dump for chaosoom — the app is HELD stopped (its restore point is preserved)
2026/09/24 12:15:58 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.5 GB avail=39.3GB (37.3%)
2026/09/24 12:15:58 backup.go:920: [INFO] [backup] Stopping n8n for safe volume dump
2026/09/24 12:15:58 manager.go:1283: [DEBUG] [stacks] StopStack n8n: current state=running deployed=true containers=1
2026/09/24 12:15:58 manager.go:1286: [INFO] [stacks] Stopping stack: n8n
2026/09/24 12:15:58 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, N8N_ENCRYPTION_KEY, SUBDOMAIN, DOMAIN, IMPORT_PATH] (9 app + 0 system)
2026/09/24 12:15:58 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/n8n)
2026/09/24 12:15:59 manager.go:1483: [DEBUG] Command completed: docker compose down (took 1.4s)
2026/09/24 12:15:59 manager.go:1295: [INFO] [stacks] Stack n8n stopped successfully (took 1.4s)
2026/09/24 12:15:59 backup.go:796: [DEBUG] [backup] Dumping volume n8n_n8n_data for n8n
2026/09/24 12:16:00 backup.go:821: [INFO] [backup] Volume dump: n8n/n8n_n8n_data → 5.4 MB
2026/09/24 12:16:00 backup.go:930: [INFO] [backup] Restarting n8n after volume dump
2026/09/24 12:16:00 manager.go:1194: [DEBUG] [stacks] StartStack n8n: current state=stopped deployed=true
2026/09/24 12:16:00 manager.go:1197: [INFO] [stacks] Starting stack: n8n
2026/09/24 12:16:00 manager.go:1204: [DEBUG] [stacks] StartStack n8n: prepared 9 env vars for compose
2026/09/24 12:16:00 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, N8N_ENCRYPTION_KEY, SUBDOMAIN, IMPORT_PATH] (9 app + 0 system)
2026/09/24 12:16:00 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/n8n)
2026/09/24 12:16:01 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:16:01 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/wishlist)
2026/09/24 12:16:01 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.7s)
2026/09/24 12:16:01 manager.go:1212: [INFO] [stacks] Stack n8n started successfully (took 0.7s)
2026/09/24 12:16:01 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.3s)
2026/09/24 12:16:01 manager.go:1543: [INFO] [stacks] Stack wishlist post-start status:
2026/09/24 12:16:01 manager.go:1546: [INFO] [stacks] wishlist ghcr.io/cmintey/wishlist:v0.67.1@sha256:4b89bfb5b57ffb087c33978d21b09048e5c37f4506326e9ccd2705a0a1d86548 running Up 4 seconds (health: starting)
2026/09/24 12:16:01 installed.go:409: [DEBUG] [stacks] installed-images n8n: unchanged (1 service(s)) — app.yaml not rewritten
2026/09/24 12:16:01 backup.go:636: [INFO] [backup] App-data backup completed: 3 databases (1.3 MB total), 8 volume dump(s) (1m6.606s)
2026/09/24 12:16:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.4 GB used=25.4 GB avail=39.4GB (37.2%)
2026/09/24 12:16:01 recovery_unit.go:224: [INFO] [backup] Recovery unit captured for chaoscrash → /mnt/sys_drive/felhom-data/backups/primary/chaoscrash (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0)
2026/09/24 12:16:04 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, N8N_ENCRYPTION_KEY, SUBDOMAIN, IMPORT_PATH] (9 app + 0 system)
2026/09/24 12:16:04 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/n8n)
2026/09/24 12:16:04 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.2s)
2026/09/24 12:16:04 manager.go:1543: [INFO] [stacks] Stack n8n post-start status:
2026/09/24 12:16:04 manager.go:1546: [INFO] [stacks] n8n n8nio/n8n:2.31.3 running Up 4 seconds (health: starting)
2026/09/24 12:16:04 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:16:04 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:16:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 12:16:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:04 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (4 skipped not due, 0 skipped no container)
2026/09/24 12:16:14 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:16:14 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:16:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:14 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 3 targets (3 skipped not due, 0 skipped no container)
2026/09/24 12:16:14 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:16:14 healthprobe.go:181: [DEBUG] Health probe paperless-ngx: HTTP GET :8000/ → 302 (7ms)
2026/09/24 12:16:14 healthprobe.go:181: [DEBUG] Health probe wishlist: HTTP GET :3000/ → 307 (8ms)
2026/09/24 12:16:14 healthprobe.go:159: [WARN] Health probes: 2 ok, 1 unhealthy (of 3 probed)
2026/09/24 12:16:24 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/09/24 12:16:24 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5260MB avail≈20638MB
2026/09/24 12:16:24 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24474944 → total=25898MB avail=20638MB used=5260MB (20.3%)
2026/09/24 12:16:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.3GB (37.3%)
2026/09/24 12:16:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%)
2026/09/24 12:16:24 info.go:13: [DEBUG] [system] readLoadAvg: raw="6.22 4.52 3.72 9/1506 6307" → 1m=6.22 5m=4.52 15m=3.72
2026/09/24 12:16:24 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/09/24 12:16:24 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 75.0°C (hwmon2)
2026/09/24 12:16:24 info.go:13: [DEBUG] [system] GetInfo done in 60ms — mem=5260MB/25898MB (20.3%), rootDisk=25.5GB/68.4GB (37.3%), load=6.22/4.52/3.72, temp=75.0°C (hwmon2), cpu=59.7%
2026/09/24 12:16:24 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:16:24 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/09/24 12:16:24 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/09/24 12:16:24 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:16:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 12:16:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:24 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 0 skipped no container)
2026/09/24 12:16:24 healthprobe.go:181: [DEBUG] Health probe n8n: API GET :5678/healthz → 200 (3ms)
2026/09/24 12:16:24 healthprobe.go:161: [INFO] Health probes: 1 ok (of 1 probed)
2026/09/24 12:16:25 main.go:3671: [WARN] [deadapp] chaoscrash: crash_loop — 10 in 10m0s; STOPPING it (decision 28)
2026/09/24 12:16:25 manager.go:1283: [DEBUG] [stacks] StopStack chaoscrash: current state=restarting deployed=true containers=1
2026/09/24 12:16:25 manager.go:1286: [INFO] [stacks] Stopping stack: chaoscrash
2026/09/24 12:16:25 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:16:25 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/chaoscrash)
2026/09/24 12:16:25 manager.go:1483: [DEBUG] Command completed: docker compose down (took 0.1s)
2026/09/24 12:16:25 manager.go:1295: [INFO] [stacks] Stack chaoscrash stopped successfully (took 0.1s)
2026/09/24 12:16:25 settings.go:1814: [WARN] [settings] restore hold SET for chaoscrash — the app stays stopped until it is cleared
2026/09/24 12:16:25 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17837 bytes)
2026/09/24 12:16:25 settings.go:847: [INFO] [settings] Settings saved
2026/09/24 12:16:25 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (17879 bytes)
2026/09/24 12:16:25 settings.go:847: [INFO] [settings] Settings saved
2026/09/24 12:16:25 update_guard.go:776: [WARN] [backup] chaoscrash is STOPPED by the box: crash_loop (trip 1 within 24h0m0s) — Start gives it one more try (decision 28)
2026/09/24 12:16:25 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_stopped_unhealthy (severity warning) — further app_stopped_unhealthy events are logged at DEBUG only
2026/09/24 12:16:26 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaoscrash from 172.18.0.10:35772
2026/09/24 12:16:26 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaoscrash from 172.18.0.10:35772
2026/09/24 12:16:26 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaoscrash from 172.18.0.10:35772
2026/09/24 12:16:26 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaoscrash from 172.18.0.10:35772
@@ -0,0 +1,121 @@
{
"round": 7,
"action": "crash_loop",
"accident": "POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 14:14:55",
"app": "chaoscrash",
"started": "2026-09-24T12:14:30Z",
"before": {
"state": {
"deployed": false,
"state": "not_deployed",
"update_phase": null,
"hold_reason": null,
"hold_kind": null,
"update_error": null,
"ladder_steps_left": null
}
},
"act": "deploy -> 202",
"armed_at": "14:14:55",
"armed_why": "20 s after the install",
"time_to_steady_s": 115.9,
"after": {
"state": {
"deployed": true,
"state": "stopped",
"update_phase": null,
"hold_reason": "Az alkalmazást leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). Az Indítás gombbal újra megpróbálhatod.",
"hold_kind": "unhealthy_stop",
"update_error": null,
"ladder_steps_left": null
},
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"page_hu": [
"Temperature high: 76°C (hwmon2) Rendszermonitor →",
"+ 1 további figyelmeztetés →",
"Az alkalmazást leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). Az Indítás gombbal újra megpróbálhatod.",
"Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el."
],
"page_en": [
"Temperature high: 76°C (hwmon2) System monitor →",
"+ 1 more warning →",
"We stopped the app because it kept crashing (or ran out of memory). Press Start to try again.",
"Support is working on this app, so its data stays: for now you can remove only the app itself."
]
},
"readback": null,
"events": [
"2026-09-24T12:16:25Z app_stopped_unhealthy (warning)"
],
"box_log": [
"2026-09-24T12:14:34Z INFO [api] Deploy requested for stack: chaoscrash",
"2026-09-24T12:14:35Z INFO [stacks] Deploying stack chaoscrash with 2 env vars: [DOMAIN, SUBDOMAIN]",
"2026-09-24T12:14:35Z INFO [stacks] Deploying stack chaoscrash — checking 1 images...",
"2026-09-24T12:14:35Z INFO [stacks] Stack chaoscrash deployed successfully (took 0.4s)",
"2026-09-24T12:14:35Z INFO [stacks] installed-images chaoscrash: recorded 1 service(s) (chaoscrash=alpine:3.20 (sha256:d9e853e87e55…))",
"2026-09-24T12:14:35Z INFO [stacks] pin chaoscrash: chaoscrash=alpine:3.20",
"2026-09-24T12:14:38Z INFO [stacks] Stack chaoscrash post-start status:",
"2026-09-24T12:14:38Z INFO [stacks] chaoscrash alpine:3.20 restarting Restarting (1) Less than a second ago",
"2026-09-24T12:14:55Z INFO [api] Manual app-data backup (DB dump) triggered",
"2026-09-24T12:14:55Z INFO [backup] Starting database dump run",
"2026-09-24T12:14:55Z INFO [backup] Discovered 3 databases",
"2026-09-24T12:14:55Z INFO [backup] Discovered 3 database(s): romm-db(mariadb), paperless-postgres(postgres), nextcloud-db(mariadb)",
"2026-09-24T12:14:55Z INFO [backup] DB dump: romm-db → romm-mariadb.sql (112.9 KB, 313ms, 36 tables)",
"2026-09-24T12:14:55Z INFO [backup] DB dump: paperless-postgres → paperless-ngx-postgres.sql (364.1 KB, 388ms, 72 tables)",
"2026-09-24T12:14:56Z INFO [backup] DB dump: nextcloud-db → nextcloud-mariadb.sql (855.4 KB, 634ms, 131 tables)",
"2026-09-24T12:14:56Z INFO [backup] Stopping navidrome for safe volume dump",
"2026-09-24T12:14:57Z INFO [backup] Volume dump: navidrome/navidrome_navidrome_data → 707.0 KB",
"2026-09-24T12:14:57Z INFO [backup] Restarting navidrome after volume dump",
"2026-09-24T12:14:57Z INFO [backup] Stopping nextcloud for safe volume dump",
"2026-09-24T12:15:02Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_html → 761.6 MB",
"2026-09-24T12:15:03Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_redis_data → 281.0 KB",
"2026-09-24T12:15:04Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_db_data → 164.9 MB",
"2026-09-24T12:15:04Z INFO [backup] Restarting nextcloud after volume dump",
"2026-09-24T12:15:10Z INFO [backup] Stopping paperless-ngx for safe volume dump",
"2026-09-24T12:15:18Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_data → 1.0 MB",
"2026-09-24T12:15:19Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_postgres_data → 67.9 MB",
"2026-09-24T12:15:19Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_redis_data → 1.0 MB",
"2026-09-24T12:15:19Z INFO [backup] Restarting paperless-ngx after volume dump",
"2026-09-24T12:15:31Z INFO [backup] Stopping privatebin for safe volume dump",
"2026-09-24T12:15:32Z INFO [backup] Volume dump: privatebin/privatebin_privatebin_data → 1.5 KB",
"2026-09-24T12:15:32Z INFO [backup] Restarting privatebin after volume dump",
"2026-09-24T12:15:32Z INFO [backup] Stopping romm for safe volume dump",
"2026-09-24T12:15:38Z INFO [backup] Volume dump: romm/romm_romm_redis_data → 15.6 MB",
"2026-09-24T12:15:39Z INFO [backup] Volume dump: romm/romm_romm_config → 2.5 KB",
"2026-09-24T12:15:40Z INFO [backup] Volume dump: romm/romm_romm_db_data → 156.4 MB",
"2026-09-24T12:15:40Z INFO [backup] Restarting romm after volume dump",
"2026-09-24T12:15:51Z INFO [backup] Stopping vikunja for safe volume dump",
"2026-09-24T12:15:52Z INFO [backup] Volume dump: vikunja/vikunja_vikunja_data → 1.5 KB",
"2026-09-24T12:15:53Z INFO [backup] Volume dump: vikunja/vikunja_vikunja_db → 2.0 MB",
"2026-09-24T12:15:53Z INFO [backup] Restarting vikunja after volume dump",
"2026-09-24T12:15:54Z INFO [backup] Stopping wishlist for safe volume dump",
"2026-09-24T12:15:56Z INFO [backup] Volume dump: wishlist/wishlist_wishlist_data → 302.0 KB",
"2026-09-24T12:15:56Z INFO [backup] Volume dump: wishlist/wishlist_wishlist_uploads → 1.5 KB",
"2026-09-24T12:15:56Z INFO [backup] Restarting wishlist after volume dump",
"2026-09-24T12:15:58Z WARN [backup] Skipping volume dump for chaosoom — the app is HELD stopped (its restore point is preserved)",
"2026-09-24T12:15:58Z INFO [backup] Stopping n8n for safe volume dump",
"2026-09-24T12:16:00Z INFO [backup] Volume dump: n8n/n8n_n8n_data → 5.4 MB",
"2026-09-24T12:16:00Z INFO [backup] Restarting n8n after volume dump",
"2026-09-24T12:16:01Z INFO [backup] App-data backup completed: 3 databases (1.3 MB total), 8 volume dump(s) (1m6.606s)",
"2026-09-24T12:16:01Z INFO [backup] Recovery unit captured for chaoscrash → /mnt/sys_drive/felhom-data/backups/primary/chaoscrash (images=1, secrets-referenced=0, data_keys=0, portable-carried=0/0, withheld=0)",
"2026-09-24T12:16:25Z WARN [deadapp] chaoscrash: crash_loop — 10 in 10m0s; STOPPING it (decision 28)",
"2026-09-24T12:16:25Z INFO [stacks] Stopping stack: chaoscrash",
"2026-09-24T12:16:25Z INFO [stacks] Stack chaoscrash stopped successfully (took 0.1s)",
"2026-09-24T12:16:25Z WARN [settings] restore hold SET for chaoscrash — the app stays stopped until it is cleared",
"2026-09-24T12:16:25Z WARN [backup] chaoscrash is STOPPED by the box: crash_loop (trip 1 within 24h0m0s) — Start gives it one more try (decision 28)"
],
"undo_copies_left": "0"
}
@@ -0,0 +1,10 @@
14:14:30 ==== ROUND 7: crash_loop on chaoscrash x whole_box_backup (2026-09-24T12:14:30Z)
14:14:35 deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
14:14:35 + 4.4s chaoscrash: deployed=True state=deploying updating=False phase=None hold=None
14:14:37 + 6.4s chaoscrash: deployed=True state=running updating=False phase=None hold=None
14:14:55 >>> ARMED accident whole_box_backup (20 s after the install)
14:14:55 >>> POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 14:14:55
14:15:01 + 30.7s chaoscrash: deployed=True state=restarting updating=False phase=None hold=None
14:15:58 + 87.5s chaoscrash: deployed=True state=running updating=False phase=None hold=None
14:16:00 + 89.5s chaoscrash: deployed=True state=restarting updating=False phase=None hold=None
14:16:26 + 115.9s chaoscrash: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop
@@ -0,0 +1,11 @@
14:14:30 ==== ROUND 7: crash_loop on chaoscrash x whole_box_backup (2026-09-24T12:14:30Z)
14:14:35 deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
14:14:35 + 4.4s chaoscrash: deployed=True state=deploying updating=False phase=None hold=None
14:14:37 + 6.4s chaoscrash: deployed=True state=running updating=False phase=None hold=None
14:14:55 >>> ARMED accident whole_box_backup (20 s after the install)
14:14:55 >>> POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 14:14:55
14:15:01 + 30.7s chaoscrash: deployed=True state=restarting updating=False phase=None hold=None
14:15:58 + 87.5s chaoscrash: deployed=True state=running updating=False phase=None hold=None
14:16:00 + 89.5s chaoscrash: deployed=True state=restarting updating=False phase=None hold=None
14:16:26 + 115.9s chaoscrash: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop
14:16:35 ==== ROUND 7 END: steady in 115.9s; readback=None; events=['2026-09-24T12:16:25Z app_stopped_unhealthy (warning)']
@@ -0,0 +1,465 @@
2026/09/24 12:16:51 auth.go:154: [DEBUG] [web] login attempt from 172.18.0.10:35772 (X-Forwarded-For: 192.168.0.180)
2026/09/24 12:16:51 auth.go:202: [DEBUG] [web] login successful from 192.168.0.180, creating session
2026/09/24 12:16:51 auth.go:268: [DEBUG] [web] session created, expires=2026-10-01T12:16:51Z, active_sessions=6
2026/09/24 12:16:51 auth.go:222: [INFO] [web] Login from 172.18.0.10:35772
2026/09/24 12:16:51 server.go:545: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.10:35772
2026/09/24 12:16:51 server.go:545: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.10:35772
2026/09/24 12:16:51 router.go:1065: [INFO] [api] Manual catalog sync requested
2026/09/24 12:16:51 sync.go:208: [INFO] [sync] Starting catalog sync
2026/09/24 12:16:51 sync.go:296: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-drill.git (branch: main)
2026/09/24 12:16:51 sync.go:298: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache
2026/09/24 12:16:51 sync.go:627: [DEBUG] [sync] Running: git fetch --depth 1 origin main
2026/09/24 12:16:51 sync.go:627: [DEBUG] [sync] Running: git reset --hard origin/main
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] chaoscrash/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] chaoscrash/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] chaosoom/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] chaosoom/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] chaosoomb/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] chaosoomb/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:533: [DEBUG] [sync] n8n: catalog has moved past the pin — rendering the stored applied definition
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] n8n/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] navidrome/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] nextcloud/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:533: [DEBUG] [sync] vikunja: catalog has moved past the pin — rendering the stored applied definition
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] wishlist/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:440: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped
2026/09/24 12:16:51 sync.go:263: [INFO] [sync] Catalog sync complete
2026/09/24 12:16:51 router.go:1071: [INFO] [api] Catalog sync completed: Sablonok naprakészek — nincs változás
2026/09/24 12:16:53 router.go:362: [INFO] [api] Manual stack rescan requested
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=true composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=false composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:16:53 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/09/24 12:16:53 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/09/24 12:16:53 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection
2026/09/24 12:16:53 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (10 deployed, 48 available)
2026/09/24 12:16:53 router.go:369: [INFO] [api] Stack rescan completed: 58 stacks found
2026/09/24 12:16:54 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:16:54 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/09/24 12:16:54 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:16:54 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/09/24 12:16:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:16:54 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container)
2026/09/24 12:16:54 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:16:54 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 12:16:56 router.go:431: [INFO] [api] Deploy requested for stack: chaosoomb
2026/09/24 12:16:56 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.4 GB used=25.5 GB avail=39.3GB (37.3%)
2026/09/24 12:16:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5430MB avail≈20468MB
2026/09/24 12:16:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24274344 → total=25898MB avail=20468MB used=5430MB (21.0%)
2026/09/24 12:16:56 deploy.go:1250: [INFO] [stacks] Memory check: total=25898MB, reserved=384MB, usable=25514MB, committed_used=1818MB, new_req=8MB, remaining=23688MB
2026/09/24 12:16:56 deploy.go:253: [DEBUG] Deploy chaosoomb: received 2 user values
2026/09/24 12:16:56 deploy.go:258: [DEBUG] DOMAIN = "enkisfelhom.hu"
2026/09/24 12:16:56 deploy.go:258: [DEBUG] SUBDOMAIN = "chaosoomb"
2026/09/24 12:16:56 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaosoomb — 2 env vars, 0 encrypted, 0 sensitive fields
2026/09/24 12:16:56 [INFO] [stacks] SaveAppConfig: saved config for chaosoomb
2026/09/24 12:16:56 deploy.go:383: [INFO] [stacks] Deploying stack chaosoomb with 2 env vars: [DOMAIN, SUBDOMAIN]
2026/09/24 12:16:56 manager.go:1582: [INFO] [stacks] Deploying stack chaosoomb — checking 1 images...
2026/09/24 12:16:56 manager.go:1588: [DEBUG] alpine:3.20 — found locally
2026/09/24 12:16:56 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_deploy_started (severity info)
2026/09/24 12:16:56 lifecycle.go:70: [DEBUG] [integrations] OnStackStart: stack=chaosoomb, waiting 5s for state refresh
2026/09/24 12:16:56 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, SUBDOMAIN, DOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:16:56 manager.go:1463: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/chaosoomb)
2026/09/24 12:16:56 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaosoomb — 2 env vars, 0 encrypted, 0 sensitive fields
2026/09/24 12:16:56 [INFO] [stacks] SaveAppConfig: saved config for chaosoomb
2026/09/24 12:16:56 manager.go:1483: [DEBUG] Command completed: docker compose up -d (took 0.3s)
2026/09/24 12:16:56 deploy.go:462: [INFO] [stacks] Stack chaosoomb deployed successfully (took 0.4s)
2026/09/24 12:16:56 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaosoomb — 2 env vars, 0 encrypted, 0 sensitive fields
2026/09/24 12:16:56 [INFO] [stacks] SaveAppConfig: saved config for chaosoomb
2026/09/24 12:16:56 installed.go:420: [INFO] [stacks] installed-images chaosoomb: recorded 1 service(s) (chaosoomb=alpine:3.20 (sha256:d9e853e87e55…))
2026/09/24 12:16:56 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/chaosoomb — 2 env vars, 0 encrypted, 0 sensitive fields
2026/09/24 12:16:56 [INFO] [stacks] SaveAppConfig: saved config for chaosoomb
2026/09/24 12:16:56 pin.go:93: [INFO] [stacks] pin chaosoomb: chaosoomb=alpine:3.20
2026/09/24 12:16:56 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_deployed (severity info)
2026/09/24 12:16:59 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:16:59 manager.go:1463: [DEBUG] Running: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (in /opt/docker/stacks/chaosoomb)
2026/09/24 12:16:59 manager.go:1483: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}} {{.Image}} {{.State}} {{.Status}} (took 0.1s)
2026/09/24 12:16:59 manager.go:1543: [INFO] [stacks] Stack chaosoomb post-start status:
2026/09/24 12:16:59 manager.go:1546: [INFO] [stacks] chaosoomb alpine:3.20 running Up 3 seconds
2026/09/24 12:17:01 lifecycle.go:86: [DEBUG] [integrations] OnStackStart: stack=chaosoomb integrationsFound=0
2026/09/24 12:17:04 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:17:04 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:17:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:04 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container)
2026/09/24 12:17:04 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:17:04 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 12:17:14 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:17:14 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:14 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container)
2026/09/24 12:17:24 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/09/24 12:17:24 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5461MB avail≈20437MB
2026/09/24 12:17:24 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24237404 → total=25898MB avail=20437MB used=5461MB (21.1%)
2026/09/24 12:17:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=25.5GB avail=39.3GB (37.3%)
2026/09/24 12:17:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%)
2026/09/24 12:17:24 info.go:13: [DEBUG] [system] readLoadAvg: raw="5.47 4.63 3.81 13/1552 6674" → 1m=5.47 5m=4.63 15m=3.81
2026/09/24 12:17:24 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/09/24 12:17:24 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 72.1°C (hwmon2)
2026/09/24 12:17:24 info.go:13: [DEBUG] [system] GetInfo done in 67ms — mem=5461MB/25898MB (21.1%), rootDisk=25.5GB/68.4GB (37.3%), load=5.47/4.63/3.81, temp=72.1°C (hwmon2), cpu=29.5%
2026/09/24 12:17:24 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan
2026/09/24 12:17:24 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting
2026/09/24 12:17:24 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/09/24 12:17:24 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=false composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/09/24 12:17:24 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/09/24 12:17:24 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=false composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaoscrash" deployed=true composePath=/opt/docker/stacks/chaoscrash/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoom" deployed=true composePath=/opt/docker/stacks/chaosoom/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "chaosoomb" deployed=true composePath=/opt/docker/stacks/chaosoomb/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=false composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=false composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=true composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=true composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=true composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=false composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=true composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=true composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/09/24 12:17:24 manager.go:608: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/09/24 12:17:24 manager.go:1690: [DEBUG] [stacks] getCatalogTemplateSlugs: found 56 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/09/24 12:17:24 manager.go:687: [DEBUG] [stacks] ScanStacks: catalog has 56 template slugs for orphan detection
2026/09/24 12:17:24 manager.go:718: [INFO] [stacks] ScanStacks complete: 58 stacks found (11 deployed, 47 available)
2026/09/24 12:17:24 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 92ms)
2026/09/24 12:17:25 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:25 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:25 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:25 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:25 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:25 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:25 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:25 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container)
2026/09/24 12:17:25 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:17:25 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 12:17:25 main.go:872: [WARN] [deadapp] chaosoomb: container chaosoomb was OOM-killed (started 2026-09-24T12:17:22.994688333Z; kills 2, limit 32M, peak 32M)
2026/09/24 12:17:25 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_oom (severity warning) — further app_oom events are logged at DEBUG only
2026/09/24 12:17:34 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:17:34 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:34 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container)
2026/09/24 12:17:44 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:17:44 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:17:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:44 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:44 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container)
2026/09/24 12:17:44 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:17:44 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 12:17:54 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:17:54 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/09/24 12:17:54 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/09/24 12:17:54 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:17:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:54 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:17:54 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container)
2026/09/24 12:17:54 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:17:54 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 12:17:55 main.go:872: [WARN] [deadapp] chaosoomb: container chaosoomb was OOM-killed (started 2026-09-24T12:17:36.838256991Z; kills 13, limit 32M, peak 32M)
2026/09/24 12:17:55 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_oom (severity warning)
2026/09/24 12:18:04 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:18:04 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:04 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 12:18:04 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container)
2026/09/24 12:18:14 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:18:14 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:18:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:14 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:14 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container)
2026/09/24 12:18:14 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:18:14 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
2026/09/24 12:18:24 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/scratch_hdd", hasCPUCollector=true)
2026/09/24 12:18:24 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈5453MB avail≈20445MB
2026/09/24 12:18:24 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=24247068 → total=25898MB avail=20445MB used=5453MB (21.1%)
2026/09/24 12:18:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.4GB used=61.8GB avail=3.0GB (90.5%)
2026/09/24 12:18:24 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/scratch_hdd" bsize=4096 total=937.8GB used=73.4GB avail=816.7GB (7.8%)
2026/09/24 12:18:24 info.go:13: [DEBUG] [system] readLoadAvg: raw="4.80 4.57 3.84 12/1537 6850" → 1m=4.80 5m=4.57 15m=3.84
2026/09/24 12:18:24 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/09/24 12:18:24 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 70.2°C (hwmon2)
2026/09/24 12:18:24 info.go:13: [DEBUG] [system] GetInfo done in 80ms — mem=5453MB/25898MB (21.1%), rootDisk=61.8GB/68.4GB (90.5%), load=4.80/4.57/3.84, temp=70.2°C (hwmon2), cpu=30.7%
2026/09/24 12:18:24 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:18:24 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/09/24 12:18:24 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:18:24 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:24 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping vikunja — last check 10s ago, effective interval 10s, healthy=false
2026/09/24 12:18:24 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (8 skipped not due, 0 skipped no container)
2026/09/24 12:18:25 main.go:3671: [WARN] [deadapp] chaosoomb: crash_loop — 6 in 10m0s; STOPPING it (decision 28)
2026/09/24 12:18:25 manager.go:1283: [DEBUG] [stacks] StopStack chaosoomb: current state=running deployed=true containers=1
2026/09/24 12:18:25 manager.go:1286: [INFO] [stacks] Stopping stack: chaosoomb
2026/09/24 12:18:25 manager.go:1454: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/09/24 12:18:25 manager.go:1463: [DEBUG] Running: docker compose down (in /opt/docker/stacks/chaosoomb)
2026/09/24 12:18:32 manager.go:1483: [DEBUG] Command completed: docker compose down (took 7.4s)
2026/09/24 12:18:32 manager.go:1295: [INFO] [stacks] Stack chaosoomb stopped successfully (took 7.4s)
2026/09/24 12:18:32 settings.go:1814: [WARN] [settings] restore hold SET for chaosoomb — the app stays stopped until it is cleared
2026/09/24 12:18:32 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (18057 bytes)
2026/09/24 12:18:32 settings.go:847: [INFO] [settings] Settings saved
2026/09/24 12:18:32 settings.go:844: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (18098 bytes)
2026/09/24 12:18:32 settings.go:847: [INFO] [settings] Settings saved
2026/09/24 12:18:32 update_guard.go:776: [WARN] [backup] chaosoomb is STOPPED by the box: crash_loop (trip 1 within 24h0m0s) — Start gives it one more try (decision 28)
2026/09/24 12:18:32 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_stopped_unhealthy (severity warning)
2026/09/24 12:18:33 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoomb from 172.18.0.10:35772
2026/09/24 12:18:33 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoomb from 172.18.0.10:35772
2026/09/24 12:18:33 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoomb from 172.18.0.10:35772
2026/09/24 12:18:33 server.go:545: [DEBUG] [web] ServeHTTP: GET /apps/chaosoomb from 172.18.0.10:35772
2026/09/24 12:18:34 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/09/24 12:18:34 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/09/24 12:18:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping wishlist — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping navidrome — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping nextcloud — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping paperless-ngx — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:34 healthprobe.go:54: [DEBUG] [stacks] RunHealthProbes: skipping n8n — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/09/24 12:18:34 healthprobe.go:104: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (7 skipped not due, 0 skipped no container)
2026/09/24 12:18:34 healthprobe.go:190: [WARN] Health probe vikunja: API GET :8999/api/v1/info → Get "http://vikunja:8999/api/v1/info": dial tcp 172.18.0.8:8999: connect: connection refused
2026/09/24 12:18:34 healthprobe.go:159: [WARN] Health probes: 0 ok, 1 unhealthy (of 1 probed)
@@ -0,0 +1,88 @@
{
"round": 8,
"action": "oom_app",
"accident": {
"kind": "disk_to_floor_plus_1g",
"cmd": "fallocate /var/lib/docker/chaos-fill leaving 3 GB free (floor 2 GB + 1 GB)",
"fired_at": "14:17:25",
"result": "rc=0 filled 39025688576 bytes /dev/loop1 69G 62G 3.0G 96% /var/lib/docker "
},
"app": "chaosoomb",
"started": "2026-09-24T12:16:51Z",
"before": {
"state": {
"deployed": false,
"state": "not_deployed",
"update_phase": null,
"hold_reason": null,
"hold_kind": null,
"update_error": null,
"ladder_steps_left": null
}
},
"act": "deploy -> 202",
"armed_at": "14:17:16",
"armed_why": "20 s after the install",
"time_to_steady_s": 102.0,
"after": {
"state": {
"deployed": true,
"state": "stopped",
"update_phase": null,
"hold_reason": "Az alkalmazást leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). Az Indítás gombbal újra megpróbálhatod.",
"hold_kind": "unhealthy_stop",
"update_error": null,
"ladder_steps_left": null
},
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"page_hu": [
"Temperature high: 76°C (hwmon2) Rendszermonitor →",
"+ 1 további figyelmeztetés →",
"Az alkalmazást leállítottuk, mert újra és újra összeomlott (vagy elfogyott a memóriája). Az Indítás gombbal újra megpróbálhatod.",
"Az ügyfélszolgálat foglalkozik ezzel az alkalmazással, ezért az adatai megmaradnak: most csak magát az alkalmazást távolíthatod el."
],
"page_en": [
"Temperature high: 76°C (hwmon2) System monitor →",
"+ 1 more warning →",
"We stopped the app because it kept crashing (or ran out of memory). Press Start to try again.",
"Support is working on this app, so its data stays: for now you can remove only the app itself."
]
},
"readback": null,
"events": [
"2026-09-24T12:17:25Z app_oom (warning)",
"2026-09-24T12:17:55Z app_oom (warning)",
"2026-09-24T12:18:32Z app_stopped_unhealthy (warning)"
],
"box_log": [
"2026-09-24T12:16:56Z INFO [api] Deploy requested for stack: chaosoomb",
"2026-09-24T12:16:56Z INFO [stacks] Deploying stack chaosoomb with 2 env vars: [DOMAIN, SUBDOMAIN]",
"2026-09-24T12:16:56Z INFO [stacks] Deploying stack chaosoomb — checking 1 images...",
"2026-09-24T12:16:56Z INFO [stacks] Stack chaosoomb deployed successfully (took 0.4s)",
"2026-09-24T12:16:56Z INFO [stacks] installed-images chaosoomb: recorded 1 service(s) (chaosoomb=alpine:3.20 (sha256:d9e853e87e55…))",
"2026-09-24T12:16:56Z INFO [stacks] pin chaosoomb: chaosoomb=alpine:3.20",
"2026-09-24T12:16:59Z INFO [stacks] Stack chaosoomb post-start status:",
"2026-09-24T12:16:59Z INFO [stacks] chaosoomb alpine:3.20 running Up 3 seconds",
"2026-09-24T12:17:25Z WARN [deadapp] chaosoomb: container chaosoomb was OOM-killed (started 2026-09-24T12:17:22.994688333Z; kills 2, limit 32M, peak 32M)",
"2026-09-24T12:17:55Z WARN [deadapp] chaosoomb: container chaosoomb was OOM-killed (started 2026-09-24T12:17:36.838256991Z; kills 13, limit 32M, peak 32M)",
"2026-09-24T12:18:25Z WARN [deadapp] chaosoomb: crash_loop — 6 in 10m0s; STOPPING it (decision 28)",
"2026-09-24T12:18:25Z INFO [stacks] Stopping stack: chaosoomb",
"2026-09-24T12:18:32Z INFO [stacks] Stack chaosoomb stopped successfully (took 7.4s)",
"2026-09-24T12:18:32Z WARN [settings] restore hold SET for chaosoomb — the app stays stopped until it is cleared",
"2026-09-24T12:18:32Z WARN [backup] chaosoomb is STOPPED by the box: crash_loop (trip 1 within 24h0m0s) — Start gives it one more try (decision 28)"
],
"undo_copies_left": "0"
}
@@ -0,0 +1,9 @@
14:16:51 ==== ROUND 8: oom_app on chaosoomb x disk_to_floor_plus_1g (2026-09-24T12:16:51Z)
14:16:56 deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
14:16:56 + 4.8s chaosoomb: deployed=True state=not_deployed updating=False phase=None hold=None
14:16:58 + 6.8s chaosoomb: deployed=True state=running updating=False phase=None hold=None
14:17:16 >>> ARMED accident disk_to_floor_plus_1g (20 s after the install)
14:18:05 + 73.6s chaosoomb: deployed=True state=restarting updating=False phase=None hold=None
14:18:15 + 83.8s chaosoomb: deployed=True state=running updating=False phase=None hold=None
14:18:33 + 102.0s chaosoomb: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop
14:18:33 >>> accident done: {'kind': 'disk_to_floor_plus_1g', 'cmd': 'fallocate /var/lib/docker/chaos-fill leaving 3 GB free (floor 2 GB + 1 GB)', 'fired_at': '14:17:25', 'result': 'rc=0 filled 39025688576 bytes /dev/loop1 69G 62G 3.0G 96% /var/lib/docker '}
@@ -0,0 +1,10 @@
14:16:51 ==== ROUND 8: oom_app on chaosoomb x disk_to_floor_plus_1g (2026-09-24T12:16:51Z)
14:16:56 deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
14:16:56 + 4.8s chaosoomb: deployed=True state=not_deployed updating=False phase=None hold=None
14:16:58 + 6.8s chaosoomb: deployed=True state=running updating=False phase=None hold=None
14:17:16 >>> ARMED accident disk_to_floor_plus_1g (20 s after the install)
14:18:05 + 73.6s chaosoomb: deployed=True state=restarting updating=False phase=None hold=None
14:18:15 + 83.8s chaosoomb: deployed=True state=running updating=False phase=None hold=None
14:18:33 + 102.0s chaosoomb: deployed=True state=stopped updating=False phase=None hold=unhealthy_stop
14:18:33 >>> accident done: {'kind': 'disk_to_floor_plus_1g', 'cmd': 'fallocate /var/lib/docker/chaos-fill leaving 3 GB free (floor 2 GB + 1 GB)', 'fired_at': '14:17:25', 'result': 'rc=0 filled 39025688576 bytes /dev/loop1 69G 62G 3.0G 96% /var/lib/docker '}
14:18:40 ==== ROUND 8 END: steady in 102.0s; readback=None; events=['2026-09-24T12:17:25Z app_oom (warning)', '2026-09-24T12:17:55Z app_oom (warning)', '2026-09-24T12:18:32Z app_stopped_unhealthy (warning)']
@@ -28,3 +28,6 @@ ROWS TO FILE: R-668 (Tier-2 target on a missing path, fixed); applied-meta after
- 13:07 FOUND (Part C read of the chain): demo-hp's thin pool `local-lvm` 100 % FULL (out_of_data_space, error_if_no_space) since 10:35 CEST. Cause (agent journal, C-04): the SCHEDULED restore-test at 10:29 restored 9201's 22 GiB archive into the SAME pool as scratch guest 990000 with no free-space check; start failed; teardown failed („filesystem in use") → "left for Recover", and Recover runs only at agent start. The agent logged „a full pool corrupts every guest on it" every few seconds and did nothing else. 9201's controller: „no space left on device" from 10:38 CEST, its docker log stops 10:39. 9201 also carried a stale `snapshot-delete` lock; its whole-box backups failed 06:59–08:22 (CT is locked). Before tonight's run; not caused by it (9202 lives on nvme-scratch).
- 13:09 INTERVENTION 1: `systemctl restart felhom-agent` on demo-hp so the agent's own Recover tears the scratch down (a direct `pct destroy` was refused by the session's permission check). Result (C-05): „recover: destroyed leaked restore-test scratch guest" vmid=990000; pool 100 % → 58.91 %, state rw; 9201's lock gone. A further read of the morning vzdump task logs was refused by the permission check — left for the operator.
ROWS TO FILE (agent, P1): restore-test fills the production pool (no space check) and its leaked scratch waits for an agent restart; the pool-fill WARN has no action; 9201 stale snapshot-delete lock blocked whole-box backups all morning.
- 13:45 Part E round 1 (oom_app × power cut): OOM storm counted again after the boot, stopped +185 s; events app_oom_storm (error) + app_stopped_unhealthy (warning). PASS.
- 13:49 Part E round 2 (install × docker restart): the restart killed the controller mid-deploy; n8n came back NOT installed, no event, no page message; leftovers app.yaml/applied files in the stack dir. FINDING (row). n8n reinstalled through the product (211 s, leftovers did not block) so round 10 has its step.
- 14:04 Part E round 3 (cutoff file app × power cut at verifying): after the boot the update RESUMED, undo found the cut copy → HELD naming the second drive (whole) → whole restore 37 s → account + files read back. PASS. BUT the hold named the Tier-2 copy from 13:04, not a fresh one — the update's own backup did not refresh Tier 2 (to reproduce in round 11); the pre-cut controller log was lost with the container (runner now saves it at arm time).
@@ -103,7 +103,7 @@ def readback(app, s):
"files": nf.verify_files(w, SUB[app], A, {names[0]: S["files"][names[0]], names[2]: S["files"][names[2]]}, w.say)}
if not A:
return {"A": None, "note": "no seed recorded"}
w.wait_app(SUB[app], "/", tries=90, delay=4)
w.wait_app(SUB[app], "/", want=("200", "302", "303", "307", "401", "403"), tries=90, delay=4)
return {"A": bool(FX[app].verify(w, SUB[app], A, w.say))}
@@ -185,6 +185,11 @@ class Arm:
self.note["accident"] = f"POST /api/backup/run -> {code} {str(d)[:160]} at {time.strftime('%H:%M:%S')}"
w.say(" >>> " + self.note["accident"])
return
# R-320: the box's log off the machine BEFORE the accident — round 3's power cut replaced the controller
# container and took the pre-cut lines with it. Only from the main thread: walk.guest shares one temp file.
if threading.current_thread() is threading.main_thread():
open(os.path.join(EVD, f"round-{self.n:02d}-controller-pre.log"), "w").write(
w.guest(f"docker logs --since {self.note['started']} felhom-controller 2>&1 | grep -vE 'auth: valid session|router.go:81|Status refresh' | tail -3000"))
json.dump({"round": self.n, "kind": self.kind, "at": time.time(), "why": why},
open(os.path.join(EVD, f"arm-{self.n:02d}.json"), "w"))
@@ -216,8 +221,14 @@ def wait_controller(cap=900):
# ------------------------------------------------------------------------------------------ actions
def a_unhealthy_install(app, note, arm, t0):
"""crash_loop / oom_app: install the drill app through the product; the box must stop it by itself."""
for _ in range(12): # the drill template must be on the box first (attempt 0 of round 1: "not found")
w.sync_rescan()
if w.ctl("GET", f"/api/stacks/{app}/deploy-fields")[0] == "200":
break
time.sleep(5)
vals = w.deploy_values(app, app)
code, d = w.ctl("POST", f"/api/stacks/{app}/deploy", {"values": vals})
w.say(f" deploy -> {code} {str(d)[:120]}")
note["act"] = f"deploy -> {code}"
threading.Timer(20, arm, args=("20 s after the install",)).start()
return steady(app, t0, cap=1500, until=lambda st: st.get("hold_kind") == "unhealthy_stop")
@@ -262,7 +273,7 @@ def a_install(app, note, arm, t0, s):
return secs, st
def a_update(app, note, arm, t0, on_verify=None):
def a_update(app, note, arm, t0, on_verify=None, arm_at_starting=False):
code, d = w.ctl("POST", f"/api/stacks/{app}/update")
note["act"] = f"Update -> {code} {str(d)[:140]}"
w.say(" " + note["act"])
@@ -281,7 +292,7 @@ def a_update(app, note, arm, t0, on_verify=None):
if on_verify:
on_verify()
arm("at verifying")
if ph == "starting":
if ph == "starting" and arm_at_starting:
arm("at starting")
if st and not st.get("updating") and ph in ("done", "failed", "undone") and time.time() - t0 > 3:
break
@@ -352,7 +363,7 @@ def a_ladder_step(app, note, arm, t0, s):
st = w.stack(app)
note["steps_left_before"] = st.get("ladder_steps_left")
note["pinned_before"] = (st.get("app_config") or {}).get("pinned_images")
r = a_update(app, note, arm, t0)
r = a_update(app, note, arm, t0, arm_at_starting=True)
w.sync_rescan()
st = w.stack(app)
note["steps_left_after"] = st.get("ladder_steps_left")
@@ -443,8 +454,29 @@ def run_round(n):
w.say(f"==== ROUND {n} END: steady in {note['time_to_steady_s']}s; readback={note['readback']}; events={note['events']}")
def collect(n, t_iso, extra):
"""Finish a round whose runner was stopped: the same five observations, no action."""
s = load()
sched = {r["round"]: r for r in schedule()}[n]
app = TARGET[n]
w.login()
note = {"round": n, **sched, "app": app, "started": t_iso, "collected_by_hand": True, **extra}
note["after"] = household(app)
if not w.stack(app).get("deployed"):
note["after"]["leftovers"] = w.guest(f"docker ps -a --filter label=com.docker.compose.project={app} --format '{{{{.Names}}}} {{{{.Status}}}}'; docker volume ls -q | grep '^{app}_' || true; ls /opt/docker/stacks/{app}/ 2>/dev/null || true").strip()
note["readback"] = readback(app, s)
note["events"] = events_since(t_iso)
note["box_log"] = box_log(t_iso, app)
open(os.path.join(EVD, f"round-{n:02d}-controller.log"), "w").write(
w.guest(f"docker logs --since {t_iso} felhom-controller 2>&1 | grep -vE 'auth: valid session|router.go:81|Status refresh' | tail -3000"))
json.dump(note, open(os.path.join(EVD, f"round-{n:02d}.json"), "w"), indent=2, ensure_ascii=False, default=str)
w.say(f"==== ROUND {n} COLLECTED: after={json.dumps(note['after'], ensure_ascii=False)[:400]} events={note['events']}")
if __name__ == "__main__":
if sys.argv[1] == "setup":
if sys.argv[1] == "collect":
collect(int(sys.argv[2]), sys.argv[3], json.loads(sys.argv[4]) if len(sys.argv) > 4 else {})
elif sys.argv[1] == "setup":
setup()
elif sys.argv[1] == "round":
run_round(int(sys.argv[2]))
@@ -0,0 +1,27 @@
#!/usr/bin/env python3
"""After round 2 (the install lost to a docker restart): install n8n again through the product, with no accident,
so round 10 has its ladder step. Also shows whether the lost install's leftovers block a fresh one."""
import json, sys, time
sys.path.insert(0, ".")
import walk as w
import chaos as c
s = c.load()
w.login()
comp = f"{w.DRILL}/templates/n8n/docker-compose.yml"
w.say("drill n8n image line: " + [l for l in open(comp).read().split("\n") if "image:" in l][0].strip())
w.sync_rescan()
t0 = time.time()
ok = w.deploy("n8n", c.SUB["n8n"])
st = w.stack("n8n")
w.say(f"deploy ok={ok} in {round(time.time()-t0)} s pinned={(st.get('app_config') or {}).get('pinned_images')}")
w.wait_app(c.SUB["n8n"], "/", tries=90, delay=4)
A = c.FX["n8n"].seed(w, c.SUB["n8n"], w.say)
s.setdefault("apps", {}).setdefault("n8n", {})["A"] = A
c.save(s)
head = s.get("heads", {}).get("n8n")
if head:
c.drill(lambda: open(comp, "w").write(head), "n8n back to the head (2 steps offered)")
w.sync_rescan(); time.sleep(3); w.sync_rescan()
st = w.stack("n8n")
w.say(f"steps_left={st.get('ladder_steps_left')} badge={w.badges('n8n')['en'][:1]}")
open("../E/round-02b-reinstall.log", "w").write("\n".join(w.LOG) + "\n")