STATUS, report, register (R-691 closed live, R-704..R-706), Part E + D2 evidence
gates / gates (push) Successful in 26s
gates / gates (push) Successful in 26s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
======== felhom-pve (guest 9201) — night 2026-09-27/28, controller log 00:25Z–07:30Z (UTC; CEST = +2)
|
||||
-- agent (host) whole-guest backups:
|
||||
Sep 28 07:37:08 demo-felhom felhom-agent[2880126]: time=2026-09-28T07:37:08.524+02:00 level=INFO msg="janitor: stale-lock sweep deferred — a heavy operation is in flight" busy=backup:felhom-backup
|
||||
Sep 28 07:37:50 demo-felhom felhom-agent[2880126]: time=2026-09-28T07:37:50.932+02:00 level=INFO msg="backup: completed" vmid=9201 target=felhom-backup archive=felhom-backup:backup/vzdump-lxc-9201-2026_09_28-07_36_39.tar.zst size_bytes=2868142737 uncovered_vol
|
||||
Sep 28 07:37:50 demo-felhom felhom-agent[2880126]: time=2026-09-28T07:37:50.932+02:00 level=INFO msg="local-api: backup job complete" vmid=9201 target=felhom-backup job=backup-9201-1790573799307855304 archive=felhom-backup:backup/vzdump-lxc-9201-2026_09_28-07_
|
||||
Sep 28 08:07:07 demo-felhom felhom-agent[2880126]: time=2026-09-28T08:07:07.696+02:00 level=INFO msg="backup: restore-test tier is DUE (per-archive; oldest-proven first among due tiers)" target=felhom-backup archive=felhom-backup:backup/vzdump-lxc-9201-2026_09
|
||||
Sep 28 08:07:08 demo-felhom felhom-agent[2880126]: time=2026-09-28T08:07:08.522+02:00 level=INFO msg="janitor: stale-lock sweep deferred — a heavy operation is in flight" busy=restore-test
|
||||
Sep 28 08:08:36 demo-felhom felhom-agent[2880126]: time=2026-09-28T08:08:36.439+02:00 level=INFO msg="audit: gate decision" class=guest_destroy host=demo-felhom-8363b5 guest=990000 source=one_shot_job disposition=benign allowed=true reason=benign key_id="" non
|
||||
Sep 28 08:08:36 demo-felhom felhom-agent[2880126]: time=2026-09-28T08:08:36.439+02:00 level=INFO msg="gate decision" class=guest_destroy guest=990000 source=one_shot_job disposition=benign allowed=true reason=benign
|
||||
Sep 28 08:08:42 demo-felhom felhom-agent[2880126]: time=2026-09-28T08:08:42.485+02:00 level=INFO msg="backup: scheduled restore-test passed" archive=felhom-backup:backup/vzdump-lxc-9201-2026_09_27-07_35_21.tar.zst duration_s=94.787284561
|
||||
======== demo-hp (guest 9201) — night 2026-09-27/28, controller log 00:25Z–07:30Z (UTC; CEST = +2)
|
||||
-- agent (host) whole-guest backups:
|
||||
Sep 28 02:13:18 demo-hp felhom-agent[1370926]: time=2026-09-28T02:13:18.401+02:00 level=INFO msg="janitor: stale-lock sweep deferred — a heavy operation is in flight" busy=restore-test
|
||||
Sep 28 04:43:18 demo-hp felhom-agent[1370926]: time=2026-09-28T04:43:18.400+02:00 level=INFO msg="janitor: stale-lock sweep deferred — a heavy operation is in flight" busy=backup:local
|
||||
Sep 28 04:44:58 demo-hp felhom-agent[1370926]: time=2026-09-28T04:44:58.683+02:00 level=INFO msg="backup: completed" vmid=9201 target=local archive=local:backup/vzdump-lxc-9201-2026_09_28-04_37_06.tar.zst size_bytes=8825181955 uncovered_volumes=2
|
||||
Sep 28 04:44:58 demo-hp felhom-agent[1370926]: time=2026-09-28T04:44:58.683+02:00 level=INFO msg="local-api: backup job complete" vmid=9201 target=local job=backup-9201-1790563025947283530 archive=local:backup/vzdump-lxc-9201-2026_09_28-04_37_06.tar.zst
|
||||
Sep 28 08:13:18 demo-hp felhom-agent[1370926]: time=2026-09-28T08:13:18.401+02:00 level=INFO msg="janitor: stale-lock sweep deferred — a heavy operation is in flight" busy=restore-test
|
||||
======== felhom-pve 9201 — debug-ring.log, night 2026-09-28 00:25Z–07:30Z
|
||||
-rw-r--r-- 1 root root 632864 Sep 28 13:52 /var/lib/docker/volumes/felhom-controller-data/_data/data/debug-ring.log
|
||||
{"timestamp":"2026-09-28T09:27:04Z","level":"INFO","message":"[scheduler] Running job: offsite-credential-retry","source":""}
|
||||
{"timestamp":"2026-09-28T09:27:04Z","level":"INFO","message":"[scheduler] Job offsite-credential-retry completed (took 0s)","source":""}
|
||||
======== demo-hp 9201 — debug-ring.log, night 2026-09-28 00:25Z–07:30Z
|
||||
-rw-r--r-- 1 root root 902237 Sep 28 13:52 /var/lib/docker/volumes/felhom-controller-data/_data/data/debug-ring.log
|
||||
{"timestamp":"2026-09-28T13:36:07Z","level":"DEBUG","message":"[report] BuildReport: complete — containers=23, health=ok, deployed=11, available=42, app_telemetry=12","source":"builder.go:201"}
|
||||
{"timestamp":"2026-09-28T13:36:07Z","level":"DEBUG","message":"[report] Push: url=https://hub.felhom.eu/2026/09/28 02:30:00 [INFO] Event from demo-felhom: db_dump_completed (info) — Adatbázis mentés elkészült
|
||||
2026/09/28 02:32:04 [INFO] Event from demo-hp: db_dump_completed (info) — Adatbázis mentés elkészült
|
||||
2026/09/28 03:30:00 [INFO] Event from demo-hp: crossdrive_completed (info) — Másodlagos mentés elkészült: adventurelog
|
||||
2026/09/28 03:30:00 [INFO] Event from demo-hp: crossdrive_completed (info) — Másodlagos mentés elkészült: bentopdf
|
||||
2026/09/28 03:30:01 [INFO] Event from demo-hp: crossdrive_completed (info) — Másodlagos mentés elkészült: bookstack
|
||||
2026/09/28 03:30:01 [INFO] Event from demo-hp: crossdrive_completed (info) — Másodlagos mentés elkészült: calibre-web
|
||||
2026/09/28 03:30:01 [INFO] Event from demo-hp: crossdrive_completed (info) — Másodlagos mentés elkészült: docmost
|
||||
2026/09/28 03:30:02 [INFO] Event from demo-hp: crossdrive_completed (info) — Másodlagos mentés elkészült: kimai
|
||||
2026/09/28 03:30:02 [INFO] Event from demo-hp: crossdrive_completed (info) — Másodlagos mentés elkészült: opengist
|
||||
2026/09/28 03:30:05 [INFO] Event from demo-hp: crossdrive_completed (info) — Másodlagos mentés elkészült: paperless-ngx
|
||||
2026/09/28 03:30:05 [INFO] Event from demo-hp: crossdrive_completed (info) — Másodlagos mentés elkészült: privatebin
|
||||
2026/09/28 03:30:06 [INFO] Event from demo-hp: crossdrive_completed (info) — Másodlagos mentés elkészült: romm
|
||||
2026/09/28 06:00:35 [INFO] Event from demo-felhom: backup_integrity_ok (info) — A távoli mentés ellenőrzése rendben lezajlott. (33s, a mentett adatok 100%-át újraolvasva)
|
||||
|
||||
## SUMMARY — Part D2, read 2026-09-28 ~16:00 CEST for the night 2026-09-27/28 (not a later night: the operator asked
|
||||
## to finish in the day). Sources, and why three: both controllers restarted at 10:11 and 15:36 (floor 0.277.0, 0.278.0),
|
||||
## which dropped their docker logs, and the persisted debug ring starts after the restarts. So: (1) the agents' journals
|
||||
## (above), (2) the hub's event log (above), (3) the demo-hp controller lines copied at 10:05 CEST, BEFORE the restarts
|
||||
## (phaseD2-paperless-demo-hp.txt) and demo-hp's settings.json off-site record read at 09:30 CEST.
|
||||
##
|
||||
## demo-hp (W = 02:30 CEST):
|
||||
## 02:32 db_dump_completed (hub event) · 03:30 crossdrive_completed ×10 (hub events) · off-site last_run 02:18:38Z =
|
||||
## 04:18 CEST, status ok, 90 snapshots (settings) · update leg: paperless-ngx 16 → 18 04:22:44–04:23:54 CEST, "step
|
||||
## ended done after 70.1 s" (controller, copied before the restart) · whole-guest local backup 04:37:06 → completed
|
||||
## 04:44:58 (agent), i.e. AFTER the gate opened (W+2h = 04:30) and after the leg ended → the gate had nothing to wait
|
||||
## for. R-687 item (4) (the gate waiting on a running leg) did NOT occur again.
|
||||
## demo-felhom (W = 02:30 CEST):
|
||||
## 02:30 db_dump_completed (hub event) · whole-guest backup to felhom-backup 07:36:39 → 07:37:50 (agent) · 06:00 off-site
|
||||
## integrity ok (hub event) · off-site leg and update leg: NOT READABLE (controller log dropped by today's restarts; no
|
||||
## hub event is sent for a successful off-site run or an update-leg step). Recorded as not read, not as fine.
|
||||
## R-701 side finding: every refused restore test reaches the hub — "[WARN] host demo-hp-bb76ea restore-test FAILED …
|
||||
## needs 31.0 GiB free, has 21.1 GiB" at each host-report (every 15 min).
|
||||
@@ -0,0 +1,60 @@
|
||||
15:17:28 # kp offsite-run — 2026-09-28T15:17:24+0200; guest 9201; controller gitea.dooplex.hu/admin/felhom-controller:0.277.0
|
||||
15:17:28 E2 manual off-site run: the backup page's run-now button, POST /backup/offbox/run
|
||||
15:17:31 apps before: adventurelog Up 11 hours (healthy);adventurelog-frontend Up 11 hours (healthy);adventurelog-postgres Up 11 hours (healthy);bentopdf Up 11 hours (healthy);bookstack Up 11 hours (healthy);bookstack-db Up 11 hours (healthy);calibre-web Up 11 hours (healthy);cloudflared Up 4 days;docmost Up 11 hours (healthy);docmost-postgres Up 11 hours (healthy);docmost-redis Up 11 hours (healthy);felhom-controller Up 5 hours (healthy);filebrowser Up 4 days (healthy);kimai Up 11 hours (healthy);kimai-db Up 11 hours (healthy);nextcloud Up 5 hours (healthy);nextcloud-db Up 5 hours (healthy);nextcloud-redis Up 5 hours (healthy);opengist Up 11 hours (healthy);paperless-postgres Up 11 hours (healthy);paperless-redis Up 11 hours (healthy);paperless-webserver Up 11 hours (healthy);privatebin Up 11 hours (healthy);romm Up 11 hours (healthy);romm-db Up 11 hours (healthy);romm-redis Up 11 hours (healthy);traefik Up
|
||||
15:17:34 POST /backup/offbox/run -> ('HTTP/2 302', '/backups/remote?flash=flash.offbox.run_started')
|
||||
15:17:34 +0s active=True phase=dump app=
|
||||
15:19:29 +116s active=True phase= app=calibre-web
|
||||
15:19:34 +121s active=True phase= app=docmost
|
||||
15:19:39 +126s active=True phase= app=kimai
|
||||
15:19:54 +141s active=True phase= app=paperless-ngx
|
||||
15:20:10 +156s active=True phase= app=opengist
|
||||
15:20:15 +161s active=True phase= app=romm
|
||||
15:20:25 +171s active=True phase= app=nextcloud
|
||||
15:20:45 +191s active=True phase= app=bentopdf
|
||||
15:20:50 +196s active=True phase= app=bookstack
|
||||
15:20:55 +201s active=True phase=retention app=
|
||||
15:21:40 +246s active=False phase= app=
|
||||
15:21:40 status after: {'status': 'ok', 'last_run': '2026-09-28T13:21:36Z', 'last_error': '', 'snapshots': 91, 'last_duration': '3m57s'}
|
||||
15:21:44 controller lines:
|
||||
2026/09/28 13:18:12 backup.go:845: [INFO] [backup] Volume dump: docmost/docmost_docmost_storage → 2.5 KB
|
||||
2026/09/28 13:18:15 backup.go:845: [INFO] [backup] Volume dump: docmost/docmost_docmost_postgres_data → 67.2 MB
|
||||
2026/09/28 13:18:16 backup.go:845: [INFO] [backup] Volume dump: docmost/docmost_docmost_redis_data → 51.9 MB
|
||||
2026/09/28 13:18:16 backup.go:956: [INFO] [backup] Restarting docmost after volume dump
|
||||
2026/09/28 13:18:28 backup.go:946: [INFO] [backup] Stopping kimai for safe volume dump
|
||||
2026/09/28 13:18:32 backup.go:845: [INFO] [backup] Volume dump: kimai/kimai_kimai_db_data → 154.5 MB
|
||||
2026/09/28 13:18:34 backup.go:845: [INFO] [backup] Volume dump: kimai/kimai_kimai_var → 50.4 MB
|
||||
2026/09/28 13:18:34 backup.go:956: [INFO] [backup] Restarting kimai after volume dump
|
||||
2026/09/28 13:18:40 backup.go:729: [WARN] [backup] Skipping volume dump for nextcloud — the app is HELD stopped (its restore point is preserved)
|
||||
2026/09/28 13:18:40 backup.go:946: [INFO] [backup] Stopping opengist for safe volume dump
|
||||
2026/09/28 13:18:41 backup.go:845: [INFO] [backup] Volume dump: opengist/opengist_opengist_data → 181.0 KB
|
||||
2026/09/28 13:18:41 backup.go:956: [INFO] [backup] Restarting opengist after volume dump
|
||||
2026/09/28 13:18:41 backup.go:946: [INFO] [backup] Stopping paperless-ngx for safe volume dump
|
||||
2026/09/28 13:18:50 backup.go:845: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_data → 16.1 MB
|
||||
2026/09/28 13:18:51 backup.go:845: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_postgres_data → 69.3 MB
|
||||
2026/09/28 13:18:52 backup.go:845: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_redis_data → 21.8 MB
|
||||
2026/09/28 13:18:52 backup.go:956: [INFO] [backup] Restarting paperless-ngx after volume dump
|
||||
2026/09/28 13:19:04 backup.go:946: [INFO] [backup] Stopping privatebin for safe volume dump
|
||||
2026/09/28 13:19:05 backup.go:845: [INFO] [backup] Volume dump: privatebin/privatebin_privatebin_data → 2.0 MB
|
||||
2026/09/28 13:19:05 backup.go:956: [INFO] [backup] Restarting privatebin after volume dump
|
||||
2026/09/28 13:19:05 backup.go:946: [INFO] [backup] Stopping romm for safe volume dump
|
||||
2026/09/28 13:19:10 main.go:898: [WARN] [deadapp] OOM scan failed: exec docker inspect -f {{.Name}}|{{.State.OOMKilled}}|{{.State.StartedAt}} adventurelog adventurelog-frontend adventurelog-postgres bentopdf bookstack bookstack-db calibre-web docmost docmost-p
|
||||
2026/09/28 13:19:10 backup.go:845: [INFO] [backup] Volume dump: romm/romm_romm_config → 2.5 KB
|
||||
2026/09/28 13:19:12 backup.go:845: [INFO] [backup] Volume dump: romm/romm_romm_db_data → 156.2 MB
|
||||
2026/09/28 13:19:12 backup.go:845: [INFO] [backup] Volume dump: romm/romm_romm_redis_data → 24.3 MB
|
||||
2026/09/28 13:19:12 backup.go:956: [INFO] [backup] Restarting romm after volume dump
|
||||
2026/09/28 13:19:23 backup.go:659: [INFO] [backup] App-data backup completed: 7 databases (14.2 MB total), 9 volume dump(s) (1m49.492s)
|
||||
2026/09/28 13:19:23 offbox.go:969: [INFO] [offbox] pre-push dump leg completed in 1m49.523s — snapshot pair is coherent
|
||||
2026/09/28 13:19:33 offbox.go:1391: [INFO] [offbox] backed up calibre-web (/mnt/felhom-drives/hdd_1/backups/primary/calibre-web, 1 mandatory path(s))
|
||||
2026/09/28 13:19:39 offbox.go:1391: [INFO] [offbox] backed up docmost (/mnt/sys_drive/felhom-data/backups/primary/docmost, 0 mandatory path(s))
|
||||
2026/09/28 13:19:50 offbox.go:1391: [INFO] [offbox] backed up kimai (/mnt/sys_drive/felhom-data/backups/primary/kimai, 0 mandatory path(s))
|
||||
2026/09/28 13:20:06 offbox.go:1391: [INFO] [offbox] backed up paperless-ngx (/mnt/felhom-drives/hdd_1/backups/primary/paperless-ngx, 1 mandatory path(s))
|
||||
2026/09/28 13:20:09 offbox.go:1391: [INFO] [offbox] backed up privatebin (/mnt/sys_drive/felhom-data/backups/primary/privatebin, 0 mandatory path(s))
|
||||
2026/09/28 13:20:12 offbox.go:1391: [INFO] [offbox] backed up opengist (/mnt/sys_drive/felhom-data/backups/primary/opengist, 0 mandatory path(s))
|
||||
2026/09/28 13:20:20 offbox.go:1391: [INFO] [offbox] backed up romm (/mnt/felhom-drives/hdd_1/backups/primary/romm, 0 mandatory path(s))
|
||||
2026/09/28 13:20:45 offbox.go:1388: [WARN] [offbox] backed up nextcloud (/mnt/felhom-drives/hdd_1/backups/primary/nextcloud, 1 mandatory path(s)) — but the recovery unit carried NO database dump and NO volume tar, so this snapshot holds none of the app's dat
|
||||
2026/09/28 13:20:48 offbox.go:1388: [WARN] [offbox] backed up bentopdf (/mnt/sys_drive/felhom-data/backups/primary/bentopdf, 0 mandatory path(s)) — but the recovery unit carried NO database dump and NO volume tar, so this snapshot holds none of the app's dat
|
||||
2026/09/28 13:20:53 offbox.go:1391: [INFO] [offbox] backed up bookstack (/mnt/sys_drive/felhom-data/backups/primary/bookstack, 0 mandatory path(s))
|
||||
2026/09/28 13:21:36 offbox.go:1158: [INFO] [offbox] backup OK: 10 app(s) backed up, 91 snapshot(s), 3m57s
|
||||
2026/09/28 13:21:36 offbox_progress.go:342: [INFO] [offbox] manual run progress reporting ended after 4m2s
|
||||
|
||||
15:21:47 apps after: adventurelog Up 3 minutes (healthy);adventurelog-frontend Up 3 minutes (healthy);adventurelog-postgres Up 4 minutes (healthy);bentopdf Up 11 hours (healthy);bookstack Up 3 minutes (healthy);bookstack-db Up 3 minutes (healthy);calibre-web Up 3 minutes (healthy);cloudflared Up 4 days;docmost Up 3 minutes (healthy);docmost-postgres Up 3 minutes (healthy);docmost-redis Up 3 minutes (healthy);felhom-controller Up 5 hours (healthy);filebrowser Up 4 days (healthy);kimai Up 3 minutes (healthy);kimai-db Up 3 minutes (healthy);nextcloud Up 5 hours (healthy);nextcloud-db Up 5 hours (healthy);nextcloud-redis Up 5 hours (healthy);opengist Up 3 minutes (healthy);paperless-postgres Up 2 minutes (healthy);paperless-redis Up 2 minutes (healthy);paperless-webserver Up 2 minutes (healthy);privatebin Up 2 minutes (healthy);romm Up 2 minutes (healthy);romm-db Up 2 minutes (healthy);romm-redis Up 2 minutes (h
|
||||
@@ -0,0 +1,56 @@
|
||||
2026/09/28 13:02:10 backup.go:1145: [INFO] [backup] Found 21 DB dump files across drives
|
||||
bc851f0168e0 nextcloud-redis nextcloud redis:7-alpine
|
||||
b1bbeca1b46d nextcloud-db nextcloud mariadb:12.3
|
||||
2026/09/28 13:02:10 dbdump.go:208: [INFO] [backup] Discovered 7 databases
|
||||
2026/09/28 13:02:10 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/nextcloud/docker-compose.yml
|
||||
2026/09/28 13:02:10 [INFO] [backup] Discovered app data: 11 apps
|
||||
2026/09/28 13:07:09 backup.go:1145: [INFO] [backup] Found 21 DB dump files across drives
|
||||
bc851f0168e0 nextcloud-redis nextcloud redis:7-alpine
|
||||
b1bbeca1b46d nextcloud-db nextcloud mariadb:12.3
|
||||
2026/09/28 13:07:10 dbdump.go:208: [INFO] [backup] Discovered 7 databases
|
||||
2026/09/28 13:07:10 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/nextcloud/docker-compose.yml
|
||||
2026/09/28 13:07:10 [INFO] [backup] Discovered app data: 11 apps
|
||||
2026/09/28 13:12:10 backup.go:1145: [INFO] [backup] Found 21 DB dump files across drives
|
||||
bc851f0168e0 nextcloud-redis nextcloud redis:7-alpine
|
||||
b1bbeca1b46d nextcloud-db nextcloud mariadb:12.3
|
||||
2026/09/28 13:12:10 dbdump.go:208: [INFO] [backup] Discovered 7 databases
|
||||
2026/09/28 13:12:10 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/nextcloud/docker-compose.yml
|
||||
2026/09/28 13:12:10 [INFO] [backup] Discovered app data: 11 apps
|
||||
2026/09/28 13:17:09 backup.go:1145: [INFO] [backup] Found 21 DB dump files across drives
|
||||
bc851f0168e0 nextcloud-redis nextcloud redis:7-alpine
|
||||
b1bbeca1b46d nextcloud-db nextcloud mariadb:12.3
|
||||
2026/09/28 13:17:10 dbdump.go:208: [INFO] [backup] Discovered 7 databases
|
||||
2026/09/28 13:17:10 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/nextcloud/docker-compose.yml
|
||||
2026/09/28 13:17:10 [INFO] [backup] Discovered app data: 11 apps
|
||||
bc851f0168e0 nextcloud-redis nextcloud redis:7-alpine
|
||||
b1bbeca1b46d nextcloud-db nextcloud mariadb:12.3
|
||||
2026/09/28 13:17:34 dbdump.go:208: [INFO] [backup] Discovered 7 databases
|
||||
2026/09/28 13:17:34 backup.go:571: [INFO] [backup] Discovered 7 database(s): nextcloud-db(mariadb), romm-db(mariadb), paperless-postgres(postgres), kimai-db(mariadb), docmost-postgres(postgres), bookstack-db(mariadb), adventurelog-postgres(postgres)
|
||||
2026/09/28 13:17:34 dbdump.go:410: [INFO] [backup] DB dump: nextcloud-db → nextcloud-mariadb.sql (852.7 KB, 458ms, 131 tables)
|
||||
2026/09/28 13:17:35 dbdump.go:410: [INFO] [backup] DB dump: romm-db → romm-mariadb.sql (113.0 KB, 310ms, 36 tables)
|
||||
-rw-r--r-- 1 root root 789 2026-09-28T13:17:34 /mnt/felhom-drives/hdd_1/backups/primary/nextcloud/data-stamps.json
|
||||
|
||||
/mnt/felhom-drives/hdd_1/backups/primary/nextcloud:
|
||||
total 16
|
||||
drwxr-xr-x 3 root root 4096 2026-09-28T13:17:34 .
|
||||
drwxr-xr-x 6 root root 4096 2026-09-28T13:17:34 ..
|
||||
-rw-r--r-- 1 root root 789 2026-09-28T13:17:34 data-stamps.json
|
||||
drwxr-xr-x 2 root root 4096 2026-09-28T13:17:34 db-dumps
|
||||
|
||||
/mnt/felhom-drives/hdd_1/backups/primary/nextcloud/db-dumps:
|
||||
total 864
|
||||
drwxr-xr-x 2 root root 4096 2026-09-28T13:17:34 .
|
||||
drwxr-xr-x 3 root root 4096 2026-09-28T13:17:34 ..
|
||||
-rw-r--r-- 1 root root 873125 2026-09-28T13:17:34 nextcloud-mariadb.sql
|
||||
|
||||
2026/09/28 13:20:45 offbox.go:1388: [WARN] [offbox] backed up nextcloud (/mnt/felhom-drives/hdd_1/backups/primary/nextcloud, 1 mandatory path(s)) — but the recovery unit carried NO database dump and NO volume tar, so this snapshot holds none of the app's data; the next run with a dump leg will replace it
|
||||
---
|
||||
2026/09/28 13:17:52 backup.go:736: [DEBUG] [backup] bentopdf has no named volumes — volume dump skipped
|
||||
2026/09/28 13:18:40 backup.go:729: [WARN] [backup] Skipping volume dump for nextcloud — the app is HELD stopped (its restore point is preserved)
|
||||
|
||||
state running | hold_reason A(z) nextcloud frissítése 2026-09-13 21:56-kor nem sikerült, és az alkalmazás nem indult el az új verzióval. Az alkalmazás biztonsági okból leállítva marad, hogy az adatai ne sérüljenek. Visszaállítható a Mentések oldalon ebből a biztonsági mentésből: saját meghajtó, 2026-09-13 21:51 — ez a másolat csak a beállításokat és az adatbázist tartalmazza, a fájlokat nem.
|
||||
/db_validations/nextcloud-mariadb.sql {"validated_at": "2026-09-28T13:17:34Z", "table_count": 131, "has_header": true, "size": 873125, "mod_time": "2026-09-28T13:17:34Z"}
|
||||
/db_validations/pre-restore-20260913T195126Z-nextcloud-mariadb.sql {"validated_at": "2026-09-13T19:53:33Z", "table_count": 131, "has_header": true, "size": 502631, "mod_time": "2026-09-13T19:51:26Z"}
|
||||
/app_backup/nextcloud {"enabled": false, "offbox": true}
|
||||
/restore_holds/nextcloud {"stack": "nextcloud", "at": "2026-09-13T19:56:32Z", "reason": "update_failed", "copy_date": "2026-09-13T19:51:13Z", "copy_tier": 1, "copy_holds": "csak a be\u00e1ll\u00edt\u00e1sokat \u00e9s az adatb\u00e1zist tartalmazza, a f\u00e1jlokat nem"}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
stop 200
|
||||
remove (with drive data + backups) -> 200 {"ok": true, "data": {"removed": "nextcloud", "volumes_removed": ["nextcloud_nextcloud_db_data", "nextcloud_nextcloud_html", "nextcloud_nextcloud_redis_data"], "hdd_paths_removed": ["/mnt/felhom-drives/hdd_1/appdata/nextcloud (126M)"], "hdd_paths_preserved": [], "backup_paths_removed": ["/mnt/felhom-drives/hdd_1/backups/primary/nextcloud (868K)"], "verified": true}, "message": "Stack nextcloud rem
|
||||
after: deployed False hold_reason None
|
||||
restore_holds.nextcloud = None
|
||||
app_backup.nextcloud = None
|
||||
/mnt/felhom-drives/hdd_1/appdata:
|
||||
paperless
|
||||
romm
|
||||
|
||||
/mnt/felhom-drives/hdd_1/backups/primary:
|
||||
calibre-web
|
||||
paperless-ngx
|
||||
romm
|
||||
0
|
||||
2026/09/28 13:36:14 waiter.go:95: [INFO] [report] hub wait channel active (hold ≤240s)
|
||||
2026/09/28 13:37:49 settings.go:1935: [INFO] [settings] update_failed hold CLEARED for nextcloud (set 2026-09-13T19:56:32Z; its install is gone)
|
||||
2026/09/28 13:37:49 router.go:1031: [INFO] [api] remove nextcloud: its update hold is cleared with it (R-491)
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
15:38:14 # kp deploy — 2026-09-28T15:38:11+0200; guest 9201; controller gitea.dooplex.hu/admin/felhom-controller:0.278.0
|
||||
15:38:17 before: deployed= False | appdata: paperless romm
|
||||
15:38:21 deploy (no choice) -> 202 {"ok": true, "message": "Telepítés elindítva – az állapot a kártyán követhető"}
|
||||
15:39:36 deployed after (75.4, 'running')
|
||||
15:39:39 # kp seed — 2026-09-28T15:39:36+0200; guest 9201; controller gitea.dooplex.hu/admin/felhom-controller:0.278.0
|
||||
15:39:48 nextcloud: occ user:add :: The account "drillf2b061" was created successfully Display name set to "drillf2b061"
|
||||
15:39:51 nextcloud: seeded user drillf2b061
|
||||
15:39:51 seeded (the account): True uid= drillf2b061
|
||||
15:39:56 PUT before-backup.txt -> 201
|
||||
15:39:57 PROPFIND as the seeded user -> 207; present ['before-backup.txt']: [True]; absent []: []; listing=['Nextcloud%20Manual.pdf', 'Nextcloud%20intro.mp4', 'Nextcloud.png', 'Readme.md', 'Reasons%20to%20use%20Nextcloud.pdf', 'Templates%20credits.md', 'before-backup.txt']
|
||||
15:39:57 POST /backup/offbox/toggle app=nextcloud enabled=on -> ('HTTP/2 302', '/backups/remote?flash=flash.offbox.app_setting_updated')
|
||||
15:40:00 # kp offsite-run — 2026-09-28T15:39:57+0200; guest 9201; controller gitea.dooplex.hu/admin/felhom-controller:0.278.0
|
||||
15:40:00 E2 manual off-site run: the backup page's run-now button, POST /backup/offbox/run
|
||||
15:40:03 apps before: adventurelog Up 22 minutes (healthy);adventurelog-frontend Up 22 minutes (healthy);adventurelog-postgres Up 22 minutes (healthy);bentopdf Up 11 hours (healthy);bookstack Up 21 minutes (healthy);bookstack-db Up 22 minutes (healthy);calibre-web Up 21 minutes (healthy);cloudflared Up 4 days;docmost Up 21 minutes (healthy);docmost-postgres Up 21 minutes (healthy);docmost-redis Up 21 minutes (healthy);felhom-controller Up 3 minutes (healthy);filebrowser Up 4 days (healthy);kimai Up 21 minutes (healthy);kimai-db Up 21 minutes (healthy);nextcloud Up About a minute (healthy);nextcloud-db Up About a minute (healthy);nextcloud-redis Up About a minute (healthy);opengist Up 21 minutes (healthy);paperless-postgres Up 21 minutes (healthy);paperless-redis Up 21 minutes (healthy);paperless-webserver Up 20 minutes (healthy);privatebin Up 20 minutes (healthy);romm Up 20 minutes (healthy);romm-db Up 20 min
|
||||
15:40:06 POST /backup/offbox/run -> ('HTTP/2 302', '/backups/remote?flash=flash.offbox.run_started')
|
||||
15:40:06 +0s active=True phase=dump app=
|
||||
15:42:12 +126s active=True phase= app=docmost
|
||||
15:42:22 +136s active=True phase= app=opengist
|
||||
15:42:27 +141s active=True phase= app=bentopdf
|
||||
15:42:32 +146s active=True phase= app=calibre-web
|
||||
15:42:37 +151s active=True phase= app=kimai
|
||||
15:42:47 +161s active=True phase= app=nextcloud
|
||||
15:43:47 +221s active=True phase= app=paperless-ngx
|
||||
15:43:52 +226s active=True phase= app=privatebin
|
||||
15:43:57 +231s active=True phase= app=romm
|
||||
15:44:02 +236s active=True phase=retention app=
|
||||
15:44:47 +281s active=False phase= app=
|
||||
15:44:47 status after: {'status': 'ok', 'last_run': '2026-09-28T13:44:44Z', 'last_error': '', 'snapshots': 91, 'last_duration': '4m32s'}
|
||||
15:44:51 controller lines:
|
||||
2026/09/28 13:41:16 backup.go:845: [INFO] [backup] Volume dump: nextcloud/nextcloud_nextcloud_html → 761.6 MB
|
||||
2026/09/28 13:41:17 backup.go:845: [INFO] [backup] Volume dump: nextcloud/nextcloud_nextcloud_redis_data → 187.5 KB
|
||||
2026/09/28 13:41:17 backup.go:956: [INFO] [backup] Restarting nextcloud after volume dump
|
||||
2026/09/28 13:41:17 manager.go:1216: [INFO] [stacks] Starting stack: nextcloud
|
||||
2026/09/28 13:41:23 manager.go:1231: [INFO] [stacks] Stack nextcloud started successfully (took 6.4s)
|
||||
2026/09/28 13:41:23 backup.go:946: [INFO] [backup] Stopping opengist for safe volume dump
|
||||
2026/09/28 13:41:24 backup.go:845: [INFO] [backup] Volume dump: opengist/opengist_opengist_data → 181.0 KB
|
||||
2026/09/28 13:41:24 backup.go:956: [INFO] [backup] Restarting opengist after volume dump
|
||||
2026/09/28 13:41:25 backup.go:946: [INFO] [backup] Stopping paperless-ngx for safe volume dump
|
||||
2026/09/28 13:41:26 manager.go:1562: [INFO] [stacks] Stack nextcloud post-start status:
|
||||
2026/09/28 13:41:26 manager.go:1565: [INFO] [stacks] nextcloud nextcloud:34.0.4-apache@sha256:a5ace30c695afe48c2c406e940ee7886a81e13fa382e57cd68b2416d1a66914c running Up 3 seconds (health: starting)
|
||||
2026/09/28 13:41:26 manager.go:1565: [INFO] [stacks] nextcloud-db mariadb:12.3@sha256:805c8e104bd563d5bfa24fadd3f31cd419ea859cb5277f32b5dbf2db714f9ed1 running Up 9 seconds (healthy)
|
||||
2026/09/28 13:41:26 manager.go:1565: [INFO] [stacks] nextcloud-redis redis:7-alpine@sha256:858f009f9709ce576febc734aa78b8f6d624b82571f9ddb6bda4377c833b3499 running Up 9 seconds (healthy)
|
||||
2026/09/28 13:41:32 backup.go:845: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_data → 16.1 MB
|
||||
2026/09/28 13:41:33 backup.go:845: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_postgres_data → 69.3 MB
|
||||
2026/09/28 13:41:33 backup.go:845: [INFO] [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_redis_data → 21.8 MB
|
||||
2026/09/28 13:41:33 backup.go:956: [INFO] [backup] Restarting paperless-ngx after volume dump
|
||||
2026/09/28 13:41:45 backup.go:946: [INFO] [backup] Stopping privatebin for safe volume dump
|
||||
2026/09/28 13:41:45 backup.go:845: [INFO] [backup] Volume dump: privatebin/privatebin_privatebin_data → 2.0 MB
|
||||
2026/09/28 13:41:45 backup.go:956: [INFO] [backup] Restarting privatebin after volume dump
|
||||
2026/09/28 13:41:46 backup.go:946: [INFO] [backup] Stopping romm for safe volume dump
|
||||
2026/09/28 13:41:54 backup.go:845: [INFO] [backup] Volume dump: romm/romm_romm_config → 2.5 KB
|
||||
2026/09/28 13:41:55 backup.go:845: [INFO] [backup] Volume dump: romm/romm_romm_db_data → 156.2 MB
|
||||
2026/09/28 13:41:55 backup.go:845: [INFO] [backup] Volume dump: romm/romm_romm_redis_data → 25.3 MB
|
||||
2026/09/28 13:41:55 backup.go:956: [INFO] [backup] Restarting romm after volume dump
|
||||
2026/09/28 13:42:06 backup.go:659: [INFO] [backup] App-data backup completed: 7 databases (14.2 MB total), 10 volume dump(s) (2m0.416s)
|
||||
2026/09/28 13:42:06 recovery_unit.go:289: [INFO] [backup] Recovery unit captured for nextcloud → /mnt/felhom-drives/hdd_1/backups/primary/nextcloud (images=3, secrets-referenced=3, data_keys=0, portable-carried=2/2, withheld=1)
|
||||
2026/09/28 13:42:07 offbox.go:969: [INFO] [offbox] pre-push dump leg completed in 2m0.458s — snapshot pair is coherent
|
||||
2026/09/28 13:42:20 offbox.go:1391: [INFO] [offbox] backed up docmost (/mnt/sys_drive/felhom-data/backups/primary/docmost, 0 mandatory path(s))
|
||||
2026/09/28 13:42:23 offbox.go:1391: [INFO] [offbox] backed up opengist (/mnt/sys_drive/felhom-data/backups/primary/opengist, 0 mandatory path(s))
|
||||
2026/09/28 13:42:27 offbox.go:1388: [WARN] [offbox] backed up bentopdf (/mnt/sys_drive/felhom-data/backups/primary/bentopdf, 0 mandatory path(s)) — but the recovery unit carried NO database dump and NO volume tar, so this snapshot holds none of the app's dat
|
||||
2026/09/28 13:42:31 offbox.go:1391: [INFO] [offbox] backed up bookstack (/mnt/sys_drive/felhom-data/backups/primary/bookstack, 0 mandatory path(s))
|
||||
2026/09/28 13:42:36 offbox.go:1391: [INFO] [offbox] backed up calibre-web (/mnt/felhom-drives/hdd_1/backups/primary/calibre-web, 1 mandatory path(s))
|
||||
2026/09/28 13:42:46 offbox.go:1391: [INFO] [offbox] backed up kimai (/mnt/sys_drive/felhom-data/backups/primary/kimai, 0 mandatory path(s))
|
||||
2026/09/28 13:43:46 offbox.go:1391: [INFO] [offbox] backed up nextcloud (/mnt/felhom-drives/hdd_1/backups/primary/nextcloud, 1 mandatory path(s))
|
||||
2026/09/28 13:43:52 offbox.go:1391: [INFO] [offbox] backed up paperless-ngx (/mnt/felhom-drives/hdd_1/backups/primary/paperless-ngx, 1 mandatory path(s))
|
||||
2026/09/28 13:43:55 offbox.go:1391: [INFO] [offbox] backed up privatebin (/mnt/sys_drive/felhom-data/backups/primary/privatebin, 0 mandatory path(s))
|
||||
2026/09/28 13:44:02 offbox.go:1391: [INFO] [offbox] backed up romm (/mnt/felhom-drives/hdd_1/backups/primary/romm, 0 mandatory path(s))
|
||||
2026/09/28 13:44:44 offbox.go:1158: [INFO] [offbox] backup OK: 10 app(s) backed up, 91 snapshot(s), 4m32s
|
||||
2026/09/28 13:44:44 offbox_progress.go:342: [INFO] [offbox] manual run progress reporting ended after 4m38s
|
||||
|
||||
15:44:54 apps after: adventurelog Up 4 minutes (healthy);adventurelog-frontend Up 4 minutes (healthy);adventurelog-postgres Up 4 minutes (healthy);bentopdf Up 11 hours (healthy);bookstack Up 4 minutes (healthy);bookstack-db Up 4 minutes (healthy);calibre-web Up 4 minutes (healthy);cloudflared Up 4 days;docmost Up 3 minutes (healthy);docmost-postgres Up 4 minutes (healthy);docmost-redis Up 4 minutes (healthy);felhom-controller Up 8 minutes (healthy);filebrowser Up 4 days (healthy);kimai Up 3 minutes (healthy);kimai-db Up 3 minutes (healthy);nextcloud Up 3 minutes (healthy);nextcloud-db Up 3 minutes (healthy);nextcloud-redis Up 3 minutes (healthy);opengist Up 3 minutes (healthy);paperless-postgres Up 3 minutes (healthy);paperless-redis Up 3 minutes (healthy);paperless-webserver Up 3 minutes (healthy);privatebin Up 3 minutes (healthy);romm Up 2 minutes (healthy);romm-db Up 2 minutes (healthy);romm-redis Up 2 mi
|
||||
@@ -0,0 +1,50 @@
|
||||
15:45:06 # kp marker — 2026-09-28T15:45:03+0200; guest 9201; controller gitea.dooplex.hu/admin/felhom-controller:0.278.0
|
||||
15:45:10 occ user:add markeraa8543 :: The account "markeraa8543" was created successfully
|
||||
15:45:11 PUT after-snapshot.txt -> 201
|
||||
15:45:21 occ user:info — present ['drillf2b061', 'markeraa8543'], absent [] (+ a uid that cannot exist, the control): {'drillf2b061': True, 'markeraa8543': True, 'nobody6a6478': False}
|
||||
15:45:22 PROPFIND as the seeded user -> 207; present ['before-backup.txt', 'after-snapshot.txt']: [True, True]; absent []: []; listing=['Nextcloud%20Manual.pdf', 'Nextcloud%20intro.mp4', 'Nextcloud.png', 'Readme.md', 'Reasons%20to%20use%20Nextcloud.pdf', 'Templates%20credits.md', 'after-snapshot.txt', 'before-backup.txt']
|
||||
15:45:25 # kp offsite-restore — 2026-09-28T15:45:22+0200; guest 9201; controller gitea.dooplex.hu/admin/felhom-controller:0.278.0
|
||||
15:45:34 1 prepare (mode=full, no confirm) -> ('HTTP/2 302', '/backups/restore/app?name=nextcloud&full_prep=nextcloud&full_size=1.0+GB')
|
||||
15:45:34 2 download (mode=full, confirm=1) -> ('HTTP/2 302', '/backups/restore/app?name=nextcloud&flash=flash.offbox.restore_started')
|
||||
15:45:34 download +0s restore-status running=True op=offbox-restore last.ok=True msg='A(z) homebox: 1 adatkötet visszaállítva — az alkalmazás újraindult.'
|
||||
15:46:10 download +36s restore-status running=False op=offbox-restore last.ok=True msg='A(z) nextcloud teljes mentése visszaállítva ellenőrző mappába: /mnt/felhom-drives/hdd_1/backups/offsite-restore/nextcloud — a saját fájljaiddal együtt. A meglévő adatok változatlanok.'
|
||||
15:46:10 3 reconstitute (confirm=1) -> HTTP/2 302 /backups/restore/app?name=nextcloud&flash=flash.offbox.full_restore_started
|
||||
15:46:10 reconstitute +0s restore-status running=True op=offbox-reconstitute last.ok=True msg='A(z) nextcloud teljes mentése visszaállítva ellenőrző mappába: /mnt/felhom-drives/hdd_1/backups/offsite-restore/nextcloud — a saját fájljaiddal együtt. A meglévő adatok változatlanok.'
|
||||
15:46:52 reconstitute +42s restore-status running=False op=offbox-reconstitute last.ok=True msg='A(z) nextcloud: 0 fájl és 3 adatkötet és az adatbázis visszaállítva (mentés: 2026-09-28 15:40) — az alkalmazás újraindult.'
|
||||
15:46:56 controller lines:
|
||||
2026/09/28 13:45:34 offbox_handlers.go:359: [INFO] [web] off-box full-restore prepared for nextcloud (size 1.0 GB) — awaiting the customer's confirm; no restore has started
|
||||
2026/09/28 13:46:08 offbox_restore.go:400: [INFO] [offbox] restored nextcloud (6cb379a8, full=true) → /mnt/felhom-drives/hdd_1/backups/offsite-restore/nextcloud
|
||||
2026/09/28 13:46:08 offbox_handlers.go:383: [INFO] [web] off-box restore nextcloud completed (full=true, async)
|
||||
2544a1e0dcaf nextcloud nextcloud nextcloud...
|
||||
2026/09/28 13:46:13 dbdump.go:410: [INFO] [backup] DB dump: nextcloud-db → pre-restore-20260928T134613Z-nextcloud-mariadb.sql (867.8 KB, 517ms, 131 tables)
|
||||
2026/09/28 13:46:13 offbox_reconstitute.go:262: [INFO] [offbox] nextcloud: pre-restore safety dump written → pre-restore-20260928T134613Z-nextcloud-mariadb.sql (867.8 KB)
|
||||
2026/09/28 13:46:13 manager.go:1305: [INFO] [stacks] Stopping stack: nextcloud
|
||||
2544a1e0dcaf nextcloud nextcloud nextcloud...
|
||||
2026/09/28 13:46:15 [INFO] [stacks] ParseComposeHDDMounts: found 1 HDD mounts for /opt/docker/stacks/nextcloud/docker-compose.yml
|
||||
2026/09/28 13:46:15 manager.go:1314: [INFO] [stacks] Stack nextcloud stopped successfully (took 1.7s)
|
||||
2026/09/28 13:46:15 restore.go:152: [INFO] [backup] Restoring Docker volume nextcloud_nextcloud_db_data for nextcloud
|
||||
2026/09/28 13:46:17 restore.go:152: [INFO] [backup] Restoring Docker volume nextcloud_nextcloud_html for nextcloud
|
||||
2026/09/28 13:46:31 restore.go:152: [INFO] [backup] Restoring Docker volume nextcloud_nextcloud_redis_data for nextcloud
|
||||
2026/09/28 13:46:31 restore.go:195: [INFO] [backup] Restored 3 Docker volume(s) for nextcloud
|
||||
2026/09/28 13:46:31 manager.go:1269: [INFO] [stacks] Starting stack nextcloud services only: [nextcloud-db]
|
||||
2026/09/28 13:46:32 manager.go:1280: [INFO] [stacks] Stack nextcloud services [nextcloud-db] started (took 0.4s)
|
||||
2026/09/28 13:46:32 restore_db.go:87: [INFO] [backup] Restore nextcloud: replaying DB dump into nextcloud-db (mariadb)
|
||||
2026/09/28 13:46:37 dbdump.go:801: [INFO] [backup] Imported DB dump nextcloud-mariadb.sql into nextcloud-db (mariadb)
|
||||
2026/09/28 13:46:37 restore_db.go:97: [INFO] [backup] Restore nextcloud: replayed 1 DB dump(s)
|
||||
2026/09/28 13:46:37 manager.go:1216: [INFO] [stacks] Starting stack: nextcloud
|
||||
2026/09/28 13:46:44 manager.go:1231: [INFO] [stacks] Stack nextcloud started successfully (took 6.1s)
|
||||
2026/09/28 13:46:47 manager.go:1562: [INFO] [stacks] Stack nextcloud post-start status:
|
||||
2026/09/28 13:46:47 manager.go:1565: [INFO] [stacks] nextcloud nextcloud:34.0.4-apache@sha256:a5ace30c695afe48c2c406e940ee7886a81e13fa382e57cd68b2416d1a66914c running Up 3 seconds (health: starting)
|
||||
2026/09/28 13:46:47 manager.go:1565: [INFO] [stacks] nextcloud-db mariadb:12.3@sha256:805c8e104bd563d5bfa24fadd3f31cd419ea859cb5277f32b5dbf2db714f9ed1 running Up 15 seconds (healthy)
|
||||
2026/09/28 13:46:47 manager.go:1565: [INFO] [stacks] nextcloud-redis redis:7-alpine@sha256:858f009f9709ce576febc734aa78b8f6d624b82571f9ddb6bda4377c833b3499 running Up 9 seconds (healthy)
|
||||
2026/09/28 13:46:52 offbox_reconstitute.go:934: [INFO] [offbox] reconstituted nextcloud from snapshot 6cb379a8: 0 file(s) placed, 3 volume(s) replayed, 1 DB dump(s) replayed, safety dump=pre-restore-20260928T134613Z-nextcloud-mariadb.sql, skewed=false
|
||||
2026/09/28 13:46:52 offbox_handlers.go:472: [INFO] [web] off-box reconstitute nextcloud completed (async): files=0 dbs=1 snapshot=6cb379a8
|
||||
|
||||
15:46:56 after: state= running pinned= {'nextcloud': 'nextcloud:34.0.4-apache', 'nextcloud-db': 'mariadb:12.3', 'nextcloud-redis': 'redis:7-alpine'}
|
||||
15:47:08 # kp read no-marker — 2026-09-28T15:47:05+0200; guest 9201; controller gitea.dooplex.hu/admin/felhom-controller:0.278.0
|
||||
15:47:18 occ user:info — present ['drillf2b061'], absent ['markeraa8543'] (+ a uid that cannot exist, the control): {'drillf2b061': True, 'markeraa8543': False, 'nobody47dfb6': False}
|
||||
15:47:18 PROPFIND as the seeded user -> 207; present ['before-backup.txt']: [True]; absent []: []; listing=['Nextcloud%20Manual.pdf', 'Nextcloud%20intro.mp4', 'Nextcloud.png', 'Readme.md', 'Reasons%20to%20use%20Nextcloud.pdf', 'Templates%20credits.md', 'before-backup.txt']
|
||||
15:47:22 state: running images: nextcloud=nextcloud:34.0.4-apache nextcloud-redis=redis:7-alpine nextcloud-db=mariadb:12.3
|
||||
on disk after (a): before-backup.txt
|
||||
after-snapshot.txt
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
15:47:40 # kp remove-keep delete-backups — 2026-09-28T15:47:37+0200; guest 9201; controller gitea.dooplex.hu/admin/felhom-controller:0.278.0
|
||||
15:47:42 stop 200
|
||||
15:48:25 remove (keep drive data, remove_backups=True) -> 200 {"ok": true, "data": {"removed": "nextcloud", "volumes_removed": ["nextcloud_nextcloud_db_data", "nextcloud_nextcloud_html", "nextcloud_nextcloud_redis_data"], "hdd_paths_removed": [], "hdd_paths_preserved": ["/mnt/felhom-drives/hdd_1/appdata/nextcloud (126M)"], "backup_paths_removed": ["/mnt/felhom-drives/hdd_1/backups/primary/nextcloud (929M)"], "verified": true}, "message": "Stack nextcloud rem
|
||||
15:48:36 after: deployed= False | appdata: nextcloud paperless romm
|
||||
ls: cannot access '/mnt/felhom-drives/hdd_1/backups/primary/nextcloud': No such file or directory
|
||||
ls: cannot access '/mnt/felhom-drives/hdd_1/backups/primary/nextcloud/db-dumps': No such file or directory
|
||||
ls: cannot access '/mnt/*/*/backups/secondary/nextcloud': No such file or directory
|
||||
ls: cannot access '/mnt/*/backups/secondary/nextcloud': No such file or directory
|
||||
|
||||
15:48:39 # kp kept — 2026-09-28T15:48:36+0200; guest 9201; controller gitea.dooplex.hu/admin/felhom-controller:0.278.0
|
||||
15:48:42 GET /kept-data: ...datok Az eltávolított alkalmazások lemezen maradt adatai. Megnézheted őket, betöltheted egy új telepítésbe, vagy törölheted. Magától a szerver soha nem töröl közülük semmit. Erről nem készül mentés. Nextcloud 2026-09-28 15:39 · 125.5 MB Visszatölthető innen: távoli mentés, 2026-09-28 15:40 Betöltés Megnézem Törlés A(z) Nextcloud megőrzött adatai (125.5 MB) véglegesen törlődnek. Ezt nem lehet visszacsinálni. A törléshez írd be: Nextcloud Végleges törlés (function(){ var burger=document.querySelector('.nav-burger'); var sidebar=document.getElementById('sidebar'); var backdrop=document.querySelector('.nav-backdrop'); if(!burger||!sidebar||!backdrop)return; function setOpen(open){ sidebar.classL...
|
||||
15:48:44 GET /kept-data?lang=en: ...ign out ↗ Back Kept data Data that removed apps left on the drives. You can look at it, load it into a new install, or delete it. The server never deletes any of it by itself. This is not backed up. Nextcloud 2026-09-28 15:39 · 125.5 MB Can be loaded from: the off-site copy, 2026-09-28 15:40 Load Look Delete The kept data of Nextcloud (125.5 MB) is deleted for good. This cannot be undone. To delete it, type: Nextcloud Delete for good (function(){ var burger=document.querySelector('.nav-burger'); var sidebar=document.getElementById('sidebar'); var backdrop=document.querySelector('.nav-backdrop'); if(!burger||!sidebar||!backdrop)return; function setOpen(open){ sidebar.classList.toggle('is-open...
|
||||
15:48:48 # kp ask — 2026-09-28T15:48:45+0200; guest 9201; controller gitea.dooplex.hu/admin/felhom-controller:0.278.0
|
||||
15:48:53 deploy, no choice, lang=hu -> 409 use_offered=True use_desc='Az adatbázist innen töltjük vissza: távoli mentés, 2026-09-28 15:40. A régi fájlokkal indítjuk az alkalmazást. Ami ezután változott, hiányozhat.' use_off=''
|
||||
15:48:59 deploy, no choice, lang=en -> 409 use_offered=True use_desc='We load the database from the off-site copy, 2026-09-28 15:40 and start the app with the old files. Changes made after that time can be missing.' use_off=''
|
||||
15:48:59 still not installed: False
|
||||
15:49:11 # kp use — 2026-09-28T15:49:08+0200; guest 9201; controller gitea.dooplex.hu/admin/felhom-controller:0.278.0
|
||||
15:49:20 deploy kept_data=use -> 202 {"ok": true, "message": "A(z) Nextcloud megőrzött adatainak betöltése elindult."}
|
||||
15:50:05 deployed after (45.3, 'degraded')
|
||||
15:50:43 controller lines:
|
||||
2026/09/28 13:49:20 kept_install.go:97: [INFO] [api] Deploy nextcloud: USE MY KEPT DATA — loading from off-site snapshot 6cb379a8 (tier 3, 2026-09-28T13:40:07Z) under the kept files [/mnt/felhom-drives/hdd_1/appdata/nextcloud]
|
||||
2026/09/28 13:49:20 kept_load.go:263: [INFO] [backup] kept load nextcloud: downloading the recovery unit alone from off-site snapshot 6cb379a8 (/mnt/felhom-drives/hdd_1/backups/primary/nextcloud)
|
||||
2026/09/28 13:49:39 restore_unit.go:538: [WARN] [backup] Restore nextcloud: generated replacement for [NEXTCLOUD_ADMIN_PASSWORD] — the credential was reset (old value unrecoverable); no data-encrypting key was involved, but a regenerated DATABASE password will not match the restored data directory's stored hash (R-12
|
||||
2026/09/28 13:49:39 restore_unit.go:393: [INFO] [backup] Restoring nextcloud from recovery unit /mnt/felhom-drives/hdd_1/backups/offsite-proof/nextcloud/mnt/felhom-drives/hdd_1/backups/primary/nextcloud: images=3, secrets recovered=2/3, data_keys=0
|
||||
2026/09/28 13:49:39 restore.go:152: [INFO] [backup] Restoring Docker volume nextcloud_nextcloud_db_data for nextcloud
|
||||
2026/09/28 13:49:40 restore.go:152: [INFO] [backup] Restoring Docker volume nextcloud_nextcloud_html for nextcloud
|
||||
2026/09/28 13:49:51 restore.go:152: [INFO] [backup] Restoring Docker volume nextcloud_nextcloud_redis_data for nextcloud
|
||||
2026/09/28 13:49:52 restore.go:195: [INFO] [backup] Restored 3 Docker volume(s) for nextcloud
|
||||
2026/09/28 13:49:52 deploy.go:718: [INFO] [stacks] nextcloud: the restore generated [NEXTCLOUD_ADMIN_PASSWORD] — the app's own login came back with its data; the page will not show the new value as the password
|
||||
2026/09/28 13:49:53 restore_db.go:87: [INFO] [backup] Restore nextcloud: replaying DB dump into nextcloud-db (mariadb)
|
||||
2026/09/28 13:50:00 restore_db.go:97: [INFO] [backup] Restore nextcloud: replayed 1 DB dump(s)
|
||||
2026/09/28 13:50:15 restore_unit.go:478: [INFO] [backup] Restore-from-unit completed: nextcloud — 3 volume(s) of 3 listed, 1 database(s) of 1 listed
|
||||
2026/09/28 13:50:15 kept_load.go:285: [INFO] [backup] kept load nextcloud from the off-site copy 6cb379a8 done in 55s (volumes 3/3, dbs 1/1)
|
||||
2026/09/28 13:50:15 kept.go:521: [INFO] [stacks] after_load nextcloud: nextcloud [php occ files:scan --all] in 689ms (err=<nil>): Starting scan for user 1 out of 2 (admin)
|
||||
|
||||
15:50:43 restore status: {"running": false, "op": "restore", "stack": "nextcloud", "started_at": "2026-09-28T13:49:20.088190642Z", "last": {"op": "restore", "stack": "nextcloud", "ok": true, "message": "A(z) Nextcloud a megőrzött adataival fut.", "finished_at": "2026-09-28T13:50:15.203177307Z"}, "last_recent": true}
|
||||
15:50:46 # kp read no-marker — 2026-09-28T15:50:43+0200; guest 9201; controller gitea.dooplex.hu/admin/felhom-controller:0.278.0
|
||||
15:50:56 occ user:info — present ['drillf2b061'], absent ['markeraa8543'] (+ a uid that cannot exist, the control): {'drillf2b061': True, 'markeraa8543': False, 'nobodyd8af7d': False}
|
||||
15:50:57 PROPFIND as the seeded user -> 207; present ['before-backup.txt']: [True]; absent []: []; listing=['Nextcloud%20Manual.pdf', 'Nextcloud%20intro.mp4', 'Nextcloud.png', 'Readme.md', 'Reasons%20to%20use%20Nextcloud.pdf', 'Templates%20credits.md', 'after-snapshot.txt', 'before-backup.txt']
|
||||
15:50:59 state: running images: nextcloud=nextcloud:34.0.4-apache nextcloud-redis=redis:7-alpine nextcloud-db=mariadb:12.3
|
||||
@@ -0,0 +1,22 @@
|
||||
stop 200
|
||||
remove (with drive data + backups) -> 200 {"ok": true, "data": {"removed": "nextcloud", "volumes_removed": ["nextcloud_nextcloud_db_data", "nextcloud_nextcloud_html", "nextcloud_nextcloud_redis_data"], "hdd_paths_removed": ["/mnt/felhom-drives/hdd_1/appdata/nextcloud (126M)"], "hdd_paths_preserved": [], "backup_paths_removed": ["/mnt/felhom-drives/hdd_1/backups/primary/nextcloud (36K)"], "verified": true}, "message": "Stack nextcloud removed"}
|
||||
removed-empty-harness-dir
|
||||
/mnt/felhom-drives/hdd_1/appdata:
|
||||
paperless
|
||||
romm
|
||||
|
||||
/mnt/felhom-drives/hdd_1/backups/offsite-proof:
|
||||
|
||||
/mnt/felhom-drives/hdd_1/backups/offsite-restore:
|
||||
nextcloud
|
||||
|
||||
/mnt/felhom-drives/hdd_1/backups/primary:
|
||||
calibre-web
|
||||
paperless-ngx
|
||||
romm
|
||||
0
|
||||
app_backup.nextcloud None | hold None
|
||||
|
||||
## app list AFTER Part E (deployed): ['adventurelog', 'bentopdf', 'bookstack', 'calibre-web', 'docmost', 'kimai', 'opengist', 'paperless-ngx', 'privatebin', 'romm']
|
||||
15:52:31 POST /backup/offbox/verify-copy/delete stack=nextcloud confirm=1 -> ('HTTP/2 302', '/backups/restore?flash=flash.offbox.scratch_deleted')
|
||||
15:52:34 offsite-restore now:
|
||||
@@ -0,0 +1,20 @@
|
||||
# kept-offsite — 2026-09-28: "use my kept data" from the off-site copy (R-691 (2)), and the first live off-site restores
|
||||
|
||||
Architecture: `07-backup-architecture.md` §6.5 (kept data, now with the off-site copy), §6.6 (the data's version).
|
||||
Controller v0.277.0 (the feature) and v0.278.0 (R-704, found on the way). Method: endpoint level — the exact calls the
|
||||
pages make (`tools/kp.py`, `tools/walk.py`), the app's own front doors for data (nextcloud `occ`, WebDAV).
|
||||
|
||||
| file | what |
|
||||
|---|---|
|
||||
| `redproofs/RP1–RP3` | v0.277.0: local-only choice; no version refusal; copy removed after the outcome (first draft) |
|
||||
| `redproofs/RP4–RP6` | v0.278.0: old hold predicate; no drop on "use"; no drop on install |
|
||||
| `live/B4-9202-*` | Tier 1 route regression on 9202 (choice named "saját mentés"; seed + file back); teardown |
|
||||
| `live/B5-floor.txt`, `live/B6-floor-0278.txt` | floor 0.277.0, 0.278.0, both demo boxes |
|
||||
| `E/E0`, `E/E1` | demo-hp app list before; nextcloud installed, seeded, joined the off-site copy |
|
||||
| `E/E2`, `E/E2b` | the page's off-site run-now; the snapshot held NO data — a 2026-09-13 hold (R-704) |
|
||||
| `E/E3`, `E/E4` | old nextcloud removed (hold cleared); fresh install, seed, off-site run: snapshot `6cb379a8` with data |
|
||||
| `E/E5-a-offsite-restore.txt` | (a) prepare → download → reconstitute; seed back, marker user gone, same version |
|
||||
| `E/E6-b-kept-from-offsite.txt` | (b) remove keep data + delete local copies → choice names the off-site copy → use → seed + files back |
|
||||
| `E/E9-teardown.txt` | removed with data; app list equal; verification copy deleted (R-706) |
|
||||
|
||||
Seed passwords live in the session scratchpad only.
|
||||
@@ -0,0 +1,4 @@
|
||||
## 2026-09-28T13:36:03Z floor 0.277.0 -> 0.278.0 (min_agent 0.131.0 from the v0.278.0 header)
|
||||
HTTP/1.1 303 See Other
|
||||
Location: /configuration?flash=floor_set
|
||||
name="min_controller_version" value="0.278.0"
|
||||
@@ -0,0 +1,10 @@
|
||||
# RP4 — the pre-fix ClearUpdateHold predicate (update holds only)
|
||||
1930c1930
|
||||
< if !ok || (h.Reason != HoldReasonUpdateFailed && h.Reason != HoldReasonUnhealthyStop) {
|
||||
---
|
||||
> if !ok || h.Reason != HoldReasonUpdateFailed { // RED-PROOF RP4
|
||||
r704_hold_test.go:31: reason "unhealthy_stop": cleared=false still-held=true, want cleared=true
|
||||
--- FAIL: TestR704_ClearUpdateHoldClearsTheInstallsHoldsOnly (0.00s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/settings 0.004s
|
||||
FAIL
|
||||
@@ -0,0 +1,10 @@
|
||||
# RP5 — the use-my-kept-data path does not drop a leftover hold
|
||||
98c98
|
||||
< r.dropLeftoverHold(name, "use-kept-data") // R-704: this is a new install of an app that is not installed
|
||||
---
|
||||
> // RED-PROOF RP5: no dropLeftoverHold
|
||||
kept_install_test.go:246: the earlier install's hold survived the new install: {Stack:cloudapp At:2026-09-13T19:56:32Z ReplayError: RollbackErr: SafetyDump: Reason:update_failed CopyDate: CopyTier:0 CopyHolds: UndoState: NoWholeCopy:false CopiesSeen:[] UnhealthyKind: Trip:0}
|
||||
--- FAIL: TestR704_AFreshInstallDropsALeftoverHold (0.01s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/api 0.021s
|
||||
FAIL
|
||||
@@ -0,0 +1,10 @@
|
||||
# RP6 — the plain install path does not drop a leftover hold
|
||||
500c500
|
||||
< r.dropLeftoverHold(name, "install")
|
||||
---
|
||||
> // RED-PROOF RP6: no dropLeftoverHold
|
||||
kept_install_test.go:287: deployStack must call dropLeftoverHold before DeployStack (drop=0 deploy=21792)
|
||||
--- FAIL: TestR704_AFreshInstallDropsALeftoverHold (0.02s)
|
||||
FAIL
|
||||
FAIL gitea.dooplex.hu/admin/felhom-controller/internal/api 0.028s
|
||||
FAIL
|
||||
@@ -97,6 +97,34 @@ def users_report(want_present, want_absent):
|
||||
return ok
|
||||
|
||||
|
||||
def form(path, fields):
|
||||
"""A FORM post the way the page sends it (session cookie + _csrf). Returns (status line, location)."""
|
||||
sess = open(f"{w.SC}/sess{os.getpid()}.txt").read().strip()
|
||||
csrf = open(f"{w.SC}/csrf{os.getpid()}.txt").read().strip()
|
||||
args = ["curl", "-sk", "-D", "-", "-o", "/dev/null", "-H", w.HOSTHDR, "-H", f"Cookie: {sess}", "-X", "POST",
|
||||
"--data-urlencode", f"_csrf={csrf}"]
|
||||
for k, v in fields.items():
|
||||
args += ["--data-urlencode", f"{k}={v}"]
|
||||
r = w.sh(args + [f"{w.BASE}{path}"], timeout=300)
|
||||
lines = (r.stdout or "").split("\n")
|
||||
loc = [l.split(":", 1)[1].strip() for l in lines if l.lower().startswith("location:")]
|
||||
return lines[0].strip() if lines else "?", (loc[0] if loc else "")
|
||||
|
||||
|
||||
def wait_restore(label, cap=3600):
|
||||
t0 = time.time(); last = None
|
||||
while time.time() - t0 < cap:
|
||||
d = w.ctl("GET", "/api/backup/restore-status")[1].get("data") or {}
|
||||
cur = (d.get("running"), d.get("op"), (d.get("last") or {}).get("ok"), (d.get("last") or {}).get("message"))
|
||||
if cur != last:
|
||||
say(f" {label} +{round(time.time()-t0)}s restore-status running={cur[0]} op={cur[1]} last.ok={cur[2]} msg={str(cur[3])[:220]!r}")
|
||||
last = cur
|
||||
if not d.get("running") and time.time() - t0 > 5:
|
||||
return d
|
||||
time.sleep(3)
|
||||
return {}
|
||||
|
||||
|
||||
w.login()
|
||||
say(f"# kp {step} {arg} — {time.strftime('%FT%T%z')}; guest {w.GUEST}; controller {g('cat /etc/felhom-controller-image').strip()}")
|
||||
|
||||
@@ -173,6 +201,43 @@ elif step == "kept":
|
||||
t = re.sub(r"\s+", " ", re.sub(r"<[^>]+>", " ", h))
|
||||
i = t.find("extcloud")
|
||||
say(f"GET /kept-data{'?lang=en' if lang else ''}: ...{t[max(0, i-200):i+500]}..." if i >= 0 else f"GET /kept-data{'?lang=en' if lang else ''}: no nextcloud row")
|
||||
elif step == "snapshots":
|
||||
code, d = w.ctl("GET", "/backup/offbox/status")
|
||||
say("offbox status:", json.dumps(d, ensure_ascii=False)[:600])
|
||||
say(g("docker exec felhom-controller sh -c 'ls /opt/docker/felhom-controller/data/offbox' 2>&1 | tr '\\n' ' '"))
|
||||
say(g(f"docker logs --since {arg or '4h'} felhom-controller 2>&1 | grep -iE 'offbox|off-site|snapshot|nextcloud' | grep -v DEBUG | cut -c1-300 | tail -40"))
|
||||
elif step == "offsite-restore":
|
||||
since = g("date -u +%Y-%m-%dT%H:%M:%SZ").strip()
|
||||
say("1 prepare (mode=full, no confirm) ->", form("/backup/offbox/restore", {"app": APP, "mode": "full"}))
|
||||
say("2 download (mode=full, confirm=1) ->", form("/backup/offbox/restore", {"app": APP, "mode": "full", "confirm": "1"}))
|
||||
wait_restore("download")
|
||||
st, loc = form("/backup/offbox/reconstitute", {"app": APP, "confirm": "1"})
|
||||
say("3 reconstitute (confirm=1) ->", st, loc)
|
||||
if "ack_placement" in loc or "placement" in loc:
|
||||
say(" the page asked for the placement acknowledgement — sending it with confirm")
|
||||
say("3b reconstitute (confirm=1, ack_placement=1) ->", form("/backup/offbox/reconstitute", {"app": APP, "confirm": "1", "ack_placement": "1"}))
|
||||
wait_restore("reconstitute")
|
||||
say("controller lines:\n" + g(f"docker logs --since {since} felhom-controller 2>&1 | grep -iE 'offbox|reconstitut|restor|nextcloud|version' | grep -v DEBUG | cut -c1-320 | head -60"))
|
||||
st = w.stack(APP)
|
||||
say("after: state=", st.get("state"), "pinned=", (st.get("app_config") or {}).get("pinned_images"))
|
||||
elif step == "offsite-run":
|
||||
say("E2 manual off-site run: the backup page's run-now button, POST /backup/offbox/run")
|
||||
say("apps before:", g("docker ps --format '{{.Names}} {{.Status}}' | sort | tr '\\n' ';'")[:900])
|
||||
since = g("date -u +%Y-%m-%dT%H:%M:%SZ").strip()
|
||||
say("POST /backup/offbox/run ->", form("/backup/offbox/run", {}))
|
||||
t0 = time.time(); last = None
|
||||
while time.time() - t0 < 3600:
|
||||
c, d = w.ctl("GET", "/backup/offbox/status")
|
||||
p = (d.get("progress") or {}); cur = (p.get("active"), p.get("phase"), p.get("current_app"))
|
||||
if cur != last:
|
||||
say(f" +{round(time.time()-t0)}s active={cur[0]} phase={cur[1]} app={cur[2]}"); last = cur
|
||||
if not p.get("active") and time.time() - t0 > 20:
|
||||
break
|
||||
time.sleep(5)
|
||||
c, d = w.ctl("GET", "/backup/offbox/status")
|
||||
say("status after:", {k: d.get(k) for k in ("status", "last_run", "last_error", "snapshots", "last_duration")})
|
||||
say("controller lines:\n" + g(f"docker logs --since {since} felhom-controller 2>&1 | grep -iE 'offbox|nextcloud|snapshot|dump' | grep -v DEBUG | cut -c1-260 | tail -40"))
|
||||
say("apps after:", g("docker ps --format '{{.Names}} {{.Status}}' | sort | tr '\\n' ';'")[:900])
|
||||
elif step == "kept-delete":
|
||||
h = w.page("/kept-data")
|
||||
paths = sorted(set(re.findall(r'name="path" value="([^"]*nextcloud[^"]*)"', h)))
|
||||
|
||||
Reference in New Issue
Block a user