perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_CTYPE = "UTF-8",
	LC_NUMERIC = (unset),
	LC_COLLATE = (unset),
	LC_TIME = (unset),
	LC_MESSAGES = (unset),
	LC_MONETARY = (unset),
	LC_ADDRESS = (unset),
	LC_IDENTIFICATION = (unset),
	LC_MEASUREMENT = (unset),
	LC_PAPER = (unset),
	LC_TELEPHONE = (unset),
	LC_NAME = (unset),
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
2026/08/23 09:31:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:31:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:01 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 1 skipped no container)
2026/08/23 09:31:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:31:01 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:31:04 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:31:04 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:31:04 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:31:04Z, active_sessions=21
2026/08/23 09:31:04 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:31:04 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:31:04 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:31:04 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:31:04 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:31:04 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:31:04 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:31:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:31:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:31:11 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:31:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:11 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 1 skipped no container)
2026/08/23 09:31:21 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:31:21 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:31:21 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:31:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:21 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 1 skipped no container)
2026/08/23 09:31:21 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:31:21 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:31:22 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (684ms)
2026/08/23 09:31:23 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (696ms)
2026/08/23 09:31:25 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:31:25 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:31:25 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:31:25Z, active_sessions=22
2026/08/23 09:31:25 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:31:25 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:31:25 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:31:25 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:31:25 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:31:25 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:31:25 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:31:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:31:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:31:31 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:31:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:31 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:31:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:31:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:41 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:31:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:31:41 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:31:46 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:31:46 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:31:46 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:31:46Z, active_sessions=23
2026/08/23 09:31:46 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:31:46 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:31:46 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:31:46 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:31:46 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:31:46 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:31:46 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:31:50 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:31:50 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4068MB avail≈21830MB
2026/08/23 09:31:50 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25889704 → total=25898MB avail=21830MB used=4068MB (15.7%)
2026/08/23 09:31:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:31:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:31:50 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.55 0.57 0.56 4/897 1837" → 1m=0.55 5m=0.57 15m=0.56
2026/08/23 09:31:50 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:31:50 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:31:50 info.go:13: [DEBUG] [system] GetInfo done in 58ms — mem=4068MB/25898MB (15.7%), rootDisk=10.2GB/68.7GB (14.9%), load=0.55/0.57/0.56, temp=52.9°C (hwmon1), cpu=5.7%
2026/08/23 09:31:51 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:31:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:31:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:31:51 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan
2026/08/23 09:31:51 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting
2026/08/23 09:31:51 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:31:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:31:51 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:31:51 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:31:51 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:31:51 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:31:51 notifier.go:206: [DEBUG] PushEvent: type=app_start_failed severity=warning url=https://hub.felhom.eu/api/v1/event
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=true composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=true composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "cloudflared" deployed=false composePath=/opt/docker/stacks/cloudflared/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=true composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=true composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=true composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/08/23 09:31:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/08/23 09:31:51 manager.go:1547: [DEBUG] [stacks] getCatalogTemplateSlugs: found 53 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/08/23 09:31:51 manager.go:539: [DEBUG] [stacks] ScanStacks: catalog has 53 template slugs for orphan detection
2026/08/23 09:31:51 manager.go:570: [INFO] [stacks] ScanStacks complete: 56 stacks found (8 deployed, 48 available)
2026/08/23 09:31:51 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:31:51 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 73ms)
2026/08/23 09:31:51 notifier.go:232: [DEBUG] PushEvent: app_start_failed pushed OK (HTTP 200)
2026/08/23 09:31:51 notifier.go:234: [INFO] Event pushed: app_start_failed (warning) — Telepített alkalmazás nem fut: PrivateBin
2026/08/23 09:31:51 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (533ms)
2026/08/23 09:31:51 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 534ms)
2026/08/23 09:31:52 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (651ms)
2026/08/23 09:31:53 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (655ms)
2026/08/23 09:32:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:32:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:32:01 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:32:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:01 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:32:07 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:32:07 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:32:07 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:32:07Z, active_sessions=24
2026/08/23 09:32:07 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:32:07 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:32:07 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:32:07 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:32:07 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:32:07 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:32:07 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:32:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:32:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:32:11 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:32:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:11 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:32:21 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:32:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:21 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:32:21 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:32:21 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:32:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:21 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:32:21 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:32:22 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (605ms)
2026/08/23 09:32:23 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (593ms)
2026/08/23 09:32:28 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:32:28 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:32:28 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:32:28Z, active_sessions=25
2026/08/23 09:32:28 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:32:28 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:32:28 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:32:28 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:32:28 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:32:29 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:32:29 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:32:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:32:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:32:31 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:32:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:31 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:32:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:32:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:41 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:32:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:32:41 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:32:50 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:32:50 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:32:50 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:32:50Z, active_sessions=26
2026/08/23 09:32:50 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:32:50 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:32:50 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:32:50 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:32:50 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:32:50 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:32:50 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:32:50 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:32:50 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4171MB avail≈21727MB
2026/08/23 09:32:50 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25767140 → total=25898MB avail=21727MB used=4171MB (16.1%)
2026/08/23 09:32:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:32:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:32:50 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.52 0.56 0.55 4/894 1960" → 1m=0.52 5m=0.56 15m=0.55
2026/08/23 09:32:50 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:32:50 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 53.4°C (hwmon2)
2026/08/23 09:32:50 info.go:13: [DEBUG] [system] GetInfo done in 57ms — mem=4171MB/25898MB (16.1%), rootDisk=10.2GB/68.7GB (14.9%), load=0.52/0.56/0.55, temp=53.4°C (hwmon2), cpu=2.3%
2026/08/23 09:32:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:32:51 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:32:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:32:51 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:32:51 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:32:51 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:32:51 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:32:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:32:51 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:32:51 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (536ms)
2026/08/23 09:32:51 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 537ms)
2026/08/23 09:32:52 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (610ms)
2026/08/23 09:32:53 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (594ms)
2026/08/23 09:33:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:33:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:01 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:33:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:33:01 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:33:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:33:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:33:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:11 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:33:11 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:33:11 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:33:11 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:33:11 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:33:11Z, active_sessions=27
2026/08/23 09:33:11 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:33:11 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:33:11 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:33:11 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:33:11 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:33:11 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:33:11 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:33:21 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:33:21 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:33:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:21 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:33:21 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:33:21 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:33:21 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:33:22 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (653ms)
2026/08/23 09:33:23 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (594ms)
2026/08/23 09:33:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:33:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:31 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:33:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:33:31 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:33:32 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:33:32 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:33:32 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:33:32Z, active_sessions=28
2026/08/23 09:33:32 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:33:32 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:33:32 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:33:32 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:33:32 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:33:32 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:33:32 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:33:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:33:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:33:41 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:33:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:41 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:33:50 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:33:50 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈3977MB avail≈21921MB
2026/08/23 09:33:50 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25997592 → total=25898MB avail=21921MB used=3977MB (15.4%)
2026/08/23 09:33:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:33:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:33:50 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.41 0.53 0.54 6/898 2072" → 1m=0.41 5m=0.53 15m=0.54
2026/08/23 09:33:50 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:33:50 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:33:50 info.go:13: [DEBUG] [system] GetInfo done in 60ms — mem=3977MB/25898MB (15.4%), rootDisk=10.2GB/68.7GB (14.9%), load=0.41/0.53/0.54, temp=52.9°C (hwmon1), cpu=4.4%
2026/08/23 09:33:51 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:33:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:33:51 scheduler.go:346: [INFO] [scheduler] Running job: offsite-credential-retry
2026/08/23 09:33:51 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:33:51 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan
2026/08/23 09:33:51 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting
2026/08/23 09:33:51 scheduler.go:67: [DEBUG] [scheduler] job offsite-credential-retry: execution starting
2026/08/23 09:33:51 scheduler.go:363: [INFO] [scheduler] Job offsite-credential-retry completed (took 0s)
2026/08/23 09:33:51 scheduler.go:346: [INFO] [scheduler] Running job: system-health
2026/08/23 09:33:51 scheduler.go:67: [DEBUG] [scheduler] job system-health: execution starting
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:33:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:33:51 scheduler.go:346: [INFO] [scheduler] Running job: backup-cache
2026/08/23 09:33:51 scheduler.go:67: [DEBUG] [scheduler] job backup-cache: execution starting
2026/08/23 09:33:51 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:33:51 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:33:51 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:33:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:33:51 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=true composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=true composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "cloudflared" deployed=false composePath=/opt/docker/stacks/cloudflared/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=true composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=true composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=true composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/08/23 09:33:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/08/23 09:33:51 manager.go:1547: [DEBUG] [stacks] getCatalogTemplateSlugs: found 53 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/08/23 09:33:51 manager.go:539: [DEBUG] [stacks] ScanStacks: catalog has 53 template slugs for orphan detection
2026/08/23 09:33:51 manager.go:570: [INFO] [stacks] ScanStacks complete: 56 stacks found (8 deployed, 48 available)
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈3983MB avail≈21915MB
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25990576 → total=25898MB avail=21915MB used=3983MB (15.4%)
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.41 0.53 0.54 7/925 2115" → 1m=0.41 5m=0.53 15m=0.54
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] GetInfo done in 72ms — mem=3983MB/25898MB (15.4%), rootDisk=10.2GB/68.7GB (14.9%), load=0.41/0.53/0.54, temp=52.9°C (hwmon1), cpu=4.4%
2026/08/23 09:33:51 healthcheck.go:42: [DEBUG] [monitor] Raw values: disk=14.9%, hdd=0.6% (configured=true), mem=15.4% (3983MB/25898MB), cpu=4.4%, temp=52.9°C (hwmon1)
2026/08/23 09:33:51 healthcheck.go:74: [DEBUG] [monitor] SSD disk: OK (15%)
2026/08/23 09:33:51 healthcheck.go:107: [DEBUG] [monitor] Memory: OK (15%)
2026/08/23 09:33:51 healthcheck.go:125: [DEBUG] [monitor] CPU: OK (4%)
2026/08/23 09:33:51 healthcheck.go:143: [DEBUG] [monitor] Temperature: OK (53°C)
2026/08/23 09:33:51 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:33:51 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 88ms)
2026/08/23 09:33:51 backup.go:434: [DEBUG] groupStacksByDrive: /mnt/sys_drive → [bookstack, docmost, kimai, opengist, privatebin]
2026/08/23 09:33:51 backup.go:434: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/hdd_1 → [calibre-web, paperless-ngx, romm]
2026/08/23 09:33:51 backup.go:1063: [INFO] [backup] Found 13 DB dump files across drives
2026/08/23 09:33:51 dbdump.go:128: [DEBUG] DiscoverDatabases: running docker ps to find database containers
2026/08/23 09:33:51 dbdump.go:147: [DEBUG] DiscoverDatabases: docker ps output: 1c05a812256b	felhom-controller		gitea.dooplex.hu/admin/felhom-controller:0.223.0
13cfb077ecf8	docmost	docmost	docmost/docmost:0.95.0
91041c89bd0d	docmost-postgres	docmost	postgres:16-alpine
41c830a66b1d	docmost-redis	docmost	redis:7-alpine
77031a0c1319	romm	romm	rommapp/romm:5.0.0
aa6fe6fa459e	romm-redis	romm	redis:7-alpine
e076270a7d75	romm-db	romm	mariadb:11.4
1c704643bc4c	paperless-webserver	paperless-ngx	ghcr.io/paperless-ngx/paperless-ngx:2.20.15
e31aa0b09dbb	paperless-postgres	paperless-ng...
2026/08/23 09:33:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.223.0, not a database)
2026/08/23 09:33:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container docmost (image=docmost/docmost:0.95.0, not a database)
2026/08/23 09:33:51 dbdump.go:176: [DEBUG] DiscoverDatabases: found postgres container: docmost-postgres (id=91041c89bd0d)
2026/08/23 09:33:51 healthcheck.go:157: [DEBUG] [monitor] Docker daemon: OK
2026/08/23 09:33:51 healthcheck.go:165: [DEBUG] [monitor] Checking 4 protected containers: [traefik cloudflared felhom-controller filebrowser]
2026/08/23 09:33:51 dbdump.go:196: [DEBUG] DiscoverDatabases: docmost-postgres → stack=docmost, dbUser=docmost, dbName=docmost
2026/08/23 09:33:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container docmost-redis (image=redis:7-alpine, not a database)
2026/08/23 09:33:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.0.0, not a database)
2026/08/23 09:33:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database)
2026/08/23 09:33:51 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=e076270a7d75)
2026/08/23 09:33:51 dbdump.go:196: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm
2026/08/23 09:33:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database)
2026/08/23 09:33:51 dbdump.go:176: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=e31aa0b09dbb)
2026/08/23 09:33:51 dbdump.go:894: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless")
2026/08/23 09:33:51 dbdump.go:196: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless
2026/08/23 09:33:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database)
2026/08/23 09:33:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container opengist (image=ghcr.io/thomiceli/opengist:1.13, not a database)
2026/08/23 09:33:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container kimai (image=kimai/kimai2:apache-2.57.0, not a database)
2026/08/23 09:33:51 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: kimai-db (id=9849469a8b29)
2026/08/23 09:33:51 dbdump.go:196: [DEBUG] DiscoverDatabases: kimai-db → stack=kimai, dbUser=root, dbName=kimai
2026/08/23 09:33:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container calibre-web (image=crocodilestick/calibre-web-automated:v4.0.6, not a database)
2026/08/23 09:33:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container bookstack (image=lscr.io/linuxserver/bookstack:26.05.2, not a database)
2026/08/23 09:33:51 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: bookstack-db (id=95dcda149d29)
2026/08/23 09:33:51 dbdump.go:196: [DEBUG] DiscoverDatabases: bookstack-db → stack=bookstack, dbUser=root, dbName=bookstack
2026/08/23 09:33:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database)
2026/08/23 09:33:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container cloudflared (image=cloudflare/cloudflared:2026.6.0, not a database)
2026/08/23 09:33:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database)
2026/08/23 09:33:51 dbdump.go:203: [DEBUG] DiscoverDatabases: found 5 database(s), skipped 14 non-DB container(s)
2026/08/23 09:33:51 dbdump.go:206: [INFO] [backup] Discovered 5 databases
2026/08/23 09:33:51 healthcheck.go:175: [DEBUG] [monitor] All protected containers running
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:33:51 healthcheck.go:192: [INFO] [monitor] Health check: status=ok
2026/08/23 09:33:51 healthcheck.go:196: [DEBUG] [monitor] Final status: ok (issues=0, warnings=0, info=5)
2026/08/23 09:33:51 scheduler.go:363: [INFO] [scheduler] Job system-health completed (took 229ms)
2026/08/23 09:33:51 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:33:51 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:33:51 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:33:51 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:33:51 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:33:51 [INFO] [stacks] ParseComposeHDDMounts: found 2 HDD mounts for /opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:33:51 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:33:51 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:33:51 [INFO] [backup] Discovered app data: 8 apps
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:33:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:33:51 backup.go:1133: [INFO] [backup] Backup status cache refreshed
2026/08/23 09:33:51 scheduler.go:363: [INFO] [scheduler] Job backup-cache completed (took 246ms)
2026/08/23 09:33:51 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (601ms)
2026/08/23 09:33:51 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 601ms)
2026/08/23 09:33:52 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (620ms)
2026/08/23 09:33:53 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (680ms)
2026/08/23 09:33:53 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:33:53 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:33:53 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:33:53Z, active_sessions=29
2026/08/23 09:33:53 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:33:53 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:33:53 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:33:53 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:33:53 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:33:53 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:33:53 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:34:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:34:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:34:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:01 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:34:01 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:34:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:34:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:11 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 5 targets (1 skipped not due, 1 skipped no container)
2026/08/23 09:34:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:34:11 healthprobe.go:153: [DEBUG] Health probe opengist: API GET :6157/healthcheck → 200 (1ms)
2026/08/23 09:34:11 healthprobe.go:153: [DEBUG] Health probe romm: HTTP GET :8080/ → 200 (2ms)
2026/08/23 09:34:11 healthprobe.go:153: [DEBUG] Health probe calibre-web: HTTP GET :8083/ → 302 (6ms)
2026/08/23 09:34:11 healthprobe.go:153: [DEBUG] Health probe kimai: HTTP GET :8001/ → 302 (21ms)
2026/08/23 09:34:11 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:34:11 healthprobe.go:153: [DEBUG] Health probe bookstack: HTTP GET :80/ → 302 (46ms)
2026/08/23 09:34:11 healthprobe.go:133: [INFO] Health probes: 5 ok (of 5 probed)
2026/08/23 09:34:15 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:34:15 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:34:15 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:34:15Z, active_sessions=30
2026/08/23 09:34:15 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:34:15 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:34:15 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:34:15 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:34:15 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:34:15 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:34:15 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:34:21 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:34:21 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:34:21 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:34:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:21 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:34:21 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:34:21 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:34:22 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (621ms)
2026/08/23 09:34:23 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (642ms)
2026/08/23 09:34:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:34:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:34:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 5m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:31 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:34:31 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:34:36 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:34:36 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:34:36 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:34:36Z, active_sessions=31
2026/08/23 09:34:36 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:34:36 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:34:36 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:34:36 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:34:36 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:34:36 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:34:36 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:34:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:34:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:34:41 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:34:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:41 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (5 skipped not due, 1 skipped no container)
2026/08/23 09:34:41 healthprobe.go:153: [DEBUG] Health probe docmost: HTTP GET :3000/ → 200 (2ms)
2026/08/23 09:34:41 healthprobe.go:133: [INFO] Health probes: 1 ok (of 1 probed)
2026/08/23 09:34:50 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:34:50 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4002MB avail≈21896MB
2026/08/23 09:34:50 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25968132 → total=25898MB avail=21896MB used=4002MB (15.5%)
2026/08/23 09:34:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:34:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:34:50 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.35 0.49 0.53 4/903 2387" → 1m=0.35 5m=0.49 15m=0.53
2026/08/23 09:34:50 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:34:50 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 55.0°C (hwmon2)
2026/08/23 09:34:50 info.go:13: [DEBUG] [system] GetInfo done in 66ms — mem=4002MB/25898MB (15.5%), rootDisk=10.2GB/68.7GB (14.9%), load=0.35/0.49/0.53, temp=55.0°C (hwmon2), cpu=1.9%
2026/08/23 09:34:51 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:34:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:34:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:34:51 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:34:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:34:51 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:34:51 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:34:51 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:34:51 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:34:51 main.go:1731: [INFO] [deadapp] check alive: 20 scans since boot, 8 deployed app(s) evaluated, 1 currently down
2026/08/23 09:34:51 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (580ms)
2026/08/23 09:34:51 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 581ms)
2026/08/23 09:34:52 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (600ms)
2026/08/23 09:34:53 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (584ms)
2026/08/23 09:34:57 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:34:57 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:34:57 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:34:57Z, active_sessions=32
2026/08/23 09:34:57 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:34:57 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:34:57 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:34:57 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:34:57 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:34:57 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:34:57 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:35:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:35:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:35:01 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:35:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:01 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:35:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:35:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:11 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:35:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:35:11 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:35:18 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:35:18 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:35:18 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:35:18Z, active_sessions=33
2026/08/23 09:35:18 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:35:18 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:35:18 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:35:18 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:35:18 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:35:18 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:35:18 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:35:21 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:35:21 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:35:21 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:35:21 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:35:21 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:35:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:21 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:35:22 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (611ms)
2026/08/23 09:35:23 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (638ms)
2026/08/23 09:35:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:35:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:35:31 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:35:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:31 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:35:39 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:35:39 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:35:39 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:35:39Z, active_sessions=34
2026/08/23 09:35:39 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:35:39 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:35:39 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:35:39 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:35:39 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:35:39 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:35:39 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:35:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:35:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:41 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:35:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:35:41 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:35:50 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:35:50 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4078MB avail≈21820MB
2026/08/23 09:35:50 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25877564 → total=25898MB avail=21820MB used=4078MB (15.7%)
2026/08/23 09:35:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:35:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:35:50 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.49 0.53 0.54 7/894 2500" → 1m=0.49 5m=0.53 15m=0.54
2026/08/23 09:35:50 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:35:50 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 55.0°C (hwmon2)
2026/08/23 09:35:50 info.go:13: [DEBUG] [system] GetInfo done in 68ms — mem=4078MB/25898MB (15.7%), rootDisk=10.2GB/68.7GB (14.9%), load=0.49/0.53/0.54, temp=55.0°C (hwmon2), cpu=2.1%
2026/08/23 09:35:51 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:35:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:35:51 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan
2026/08/23 09:35:51 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting
2026/08/23 09:35:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:35:51 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:35:51 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:35:51 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:35:51 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:35:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:35:51 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=true composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=true composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "cloudflared" deployed=false composePath=/opt/docker/stacks/cloudflared/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=true composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=true composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=true composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/08/23 09:35:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/08/23 09:35:51 manager.go:1547: [DEBUG] [stacks] getCatalogTemplateSlugs: found 53 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/08/23 09:35:51 manager.go:539: [DEBUG] [stacks] ScanStacks: catalog has 53 template slugs for orphan detection
2026/08/23 09:35:51 manager.go:570: [INFO] [stacks] ScanStacks complete: 56 stacks found (8 deployed, 48 available)
2026/08/23 09:35:51 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:35:51 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 80ms)
2026/08/23 09:35:51 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (605ms)
2026/08/23 09:35:51 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 606ms)
2026/08/23 09:35:52 auth.go:146: [DEBUG] [web] login attempt from 172.17.0.1:44266 (X-Forwarded-For: )
2026/08/23 09:35:52 auth.go:194: [DEBUG] [web] login successful from 172.17.0.1, creating session
2026/08/23 09:35:52 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:35:52Z, active_sessions=35
2026/08/23 09:35:52 auth.go:214: [INFO] [web] Login from 172.17.0.1:44266
2026/08/23 09:35:52 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:35:52 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.17.0.1:44282
2026/08/23 09:35:52 auth.go:134: [DEBUG] [web] auth: valid session for POST /api/stacks/privatebin/start
2026/08/23 09:35:52 router.go:80: [DEBUG] [api] POST /api/stacks/privatebin/start (path=/stacks/privatebin/start)
2026/08/23 09:35:52 router.go:566: [INFO] [api] start requested for stack: privatebin
2026/08/23 09:35:52 router.go:80: [DEBUG] [api] actionStack: action=start name=privatebin
2026/08/23 09:35:52 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (629ms)
2026/08/23 09:35:52 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4199MB avail≈21699MB
2026/08/23 09:35:52 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25733328 → total=25898MB avail=21699MB used=4199MB (16.2%)
2026/08/23 09:35:52 manager.go:1036: [DEBUG] [stacks] StartStack privatebin: current state=stopped deployed=true
2026/08/23 09:35:52 manager.go:1039: [INFO] [stacks] Starting stack: privatebin
2026/08/23 09:35:52 manager.go:1046: [DEBUG] [stacks] StartStack privatebin: prepared 8 env vars for compose
2026/08/23 09:35:52 manager.go:1311: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/08/23 09:35:52 manager.go:1320: [DEBUG] Running: docker compose up -d (in /opt/docker/stacks/privatebin)
2026/08/23 09:35:53 manager.go:1340: [DEBUG] Command completed: docker compose up -d (took 0.3s)
2026/08/23 09:35:53 manager.go:1054: [INFO] [stacks] Stack privatebin started successfully (took 0.3s)
2026/08/23 09:35:53 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:35:53 lifecycle.go:70: [DEBUG] [integrations] OnStackStart: stack=privatebin, waiting 5s for state refresh
2026/08/23 09:35:53 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (640ms)
2026/08/23 09:35:56 manager.go:1311: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/08/23 09:35:56 manager.go:1320: [DEBUG] Running: docker compose ps -a --format table {{.Name}}	{{.Image}}	{{.State}}	{{.Status}} (in /opt/docker/stacks/privatebin)
2026/08/23 09:35:56 manager.go:1340: [DEBUG] Command completed: docker compose ps -a --format table {{.Name}}	{{.Image}}	{{.State}}	{{.Status}} (took 0.1s)
2026/08/23 09:35:56 manager.go:1400: [INFO] [stacks] Stack privatebin post-start status:
2026/08/23 09:35:56 manager.go:1403: [INFO] [stacks]   privatebin   privatebin/pdo:2.0.5   running   Up 3 seconds (health: starting)
2026/08/23 09:35:58 lifecycle.go:86: [DEBUG] [integrations] OnStackStart: stack=privatebin integrationsFound=0
2026/08/23 09:36:00 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:36:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:36:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:36:01 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:36:01 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:36:01Z, active_sessions=36
2026/08/23 09:36:01 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:36:01 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:36:01 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:36:01 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:36:01 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:36:01 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:36:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:01 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:36:01 healthprobe.go:153: [DEBUG] Health probe privatebin: HTTP GET :8080/ → 200 (4ms)
2026/08/23 09:36:01 healthprobe.go:133: [INFO] Health probes: 1 ok (of 1 probed)
2026/08/23 09:36:01 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:36:01 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:36:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:36:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping privatebin — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:11 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (7 skipped not due, 1 skipped no container)
2026/08/23 09:36:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:36:11 manager.go:621: [INFO] [stacks] Status refresh: 19 containers across 56 stacks
2026/08/23 09:36:13 auth.go:134: [DEBUG] [web] auth: valid session for POST /api/stacks/privatebin/stop
2026/08/23 09:36:13 router.go:80: [DEBUG] [api] POST /api/stacks/privatebin/stop (path=/stacks/privatebin/stop)
2026/08/23 09:36:13 router.go:566: [INFO] [api] stop requested for stack: privatebin
2026/08/23 09:36:13 router.go:80: [DEBUG] [api] actionStack: action=stop name=privatebin
2026/08/23 09:36:13 [DEBUG] [stacks] SaveAppConfig: saving /opt/docker/stacks/privatebin — 2 env vars, 0 encrypted, 0 sensitive fields
2026/08/23 09:36:13 desiredstate.go:81: [INFO] [stacks] desired state for privatebin recorded as "stopped" (was "running")
2026/08/23 09:36:13 manager.go:1117: [DEBUG] [stacks] StopStack privatebin: current state=running deployed=true containers=1
2026/08/23 09:36:13 manager.go:1120: [INFO] [stacks] Stopping stack: privatebin
2026/08/23 09:36:13 [INFO] [stacks] SaveAppConfig: saved config for privatebin
2026/08/23 09:36:13 manager.go:1311: [DEBUG] Env vars for compose: [PATH, HOSTNAME, FELHOM_BOOTSTRAP_PATH, HOME, DOMAIN, DOMAIN, SUBDOMAIN, IMPORT_PATH] (8 app + 0 system)
2026/08/23 09:36:13 manager.go:1320: [DEBUG] Running: docker compose down (in /opt/docker/stacks/privatebin)
2026/08/23 09:36:13 manager.go:1340: [DEBUG] Command completed: docker compose down (took 0.3s)
2026/08/23 09:36:13 manager.go:1129: [INFO] [stacks] Stack privatebin stopped successfully (took 0.3s)
2026/08/23 09:36:13 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:36:13 lifecycle.go:24: [DEBUG] [integrations] OnStackStop: stack=privatebin integrationsFound=0
2026/08/23 09:36:21 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:36:21 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:36:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:21 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:36:21 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:36:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:21 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:36:21 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:36:22 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:36:22 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:36:22 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:36:22Z, active_sessions=37
2026/08/23 09:36:22 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:36:22 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:36:22 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:36:22 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:36:22 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:36:22 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:36:22 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:36:22 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (614ms)
2026/08/23 09:36:23 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (604ms)
2026/08/23 09:36:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:36:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:36:31 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:36:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:31 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:36:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:36:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:41 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:36:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:36:41 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:36:43 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:36:43 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:36:43 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:36:43Z, active_sessions=38
2026/08/23 09:36:43 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:36:43 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:36:43 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:36:43 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:36:43 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:36:43 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:36:43 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:36:50 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:36:50 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4035MB avail≈21863MB
2026/08/23 09:36:50 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25927912 → total=25898MB avail=21863MB used=4035MB (15.6%)
2026/08/23 09:36:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:36:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:36:50 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.66 0.56 0.55 4/893 2765" → 1m=0.66 5m=0.56 15m=0.55
2026/08/23 09:36:50 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:36:50 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:36:50 info.go:13: [DEBUG] [system] GetInfo done in 59ms — mem=4035MB/25898MB (15.6%), rootDisk=10.2GB/68.7GB (14.9%), load=0.66/0.56/0.55, temp=52.9°C (hwmon1), cpu=7.7%
2026/08/23 09:36:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:36:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:36:51 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:36:51 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:36:51 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:36:51 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:36:51 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:36:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:36:51 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:36:51 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (532ms)
2026/08/23 09:36:51 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 533ms)
2026/08/23 09:36:52 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (631ms)
2026/08/23 09:36:53 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (624ms)
2026/08/23 09:37:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:37:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:37:01 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:37:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:01 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:37:04 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:37:04 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:37:04 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:37:04Z, active_sessions=39
2026/08/23 09:37:04 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:37:04 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:37:04 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:37:04 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:37:04 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:37:04 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:37:04 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:37:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:37:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:37:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:11 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:37:11 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:37:21 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:37:21 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:37:21 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:37:21 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:37:21 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:37:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:21 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:37:22 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (651ms)
2026/08/23 09:37:23 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (625ms)
2026/08/23 09:37:25 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:37:25 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:37:25 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:37:25Z, active_sessions=40
2026/08/23 09:37:25 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:37:25 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:37:25 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:37:25 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:37:25 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:37:25 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:37:25 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:37:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:37:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:37:31 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:37:31 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:37:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:37:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:37:41 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:37:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:41 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:37:46 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:37:47 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:37:47 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:37:47Z, active_sessions=41
2026/08/23 09:37:47 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:37:47 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:37:47 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:37:47 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:37:47 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:37:47 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:37:47 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:37:50 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:37:50 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4009MB avail≈21889MB
2026/08/23 09:37:50 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25959152 → total=25898MB avail=21889MB used=4009MB (15.5%)
2026/08/23 09:37:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:37:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:37:50 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.37 0.50 0.53 6/894 2878" → 1m=0.37 5m=0.50 15m=0.53
2026/08/23 09:37:50 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:37:50 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon2)
2026/08/23 09:37:50 info.go:13: [DEBUG] [system] GetInfo done in 61ms — mem=4009MB/25898MB (15.5%), rootDisk=10.2GB/68.7GB (14.9%), load=0.37/0.50/0.53, temp=52.9°C (hwmon2), cpu=2.7%
2026/08/23 09:37:51 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan
2026/08/23 09:37:51 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting
2026/08/23 09:37:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:37:51 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:37:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/08/23 09:37:51 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=true composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=true composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "cloudflared" deployed=false composePath=/opt/docker/stacks/cloudflared/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=true composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=true composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/08/23 09:37:51 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:37:51 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=true composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/08/23 09:37:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/08/23 09:37:51 manager.go:1547: [DEBUG] [stacks] getCatalogTemplateSlugs: found 53 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/08/23 09:37:51 manager.go:539: [DEBUG] [stacks] ScanStacks: catalog has 53 template slugs for orphan detection
2026/08/23 09:37:51 manager.go:570: [INFO] [stacks] ScanStacks complete: 56 stacks found (8 deployed, 48 available)
2026/08/23 09:37:51 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:37:51 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 44ms)
2026/08/23 09:37:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:37:51 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:37:51 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:37:51 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (535ms)
2026/08/23 09:37:51 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 536ms)
2026/08/23 09:37:52 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (614ms)
2026/08/23 09:37:53 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (616ms)
2026/08/23 09:38:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:38:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:38:01 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:38:01 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:38:08 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:38:08 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:38:08 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:38:08Z, active_sessions=42
2026/08/23 09:38:08 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:38:08 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:38:08 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:38:08 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:38:08 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:38:08 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:38:08 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:38:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:38:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:38:11 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:38:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:11 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:38:21 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:38:21 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:38:21 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:38:21 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:38:21 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:38:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:21 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:38:22 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (632ms)
2026/08/23 09:38:23 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (688ms)
2026/08/23 09:38:29 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:38:29 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:38:29 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:38:29Z, active_sessions=43
2026/08/23 09:38:29 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:38:29 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:38:29 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:38:29 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:38:29 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:38:29 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:38:29 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:38:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:38:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:38:31 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:38:31 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:38:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:38:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:41 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:38:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:38:41 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:38:50 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:38:50 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:38:50 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:38:50Z, active_sessions=44
2026/08/23 09:38:50 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:38:50 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:38:50 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:38:50 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:38:50 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:38:50 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:38:50 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:38:50 sync.go:189: [INFO] [sync] Starting catalog sync
2026/08/23 09:38:50 sync.go:277: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git (branch: main)
2026/08/23 09:38:50 sync.go:279: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache
2026/08/23 09:38:50 sync.go:449: [DEBUG] [sync] Running: git fetch --depth 1 origin main
2026/08/23 09:38:50 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:38:50 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4120MB avail≈21778MB
2026/08/23 09:38:50 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25828120 → total=25898MB avail=21778MB used=4120MB (15.9%)
2026/08/23 09:38:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:38:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:38:50 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.68 0.56 0.55 5/899 3005" → 1m=0.68 5m=0.56 15m=0.55
2026/08/23 09:38:50 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:38:50 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:38:50 info.go:13: [DEBUG] [system] GetInfo done in 65ms — mem=4120MB/25898MB (15.9%), rootDisk=10.2GB/68.7GB (14.9%), load=0.68/0.56/0.55, temp=52.9°C (hwmon1), cpu=4.3%
2026/08/23 09:38:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:38:51 scheduler.go:346: [INFO] [scheduler] Running job: hub-report
2026/08/23 09:38:51 scheduler.go:67: [DEBUG] [scheduler] job hub-report: execution starting
2026/08/23 09:38:51 builder.go:37: [INFO] [report] Building system report
2026/08/23 09:38:51 builder.go:40: [DEBUG] [report] BuildReport: starting — version=0.223.0, storagePaths=1
2026/08/23 09:38:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:38:51 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:38:51 scheduler.go:346: [INFO] [scheduler] Running job: system-health
2026/08/23 09:38:51 scheduler.go:67: [DEBUG] [scheduler] job system-health: execution starting
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:38:51 builder.go:62: [DEBUG] [report] BuildReport: configHash=042b71a3123d... (2989 bytes)
2026/08/23 09:38:51 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:38:51 scheduler.go:346: [INFO] [scheduler] Running job: offsite-credential-retry
2026/08/23 09:38:51 scheduler.go:346: [INFO] [scheduler] Running job: backup-cache
2026/08/23 09:38:51 scheduler.go:67: [DEBUG] [scheduler] job backup-cache: execution starting
2026/08/23 09:38:51 scheduler.go:67: [DEBUG] [scheduler] job offsite-credential-retry: execution starting
2026/08/23 09:38:51 scheduler.go:363: [INFO] [scheduler] Job offsite-credential-retry completed (took 0s)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:38:51 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:38:51 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:38:51 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:38:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:38:51 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:38:51 backup.go:434: [DEBUG] groupStacksByDrive: /mnt/sys_drive → [bookstack, docmost, kimai, opengist, privatebin]
2026/08/23 09:38:51 backup.go:434: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/hdd_1 → [calibre-web, paperless-ngx, romm]
2026/08/23 09:38:51 backup.go:1063: [INFO] [backup] Found 13 DB dump files across drives
2026/08/23 09:38:51 dbdump.go:128: [DEBUG] DiscoverDatabases: running docker ps to find database containers
2026/08/23 09:38:51 sync.go:449: [DEBUG] [sync] Running: git reset --hard origin/main
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4122MB avail≈21776MB
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25825024 → total=25898MB avail=21776MB used=4122MB (15.9%)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.68 0.56 0.55 11/939 3078" → 1m=0.68 5m=0.56 15m=0.55
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetInfo done in 79ms — mem=4122MB/25898MB (15.9%), rootDisk=10.2GB/68.7GB (14.9%), load=0.68/0.56/0.55, temp=52.9°C (hwmon1), cpu=4.3%
2026/08/23 09:38:51 healthcheck.go:42: [DEBUG] [monitor] Raw values: disk=14.9%, hdd=0.6% (configured=true), mem=15.9% (4122MB/25898MB), cpu=4.3%, temp=52.9°C (hwmon1)
2026/08/23 09:38:51 healthcheck.go:74: [DEBUG] [monitor] SSD disk: OK (15%)
2026/08/23 09:38:51 healthcheck.go:107: [DEBUG] [monitor] Memory: OK (16%)
2026/08/23 09:38:51 healthcheck.go:125: [DEBUG] [monitor] CPU: OK (4%)
2026/08/23 09:38:51 healthcheck.go:143: [DEBUG] [monitor] Temperature: OK (53°C)
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] n8n/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] navidrome/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] nextcloud/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 dbdump.go:147: [DEBUG] DiscoverDatabases: docker ps output: 1c05a812256b	felhom-controller		gitea.dooplex.hu/admin/felhom-controller:0.223.0
13cfb077ecf8	docmost	docmost	docmost/docmost:0.95.0
91041c89bd0d	docmost-postgres	docmost	postgres:16-alpine
41c830a66b1d	docmost-redis	docmost	redis:7-alpine
77031a0c1319	romm	romm	rommapp/romm:5.0.0
aa6fe6fa459e	romm-redis	romm	redis:7-alpine
e076270a7d75	romm-db	romm	mariadb:11.4
1c704643bc4c	paperless-webserver	paperless-ngx	ghcr.io/paperless-ngx/paperless-ngx:2.20.15
e31aa0b09dbb	paperless-postgres	paperless-ng...
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.223.0, not a database)
2026/08/23 09:38:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container docmost (image=docmost/docmost:0.95.0, not a database)
2026/08/23 09:38:51 dbdump.go:176: [DEBUG] DiscoverDatabases: found postgres container: docmost-postgres (id=91041c89bd0d)
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] wishlist/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:371: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped
2026/08/23 09:38:51 sync.go:244: [INFO] [sync] Catalog sync complete
2026/08/23 09:38:51 sync.go:116: [INFO] [sync] Periodic sync: Sablonok naprakészek — nincs változás
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4122MB avail≈21776MB
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25825024 → total=25898MB avail=21776MB used=4122MB (15.9%)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.68 0.56 0.55 18/936 3092" → 1m=0.68 5m=0.56 15m=0.55
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 56.8°C (hwmon2)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetInfo done in 97ms — mem=4122MB/25898MB (15.9%), rootDisk=10.2GB/68.7GB (14.9%), load=0.68/0.56/0.55, temp=56.8°C (hwmon2), cpu=4.3%
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:38:51 builder.go:128: [DEBUG] [report] BuildReport: system info collected — cpu=4.3%, mem=4122/25898MB, temp=56.8C
2026/08/23 09:38:51 builder.go:130: [DEBUG] [report] BuildReport: storage entries=2
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:38:51 dbdump.go:196: [DEBUG] DiscoverDatabases: docmost-postgres → stack=docmost, dbUser=docmost, dbName=docmost
2026/08/23 09:38:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container docmost-redis (image=redis:7-alpine, not a database)
2026/08/23 09:38:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.0.0, not a database)
2026/08/23 09:38:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database)
2026/08/23 09:38:51 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=e076270a7d75)
2026/08/23 09:38:51 healthcheck.go:157: [DEBUG] [monitor] Docker daemon: OK
2026/08/23 09:38:51 healthcheck.go:165: [DEBUG] [monitor] Checking 4 protected containers: [traefik cloudflared felhom-controller filebrowser]
2026/08/23 09:38:51 dbdump.go:196: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm
2026/08/23 09:38:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database)
2026/08/23 09:38:51 dbdump.go:176: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=e31aa0b09dbb)
2026/08/23 09:38:51 dbdump.go:894: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless")
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4137MB avail≈21761MB
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25807428 → total=25898MB avail=21761MB used=4137MB (16.0%)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.68 0.56 0.55 12/933 3149" → 1m=0.68 5m=0.56 15m=0.55
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 56.8°C (hwmon2)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetInfo done in 67ms — mem=4137MB/25898MB (16.0%), rootDisk=10.2GB/68.7GB (14.9%), load=0.68/0.56/0.55, temp=56.8°C (hwmon2), cpu=4.3%
2026/08/23 09:38:51 healthcheck.go:42: [DEBUG] [monitor] Raw values: disk=14.9%, hdd=0.6% (configured=true), mem=16.0% (4137MB/25898MB), cpu=4.3%, temp=56.8°C (hwmon2)
2026/08/23 09:38:51 healthcheck.go:74: [DEBUG] [monitor] SSD disk: OK (15%)
2026/08/23 09:38:51 healthcheck.go:107: [DEBUG] [monitor] Memory: OK (16%)
2026/08/23 09:38:51 healthcheck.go:125: [DEBUG] [monitor] CPU: OK (4%)
2026/08/23 09:38:51 healthcheck.go:143: [DEBUG] [monitor] Temperature: OK (57°C)
2026/08/23 09:38:51 dbdump.go:196: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless
2026/08/23 09:38:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database)
2026/08/23 09:38:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container opengist (image=ghcr.io/thomiceli/opengist:1.13, not a database)
2026/08/23 09:38:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container kimai (image=kimai/kimai2:apache-2.57.0, not a database)
2026/08/23 09:38:51 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: kimai-db (id=9849469a8b29)
2026/08/23 09:38:51 dbdump.go:196: [DEBUG] DiscoverDatabases: kimai-db → stack=kimai, dbUser=root, dbName=kimai
2026/08/23 09:38:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container calibre-web (image=crocodilestick/calibre-web-automated:v4.0.6, not a database)
2026/08/23 09:38:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container bookstack (image=lscr.io/linuxserver/bookstack:26.05.2, not a database)
2026/08/23 09:38:51 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: bookstack-db (id=95dcda149d29)
2026/08/23 09:38:51 dbdump.go:196: [DEBUG] DiscoverDatabases: bookstack-db → stack=bookstack, dbUser=root, dbName=bookstack
2026/08/23 09:38:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database)
2026/08/23 09:38:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container cloudflared (image=cloudflare/cloudflared:2026.6.0, not a database)
2026/08/23 09:38:51 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database)
2026/08/23 09:38:51 dbdump.go:203: [DEBUG] DiscoverDatabases: found 5 database(s), skipped 14 non-DB container(s)
2026/08/23 09:38:51 dbdump.go:206: [INFO] [backup] Discovered 5 databases
2026/08/23 09:38:51 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:38:51 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:38:51 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:38:51 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:38:51 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:38:51 [INFO] [stacks] ParseComposeHDDMounts: found 2 HDD mounts for /opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:38:51 healthcheck.go:157: [DEBUG] [monitor] Docker daemon: OK
2026/08/23 09:38:51 healthcheck.go:165: [DEBUG] [monitor] Checking 4 protected containers: [traefik cloudflared felhom-controller filebrowser]
2026/08/23 09:38:51 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:38:51 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:38:51 [INFO] [backup] Discovered app data: 8 apps
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:38:51 healthcheck.go:175: [DEBUG] [monitor] All protected containers running
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:38:51 healthcheck.go:192: [INFO] [monitor] Health check: status=ok
2026/08/23 09:38:51 healthcheck.go:196: [DEBUG] [monitor] Final status: ok (issues=0, warnings=0, info=5)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:38:51 scheduler.go:363: [INFO] [scheduler] Job system-health completed (took 232ms)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:38:51 backup.go:1133: [INFO] [backup] Backup status cache refreshed
2026/08/23 09:38:51 scheduler.go:363: [INFO] [scheduler] Job backup-cache completed (took 239ms)
2026/08/23 09:38:51 healthcheck.go:175: [DEBUG] [monitor] All protected containers running
2026/08/23 09:38:51 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:38:51 healthcheck.go:192: [INFO] [monitor] Health check: status=ok
2026/08/23 09:38:51 healthcheck.go:196: [DEBUG] [monitor] Final status: ok (issues=0, warnings=0, info=5)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: starting log scan for 16 containers (since 15m0s)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned bookstack: errors=0 warnings=0 issues=0 (took 22ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned bookstack-db: errors=0 warnings=2 issues=2 (took 19ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned calibre-web: errors=0 warnings=0 issues=0 (took 19ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned docmost: errors=0 warnings=0 issues=0 (took 19ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned docmost-postgres: errors=0 warnings=0 issues=0 (took 20ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned docmost-redis: errors=0 warnings=0 issues=0 (took 21ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned kimai: errors=0 warnings=0 issues=0 (took 24ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned kimai-db: errors=0 warnings=0 issues=0 (took 20ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned opengist: errors=0 warnings=0 issues=0 (took 21ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned paperless-webserver: errors=0 warnings=0 issues=0 (took 20ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned paperless-postgres: errors=0 warnings=0 issues=0 (took 20ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned paperless-redis: errors=0 warnings=0 issues=0 (took 20ms)
2026/08/23 09:38:51 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (557ms)
2026/08/23 09:38:51 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 558ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned romm: errors=0 warnings=0 issues=0 (took 23ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned romm-redis: errors=0 warnings=0 issues=0 (took 20ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned romm-db: errors=0 warnings=0 issues=0 (took 19ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned felhom-controller: errors=0 warnings=0 issues=0 (took 29ms)
2026/08/23 09:38:51 logscanner.go:69: [DEBUG] [metrics] logscanner: log scan completed: 16 containers in 338ms
2026/08/23 09:38:51 builder.go:197: [DEBUG] [report] BuildReport: complete — containers=15, health=ok, deployed=8, available=45, app_telemetry=8
2026/08/23 09:38:51 pusher.go:100: [DEBUG] [report] Push: url=https://hub.felhom.eu/api/v1/report payload=7318 bytes
2026/08/23 09:38:51 pusher.go:134: [INFO] [report] Hub report pushed successfully (7318 bytes)
2026/08/23 09:38:51 settings.go:711: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (9760 bytes)
2026/08/23 09:38:51 settings.go:714: [INFO] [settings] Settings saved
2026/08/23 09:38:51 updater.go:96: [DEBUG] [selfupdate] maybeAutoUpdate: current 0.223.0 >= floor 0.222.0 — no action
2026/08/23 09:38:51 scheduler.go:363: [INFO] [scheduler] Job hub-report completed (took 783ms)
2026/08/23 09:38:52 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (631ms)
2026/08/23 09:38:53 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (619ms)
2026/08/23 09:39:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:39:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:39:01 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:39:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:01 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:39:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:39:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:39:11 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:39:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:11 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 5 targets (1 skipped not due, 1 skipped no container)
2026/08/23 09:39:11 healthprobe.go:153: [DEBUG] Health probe romm: HTTP GET :8080/ → 200 (1ms)
2026/08/23 09:39:11 healthprobe.go:153: [DEBUG] Health probe opengist: API GET :6157/healthcheck → 200 (2ms)
2026/08/23 09:39:11 healthprobe.go:153: [DEBUG] Health probe calibre-web: HTTP GET :8083/ → 302 (6ms)
2026/08/23 09:39:11 healthprobe.go:153: [DEBUG] Health probe kimai: HTTP GET :8001/ → 302 (20ms)
2026/08/23 09:39:11 healthprobe.go:153: [DEBUG] Health probe bookstack: HTTP GET :80/ → 302 (44ms)
2026/08/23 09:39:11 healthprobe.go:133: [INFO] Health probes: 5 ok (of 5 probed)
2026/08/23 09:39:11 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:39:11 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:39:11 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:39:11Z, active_sessions=45
2026/08/23 09:39:11 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:39:11 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:39:11 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:39:11 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:39:11 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:39:11 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:39:11 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:39:21 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:39:21 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:39:21 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:39:21 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:39:21 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:39:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:21 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:39:22 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (636ms)
2026/08/23 09:39:23 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (633ms)
2026/08/23 09:39:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:39:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:39:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:31 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:39:31 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:39:32 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:39:33 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:39:33 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:39:33Z, active_sessions=46
2026/08/23 09:39:33 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:39:33 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:39:33 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:39:33 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:39:33 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:39:33 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:39:33 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:39:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:39:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:39:41 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:39:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 5m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:41 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:39:50 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:39:50 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈3997MB avail≈21901MB
2026/08/23 09:39:50 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25973744 → total=25898MB avail=21901MB used=3997MB (15.4%)
2026/08/23 09:39:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:39:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:39:50 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.51 0.55 0.54 3/895 3588" → 1m=0.51 5m=0.55 15m=0.54
2026/08/23 09:39:50 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:39:50 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:39:50 info.go:13: [DEBUG] [system] GetInfo done in 59ms — mem=3997MB/25898MB (15.4%), rootDisk=10.2GB/68.7GB (14.9%), load=0.51/0.55/0.54, temp=52.9°C (hwmon1), cpu=5.0%
2026/08/23 09:39:51 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:39:51 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan
2026/08/23 09:39:51 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting
2026/08/23 09:39:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:39:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/08/23 09:39:51 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=true composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=true composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "cloudflared" deployed=false composePath=/opt/docker/stacks/cloudflared/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=true composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=true composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=true composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/08/23 09:39:51 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:39:51 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/08/23 09:39:51 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/08/23 09:39:51 manager.go:1547: [DEBUG] [stacks] getCatalogTemplateSlugs: found 53 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/08/23 09:39:51 manager.go:539: [DEBUG] [stacks] ScanStacks: catalog has 53 template slugs for orphan detection
2026/08/23 09:39:51 manager.go:570: [INFO] [stacks] ScanStacks complete: 56 stacks found (8 deployed, 48 available)
2026/08/23 09:39:51 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:39:51 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 45ms)
2026/08/23 09:39:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:39:51 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 1 targets (5 skipped not due, 1 skipped no container)
2026/08/23 09:39:51 healthprobe.go:153: [DEBUG] Health probe docmost: HTTP GET :3000/ → 200 (2ms)
2026/08/23 09:39:51 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:39:51 healthprobe.go:133: [INFO] Health probes: 1 ok (of 1 probed)
2026/08/23 09:39:51 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (549ms)
2026/08/23 09:39:51 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 550ms)
2026/08/23 09:39:52 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (686ms)
2026/08/23 09:39:53 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (642ms)
2026/08/23 09:39:54 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:39:54 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:39:54 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:39:54Z, active_sessions=47
2026/08/23 09:39:54 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:39:54 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:39:54 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:39:54 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:39:54 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:39:54 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:39:54 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:40:01 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:40:01 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:40:01 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:40:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:01 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:01 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:40:11 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:40:11 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:40:11 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:40:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:11 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:11 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:40:15 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:40:15 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:40:15 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:40:15Z, active_sessions=48
2026/08/23 09:40:15 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:40:15 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:40:15 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:40:15 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:40:15 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:40:15 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:40:15 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:40:21 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:40:21 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:40:21 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:40:21 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:40:21 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:40:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:21 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:21 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:40:22 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (620ms)
2026/08/23 09:40:23 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (618ms)
2026/08/23 09:40:31 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:40:31 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:40:31 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:40:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:31 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:31 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:40:36 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:45464 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:40:36 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:40:36 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:40:36Z, active_sessions=49
2026/08/23 09:40:36 auth.go:214: [INFO] [web] Login from 172.18.0.4:45464
2026/08/23 09:40:36 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:40:36 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:45464
2026/08/23 09:40:36 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:40:36 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:45464
2026/08/23 09:40:36 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:40:36 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:45464
2026/08/23 09:40:41 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:40:41 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:40:41 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:40:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:41 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:41 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:40:50 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:40:50 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4056MB avail≈21842MB
2026/08/23 09:40:50 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25903928 → total=25898MB avail=21842MB used=4056MB (15.7%)
2026/08/23 09:40:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:40:50 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:40:50 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.93 0.65 0.58 3/895 3714" → 1m=0.93 5m=0.65 15m=0.58
2026/08/23 09:40:50 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:40:50 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:40:50 info.go:13: [DEBUG] [system] GetInfo done in 57ms — mem=4056MB/25898MB (15.7%), rootDisk=10.2GB/68.7GB (14.9%), load=0.93/0.65/0.58, temp=52.9°C (hwmon1), cpu=2.5%
2026/08/23 09:40:51 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:40:51 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:40:51 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:40:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:51 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:40:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:51 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:40:51 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:40:51 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:40:51 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:40:51 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:40:51 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (544ms)
2026/08/23 09:40:51 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 545ms)
2026/08/23 09:40:52 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (649ms)
2026/08/23 09:40:53 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (641ms)
2026/08/23 09:40:55 main.go:1681: [INFO] Received signal terminated, shutting down...
2026/08/23 09:40:55 quiesce.go:182: [INFO] [quiesce] loop stopping
2026/08/23 09:40:55 scheduler.go:67: [DEBUG] [scheduler] daily job offbox-backup: context cancelled, stopping
2026/08/23 09:40:55 scheduler.go:67: [DEBUG] [scheduler] daily job metrics-prune: context cancelled, stopping
2026/08/23 09:40:55 scheduler.go:67: [DEBUG] [scheduler] daily job db-dump: context cancelled, stopping
2026/08/23 09:40:55 scheduler.go:67: [DEBUG] [scheduler] daily job fill-watch: context cancelled, stopping
2026/08/23 09:40:55 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-abandon-sweep: context cancelled, stopping
2026/08/23 09:40:55 scheduler.go:67: [DEBUG] [scheduler] daily job tier2-backup: context cancelled, stopping
2026/08/23 09:40:55 main.go:1705: [INFO] felhom-controller stopped
2026/08/23 09:40:55 scheduler.go:232: [INFO] [scheduler] Stopping scheduler
2026/08/23 09:40:55 scheduler.go:245: [INFO] [scheduler] All jobs stopped
2026/08/23 09:40:56 main.go:2945: [INFO] local-api: channel up (agent 169.254.253.1:8443) — guest 9201, 3 mount(s) visible
2026/08/23 09:40:56 main.go:2948: [INFO] local-api: mount mp9 → /etc/felhom-bootstrap (storage=/var/lib/felhom-agent/guests/9201/bootstrap, class=, backup=false)
2026/08/23 09:40:56 main.go:2948: [INFO] local-api: mount mp8 → /mnt/felhom-drives (storage=/mnt/felhom-drives, class=, backup=false)
2026/08/23 09:40:56 main.go:2948: [INFO] local-api: mount mp0 → /var/lib/felhom (storage=local-lvm, class=, backup=true)
2026/08/23 09:40:56 main.go:334: [INFO] felhom-controller 0.223.0 starting (customer: demo-hp, domain: enkisfelhom.hu)
2026/08/23 09:40:56 settings.go:620: [INFO] [settings] Loaded settings from /opt/docker/felhom-controller/data/settings.json
2026/08/23 09:40:56 settings.go:1452: [DEBUG] [settings] AutoDiscoverStoragePaths discovered=[/mnt/felhom-drives/hdd_1] fallback="" existing=1
2026/08/23 09:40:56 main.go:355: [INFO] Encryption key loaded from /opt/docker/felhom-controller/data/encryption.key
2026/08/23 09:40:56 manager.go:222: [INFO] [stacks] Using compose command: docker compose
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=true composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=true composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "cloudflared" deployed=false composePath=/opt/docker/stacks/cloudflared/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=true composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=true composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=true composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/08/23 09:40:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/08/23 09:40:56 manager.go:1547: [DEBUG] [stacks] getCatalogTemplateSlugs: found 53 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/08/23 09:40:56 manager.go:539: [DEBUG] [stacks] ScanStacks: catalog has 53 template slugs for orphan detection
2026/08/23 09:40:56 manager.go:570: [INFO] [stacks] ScanStacks complete: 56 stacks found (8 deployed, 48 available)
2026/08/23 09:40:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:40:56 deploy.go:1029: [DEBUG] [stacks] InjectMissingFields: checking 8 stacks
2026/08/23 09:40:56 deploy.go:1051: [DEBUG] [stacks] InjectMissingFields: checking stack privatebin — 2 deploy fields, 2 existing env vars
2026/08/23 09:40:56 deploy.go:1051: [DEBUG] [stacks] InjectMissingFields: checking stack opengist — 2 deploy fields, 2 existing env vars
2026/08/23 09:40:56 deploy.go:1051: [DEBUG] [stacks] InjectMissingFields: checking stack kimai — 5 deploy fields, 5 existing env vars
2026/08/23 09:40:56 deploy.go:1051: [DEBUG] [stacks] InjectMissingFields: checking stack paperless-ngx — 8 deploy fields, 8 existing env vars
2026/08/23 09:40:56 deploy.go:1051: [DEBUG] [stacks] InjectMissingFields: checking stack docmost — 4 deploy fields, 4 existing env vars
2026/08/23 09:40:56 deploy.go:1051: [DEBUG] [stacks] InjectMissingFields: checking stack romm — 6 deploy fields, 6 existing env vars
2026/08/23 09:40:56 deploy.go:1051: [DEBUG] [stacks] InjectMissingFields: checking stack bookstack — 4 deploy fields, 4 existing env vars
2026/08/23 09:40:56 deploy.go:1051: [DEBUG] [stacks] InjectMissingFields: checking stack calibre-web — 3 deploy fields, 3 existing env vars
2026/08/23 09:40:56 deploy.go:1114: [INFO] [stacks] InjectMissingFields: processed 8 stacks
2026/08/23 09:40:56 manager.go:361: [DEBUG] [stacks] MigrateEncryption: checking 8 deployed stacks for plaintext sensitive values
2026/08/23 09:40:56 manager.go:381: [DEBUG] [stacks] MigrateEncryption: checking stack "kimai" (2 sensitive fields)
2026/08/23 09:40:56 manager.go:381: [DEBUG] [stacks] MigrateEncryption: checking stack "paperless-ngx" (3 sensitive fields)
2026/08/23 09:40:56 manager.go:381: [DEBUG] [stacks] MigrateEncryption: checking stack "docmost" (2 sensitive fields)
2026/08/23 09:40:56 manager.go:381: [DEBUG] [stacks] MigrateEncryption: checking stack "romm" (3 sensitive fields)
2026/08/23 09:40:56 manager.go:381: [DEBUG] [stacks] MigrateEncryption: checking stack "bookstack" (2 sensitive fields)
2026/08/23 09:40:56 manager.go:405: [INFO] [stacks] Encryption migration: no stacks needed migration
2026/08/23 09:40:56 sync.go:98: [INFO] [sync] Starting catalog sync (repo: https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git, interval: 15m0s)
2026/08/23 09:40:56 sync.go:189: [INFO] [sync] Starting catalog sync
2026/08/23 09:40:56 desiredstate.go:137: [INFO] [stacks] desired-state backfill: 0 app(s) recorded as running, 1 left unrecorded (state ambiguous — legacy boot behaviour retained)
2026/08/23 09:40:56 sync.go:277: [INFO] [sync] Pulling latest from https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git (branch: main)
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] CPUCollector.Start: sampleRate=5s
2026/08/23 09:40:56 quiesce.go:176: [INFO] [quiesce] loop started (poll 5m0s, max-quiesce 30m0s)
2026/08/23 09:40:56 sync.go:279: [DEBUG] [sync] git fetch --depth 1 origin main in /opt/docker/felhom-controller/data/catalog-cache
2026/08/23 09:40:56 sync.go:449: [DEBUG] [sync] Running: git fetch --depth 1 origin main
2026/08/23 09:40:56 main.go:463: [INFO] Metrics store opened at /opt/docker/felhom-controller/data/metrics.db
2026/08/23 09:40:56 main.go:475: [INFO] Metrics collector started (60s interval)
2026/08/23 09:40:56 notifier.go:64: [INFO] Notifier enabled (hub: https://hub.felhom.eu)
2026/08/23 09:40:56 updater.go:96: [DEBUG] [selfupdate] VerifyStartup: checking update state in /opt/docker/felhom-controller/data
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:40:56 updater.go:96: [DEBUG] [selfupdate] VerifyStartup: no pending update (state=&{success 0.216.0 gitea.dooplex.hu/admin/felhom-controller:0.216.0 0.217.0 gitea.dooplex.hu/admin/felhom-controller:0.217.0 2026-08-21T19:48:40Z auto-floor 2026-08-21T19:48:46Z })
2026/08/23 09:40:56 main.go:597: [INFO] Self-update enabled (check every 6h, auto-update: false, auto-update time: 04:30)
2026/08/23 09:40:56 scheduler.go:102: [INFO] [scheduler] Registered periodic job: status-refresh (every 10s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="status-refresh" interval=10s totalJobs=1
2026/08/23 09:40:56 offsiteapply.go:151: [INFO] [offsite-apply] settle-gate: awaiting floor knowledge (first report ACK) before offsite apply
2026/08/23 09:40:56 scheduler.go:102: [INFO] [scheduler] Registered periodic job: stack-scan (every 2m0s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="stack-scan" interval=2m0s totalJobs=2
2026/08/23 09:40:56 scheduler.go:102: [INFO] [scheduler] Registered periodic job: health-probes (every 10s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="health-probes" interval=10s totalJobs=3
2026/08/23 09:40:56 scheduler.go:102: [INFO] [scheduler] Registered periodic job: system-health (every 5m0s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="system-health" interval=5m0s totalJobs=4
2026/08/23 09:40:56 scheduler.go:102: [INFO] [scheduler] Registered periodic job: deadapp-check (every 30s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="deadapp-check" interval=30s totalJobs=5
2026/08/23 09:40:56 scheduler.go:102: [INFO] [scheduler] Registered periodic job: ring-spill (every 30s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="ring-spill" interval=30s totalJobs=6
2026/08/23 09:40:56 scheduler.go:132: [INFO] [scheduler] Daily job db-dump scheduled for 2026-08-24 02:30 CEST
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="db-dump" schedule="02:30" nextRun=2026-08-24T02:30:00+02:00 totalJobs=7
2026/08/23 09:40:56 scheduler.go:102: [INFO] [scheduler] Registered periodic job: offsite-credential-retry (every 5m0s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="offsite-credential-retry" interval=5m0s totalJobs=8
2026/08/23 09:40:56 scheduler.go:102: [INFO] [scheduler] Registered periodic job: backup-cache (every 5m0s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="backup-cache" interval=5m0s totalJobs=9
2026/08/23 09:40:56 scheduler.go:132: [INFO] [scheduler] Daily job tier2-backup scheduled for 2026-08-24 03:30 CEST
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="tier2-backup" schedule="03:30" nextRun=2026-08-24T03:30:00+02:00 totalJobs=10
2026/08/23 09:40:56 scheduler.go:132: [INFO] [scheduler] Daily job offbox-backup scheduled for 2026-08-24 04:15 CEST
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offbox-backup" schedule="04:15" nextRun=2026-08-24T04:15:00+02:00 totalJobs=11
2026/08/23 09:40:56 scheduler.go:132: [INFO] [scheduler] Daily job offsite-abandon-sweep scheduled for 2026-08-24 05:10 CEST
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="offsite-abandon-sweep" schedule="05:10" nextRun=2026-08-24T05:10:00+02:00 totalJobs=12
2026/08/23 09:40:56 scheduler.go:132: [INFO] [scheduler] Daily job metrics-prune scheduled for 2026-08-24 04:00 CEST
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="metrics-prune" schedule="04:00" nextRun=2026-08-24T04:00:00+02:00 totalJobs=13
2026/08/23 09:40:56 scheduler.go:132: [INFO] [scheduler] Daily job fill-watch scheduled for 2026-08-24 03:30 CEST
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] daily job registered: name="fill-watch" schedule="03:30" nextRun=2026-08-24T03:30:00+02:00 totalJobs=14
2026/08/23 09:40:56 scheduler.go:102: [INFO] [scheduler] Registered periodic job: hub-report (every 15m0s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="hub-report" interval=15m0s totalJobs=15
2026/08/23 09:40:56 main.go:1222: [INFO] Hub reporting enabled (every 15m0s to https://hub.felhom.eu)
2026/08/23 09:40:56 scheduler.go:102: [INFO] [scheduler] Registered periodic job: selfupdate-check (every 6h0m0s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="selfupdate-check" interval=6h0m0s totalJobs=16
2026/08/23 09:40:56 selftest.go:50: [INFO] ========== Startup Self-Test ==========
2026/08/23 09:40:56 selftest.go:68: [INFO] [PASS] Docker socket: reachable (v29.7.2)
2026/08/23 09:40:56 selftest.go:68: [INFO] [PASS] Stacks directory: /opt/docker/stacks
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4063MB avail≈21835MB
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25894952 → total=25898MB avail=21835MB used=4063MB (15.7%)
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.94 0.65 0.58 8/904 120" → 1m=0.94 5m=0.65 15m=0.58
2026/08/23 09:40:56 selftest.go:68: [INFO] [PASS] Data directory: /opt/docker/felhom-controller/data (writable)
2026/08/23 09:40:56 selftest.go:68: [INFO] [PASS] System data path: /mnt/sys_drive
2026/08/23 09:40:56 selftest.go:68: [INFO] [PASS] Storage paths: 1 connected, 0 disconnected
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] GetInfo done in 74ms — mem=4063MB/25898MB (15.7%), rootDisk=10.2GB/68.7GB (14.9%), load=0.94/0.65/0.58, temp=52.9°C (hwmon1), cpu=0.0%
2026/08/23 09:40:56 selftest.go:68: [INFO] [PASS] Git catalog: 53 app definitions found
2026/08/23 09:40:56 selftest.go:68: [INFO] [PASS] Hub connectivity: https://hub.felhom.eu reachable (HTTP 200)
2026/08/23 09:40:56 selftest.go:68: [INFO] [PASS] Metrics DB: 4.2 MB
2026/08/23 09:40:56 selftest.go:70: [INFO] ========================================
2026/08/23 09:40:56 selftest.go:71: [INFO] Self-test complete: 8 passed, 0 warnings, 0 failed
2026/08/23 09:40:56 scheduler.go:206: [INFO] [scheduler] Starting scheduler with 16 jobs
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] scheduler started: periodic=10 daily=6
2026/08/23 09:40:56 scheduler.go:102: [INFO] [scheduler] Registered periodic job: geo-verify (every 6h0m0s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] daily job tier2-backup: next run at 2026-08-24 03:30:00 CEST (waiting 15h49m3s)
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:40:56 waiter.go:95: [INFO] [report] hub wait channel active (hold ≤240s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] daily job offsite-abandon-sweep: next run at 2026-08-24 05:10:00 CEST (waiting 17h29m3s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="geo-verify" interval=6h0m0s totalJobs=17
2026/08/23 09:40:56 main.go:1461: [INFO] Geo-restriction support enabled (CF API token configured)
2026/08/23 09:40:56 server.go:240: [DEBUG] [web] NewServer: initializing web server v0.223.0
2026/08/23 09:40:56 server.go:241: [DEBUG] [web] NewServer: backup=true scheduler=true alertMgr=true notifier=true updater=true
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] daily job fill-watch: next run at 2026-08-24 03:30:00 CEST (waiting 15h49m3s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] daily job metrics-prune: next run at 2026-08-24 04:00:00 CEST (waiting 16h19m3s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] daily job db-dump: next run at 2026-08-24 02:30:00 CEST (waiting 14h49m3s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] daily job offbox-backup: next run at 2026-08-24 04:15:00 CEST (waiting 16h34m3s)
2026/08/23 09:40:56 backup.go:434: [DEBUG] groupStacksByDrive: /mnt/sys_drive → [bookstack, docmost, kimai, opengist, privatebin]
2026/08/23 09:40:56 backup.go:434: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/hdd_1 → [calibre-web, paperless-ngx, romm]
2026/08/23 09:40:56 backup.go:1063: [INFO] [backup] Found 13 DB dump files across drives
2026/08/23 09:40:56 dbdump.go:128: [DEBUG] DiscoverDatabases: running docker ps to find database containers
2026/08/23 09:40:56 server.go:293: [DEBUG] [web] loadTemplates: loaded 79 templates
2026/08/23 09:40:56 server.go:260: [INFO] [web] Auth: using password from settings.json
2026/08/23 09:40:56 scheduler.go:102: [INFO] [scheduler] Registered periodic job: disk-health-check (every 1h0m0s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="disk-health-check" interval=1h0m0s totalJobs=18
2026/08/23 09:40:56 scheduler.go:102: [INFO] [scheduler] Registered periodic job: agent-channel-health (every 1m0s)
2026/08/23 09:40:56 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="agent-channel-health" interval=1m0s totalJobs=19
2026/08/23 09:40:56 server.go:647: [DEBUG] [web] CatchAllMiddleware: controller host=felhom.enkisfelhom.hu
2026/08/23 09:40:56 main.go:1700: [INFO] Web UI listening on :8080
2026/08/23 09:40:56 manager.go:258: [DEBUG] [integrations] ReapplyConfigForTarget: target=filebrowser integrations=0
2026/08/23 09:40:56 sync.go:449: [DEBUG] [sync] Running: git reset --hard origin/main
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] actualbudget/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] actualbudget/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] adventurelog/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] adventurelog/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] audiobookshelf/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] audiobookshelf/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] bentopdf/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] bentopdf/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] bookstack/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] bookstack/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] calcom/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] calcom/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] calibre-web/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] calibre-web/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] claper/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] claper/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] code-server/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] code-server/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] crafty-controller/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] crafty-controller/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] docmost/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] docmost/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] emby/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] emby/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] ghost/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] ghost/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] gitea/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] gitea/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] glance/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] glance/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] gokapi/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] gokapi/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] grafana/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] grafana/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] gramps-web/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] gramps-web/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] home-assistant/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] home-assistant/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 waiter.go:132: [DEBUG] [report] wait baseline generation=6
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] homebox/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] homebox/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] homepage/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] homepage/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] immich/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] immich/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] jellyfin/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] jellyfin/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] kimai/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] kimai/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] komga/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] komga/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] mealie/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] mealie/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] n8n/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] n8n/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] navidrome/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] navidrome/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] nextcloud/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] nextcloud/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] onlyoffice/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] onlyoffice/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] opengist/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] opengist/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] outline/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] outline/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] paperless-ngx/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] paperless-ngx/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] papra/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] papra/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] plant-it/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] plant-it/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] plex/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] plex/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] privatebin/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] privatebin/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] radarr/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] radarr/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] rallly/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] rallly/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] recipe-importer/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] recipe-importer/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] romm/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] romm/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] seerr/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] seerr/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] sonarr/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] sonarr/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] sparkyfitness/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] sparkyfitness/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] tandoor/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] tandoor/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] termix/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] termix/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] uptime-kuma/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] uptime-kuma/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] vaultwarden/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] vaultwarden/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] vikunja/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] vikunja/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] wanderer/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] wanderer/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] wger/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] wger/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] wishlist/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] wishlist/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] zipline/docker-compose.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:371: [DEBUG] [sync] zipline/.felhom.yml: hash match, skipped
2026/08/23 09:40:56 sync.go:244: [INFO] [sync] Catalog sync complete
2026/08/23 09:40:56 sync.go:103: [INFO] [sync] Initial sync: Sablonok naprakészek — nincs változás
2026/08/23 09:40:56 dbdump.go:147: [DEBUG] DiscoverDatabases: docker ps output: 1c05a812256b	felhom-controller		gitea.dooplex.hu/admin/felhom-controller:0.223.0
13cfb077ecf8	docmost	docmost	docmost/docmost:0.95.0
91041c89bd0d	docmost-postgres	docmost	postgres:16-alpine
41c830a66b1d	docmost-redis	docmost	redis:7-alpine
77031a0c1319	romm	romm	rommapp/romm:5.0.0
aa6fe6fa459e	romm-redis	romm	redis:7-alpine
e076270a7d75	romm-db	romm	mariadb:11.4
1c704643bc4c	paperless-webserver	paperless-ngx	ghcr.io/paperless-ngx/paperless-ngx:2.20.15
e31aa0b09dbb	paperless-postgres	paperless-ng...
2026/08/23 09:40:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.223.0, not a database)
2026/08/23 09:40:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container docmost (image=docmost/docmost:0.95.0, not a database)
2026/08/23 09:40:56 dbdump.go:176: [DEBUG] DiscoverDatabases: found postgres container: docmost-postgres (id=91041c89bd0d)
2026/08/23 09:40:56 dbdump.go:196: [DEBUG] DiscoverDatabases: docmost-postgres → stack=docmost, dbUser=docmost, dbName=docmost
2026/08/23 09:40:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container docmost-redis (image=redis:7-alpine, not a database)
2026/08/23 09:40:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.0.0, not a database)
2026/08/23 09:40:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database)
2026/08/23 09:40:56 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=e076270a7d75)
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4065MB avail≈21833MB
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25892764 → total=25898MB avail=21833MB used=4065MB (15.7%)
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.94 0.65 0.58 6/923 225" → 1m=0.94 5m=0.65 15m=0.58
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 56.8°C (hwmon2)
2026/08/23 09:40:56 info.go:13: [DEBUG] [system] GetInfo done in 70ms — mem=4065MB/25898MB (15.7%), rootDisk=10.2GB/68.7GB (14.9%), load=0.94/0.65/0.58, temp=56.8°C (hwmon2), cpu=0.0%
2026/08/23 09:40:56 healthcheck.go:42: [DEBUG] [monitor] Raw values: disk=14.9%, hdd=0.6% (configured=true), mem=15.7% (4065MB/25898MB), cpu=0.0%, temp=56.8°C (hwmon2)
2026/08/23 09:40:56 healthcheck.go:74: [DEBUG] [monitor] SSD disk: OK (15%)
2026/08/23 09:40:56 healthcheck.go:107: [DEBUG] [monitor] Memory: OK (16%)
2026/08/23 09:40:56 healthcheck.go:143: [DEBUG] [monitor] Temperature: OK (57°C)
2026/08/23 09:40:56 dbdump.go:196: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm
2026/08/23 09:40:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database)
2026/08/23 09:40:56 dbdump.go:176: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=e31aa0b09dbb)
2026/08/23 09:40:56 dbdump.go:894: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless")
2026/08/23 09:40:56 dbdump.go:196: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless
2026/08/23 09:40:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database)
2026/08/23 09:40:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container opengist (image=ghcr.io/thomiceli/opengist:1.13, not a database)
2026/08/23 09:40:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container kimai (image=kimai/kimai2:apache-2.57.0, not a database)
2026/08/23 09:40:56 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: kimai-db (id=9849469a8b29)
2026/08/23 09:40:56 healthcheck.go:157: [DEBUG] [monitor] Docker daemon: OK
2026/08/23 09:40:56 healthcheck.go:165: [DEBUG] [monitor] Checking 4 protected containers: [traefik cloudflared felhom-controller filebrowser]
2026/08/23 09:40:56 dbdump.go:196: [DEBUG] DiscoverDatabases: kimai-db → stack=kimai, dbUser=root, dbName=kimai
2026/08/23 09:40:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container calibre-web (image=crocodilestick/calibre-web-automated:v4.0.6, not a database)
2026/08/23 09:40:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container bookstack (image=lscr.io/linuxserver/bookstack:26.05.2, not a database)
2026/08/23 09:40:56 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: bookstack-db (id=95dcda149d29)
2026/08/23 09:40:56 handlers.go:2844: [INFO] [web] FileBrowser sync — no config/compose change, ensured running without recreate (1 storage path(s))
2026/08/23 09:40:57 dbdump.go:196: [DEBUG] DiscoverDatabases: bookstack-db → stack=bookstack, dbUser=root, dbName=bookstack
2026/08/23 09:40:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database)
2026/08/23 09:40:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container cloudflared (image=cloudflare/cloudflared:2026.6.0, not a database)
2026/08/23 09:40:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database)
2026/08/23 09:40:57 dbdump.go:203: [DEBUG] DiscoverDatabases: found 5 database(s), skipped 14 non-DB container(s)
2026/08/23 09:40:57 dbdump.go:206: [INFO] [backup] Discovered 5 databases
2026/08/23 09:40:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:40:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:40:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:40:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:40:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:40:57 [INFO] [stacks] ParseComposeHDDMounts: found 2 HDD mounts for /opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:40:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:40:57 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:40:57 [INFO] [backup] Discovered app data: 8 apps
2026/08/23 09:40:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:40:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:40:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:40:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:40:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:40:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:40:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:40:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:40:57 backup.go:1133: [INFO] [backup] Backup status cache refreshed
2026/08/23 09:40:57 healthcheck.go:175: [DEBUG] [monitor] All protected containers running
2026/08/23 09:40:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:40:57 healthcheck.go:192: [INFO] [monitor] Health check: status=ok
2026/08/23 09:40:57 healthcheck.go:196: [DEBUG] [monitor] Final status: ok (issues=0, warnings=0, info=4)
2026/08/23 09:40:57 client.go:67: [DEBUG] [agentapi] agent version seen: 0.130.0 (was "")
2026/08/23 09:40:57 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (695ms)
2026/08/23 09:40:57 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:40:57 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:40:57 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:40:57Z, active_sessions=1
2026/08/23 09:40:57 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:40:58 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:40:58 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:40:58 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:40:58 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:40:58 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:40:58 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:40:58 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (668ms)
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] CPUCollector: first sample — cpu=13.6% (idle=3412 total=3951)
2026/08/23 09:41:01 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:41:01 builder.go:37: [INFO] [report] Building system report
2026/08/23 09:41:01 builder.go:40: [DEBUG] [report] BuildReport: starting — version=0.223.0, storagePaths=1
2026/08/23 09:41:01 builder.go:62: [DEBUG] [report] BuildReport: configHash=042b71a3123d... (2989 bytes)
2026/08/23 09:41:01 notifier.go:206: [DEBUG] PushEvent: type=controller_started severity=info url=https://hub.felhom.eu/api/v1/event
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:41:01 notifier.go:232: [DEBUG] PushEvent: controller_started pushed OK (HTTP 200)
2026/08/23 09:41:01 notifier.go:234: [INFO] Event pushed: controller_started (info) — Controller elindult (0.223.0)
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4139MB avail≈21759MB
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25805764 → total=25898MB avail=21759MB used=4139MB (16.0%)
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.86 0.64 0.58 3/898 376" → 1m=0.86 5m=0.64 15m=0.58
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] GetInfo done in 57ms — mem=4139MB/25898MB (16.0%), rootDisk=10.2GB/68.7GB (14.9%), load=0.86/0.64/0.58, temp=52.9°C (hwmon1), cpu=13.6%
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:41:01 builder.go:128: [DEBUG] [report] BuildReport: system info collected — cpu=13.6%, mem=4139/25898MB, temp=52.9C
2026/08/23 09:41:01 builder.go:130: [DEBUG] [report] BuildReport: storage entries=2
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4139MB avail≈21759MB
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25805768 → total=25898MB avail=21759MB used=4139MB (16.0%)
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.86 0.64 0.58 4/898 397" → 1m=0.86 5m=0.64 15m=0.58
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:41:01 info.go:13: [DEBUG] [system] GetInfo done in 60ms — mem=4139MB/25898MB (16.0%), rootDisk=10.2GB/68.7GB (14.9%), load=0.86/0.64/0.58, temp=52.9°C (hwmon1), cpu=13.6%
2026/08/23 09:41:01 healthcheck.go:42: [DEBUG] [monitor] Raw values: disk=14.9%, hdd=0.6% (configured=true), mem=16.0% (4139MB/25898MB), cpu=13.6%, temp=52.9°C (hwmon1)
2026/08/23 09:41:01 healthcheck.go:74: [DEBUG] [monitor] SSD disk: OK (15%)
2026/08/23 09:41:01 healthcheck.go:107: [DEBUG] [monitor] Memory: OK (16%)
2026/08/23 09:41:01 healthcheck.go:125: [DEBUG] [monitor] CPU: OK (14%)
2026/08/23 09:41:01 healthcheck.go:143: [DEBUG] [monitor] Temperature: OK (53°C)
2026/08/23 09:41:02 healthcheck.go:157: [DEBUG] [monitor] Docker daemon: OK
2026/08/23 09:41:02 healthcheck.go:165: [DEBUG] [monitor] Checking 4 protected containers: [traefik cloudflared felhom-controller filebrowser]
2026/08/23 09:41:02 healthcheck.go:175: [DEBUG] [monitor] All protected containers running
2026/08/23 09:41:02 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:41:02 healthcheck.go:192: [INFO] [monitor] Health check: status=ok
2026/08/23 09:41:02 healthcheck.go:196: [DEBUG] [monitor] Final status: ok (issues=0, warnings=0, info=5)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: starting log scan for 16 containers (since 15m0s)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned bookstack: errors=0 warnings=0 issues=0 (took 21ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned bookstack-db: errors=0 warnings=2 issues=2 (took 24ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned calibre-web: errors=0 warnings=0 issues=0 (took 23ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned docmost: errors=0 warnings=0 issues=0 (took 23ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned docmost-postgres: errors=0 warnings=0 issues=0 (took 23ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned docmost-redis: errors=0 warnings=0 issues=0 (took 28ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned kimai: errors=0 warnings=0 issues=0 (took 30ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned kimai-db: errors=0 warnings=0 issues=0 (took 23ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned opengist: errors=0 warnings=0 issues=0 (took 21ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned paperless-webserver: errors=0 warnings=0 issues=0 (took 22ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned paperless-postgres: errors=0 warnings=0 issues=0 (took 22ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned paperless-redis: errors=0 warnings=0 issues=0 (took 22ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned romm: errors=0 warnings=0 issues=0 (took 28ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned romm-redis: errors=0 warnings=0 issues=0 (took 21ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned romm-db: errors=0 warnings=0 issues=0 (took 24ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: scanned felhom-controller: errors=0 warnings=0 issues=0 (took 32ms)
2026/08/23 09:41:02 logscanner.go:69: [DEBUG] [metrics] logscanner: log scan completed: 16 containers in 386ms
2026/08/23 09:41:02 builder.go:197: [DEBUG] [report] BuildReport: complete — containers=15, health=ok, deployed=8, available=45, app_telemetry=8
2026/08/23 09:41:02 pusher.go:100: [DEBUG] [report] Push: url=https://hub.felhom.eu/api/v1/report payload=7263 bytes
2026/08/23 09:41:02 pusher.go:134: [INFO] [report] Hub report pushed successfully (7263 bytes)
2026/08/23 09:41:02 settings.go:711: [DEBUG] [settings] saved to /opt/docker/felhom-controller/data/settings.json (9760 bytes)
2026/08/23 09:41:02 settings.go:714: [INFO] [settings] Settings saved
2026/08/23 09:41:02 updater.go:96: [DEBUG] [selfupdate] SetFloor: floor "" → "0.222.0"
2026/08/23 09:41:02 updater.go:96: [DEBUG] [selfupdate] maybeAutoUpdate: current 0.223.0 >= floor 0.222.0 — no action
2026/08/23 09:41:02 main.go:1320: [INFO] Startup hub report sent
2026/08/23 09:41:06 offsiteapply.go:151: [INFO] [offsite-apply] settle-gate: GO — at/above floor 0.222.0 (we are 0.223.0), no managed update running
2026/08/23 09:41:06 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:41:06 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:41:06 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:41:06 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:41:06 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 6 targets (0 skipped not due, 1 skipped no container)
2026/08/23 09:41:06 healthprobe.go:153: [DEBUG] Health probe opengist: API GET :6157/healthcheck → 200 (2ms)
2026/08/23 09:41:06 healthprobe.go:153: [DEBUG] Health probe romm: HTTP GET :8080/ → 200 (3ms)
2026/08/23 09:41:06 healthprobe.go:153: [DEBUG] Health probe docmost: HTTP GET :3000/ → 200 (4ms)
2026/08/23 09:41:06 healthprobe.go:153: [DEBUG] Health probe calibre-web: HTTP GET :8083/ → 302 (6ms)
2026/08/23 09:41:06 healthprobe.go:153: [DEBUG] Health probe kimai: HTTP GET :8001/ → 302 (19ms)
2026/08/23 09:41:06 healthprobe.go:153: [DEBUG] Health probe bookstack: HTTP GET :80/ → 302 (31ms)
2026/08/23 09:41:06 healthprobe.go:133: [INFO] Health probes: 6 ok (of 6 probed)
2026/08/23 09:41:11 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:41:11 main.go:2108: [INFO] [bootrecon] boot window: fleet settled after 10s (3 identical samples 5s apart) — sweeping
2026/08/23 09:41:11 bootrecon.go:255: [INFO] [bootrecon] Boot reconciliation: no boot-orphaned apps (nothing to start)
2026/08/23 09:41:16 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:41:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:16 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:41:16 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:41:16 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:41:19 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:41:19 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:41:19 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:41:19Z, active_sessions=2
2026/08/23 09:41:19 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:41:19 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:41:19 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:41:19 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:41:19 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:41:19 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:41:19 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:41:26 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:41:26 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:41:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:26 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:41:26 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:41:26 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:41:26 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:41:27 updater.go:96: [DEBUG] [selfupdate] queryRegistry: anonymous mode, url=https://gitea.dooplex.hu/v2/admin/felhom-controller/tags/list
2026/08/23 09:41:27 updater.go:96: [DEBUG] [selfupdate] queryRegistry: anonymous plain GET HTTP 401
2026/08/23 09:41:27 updater.go:96: [DEBUG] [selfupdate] queryRegistry: anonymous token request: https://gitea.dooplex.hu/v2/token?scope=repository%3Aadmin%2Ffelhom-controller%3Apull&service=container_registry
2026/08/23 09:41:27 updater.go:96: [DEBUG] [selfupdate] queryRegistry: anonymous tags/list with Bearer HTTP 200
2026/08/23 09:41:27 updater.go:96: [DEBUG] [selfupdate] queryRegistry: 15 tags returned: [0.213.0 0.214.0 0.215.0 0.216.0 0.217.0 0.218.0 0.219.0 0.220.0 0.220.1 0.220.2 0.221.0 0.221.1 0.222.0 0.223.0 latest]
2026/08/23 09:41:27 updater.go:178: [INFO] [selfupdate] Current version 0.223.0 is up to date
2026/08/23 09:41:27 updater.go:96: [DEBUG] [selfupdate] version comparison: current=0.223.0 (0.223.0), latest=0.223.0 (0.223.0), cmp=0, updateAvailable=false
2026/08/23 09:41:28 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (621ms)
2026/08/23 09:41:29 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (610ms)
2026/08/23 09:41:36 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:41:36 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:41:36 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:41:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:36 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:41:40 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:41:40 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:41:40 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:41:40Z, active_sessions=3
2026/08/23 09:41:40 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:41:40 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:41:40 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:41:40 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:41:40 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:41:40 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:41:40 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:41:46 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:41:46 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:41:46 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:41:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:46 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:41:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:41:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4078MB avail≈21820MB
2026/08/23 09:41:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25878452 → total=25898MB avail=21820MB used=4078MB (15.7%)
2026/08/23 09:41:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:41:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:41:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.73 0.64 0.58 4/894 743" → 1m=0.73 5m=0.64 15m=0.58
2026/08/23 09:41:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:41:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 53.1°C (hwmon2)
2026/08/23 09:41:56 info.go:13: [DEBUG] [system] GetInfo done in 62ms — mem=4078MB/25898MB (15.7%), rootDisk=10.2GB/68.7GB (14.9%), load=0.73/0.64/0.58, temp=53.1°C (hwmon2), cpu=6.0%
2026/08/23 09:41:56 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:41:56 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:41:56 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:41:56 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:41:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:41:56 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:41:56 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:41:56 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:41:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:41:57 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (544ms)
2026/08/23 09:41:57 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 544ms)
2026/08/23 09:41:58 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (665ms)
2026/08/23 09:41:59 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (625ms)
2026/08/23 09:42:01 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:42:01 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:42:01 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:42:01Z, active_sessions=4
2026/08/23 09:42:01 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:42:01 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:42:01 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:42:01 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:42:01 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:42:01 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:42:01 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:42:06 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:42:06 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:42:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:06 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:42:06 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:42:16 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:42:16 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:42:16 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:42:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:16 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:42:22 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:42:22 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:42:22 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:42:22Z, active_sessions=5
2026/08/23 09:42:22 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:42:22 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:42:22 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:42:22 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:42:22 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:42:22 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:42:22 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:42:26 info.go:13: [DEBUG] [system] GetDiskUsage: path="/" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:42:26 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:42:26 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:42:26 fillwatch.go:256: [INFO] [fillwatch] checked 3 filesystem(s), 0 unreadable/skipped, 0 notification(s); bands: all ok
2026/08/23 09:42:26 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:42:26 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:42:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:26 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:42:26 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:42:26 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:42:26 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:42:28 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (680ms)
2026/08/23 09:42:29 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (648ms)
2026/08/23 09:42:36 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:42:36 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:42:36 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:42:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:36 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:42:43 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:42:43 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:42:43 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:42:43Z, active_sessions=6
2026/08/23 09:42:43 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:42:43 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:42:43 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:42:43 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:42:43 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:42:43 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:42:43 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:42:46 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:42:46 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:42:46 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:42:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:46 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:42:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:42:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4016MB avail≈21882MB
2026/08/23 09:42:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25950324 → total=25898MB avail=21882MB used=4016MB (15.5%)
2026/08/23 09:42:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:42:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:42:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.85 0.70 0.61 3/893 855" → 1m=0.85 5m=0.70 15m=0.61
2026/08/23 09:42:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:42:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:42:56 info.go:13: [DEBUG] [system] GetInfo done in 63ms — mem=4016MB/25898MB (15.5%), rootDisk=10.2GB/68.7GB (14.9%), load=0.85/0.70/0.61, temp=52.9°C (hwmon1), cpu=3.5%
2026/08/23 09:42:56 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:42:56 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan
2026/08/23 09:42:56 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting
2026/08/23 09:42:56 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:42:56 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:42:56 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=true composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=true composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "cloudflared" deployed=false composePath=/opt/docker/stacks/cloudflared/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=true composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=true composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=true composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/08/23 09:42:56 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:42:56 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/08/23 09:42:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/08/23 09:42:56 manager.go:1547: [DEBUG] [stacks] getCatalogTemplateSlugs: found 53 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/08/23 09:42:56 manager.go:539: [DEBUG] [stacks] ScanStacks: catalog has 53 template slugs for orphan detection
2026/08/23 09:42:56 manager.go:570: [INFO] [stacks] ScanStacks complete: 56 stacks found (8 deployed, 48 available)
2026/08/23 09:42:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:42:56 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 50ms)
2026/08/23 09:42:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:42:56 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:42:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:42:57 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (555ms)
2026/08/23 09:42:57 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 556ms)
2026/08/23 09:42:58 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (641ms)
2026/08/23 09:42:59 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (626ms)
2026/08/23 09:43:05 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:43:05 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:43:05 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:43:05Z, active_sessions=7
2026/08/23 09:43:05 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:43:05 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:43:05 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:43:05 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:43:05 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:43:05 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:43:05 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:43:06 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:43:06 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:43:06 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:43:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:06 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:43:16 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:43:16 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:43:16 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:43:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:16 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:43:26 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:43:26 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:43:26 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:43:26Z, active_sessions=8
2026/08/23 09:43:26 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:43:26 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:43:26 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:43:26 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:43:26 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:43:26 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:43:26 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:43:26 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:43:26 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:43:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:26 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:43:26 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:43:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:26 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:43:26 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:43:28 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (641ms)
2026/08/23 09:43:29 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (615ms)
2026/08/23 09:43:36 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:43:36 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:43:36 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:43:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:36 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:43:46 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:43:46 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:43:46 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:43:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:46 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:43:47 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:43:47 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:43:47 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:43:47Z, active_sessions=9
2026/08/23 09:43:47 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:43:47 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:43:47 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:43:47 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:43:47 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:43:47 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:43:47 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:43:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:43:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4018MB avail≈21880MB
2026/08/23 09:43:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25948952 → total=25898MB avail=21880MB used=4018MB (15.5%)
2026/08/23 09:43:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:43:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:43:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.59 0.66 0.60 6/893 981" → 1m=0.59 5m=0.66 15m=0.60
2026/08/23 09:43:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:43:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:43:56 info.go:13: [DEBUG] [system] GetInfo done in 62ms — mem=4018MB/25898MB (15.5%), rootDisk=10.2GB/68.7GB (14.9%), load=0.59/0.66/0.60, temp=52.9°C (hwmon1), cpu=4.3%
2026/08/23 09:43:56 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:43:56 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:43:56 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:43:56 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:43:56 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:43:56 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:43:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:43:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:43:56 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:43:57 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (586ms)
2026/08/23 09:43:57 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 587ms)
2026/08/23 09:43:58 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (633ms)
2026/08/23 09:43:59 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (611ms)
2026/08/23 09:44:06 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:44:06 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:44:06 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:44:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:06 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:44:08 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:44:08 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:44:08 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:44:08Z, active_sessions=10
2026/08/23 09:44:08 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:44:08 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:44:08 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:44:08 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:44:08 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:44:08 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:44:08 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:44:16 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:44:16 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:44:16 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:44:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:16 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:44:26 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:44:26 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:44:26 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:44:26 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:44:26 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:44:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:26 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:44:28 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (615ms)
2026/08/23 09:44:29 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (700ms)
2026/08/23 09:44:29 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:44:29 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:44:29 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:44:29Z, active_sessions=11
2026/08/23 09:44:29 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:44:29 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:44:29 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:44:29 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:44:29 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:44:29 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:44:29 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:44:36 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:44:36 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:44:36 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:44:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:36 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:44:46 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:44:46 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:44:46 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:44:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:46 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:44:51 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:44:51 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:44:51 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:44:51Z, active_sessions=12
2026/08/23 09:44:51 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:44:51 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:44:51 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:44:51 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:44:51 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:44:51 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:44:51 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:44:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:44:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4043MB avail≈21855MB
2026/08/23 09:44:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25919228 → total=25898MB avail=21855MB used=4043MB (15.6%)
2026/08/23 09:44:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:44:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:44:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.63 0.66 0.60 4/893 1100" → 1m=0.63 5m=0.66 15m=0.60
2026/08/23 09:44:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:44:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:44:56 info.go:13: [DEBUG] [system] GetInfo done in 58ms — mem=4043MB/25898MB (15.6%), rootDisk=10.2GB/68.7GB (14.9%), load=0.63/0.66/0.60, temp=52.9°C (hwmon1), cpu=4.2%
2026/08/23 09:44:56 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan
2026/08/23 09:44:56 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting
2026/08/23 09:44:56 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:44:56 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:44:56 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:44:56 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=true composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=true composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "cloudflared" deployed=false composePath=/opt/docker/stacks/cloudflared/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=true composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=true composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=true composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:44:56 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:44:56 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/08/23 09:44:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/08/23 09:44:56 manager.go:1547: [DEBUG] [stacks] getCatalogTemplateSlugs: found 53 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/08/23 09:44:56 manager.go:539: [DEBUG] [stacks] ScanStacks: catalog has 53 template slugs for orphan detection
2026/08/23 09:44:56 manager.go:570: [INFO] [stacks] ScanStacks complete: 56 stacks found (8 deployed, 48 available)
2026/08/23 09:44:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:44:56 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 47ms)
2026/08/23 09:44:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:44:56 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:44:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:44:57 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (697ms)
2026/08/23 09:44:57 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 697ms)
2026/08/23 09:44:58 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (609ms)
2026/08/23 09:44:59 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (638ms)
2026/08/23 09:45:06 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:45:06 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:45:06 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:45:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:06 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:45:12 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:45:12 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:45:12 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:45:12Z, active_sessions=13
2026/08/23 09:45:12 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:45:12 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:45:12 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:45:12 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:45:12 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:45:12 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:45:12 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:45:16 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:45:16 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:45:16 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:45:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:16 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:45:26 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:45:26 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:45:26 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:45:26 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:45:26 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:45:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:26 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:45:28 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (648ms)
2026/08/23 09:45:29 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (669ms)
2026/08/23 09:45:33 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:45:33 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:45:33 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:45:33Z, active_sessions=14
2026/08/23 09:45:33 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:45:33 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:45:33 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:45:33 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:45:33 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:45:33 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:45:33 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:45:36 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:45:36 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:45:36 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:45:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:36 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:45:46 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:45:46 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:45:46 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:45:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:46 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:45:54 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:45:54 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:45:54 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:45:54Z, active_sessions=15
2026/08/23 09:45:54 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:45:54 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:45:54 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:45:54 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:45:54 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:45:54 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:45:54 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4097MB avail≈21801MB
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25855604 → total=25898MB avail=21801MB used=4097MB (15.8%)
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.75 0.68 0.62 5/894 1221" → 1m=0.75 5m=0.68 15m=0.62
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] GetInfo done in 64ms — mem=4097MB/25898MB (15.8%), rootDisk=10.2GB/68.7GB (14.9%), load=0.75/0.68/0.62, temp=52.9°C (hwmon1), cpu=4.1%
2026/08/23 09:45:56 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:45:56 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:45:56 scheduler.go:346: [INFO] [scheduler] Running job: backup-cache
2026/08/23 09:45:56 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:45:56 scheduler.go:346: [INFO] [scheduler] Running job: offsite-credential-retry
2026/08/23 09:45:56 scheduler.go:67: [DEBUG] [scheduler] job offsite-credential-retry: execution starting
2026/08/23 09:45:56 scheduler.go:67: [DEBUG] [scheduler] job backup-cache: execution starting
2026/08/23 09:45:56 scheduler.go:363: [INFO] [scheduler] Job offsite-credential-retry completed (took 0s)
2026/08/23 09:45:56 scheduler.go:346: [INFO] [scheduler] Running job: system-health
2026/08/23 09:45:56 scheduler.go:67: [DEBUG] [scheduler] job system-health: execution starting
2026/08/23 09:45:56 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:45:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:45:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:45:56 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:45:56 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:45:56 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:45:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:45:56 backup.go:434: [DEBUG] groupStacksByDrive: /mnt/sys_drive → [bookstack, docmost, kimai, opengist, privatebin]
2026/08/23 09:45:56 backup.go:434: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/hdd_1 → [calibre-web, paperless-ngx, romm]
2026/08/23 09:45:56 backup.go:1063: [INFO] [backup] Found 13 DB dump files across drives
2026/08/23 09:45:56 dbdump.go:128: [DEBUG] DiscoverDatabases: running docker ps to find database containers
2026/08/23 09:45:56 dbdump.go:147: [DEBUG] DiscoverDatabases: docker ps output: 1c05a812256b	felhom-controller		gitea.dooplex.hu/admin/felhom-controller:0.223.0
13cfb077ecf8	docmost	docmost	docmost/docmost:0.95.0
91041c89bd0d	docmost-postgres	docmost	postgres:16-alpine
41c830a66b1d	docmost-redis	docmost	redis:7-alpine
77031a0c1319	romm	romm	rommapp/romm:5.0.0
aa6fe6fa459e	romm-redis	romm	redis:7-alpine
e076270a7d75	romm-db	romm	mariadb:11.4
1c704643bc4c	paperless-webserver	paperless-ngx	ghcr.io/paperless-ngx/paperless-ngx:2.20.15
e31aa0b09dbb	paperless-postgres	paperless-ng...
2026/08/23 09:45:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.223.0, not a database)
2026/08/23 09:45:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container docmost (image=docmost/docmost:0.95.0, not a database)
2026/08/23 09:45:56 dbdump.go:176: [DEBUG] DiscoverDatabases: found postgres container: docmost-postgres (id=91041c89bd0d)
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4071MB avail≈21827MB
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25886216 → total=25898MB avail=21827MB used=4071MB (15.7%)
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.75 0.68 0.62 4/906 1273" → 1m=0.75 5m=0.68 15m=0.62
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:45:56 info.go:13: [DEBUG] [system] GetInfo done in 71ms — mem=4071MB/25898MB (15.7%), rootDisk=10.2GB/68.7GB (14.9%), load=0.75/0.68/0.62, temp=52.9°C (hwmon1), cpu=7.4%
2026/08/23 09:45:56 healthcheck.go:42: [DEBUG] [monitor] Raw values: disk=14.9%, hdd=0.6% (configured=true), mem=15.7% (4071MB/25898MB), cpu=7.4%, temp=52.9°C (hwmon1)
2026/08/23 09:45:56 healthcheck.go:74: [DEBUG] [monitor] SSD disk: OK (15%)
2026/08/23 09:45:56 healthcheck.go:107: [DEBUG] [monitor] Memory: OK (16%)
2026/08/23 09:45:56 healthcheck.go:125: [DEBUG] [monitor] CPU: OK (7%)
2026/08/23 09:45:56 healthcheck.go:143: [DEBUG] [monitor] Temperature: OK (53°C)
2026/08/23 09:45:56 dbdump.go:196: [DEBUG] DiscoverDatabases: docmost-postgres → stack=docmost, dbUser=docmost, dbName=docmost
2026/08/23 09:45:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container docmost-redis (image=redis:7-alpine, not a database)
2026/08/23 09:45:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.0.0, not a database)
2026/08/23 09:45:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database)
2026/08/23 09:45:56 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=e076270a7d75)
2026/08/23 09:45:56 dbdump.go:196: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm
2026/08/23 09:45:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database)
2026/08/23 09:45:56 dbdump.go:176: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=e31aa0b09dbb)
2026/08/23 09:45:56 dbdump.go:894: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless")
2026/08/23 09:45:56 healthcheck.go:157: [DEBUG] [monitor] Docker daemon: OK
2026/08/23 09:45:56 healthcheck.go:165: [DEBUG] [monitor] Checking 4 protected containers: [traefik cloudflared felhom-controller filebrowser]
2026/08/23 09:45:56 dbdump.go:196: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless
2026/08/23 09:45:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database)
2026/08/23 09:45:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container opengist (image=ghcr.io/thomiceli/opengist:1.13, not a database)
2026/08/23 09:45:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container kimai (image=kimai/kimai2:apache-2.57.0, not a database)
2026/08/23 09:45:56 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: kimai-db (id=9849469a8b29)
2026/08/23 09:45:57 dbdump.go:196: [DEBUG] DiscoverDatabases: kimai-db → stack=kimai, dbUser=root, dbName=kimai
2026/08/23 09:45:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container calibre-web (image=crocodilestick/calibre-web-automated:v4.0.6, not a database)
2026/08/23 09:45:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container bookstack (image=lscr.io/linuxserver/bookstack:26.05.2, not a database)
2026/08/23 09:45:57 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: bookstack-db (id=95dcda149d29)
2026/08/23 09:45:57 dbdump.go:196: [DEBUG] DiscoverDatabases: bookstack-db → stack=bookstack, dbUser=root, dbName=bookstack
2026/08/23 09:45:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database)
2026/08/23 09:45:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container cloudflared (image=cloudflare/cloudflared:2026.6.0, not a database)
2026/08/23 09:45:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database)
2026/08/23 09:45:57 dbdump.go:203: [DEBUG] DiscoverDatabases: found 5 database(s), skipped 14 non-DB container(s)
2026/08/23 09:45:57 dbdump.go:206: [INFO] [backup] Discovered 5 databases
2026/08/23 09:45:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:45:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:45:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:45:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:45:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:45:57 [INFO] [stacks] ParseComposeHDDMounts: found 2 HDD mounts for /opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:45:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:45:57 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:45:57 [INFO] [backup] Discovered app data: 8 apps
2026/08/23 09:45:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:45:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:45:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:45:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:45:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:45:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:45:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:45:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:45:57 backup.go:1133: [INFO] [backup] Backup status cache refreshed
2026/08/23 09:45:57 scheduler.go:363: [INFO] [scheduler] Job backup-cache completed (took 200ms)
2026/08/23 09:45:57 healthcheck.go:175: [DEBUG] [monitor] All protected containers running
2026/08/23 09:45:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:45:57 healthcheck.go:192: [INFO] [monitor] Health check: status=ok
2026/08/23 09:45:57 healthcheck.go:196: [DEBUG] [monitor] Final status: ok (issues=0, warnings=0, info=5)
2026/08/23 09:45:57 scheduler.go:363: [INFO] [scheduler] Job system-health completed (took 210ms)
2026/08/23 09:45:57 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (633ms)
2026/08/23 09:45:57 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 634ms)
2026/08/23 09:45:58 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (695ms)
2026/08/23 09:45:59 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (644ms)
2026/08/23 09:46:06 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:46:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 5m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 5m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:06 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:46:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 5m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 5m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 5m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 5m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:06 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:46:06 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:46:15 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:46:15 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:46:15 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:46:15Z, active_sessions=16
2026/08/23 09:46:15 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:46:15 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:46:15 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:46:15 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:46:15 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:46:16 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:46:16 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:46:16 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:46:16 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:46:16 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:46:16 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 6 targets (0 skipped not due, 1 skipped no container)
2026/08/23 09:46:16 healthprobe.go:153: [DEBUG] Health probe romm: HTTP GET :8080/ → 200 (1ms)
2026/08/23 09:46:16 healthprobe.go:153: [DEBUG] Health probe opengist: API GET :6157/healthcheck → 200 (2ms)
2026/08/23 09:46:16 healthprobe.go:153: [DEBUG] Health probe docmost: HTTP GET :3000/ → 200 (4ms)
2026/08/23 09:46:16 healthprobe.go:153: [DEBUG] Health probe calibre-web: HTTP GET :8083/ → 302 (6ms)
2026/08/23 09:46:16 healthprobe.go:153: [DEBUG] Health probe kimai: HTTP GET :8001/ → 302 (26ms)
2026/08/23 09:46:16 healthprobe.go:153: [DEBUG] Health probe bookstack: HTTP GET :80/ → 302 (42ms)
2026/08/23 09:46:16 healthprobe.go:133: [INFO] Health probes: 6 ok (of 6 probed)
2026/08/23 09:46:26 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:46:26 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:46:26 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:46:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:26 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:46:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:26 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:46:26 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:46:28 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (640ms)
2026/08/23 09:46:29 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (663ms)
2026/08/23 09:46:36 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:46:36 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:46:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:36 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:46:36 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:46:37 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:46:37 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:46:37 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:46:37Z, active_sessions=17
2026/08/23 09:46:37 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:46:37 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:46:37 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:46:37 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:46:37 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:46:37 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:46:37 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:46:46 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:46:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:46 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:46:46 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:46:46 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:46:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:46:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4052MB avail≈21846MB
2026/08/23 09:46:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25908740 → total=25898MB avail=21846MB used=4052MB (15.6%)
2026/08/23 09:46:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:46:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:46:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.51 0.63 0.60 3/893 1536" → 1m=0.51 5m=0.63 15m=0.60
2026/08/23 09:46:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:46:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 53.0°C (hwmon2)
2026/08/23 09:46:56 info.go:13: [DEBUG] [system] GetInfo done in 63ms — mem=4052MB/25898MB (15.6%), rootDisk=10.2GB/68.7GB (14.9%), load=0.51/0.63/0.60, temp=53.0°C (hwmon2), cpu=1.2%
2026/08/23 09:46:56 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan
2026/08/23 09:46:56 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:46:56 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:46:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:46:56 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:46:56 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:46:56 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:46:56 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting
2026/08/23 09:46:56 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:46:56 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:46:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=true composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=true composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "cloudflared" deployed=false composePath=/opt/docker/stacks/cloudflared/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=true composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=true composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=true composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/08/23 09:46:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/08/23 09:46:56 manager.go:1547: [DEBUG] [stacks] getCatalogTemplateSlugs: found 53 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/08/23 09:46:56 manager.go:539: [DEBUG] [stacks] ScanStacks: catalog has 53 template slugs for orphan detection
2026/08/23 09:46:56 manager.go:570: [INFO] [stacks] ScanStacks complete: 56 stacks found (8 deployed, 48 available)
2026/08/23 09:46:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:46:56 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 78ms)
2026/08/23 09:46:57 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (620ms)
2026/08/23 09:46:57 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 621ms)
2026/08/23 09:46:58 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:46:58 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:46:58 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:46:58Z, active_sessions=18
2026/08/23 09:46:58 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:46:58 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:46:58 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:46:58 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:46:58 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:46:58 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:46:58 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:46:58 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (646ms)
2026/08/23 09:46:59 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (630ms)
2026/08/23 09:47:06 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:47:06 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:47:06 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:47:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:06 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:47:16 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:47:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:16 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:47:16 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:47:16 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:47:19 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:47:19 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:47:19 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:47:19Z, active_sessions=19
2026/08/23 09:47:19 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:47:19 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:47:19 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:47:19 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:47:19 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:47:19 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:47:19 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:47:26 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:47:26 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:47:26 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:47:26 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:47:26 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:47:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:26 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:47:28 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (745ms)
2026/08/23 09:47:29 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (699ms)
2026/08/23 09:47:36 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:47:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:36 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:47:36 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:47:36 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:47:40 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:47:40 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:47:40 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:47:40Z, active_sessions=20
2026/08/23 09:47:40 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:47:40 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:47:40 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:47:40 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:47:40 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:47:40 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:47:40 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:47:46 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:47:46 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:47:46 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:47:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:46 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:47:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:47:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈3998MB avail≈21900MB
2026/08/23 09:47:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25972356 → total=25898MB avail=21900MB used=3998MB (15.4%)
2026/08/23 09:47:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:47:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:47:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.32 0.56 0.58 4/893 1660" → 1m=0.32 5m=0.56 15m=0.58
2026/08/23 09:47:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:47:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.0°C (hwmon0)
2026/08/23 09:47:56 info.go:13: [DEBUG] [system] GetInfo done in 56ms — mem=3998MB/25898MB (15.4%), rootDisk=10.2GB/68.7GB (14.9%), load=0.32/0.56/0.58, temp=52.0°C (hwmon0), cpu=3.7%
2026/08/23 09:47:56 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:47:56 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:47:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:47:56 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:47:56 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:47:56 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:47:56 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:47:56 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:47:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:47:57 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (564ms)
2026/08/23 09:47:57 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 565ms)
2026/08/23 09:47:58 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (649ms)
2026/08/23 09:47:59 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (639ms)
2026/08/23 09:48:01 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:48:02 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:48:02 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:48:02Z, active_sessions=21
2026/08/23 09:48:02 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:48:02 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:48:02 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:48:02 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:48:02 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:48:02 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:48:02 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:48:06 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:48:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:06 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:48:06 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:48:06 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:48:16 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:48:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:16 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:48:16 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:48:16 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:48:23 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:48:23 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:48:23 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:48:23Z, active_sessions=22
2026/08/23 09:48:23 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:48:23 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:48:23 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:48:23 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:48:23 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:48:23 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:48:23 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:48:26 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:48:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:26 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:48:26 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:48:26 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:48:26 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:48:26 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:48:28 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (629ms)
2026/08/23 09:48:29 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (615ms)
2026/08/23 09:48:36 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:48:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:36 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:48:36 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:48:36 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:48:44 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:48:44 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:48:44 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:48:44Z, active_sessions=23
2026/08/23 09:48:44 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:48:44 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:48:44 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:48:44 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:48:44 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:48:44 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:48:44 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:48:46 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:48:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:46 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:48:46 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:48:46 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:48:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:48:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈3977MB avail≈21921MB
2026/08/23 09:48:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25997412 → total=25898MB avail=21921MB used=3977MB (15.4%)
2026/08/23 09:48:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:48:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:48:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.49 0.56 0.58 5/893 1773" → 1m=0.49 5m=0.56 15m=0.58
2026/08/23 09:48:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:48:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.0°C (hwmon0)
2026/08/23 09:48:56 info.go:13: [DEBUG] [system] GetInfo done in 61ms — mem=3977MB/25898MB (15.4%), rootDisk=10.2GB/68.7GB (14.9%), load=0.49/0.56/0.58, temp=52.0°C (hwmon0), cpu=1.2%
2026/08/23 09:48:56 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:48:56 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:48:56 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:48:56 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:48:56 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan
2026/08/23 09:48:56 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting
2026/08/23 09:48:56 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:48:56 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:48:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:48:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:48:56 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=true composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=true composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "cloudflared" deployed=false composePath=/opt/docker/stacks/cloudflared/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=true composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=true composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=true composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/08/23 09:48:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/08/23 09:48:56 manager.go:1547: [DEBUG] [stacks] getCatalogTemplateSlugs: found 53 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/08/23 09:48:56 manager.go:539: [DEBUG] [stacks] ScanStacks: catalog has 53 template slugs for orphan detection
2026/08/23 09:48:56 manager.go:570: [INFO] [stacks] ScanStacks complete: 56 stacks found (8 deployed, 48 available)
2026/08/23 09:48:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:48:56 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 71ms)
2026/08/23 09:48:57 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (594ms)
2026/08/23 09:48:57 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 595ms)
2026/08/23 09:48:58 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (605ms)
2026/08/23 09:48:59 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (648ms)
2026/08/23 09:49:05 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:49:05 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:49:05 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:49:05Z, active_sessions=24
2026/08/23 09:49:05 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:49:05 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:49:05 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:49:05 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:49:05 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:49:05 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:49:05 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:49:06 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:49:06 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:49:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 2m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:06 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:49:06 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:49:16 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:49:16 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:49:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:16 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:49:16 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:49:26 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:49:26 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:49:26 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:49:26Z, active_sessions=25
2026/08/23 09:49:26 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:49:26 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:49:26 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:49:26 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:49:26 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:49:26 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:49:26 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:49:26 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:49:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:26 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:49:26 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:49:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:26 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:49:26 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:49:26 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:49:28 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (617ms)
2026/08/23 09:49:29 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (637ms)
2026/08/23 09:49:36 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:49:36 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:49:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:36 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:49:36 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:49:46 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:49:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:46 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:49:46 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:49:46 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:49:47 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:49:48 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:49:48 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:49:48Z, active_sessions=26
2026/08/23 09:49:48 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:49:48 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:49:48 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:49:48 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:49:48 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:49:48 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:49:48 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:49:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:49:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4073MB avail≈21825MB
2026/08/23 09:49:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25882852 → total=25898MB avail=21825MB used=4073MB (15.7%)
2026/08/23 09:49:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:49:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:49:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.33 0.50 0.55 3/893 1903" → 1m=0.33 5m=0.50 15m=0.55
2026/08/23 09:49:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:49:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:49:56 info.go:13: [DEBUG] [system] GetInfo done in 61ms — mem=4073MB/25898MB (15.7%), rootDisk=10.2GB/68.7GB (14.9%), load=0.33/0.50/0.55, temp=52.9°C (hwmon1), cpu=3.7%
2026/08/23 09:49:56 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:49:56 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:49:56 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:49:56 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:49:56 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:49:56 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:49:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:49:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:49:56 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:49:57 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (526ms)
2026/08/23 09:49:57 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 527ms)
2026/08/23 09:49:58 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (620ms)
2026/08/23 09:49:59 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (635ms)
2026/08/23 09:50:06 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:50:06 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:50:06 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:50:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 3m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:06 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:50:09 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:50:09 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:50:09 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:50:09Z, active_sessions=27
2026/08/23 09:50:09 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:50:09 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:50:09 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:50:09 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:50:09 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:50:09 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:50:09 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:50:16 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:50:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:16 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:50:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:16 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:50:16 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:50:26 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:50:26 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:50:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:26 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:50:26 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:50:26 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:50:26 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:50:28 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (617ms)
2026/08/23 09:50:29 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (649ms)
2026/08/23 09:50:30 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:50:30 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:50:30 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:50:30Z, active_sessions=28
2026/08/23 09:50:30 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:50:30 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:50:30 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:50:30 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:50:30 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:50:30 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:50:30 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:50:36 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:50:36 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:50:36 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:50:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:36 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:50:46 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:50:46 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:50:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:46 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:50:46 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:50:51 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:50:51 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:50:51 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:50:51Z, active_sessions=29
2026/08/23 09:50:51 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:50:51 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:50:51 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:50:51 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:50:51 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:50:51 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:50:51 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4014MB avail≈21884MB
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25952764 → total=25898MB avail=21884MB used=4014MB (15.5%)
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.66 0.58 0.58 4/894 2018" → 1m=0.66 5m=0.58 15m=0.58
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] GetInfo done in 62ms — mem=4014MB/25898MB (15.5%), rootDisk=10.2GB/68.7GB (14.9%), load=0.66/0.58/0.58, temp=52.9°C (hwmon1), cpu=6.5%
2026/08/23 09:50:56 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:50:56 scheduler.go:346: [INFO] [scheduler] Running job: backup-cache
2026/08/23 09:50:56 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:50:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:56 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:50:56 scheduler.go:346: [INFO] [scheduler] Running job: stack-scan
2026/08/23 09:50:56 scheduler.go:67: [DEBUG] [scheduler] job stack-scan: execution starting
2026/08/23 09:50:56 scheduler.go:67: [DEBUG] [scheduler] job backup-cache: execution starting
2026/08/23 09:50:56 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:50:56 scheduler.go:346: [INFO] [scheduler] Running job: system-health
2026/08/23 09:50:56 scheduler.go:67: [DEBUG] [scheduler] job system-health: execution starting
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:50:56 scheduler.go:346: [INFO] [scheduler] Running job: offsite-credential-retry
2026/08/23 09:50:56 scheduler.go:67: [DEBUG] [scheduler] job offsite-credential-retry: execution starting
2026/08/23 09:50:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:50:56 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:50:56 scheduler.go:363: [INFO] [scheduler] Job offsite-credential-retry completed (took 0s)
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "actualbudget" deployed=false composePath=/opt/docker/stacks/actualbudget/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "adventurelog" deployed=false composePath=/opt/docker/stacks/adventurelog/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "audiobookshelf" deployed=false composePath=/opt/docker/stacks/audiobookshelf/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bentopdf" deployed=false composePath=/opt/docker/stacks/bentopdf/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "bookstack" deployed=true composePath=/opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calcom" deployed=false composePath=/opt/docker/stacks/calcom/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "calibre-web" deployed=true composePath=/opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "claper" deployed=false composePath=/opt/docker/stacks/claper/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "cloudflared" deployed=false composePath=/opt/docker/stacks/cloudflared/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "code-server" deployed=false composePath=/opt/docker/stacks/code-server/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "crafty-controller" deployed=false composePath=/opt/docker/stacks/crafty-controller/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "docmost" deployed=true composePath=/opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "emby" deployed=false composePath=/opt/docker/stacks/emby/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "filebrowser" deployed=false composePath=/opt/docker/stacks/filebrowser/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "ghost" deployed=false composePath=/opt/docker/stacks/ghost/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gitea" deployed=false composePath=/opt/docker/stacks/gitea/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "glance" deployed=false composePath=/opt/docker/stacks/glance/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gokapi" deployed=false composePath=/opt/docker/stacks/gokapi/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "grafana" deployed=false composePath=/opt/docker/stacks/grafana/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "gramps-web" deployed=false composePath=/opt/docker/stacks/gramps-web/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "home-assistant" deployed=false composePath=/opt/docker/stacks/home-assistant/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homebox" deployed=false composePath=/opt/docker/stacks/homebox/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "homepage" deployed=false composePath=/opt/docker/stacks/homepage/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "immich" deployed=false composePath=/opt/docker/stacks/immich/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "jellyfin" deployed=false composePath=/opt/docker/stacks/jellyfin/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "kimai" deployed=true composePath=/opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "komga" deployed=false composePath=/opt/docker/stacks/komga/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "mealie" deployed=false composePath=/opt/docker/stacks/mealie/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "n8n" deployed=false composePath=/opt/docker/stacks/n8n/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "navidrome" deployed=false composePath=/opt/docker/stacks/navidrome/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "nextcloud" deployed=false composePath=/opt/docker/stacks/nextcloud/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "onlyoffice" deployed=false composePath=/opt/docker/stacks/onlyoffice/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "opengist" deployed=true composePath=/opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "outline" deployed=false composePath=/opt/docker/stacks/outline/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "paperless-ngx" deployed=true composePath=/opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:50:56 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:50:56 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "papra" deployed=false composePath=/opt/docker/stacks/papra/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plant-it" deployed=false composePath=/opt/docker/stacks/plant-it/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "plex" deployed=false composePath=/opt/docker/stacks/plex/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "privatebin" deployed=true composePath=/opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "radarr" deployed=false composePath=/opt/docker/stacks/radarr/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "rallly" deployed=false composePath=/opt/docker/stacks/rallly/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "recipe-importer" deployed=false composePath=/opt/docker/stacks/recipe-importer/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "romm" deployed=true composePath=/opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "seerr" deployed=false composePath=/opt/docker/stacks/seerr/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sonarr" deployed=false composePath=/opt/docker/stacks/sonarr/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "sparkyfitness" deployed=false composePath=/opt/docker/stacks/sparkyfitness/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "tandoor" deployed=false composePath=/opt/docker/stacks/tandoor/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "termix" deployed=false composePath=/opt/docker/stacks/termix/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "traefik" deployed=false composePath=/opt/docker/stacks/traefik/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "uptime-kuma" deployed=false composePath=/opt/docker/stacks/uptime-kuma/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vaultwarden" deployed=false composePath=/opt/docker/stacks/vaultwarden/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "vikunja" deployed=false composePath=/opt/docker/stacks/vikunja/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wanderer" deployed=false composePath=/opt/docker/stacks/wanderer/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wger" deployed=false composePath=/opt/docker/stacks/wger/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "wishlist" deployed=false composePath=/opt/docker/stacks/wishlist/docker-compose.yml
2026/08/23 09:50:56 manager.go:502: [DEBUG] [stacks] ScanStacks: found stack "zipline" deployed=false composePath=/opt/docker/stacks/zipline/docker-compose.yml
2026/08/23 09:50:56 manager.go:1547: [DEBUG] [stacks] getCatalogTemplateSlugs: found 53 template slugs in /opt/docker/felhom-controller/data/catalog-cache/templates
2026/08/23 09:50:56 manager.go:539: [DEBUG] [stacks] ScanStacks: catalog has 53 template slugs for orphan detection
2026/08/23 09:50:56 manager.go:570: [INFO] [stacks] ScanStacks complete: 56 stacks found (8 deployed, 48 available)
2026/08/23 09:50:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:50:56 scheduler.go:363: [INFO] [scheduler] Job stack-scan completed (took 53ms)
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4002MB avail≈21896MB
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25967212 → total=25898MB avail=21896MB used=4002MB (15.5%)
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.66 0.58 0.58 6/911 2066" → 1m=0.66 5m=0.58 15m=0.58
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 52.9°C (hwmon1)
2026/08/23 09:50:56 info.go:13: [DEBUG] [system] GetInfo done in 70ms — mem=4002MB/25898MB (15.5%), rootDisk=10.2GB/68.7GB (14.9%), load=0.66/0.58/0.58, temp=52.9°C (hwmon1), cpu=6.5%
2026/08/23 09:50:56 healthcheck.go:42: [DEBUG] [monitor] Raw values: disk=14.9%, hdd=0.6% (configured=true), mem=15.5% (4002MB/25898MB), cpu=6.5%, temp=52.9°C (hwmon1)
2026/08/23 09:50:56 healthcheck.go:74: [DEBUG] [monitor] SSD disk: OK (15%)
2026/08/23 09:50:56 healthcheck.go:107: [DEBUG] [monitor] Memory: OK (15%)
2026/08/23 09:50:56 healthcheck.go:125: [DEBUG] [monitor] CPU: OK (7%)
2026/08/23 09:50:56 healthcheck.go:143: [DEBUG] [monitor] Temperature: OK (53°C)
2026/08/23 09:50:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:50:56 backup.go:434: [DEBUG] groupStacksByDrive: /mnt/sys_drive → [bookstack, docmost, kimai, opengist, privatebin]
2026/08/23 09:50:56 backup.go:434: [DEBUG] groupStacksByDrive: /mnt/felhom-drives/hdd_1 → [calibre-web, paperless-ngx, romm]
2026/08/23 09:50:56 backup.go:1063: [INFO] [backup] Found 13 DB dump files across drives
2026/08/23 09:50:56 dbdump.go:128: [DEBUG] DiscoverDatabases: running docker ps to find database containers
2026/08/23 09:50:56 dbdump.go:147: [DEBUG] DiscoverDatabases: docker ps output: 1c05a812256b	felhom-controller		gitea.dooplex.hu/admin/felhom-controller:0.223.0
13cfb077ecf8	docmost	docmost	docmost/docmost:0.95.0
91041c89bd0d	docmost-postgres	docmost	postgres:16-alpine
41c830a66b1d	docmost-redis	docmost	redis:7-alpine
77031a0c1319	romm	romm	rommapp/romm:5.0.0
aa6fe6fa459e	romm-redis	romm	redis:7-alpine
e076270a7d75	romm-db	romm	mariadb:11.4
1c704643bc4c	paperless-webserver	paperless-ngx	ghcr.io/paperless-ngx/paperless-ngx:2.20.15
e31aa0b09dbb	paperless-postgres	paperless-ng...
2026/08/23 09:50:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container felhom-controller (image=gitea.dooplex.hu/admin/felhom-controller:0.223.0, not a database)
2026/08/23 09:50:56 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container docmost (image=docmost/docmost:0.95.0, not a database)
2026/08/23 09:50:56 dbdump.go:176: [DEBUG] DiscoverDatabases: found postgres container: docmost-postgres (id=91041c89bd0d)
2026/08/23 09:50:56 healthcheck.go:157: [DEBUG] [monitor] Docker daemon: OK
2026/08/23 09:50:56 healthcheck.go:165: [DEBUG] [monitor] Checking 4 protected containers: [traefik cloudflared felhom-controller filebrowser]
2026/08/23 09:50:57 dbdump.go:196: [DEBUG] DiscoverDatabases: docmost-postgres → stack=docmost, dbUser=docmost, dbName=docmost
2026/08/23 09:50:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container docmost-redis (image=redis:7-alpine, not a database)
2026/08/23 09:50:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container romm (image=rommapp/romm:5.0.0, not a database)
2026/08/23 09:50:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container romm-redis (image=redis:7-alpine, not a database)
2026/08/23 09:50:57 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: romm-db (id=e076270a7d75)
2026/08/23 09:50:57 dbdump.go:196: [DEBUG] DiscoverDatabases: romm-db → stack=romm, dbUser=root, dbName=romm
2026/08/23 09:50:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container paperless-webserver (image=ghcr.io/paperless-ngx/paperless-ngx:2.20.15, not a database)
2026/08/23 09:50:57 dbdump.go:176: [DEBUG] DiscoverDatabases: found postgres container: paperless-postgres (id=e31aa0b09dbb)
2026/08/23 09:50:57 dbdump.go:894: [DEBUG] DiscoverDatabases: paperless-postgres → stack "paperless-ngx" from the compose project label (the container name would have given "paperless")
2026/08/23 09:50:57 dbdump.go:196: [DEBUG] DiscoverDatabases: paperless-postgres → stack=paperless-ngx, dbUser=paperless, dbName=paperless
2026/08/23 09:50:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container paperless-redis (image=redis:7-alpine, not a database)
2026/08/23 09:50:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container opengist (image=ghcr.io/thomiceli/opengist:1.13, not a database)
2026/08/23 09:50:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container kimai (image=kimai/kimai2:apache-2.57.0, not a database)
2026/08/23 09:50:57 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: kimai-db (id=9849469a8b29)
2026/08/23 09:50:57 dbdump.go:196: [DEBUG] DiscoverDatabases: kimai-db → stack=kimai, dbUser=root, dbName=kimai
2026/08/23 09:50:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container calibre-web (image=crocodilestick/calibre-web-automated:v4.0.6, not a database)
2026/08/23 09:50:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container bookstack (image=lscr.io/linuxserver/bookstack:26.05.2, not a database)
2026/08/23 09:50:57 dbdump.go:176: [DEBUG] DiscoverDatabases: found mariadb container: bookstack-db (id=95dcda149d29)
2026/08/23 09:50:57 healthcheck.go:175: [DEBUG] [monitor] All protected containers running
2026/08/23 09:50:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:50:57 healthcheck.go:192: [INFO] [monitor] Health check: status=ok
2026/08/23 09:50:57 healthcheck.go:196: [DEBUG] [monitor] Final status: ok (issues=0, warnings=0, info=5)
2026/08/23 09:50:57 scheduler.go:363: [INFO] [scheduler] Job system-health completed (took 217ms)
2026/08/23 09:50:57 dbdump.go:196: [DEBUG] DiscoverDatabases: bookstack-db → stack=bookstack, dbUser=root, dbName=bookstack
2026/08/23 09:50:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container filebrowser (image=gtstef/filebrowser:1.3.3-stable, not a database)
2026/08/23 09:50:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container cloudflared (image=cloudflare/cloudflared:2026.6.0, not a database)
2026/08/23 09:50:57 dbdump.go:169: [DEBUG] DiscoverDatabases: skipping container traefik (image=traefik:v3.6.7, not a database)
2026/08/23 09:50:57 dbdump.go:203: [DEBUG] DiscoverDatabases: found 5 database(s), skipped 14 non-DB container(s)
2026/08/23 09:50:57 dbdump.go:206: [INFO] [backup] Discovered 5 databases
2026/08/23 09:50:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/bookstack/docker-compose.yml
2026/08/23 09:50:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/calibre-web/docker-compose.yml
2026/08/23 09:50:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/docmost/docker-compose.yml
2026/08/23 09:50:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/kimai/docker-compose.yml
2026/08/23 09:50:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/opengist/docker-compose.yml
2026/08/23 09:50:57 [INFO] [stacks] ParseComposeHDDMounts: found 2 HDD mounts for /opt/docker/stacks/paperless-ngx/docker-compose.yml
2026/08/23 09:50:57 [INFO] [stacks] ParseComposeHDDMounts: found 0 HDD mounts for /opt/docker/stacks/privatebin/docker-compose.yml
2026/08/23 09:50:57 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/romm/docker-compose.yml
2026/08/23 09:50:57 [INFO] [backup] Discovered app data: 8 apps
2026/08/23 09:50:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:50:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:50:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:50:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:50:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:50:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:50:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/sys_drive" total=68.7 GB used=10.2 GB avail=55.0GB (14.9%)
2026/08/23 09:50:57 info.go:13: [DEBUG] [system] GetDiskUsage: path="/mnt/felhom-drives/hdd_1" total=937.8 GB used=5.9 GB avail=884.2GB (0.6%)
2026/08/23 09:50:57 backup.go:1133: [INFO] [backup] Backup status cache refreshed
2026/08/23 09:50:57 scheduler.go:363: [INFO] [scheduler] Job backup-cache completed (took 249ms)
2026/08/23 09:50:57 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (596ms)
2026/08/23 09:50:57 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 598ms)
2026/08/23 09:50:58 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (626ms)
2026/08/23 09:50:59 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (725ms)
2026/08/23 09:51:06 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:51:06 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:51:06 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:51:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 4m50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:06 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:51:12 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:51:12 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:51:12 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:51:12Z, active_sessions=30
2026/08/23 09:51:12 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:51:12 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:51:12 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:51:12 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:51:12 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:51:12 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:51:12 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:51:16 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:51:16 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:51:16 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:51:16 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 6 targets (0 skipped not due, 1 skipped no container)
2026/08/23 09:51:16 healthprobe.go:153: [DEBUG] Health probe romm: HTTP GET :8080/ → 200 (2ms)
2026/08/23 09:51:16 healthprobe.go:153: [DEBUG] Health probe opengist: API GET :6157/healthcheck → 200 (2ms)
2026/08/23 09:51:16 healthprobe.go:153: [DEBUG] Health probe docmost: HTTP GET :3000/ → 200 (3ms)
2026/08/23 09:51:16 healthprobe.go:153: [DEBUG] Health probe calibre-web: HTTP GET :8083/ → 302 (6ms)
2026/08/23 09:51:16 healthprobe.go:153: [DEBUG] Health probe kimai: HTTP GET :8001/ → 302 (21ms)
2026/08/23 09:51:16 healthprobe.go:153: [DEBUG] Health probe bookstack: HTTP GET :80/ → 302 (35ms)
2026/08/23 09:51:16 healthprobe.go:133: [INFO] Health probes: 6 ok (of 6 probed)
2026/08/23 09:51:26 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:51:26 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:51:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:26 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:51:26 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:51:26 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:51:26 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:51:28 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (618ms)
2026/08/23 09:51:29 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (623ms)
2026/08/23 09:51:33 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:51:34 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:51:34 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:51:34Z, active_sessions=31
2026/08/23 09:51:34 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:51:34 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:51:34 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:51:34 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:51:34 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:51:34 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:51:34 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:51:36 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:51:36 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:51:36 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:51:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:36 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 20s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:36 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:51:46 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:51:46 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:51:46 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:51:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:46 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 30s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:46 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:51:55 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:51:55 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:51:55 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:51:55Z, active_sessions=32
2026/08/23 09:51:55 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:51:55 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:51:55 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:51:55 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:51:55 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:51:55 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:51:55 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:51:56 info.go:13: [DEBUG] [system] GetInfo starting (hddPath="/mnt/felhom-drives/hdd_1", hasCPUCollector=true)
2026/08/23 09:51:56 info.go:13: [DEBUG] [system] readMemInfo: guest cap=25898MB (host total was 30714460KB) → used≈4095MB avail≈21803MB
2026/08/23 09:51:56 info.go:13: [DEBUG] [system] readMemInfo: totalKB=30714460 availKB=25857048 → total=25898MB avail=21803MB used=4095MB (15.8%)
2026/08/23 09:51:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/" bsize=4096 total=68.7GB used=10.2GB avail=55.0GB (14.9%)
2026/08/23 09:51:56 info.go:13: [DEBUG] [system] readDiskUsage: path="/mnt/felhom-drives/hdd_1" bsize=4096 total=937.8GB used=5.9GB avail=884.2GB (0.6%)
2026/08/23 09:51:56 info.go:13: [DEBUG] [system] readLoadAvg: raw="0.48 0.53 0.56 3/891 2343" → 1m=0.48 5m=0.53 15m=0.56
2026/08/23 09:51:56 info.go:13: [DEBUG] [system] readThermalZones: /sys — found 1 zones
2026/08/23 09:51:56 info.go:13: [DEBUG] [system] readTemperature: found via hwmon at /sys — 54.1°C (hwmon2)
2026/08/23 09:51:56 info.go:13: [DEBUG] [system] GetInfo done in 65ms — mem=4095MB/25898MB (15.8%), rootDisk=10.2GB/68.7GB (14.9%), load=0.48/0.53/0.56, temp=54.1°C (hwmon2), cpu=4.0%
2026/08/23 09:51:56 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:51:56 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:51:56 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:51:56 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:51:56 scheduler.go:346: [INFO] [scheduler] Running job: agent-channel-health
2026/08/23 09:51:56 scheduler.go:67: [DEBUG] [scheduler] job agent-channel-health: execution starting
2026/08/23 09:51:56 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:51:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:56 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 40s ago, effective interval 5m0s, healthy=true
2026/08/23 09:51:56 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:51:56 main.go:1731: [INFO] [deadapp] check alive: 20 scans since boot, 8 deployed app(s) evaluated, 0 currently down
2026/08/23 09:51:56 main.go:1760: [INFO] [deadapp] 1 stopped app(s) have NO recorded customer intent, so their dead-app alarm is suppressed by the unknown-intent fallback (R-386): privatebin. This closes itself as each app is started or stopped through the interface.
2026/08/23 09:51:57 client.go:1142: [DEBUG] [agentapi] GET /storage -> 200 (569ms)
2026/08/23 09:51:57 scheduler.go:363: [INFO] [scheduler] Job agent-channel-health completed (took 569ms)
2026/08/23 09:51:58 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (659ms)
2026/08/23 09:51:59 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (636ms)
2026/08/23 09:52:06 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:52:06 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:52:06 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:52:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:06 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 50s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:06 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:52:09 auth.go:146: [DEBUG] [web] login attempt from 172.17.0.1:54596 (X-Forwarded-For: )
2026/08/23 09:52:09 auth.go:194: [DEBUG] [web] login successful from 172.17.0.1, creating session
2026/08/23 09:52:09 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:52:09Z, active_sessions=33
2026/08/23 09:52:09 auth.go:214: [INFO] [web] Login from 172.17.0.1:54596
2026/08/23 09:52:09 auth.go:134: [DEBUG] [web] auth: valid session for GET /api/stacks
2026/08/23 09:52:09 router.go:80: [DEBUG] [api] GET /api/stacks (path=/stacks)
2026/08/23 09:52:16 auth.go:146: [DEBUG] [web] login attempt from 172.18.0.4:59100 (X-Forwarded-For: 172.18.0.1)
2026/08/23 09:52:16 auth.go:194: [DEBUG] [web] login successful from 172.18.0.1, creating session
2026/08/23 09:52:16 auth.go:260: [DEBUG] [web] session created, expires=2026-08-30T09:52:16Z, active_sessions=34
2026/08/23 09:52:16 auth.go:214: [INFO] [web] Login from 172.18.0.4:59100
2026/08/23 09:52:16 auth.go:134: [DEBUG] [web] auth: valid session for GET /
2026/08/23 09:52:16 server.go:393: [DEBUG] [web] ServeHTTP: GET / from 172.18.0.4:59100
2026/08/23 09:52:16 auth.go:134: [DEBUG] [web] auth: valid session for GET /launcher
2026/08/23 09:52:16 server.go:393: [DEBUG] [web] ServeHTTP: GET /launcher from 172.18.0.4:59100
2026/08/23 09:52:16 auth.go:134: [DEBUG] [web] auth: valid session for GET /backup/offbox/status
2026/08/23 09:52:16 server.go:393: [DEBUG] [web] ServeHTTP: GET /backup/offbox/status from 172.18.0.4:59100
2026/08/23 09:52:16 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:52:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:16 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m0s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:16 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:52:16 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:52:16 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:52:26 scheduler.go:67: [DEBUG] [scheduler] job deadapp-check: execution starting
2026/08/23 09:52:26 scheduler.go:67: [DEBUG] [scheduler] job ring-spill: execution starting
2026/08/23 09:52:26 scheduler.go:67: [DEBUG] [scheduler] job health-probes: execution starting
2026/08/23 09:52:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping opengist — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping kimai — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping docmost — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping romm — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping bookstack — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:26 healthprobe.go:53: [DEBUG] [stacks] RunHealthProbes: skipping calibre-web — last check 1m10s ago, effective interval 5m0s, healthy=true
2026/08/23 09:52:26 healthprobe.go:76: [DEBUG] [stacks] RunHealthProbes: collected 0 targets (6 skipped not due, 1 skipped no container)
2026/08/23 09:52:26 scheduler.go:67: [DEBUG] [scheduler] job status-refresh: execution starting
2026/08/23 09:52:26 manager.go:621: [INFO] [stacks] Status refresh: 18 containers across 56 stacks
2026/08/23 09:52:28 client.go:1142: [DEBUG] [agentapi] GET /disks -> 200 (665ms)
