night shift 2026-09-23: the record, the register, the morning note
gates / gates (push) Successful in 27s

DRILL-night-2026-09-23.md: Parts A-E. 09 §3 decisions 21 (operator word),
22 and 23 (CC unattended, operator may reverse); §6.4 parts 4 and 6
(catalog half) shipped; §6.1a residuals R-658/R-659. Register 330 -> 336:
R-651..R-660 opened (R-658 and R-659 P1), R-650/R-640/R-499/R-626 closed.
Capability map, nightly rotation (opengist), STATUS (one question: the
floor), CONTEXT, REPORT. The floor stays 0.266.0.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-09-24 00:24:04 +02:00
parent 77335625fe
commit 3e58c184f6
140 changed files with 15399 additions and 316 deletions
+182 -7
View File
@@ -7,11 +7,32 @@ the endpoint the UI invokes; pages are fetched as HTML in both languages; no bro
## Not done, or changed
<!-- FILLED AT THE END -->
- **The floor stays at 0.266.0.** The brief raises it only if every live proof of Parts A, B and D passed; Part D
found two P1s (R-658, R-659). Both exist in 0.266.0 as well — v0.267.0 does not cause them and adds R-640's
protection to the same restore path — so the recommendation is to raise it; that is the operator's one
question this morning.
- **Adventurelog v0.13.0 was not moved** (R-655): our own template's healthcheck points at a node path the new
image moved, and the new backend downloads world data from the internet at every start and crash-loops when
the download is cut short.
- **The stop rule fired in round 11** (R-659): all twelve rounds had already run; nothing further was injected.
- **Rounds 2–5 did not land their accidents inside the action** (the instrument, stated in Part D); round 9 is
the clean mid-update kill, round 6 the mid-verify memory hog, rounds 8 and 11 the mid-verify backup and the
concurrent second update.
- **Decisions taken by CC unattended** (operator may reverse, `09` §3): 22 — the memory mark reads the app's own
memory, not the file cache; 23 — the push-time gate asks the registry for moved refs only.
- R-518's per-tier quiesce, R-612's silent-seed half and R-613's template sweep stay open, narrowed.
## Three lines
<!-- FILLED AT THE END -->
- **Interventions:** none by the operator; 5 by me on my own instruments (a stale-template wait, a dropped
event ring, a killed runner of my own, a broken local edit reverted before any commit, the stop rule on a held
app) — each stated where it happened. No product state was set by hand.
- **Apps moved tonight: 11 of 14 tried (12 steps of 15 edges)**, each with its test record; the 21 moves of
2026-09-22 backfilled.
- **The result that matters most:** after a restore, an app's volumes lose the label the undo finds them by —
so the next failed update is "undone" with **nothing** put back (R-658, P1); and a held file-leg app can be
pointed at a restore that refuses it (R-659, P1).
---
@@ -56,11 +77,87 @@ wrong digest table it REFUSED all three services.
**Backfill** — the 21 moves of 2026-09-22, each from the record its commit cited:
<!-- BACKFILL TABLE -->
| app | step (the service that moved) | verdict | evidence | note |
|---|---|---|---|---|
| actualbudget | actualbudget: actual-server:26.7.0 → actual-server:26.9.0 | proven | `audits/update-night-2026-09-21/apps/actualbudget/verdict.json` | — |
| audiobookshelf | audiobookshelf: audiobookshelf:2.35.1 → audiobookshelf:2.36.1 | proven | `audits/update-night-2026-09-21/apps/audiobookshelf/verdict.json` | — |
| bookstack | bookstack: bookstack:26.05.2 → bookstack:26.05.5 | proven | `audits/update-night-2026-09-21/apps/bookstack/verdict.json` | — |
| docmost | docmost: docmost:0.95.0 → docmost:0.96.0 | proven | `audits/update-night-2026-09-21/apps/docmost/verdict.json` | — |
| emby | emby: embyserver:4.10.0.20 → embyserver:4.11.0.1 | proven | `audits/the-28-2026-09-22/apps/emby/verdict.json` | — |
| ghost | ghost: ghost:6.53.0-alpine → ghost:6.64.0-alpine | proven | `audits/the-28-2026-09-22/apps/ghost/verdict.json` | — |
| grafana | grafana: grafana:13.1.0 → grafana:13.2.2 | proven | `audits/update-night-2026-09-21/apps/grafana/verdict.json` | — |
| home-assistant | home-assistant: home-assistant:2026.7.2 → home-assistant:2026.9.3 | proven | `audits/update-night-2026-09-21/apps/home-assistant/verdict.json` | — |
| immich | immich-server: immich-server:v3.0.3 → immich-server:v3.2.2 | proven | `audits/the-28-2026-09-22/apps/immich/verdict.json` | — |
| mealie | mealie: mealie:v3.20.1 → mealie:v3.27.0 | proven | `audits/update-night-2026-09-21/apps/mealie/verdict.json` | — |
| n8n | n8n: n8n:2.31.3 → n8n:2.40.5 | proven | `audits/update-night-2026-09-21/apps/n8n/verdict.json` | — |
| navidrome | navidrome: navidrome:0.63.2 → navidrome:0.64.0 | proven | `audits/update-night-2026-09-21/apps/navidrome/verdict.json` | — |
| nextcloud | nextcloud-db: mariadb:11.6 → mariadb:12.3 | proven | `audits/update-night-2026-09-21/apps/nextcloud-engine-mariadb/verdict.json` | commit cited no record; this one named |
| papra | papra: papra:26.6.1-rootless → papra:26.6.2-rootless | proven | `audits/update-night-2026-09-21/apps/papra/verdict.json` | — |
| privatebin | privatebin: pdo:2.0.5 → pdo:2.0.6 | proven | `audits/update-night-2026-09-21/apps/privatebin/verdict.json` | — |
| radarr | radarr: radarr:6.3.0 → radarr:6.4.4 | proven | `audits/the-28-2026-09-22/apps/radarr/verdict.json` | — |
| romm | romm: romm:5.0.0 → romm:5.3.0 | proven | `audits/update-night-2026-09-21/apps/romm/verdict.json` | memory watch 80.9 % (M1) |
| sonarr | sonarr: sonarr:4.0.19 → sonarr:4.0.20 | proven | `audits/the-28-2026-09-22/apps/sonarr/verdict.json` | — |
| tandoor | tandoor: recipes:2.6.13 → recipes:2.6.15 | proven | `audits/update-night-2026-09-21/apps/tandoor/verdict.json` | — |
| termix | termix: termix:2.5.0 → termix:2.8.0 | proven | `audits/the-28-2026-09-22/apps/termix/verdict.json` | — |
| vikunja | vikunja: vikunja:2.3.0 → vikunja:2.6.0 | proven | `audits/update-night-2026-09-21/apps/vikunja/verdict.json` | — |
**21 of 21 `proven`, 0 `unrecorded`.** Every entry is marked `backfilled`, carries harness v1 (box walk only, no memory watch — except romm's M1 figure), and a digest resolved TONIGHT, which each entry's `note` says. `scripts/ladder_backfill.py`.
## Part C — move every app that proves itself
<!-- PART C -->
**Venues:** the bench = throwaway LXC **9401** on demo-hp (Debian 13, docker 26.1.5, Docker Hub login),
created tonight and destroyed at teardown; the box = guest **9202**, v0.267.0, drill catalog. **Negative
control first:** C3 (`alpine:3.20` as the TO image) → `failed` — the bench measures (`bench-C3/`).
Box walks by `run_edge.py`; bench edges by `upgrade-test.py --move`; each edge's bench evidence copied off
the bench when it ended (`benchq.py`). Evidence per app: `night-2026-09-23/apps/<app>/`.
| app | from → to | class | bench verdict | box verdict | memory: own (cgroup) peak % | migration line | moved? |
|---|---|---|---|---|---|---|---|
| nextcloud | nextcloud 34.0.1 → 34.0.4 | MariaDB + file-leg | proven | proven (done) | 24.2 (100) | nextcloud / Upgrading nextcloud from 34.0.1.2 ... | moved `5d49a11` (files_may_change) |
| romm | romm 5.3.0 → 5.3.1 | MariaDB | proven | proven (done) | n/a — measured before the own-memory sample existed (cgroup 79.5) | romm / INFO: [RomM][init][2026-09-23 21:12:26][0 | moved `7ff4e68` |
| romm-engine | romm-db mariadb 11.4 → 11.8 (own edge) | MariaDB engine | proven | proven (done) | 78.0 (84) | romm / INFO: [RomM][init][2026-09-23 21:47:51][0 | moved `431cdec` |
| kimai | kimai-db mariadb 11.6 → 11.8 (own edge) | MariaDB engine | proven | proven (done) | 37.9 (100) | kimai / [OK] Already at the latest version ("DoctrineMigrations\Version2 | moved `376b2c3` |
| adventurelog | adventurelog v0.12.1 → v0.13.0 (both images) | PostgreSQL (PostGIS) | failed ×2 (frontend never healthy; then backend crash-loop on `download-countries`) | failed (undone at +196 s, drill timeout 90 s) | — | adventurelog / Apply all migrations: account, admin, adventures, aut | **NOT moved** — our template's frontend healthcheck points at `/nodejs/bin/node`, gone in v0.13.0; with it dropped, the backend's start-time internet download crash-looped (R-655) |
| immich | immich-machine-learning v3.0.3 → v3.2.2 | PostgreSQL (server unchanged) | proven | proven (done) | 51.4 (100) | immich-server / [Nest] 7 - 09/23/2026, 9:11:07 PM LO | moved `b82b7c6` |
| n8n | n8n 2.40.5 → 2.41.1 | SQLite | proven | proven (done) | 22.7 (47) | n8n / Migrations in progress, please do NOT stop the process. | moved `04b63db` |
| ghost | ghost 6.64.0 → 6.65.0 | SQLite | proven | proven (done) | 24.9 (43) | ghost / [2026-09-23 21:21:22] WARN Database state requires migration | moved `e6afab9` (first watch had no load — re-run) |
| komga | komga 1.25.0 → 1.27.1 | embedded | proven | proven (done) | 60.0 (77) | komga / 2026-09-23T21:35:41.616+02:00 INFO 1 --- [ main] o.f.core | moved `fc1becc` with 768M (memory_tight at 512M) |
| opengist | opengist 1.13 → 1.15 | SQLite | proven | proven (done) | 77.8 (100) | — | moved `657c83f` (pages under `/-/`, R-654) |
| wishlist | wishlist v0.66.0 → v0.67.1 | SQLite | proven | proven (done) | 35.9 (53) | wishlist / Prisma schema loaded from prisma/schema.prisma. | moved `1545c5f` (after R-612's 512M) |
| navidrome | navidrome 0.64.0 → 0.64.1 | SQLite | proven | proven (done) | 6.3 (9) | navidrome / time="2026-09-23T19:31:04Z" level=info msg="goose: no migrations | moved `76cc1f5` (second ladder step) |
| emby | emby 4.11.0.1 → 4.11.0.3 | embedded | proven | proven (done) | 4.5 (8) | emby / Info SqliteUserRepository: Sqlite compiler options: ATOMIC_INTRINSICS | moved `8d573ad` |
| gitea | gitea 1.27.0 → 1.27.3 | SQLite | inconclusive | inconclusive () | — | — | NOT moved — inconclusive on both: its web installer blocks a headless first account (R-624) |
**12 steps across 11 apps published**, each written by `upgrade-test.py --write-ladder`, each its own
commit, every push through the hook (the new gate judged each against the registry), CI green (jobs
922–937, matched on head_sha; two commits rode inside a later push and were judged there). Tried: 14
apps, 15 edges. `night-2026-09-23/C-moves.txt` lists the commits.
**Listed, not moved:**
- *across a major* (11): sparkyfitness v0.17.3→v1.7.2 (both images), gokapi v1.9.6→v2.2.4, claper 2.5→3.0,
homepage v1.13.2→v2.4.0, paperless-ngx 2.20.15→3.2.1, mariadb →13.0 (romm, kimai, bookstack,
nextcloud), nextcloud 34→35, plex 1.41→1.43.
- *no front-door seed route* (R-624): code-server, outline, rallly; *sign-up closed by design*: vaultwarden,
zipline; *installer*: gitea (tried — inconclusive on both venues).
- *no fixture tonight*: bentopdf, glance, crafty-controller, wger (2.6→2.7), wanderer's meilisearch
(v1.36→v1.54), uptime-kuma (2.4.0→2.5.5 — its first account exists only over socket.io).
- *tried and failed*: adventurelog (R-655, two causes measured).
**What the night added to the bench:** the box walk's fixtures run on the bench (`upgrade_boxport.py`); a
wishlist fixture; opengist, komga and nextcloud fixtures fixed; the memory watch's load no longer errors on
box-fixture apps (R-653) and samples the app's own memory (decision 22, R-652); `files_may_change` from a
bind-mount tree hash (nextcloud's is the first entry carrying it).
**R-612 / R-613 — both fixed** (catalog `a5a729a`): wishlist 512M — 128M kills the first-boot seed every
run, sometimes after the Role/Group rows (so the sign-up lie is timing-dependent; it did NOT reproduce on
9202 tonight); 512M completes it (peak 312M). uptime-kuma `UPTIME_KUMA_DB_TYPE=sqlite` — before, the box
read `running` over `setup-database`; after, the real server (`/metrics` 401) and the database in the
volume. `apps/wishlist/r612-*`, `apps/uptime-kuma/r613-*`.
**A consequence of publishing tonight, seen on demo-hp:** romm now has three steps (the backfilled
5.0.0→5.3.0, 5.3.0→5.3.1, mariadb 11.4→11.8). The box cannot climb one step at a time yet (part 5), so the
press on 9201 took BOTH new steps at once — each tested alone, never together. It ended `done`, front door
200, 0 OOM kills after (`press9201/`).
## Part D — the chaos hour
@@ -103,12 +200,90 @@ seed 20260923, drawn in 3 attempt(s)
Setup: the six at their FROM pins, each seeded through its front door (A); one whole-box backup on 9202
(the restore rounds need a copy); seed B on docmost, romm and vikunja after it.
<!-- PART D ROUNDS -->
### The twelve rounds — the five things, and the data read back
Evidence per round: `night-2026-09-23/chaos/round-NN.{json,log}`, `round-NN-run.txt`; rounds 11–12 also
`round-NN-controller.log`. **When the accident landed** is stated, because in rounds 2–5 it did not land
where the schedule meant it to (below).
| # | action · app × accident | what the household saw (hu / en) | what the box did by itself | steady | events that fired | should have fired, did not | data read back |
|---|---|---|---|---|---|---|---|
| 1 | install · actualbudget × none | installed; badge none | deploy 202 → running | 26.6 s | app_deploy_started, app_deployed; **app_start_failed (warning)** 6 s in — its app cannot be named (see "instrument") | — | A ✓ |
| 2 | good update · docmost 0.95→0.96 (412 spaces) × whole-box backup | „Naprakész" / "Up to date" | safety-dump → pulling → copying (+76.6 s) → starting → verifying → **done 108 s** | 558 s (waited ~7 min for the catalog — instrument) | none | — | A ✓, B ✓ (paged re-read; the first read asked page 1 of 21) |
| 3 | restore · vikunja × controller kill (+28 s) | „Naprakész" / "Up to date" | restore 6 s, running; the kill landed AFTER it; controller back in 0.2 s | 31.5 s | none | — | A ✓, B ✓ |
| 4 | fail health · adventurelog × 1 GB hog | „A(z) adventurelog frissítése … nem sikerült. A doboz automatikusan visszaállította az előző változatot és az adatokat — semmi nem veszett el." / "The update of adventurelog … did not succeed. The box put back the previous version and its data automatically — nothing was lost." | verifying → **undoing +110.9 s → undone +155.1 s** (the hog had ended — instrument) | 605 s | health_change, **app_update_undone (warning)** ✓ | — | A ✓ |
| 5 | install · papra × disk to 3 GB free | installed | deploy → running in 27 s; the fill landed just after | 26.6 s | deploy pair | a disk warning: not measurable (the fill lasted ~20 s, the health job runs every 5 min) | A ✓ |
| 6 | good update · romm 5.3.0→5.3.1 × 1 GB hog (**during verifying**) | „Naprakész" / "Up to date" | … verifying → **done 55.8 s** | 61.7 s | none | — | A ✓ |
| 7 | restore · docmost × **power cut** (+56 s, after the 32 s restore) | „Naprakész" / "Up to date" | restore 32 s; cut; guest back, controller back 12 s, apps up | 103.5 s | controller_started | — | A ✓, B ✓ |
| 8 | cut-off undo copy · navidrome × whole-box backup (+23 s, during verifying) | „Megállítva — visszaállítás szükséges" + the hold sentence naming a restore / "Stopped — restore needed" + the same in English | verifying → undoing +94.9 → **failed 95.4 s**: the copy's marker missing → nothing poured back → HOLD | 101 s | **app_update_held (error)** ✓, then **app_start_failed** 11 s later | — (the second is extra: R-660) | held (A unreadable by design) → **the household's restore brought it back, A ✓** |
| 9 | fail health · vikunja 2.5→2.6 × **controller kill in verifying** | „A(z) vikunja frissítése … nem sikerült. A doboz automatikusan visszaállította …" / "… put back the previous version and its data automatically …" | killed at +58 s → *"update recovery: vikunja was interrupted in verifying … RESUMING the health wait"* → undoing → **undone 157.7 s** — with **`the undo copy will hold 0 named volume(s)`** (R-658) | 163 s | controller_started, **app_update_undone** ✓ | — | A ✓, B ✓ (the old version happens to run on migrated data) |
| 10 | remove · actualbudget × docker restart (+10 s) | the remove press answered **502** | stop done; remove lost to the restart; app stays installed and stopped | cap 1500 s | controller_started; app_start_failed + health_change every 5 min | — | app stopped (A not readable); the household must press again |
| 11 | cut-off undo copy · nextcloud × **a second Update (romm's engine step) at the same moment** | hold as round 8 (both languages); romm „Naprakész" | nextcloud → **failed/HOLD 112.6 s**; romm ran at the same time → **done** (no single-flight, §3b Q4) | 143 s | **app_update_held** ✓, app_start_failed 13 s later | — | romm A ✓; nextcloud held → **the named restore REFUSED → R-659, the stop rule** |
| 12 | remove · papra × none | not installed | stop → remove 200 → verified | 40.9 s | app_removed; health_change (the box-wide job: a held app + a stopped one — true) | — | removed clean (0 containers, 0 volumes) |
**The instrument, stated rather than hidden.** (1) Rounds 2 and 4 waited ~7 min for the drill commit on
the wrong file (an installed app's stack dir holds the APPLIED compose), so their accidents fired before the
update; round 3's and 5's actions ended before theirs. From round 5 the accident is armed at the press, and
from round 6 the wait reads the badge's own `catalog_images` (seconds). (2) The event column first came from
the controller's debug ring, which overflowed in the long rounds and MISSED both `app_update_held` events; it
was rebuilt from the controller's full log (`E8-events-*`) for rounds 7–12. Rounds 1–6 keep the ring's view,
and round 1's `app_start_failed` cannot be tied to an app: round 7's power cut took the container's earlier
log. From round 11 each round saves the whole controller log. (3) My stop rule first fired on round 8 because
a held app cannot answer; a hold is by design, so recovery — not the readback — is the test.
### The truth table (`08-alarm-ladder.md`)
| situation | the ladder says | fired? |
|---|---|---|
| an update undone (rounds 4, 9) | `app_update_undone`, warning, household + operator, one per app per outcome | ✓ both |
| an update held (rounds 8, 11) | `app_update_held`, error | ✓ both — and each was followed by an `app_start_failed` for the same moment (R-660: a held app is stopped by the product and should not ALSO read as down) |
| a controller kill / power cut / docker restart (3, 7, 9, 10) | `controller_started`, info; the boot grace suppresses app alarms for 90 s | ✓ controller_started each time; no app alarm inside the grace |
| a restore that finished (3, 7) | nothing (a refused or interrupted one: `restore_interrupted`) | ✓ nothing |
| a remove (12, teardown) | `app_removed`, info | ✓ |
| a disk filled to 1 GB above the floor (5) | a disk warning from the health job | not measurable — the fill lasted ~20 s |
| the box-wide health job with a held + a stopped app | `health_change`, warning | ✓ every 5 min |
### demo-hp 9201 — the standing apps Part C moved, pressed through the product
`night-2026-09-23/press9201/` (live catalog, a hub attached, controller v0.266.0; no whole-box backup pressed).
| app | from → to | phases | end | front door after | memory after |
|---|---|---|---|---|---|
| opengist | 1.13 → 1.15 | backing-up → … → done | **done in ~16 s** | `/healthcheck` 200 | — |
| kimai | mariadb 11.6 → 11.8 (engine alone) | … → done | **done in ~69 s** | `/en/login` 200 | — |
| romm | 5.3.0 → 5.3.1 **and** mariadb 11.4 → 11.8 in ONE press (no ladder on the box yet) | … → done | **done in ~90 s** | `/api/heartbeat` 200 | 600 MiB / 768, `oom_kill` 0, 0 restarts (checked 10 min later) |
Every standing app afterwards: 24 containers before, 24 after, all healthy (`E7-9201-after.txt`). Nothing
else on 9201 was touched.
## Teardown
<!-- TEARDOWN -->
**Machine — 9202:** every app of the night removed THROUGH THE PRODUCT (docmost, navidrome, vikunja, romm,
nextcloud, adventurelog, actualbudget; papra in round 12): 0 containers, 0 volumes, 0 undo copies left
(`E2-teardown-removes.*`). For the three RESTORED apps the remove answered `volumes_removed: []` while their
volumes did go (compose's `down --volumes` removes them by name) — the report is wrong, not the act (R-658).
The drive folders the product kept (R-442 on 9202, as every night) removed by name: navidrome, nextcloud, romm
(`E3-*`); older folders from earlier nights left as found. 54 test images removed by name before Part D (no
prune): `/var/lib/docker` 86 % → 24 %. `controller.yaml` restored and read back **identical** to
`.pre-night0923`; the catalog cache on 9202 reads live `5d49a11` (`E4-*`, `E5-*`). **9202 stays on controller
v0.267.0** (the scratch guest; self-update off).
**Machine — the bench:** LXC 9401 destroyed (`pct destroy --purge`, its hostname checked first); the Debian
template downloaded for it removed (`E6-*`).
**Machine — 9201:** only the three guarded Updates above; 24 containers before and after, all healthy.
**Host — demo-hp:** `pct list` = 9201, 9202 (as before); `local` 84.49 % before and after; `nvme-scratch`
7.45 % → 7.59 % and `local-lvm` 56.3 % → 57.7 % (the two guests' pulled images) (`00-*`, `E6-*`).
**Drill repo:** reset to live `main` `5d49a11b31fe`, `has_actions: false`, read back (`E5-*`).
**Hub:** not touched. **The floor was NOT raised** — see the three lines.
## Claims in the brief that turned out wrong, or held
<!-- CLAIMS -->
| the brief's claim | what the night found |
|---|---|
| the controller ignores an unknown `.felhom.yml` key (Part B spike) | **held** — v0.266.0 and v0.267.0 synced, deployed, probed and badged navidrome with `update_ladder:` exactly as without it |
| R-633's window closes R-626 | **held, as far as one measurement goes** — 390 s of events + a restart + a reboot: nothing came back. Closed by measurement, not by a named creator |
| 21 backfill records exist | **held** — 21 of 21; one commit (nextcloud's engine move) cited none and its record was found by name |
| wishlist's fault is memory (read from R-612) | **held, and sharpened** — 128M kills the seed every run; whether the sign-up then fails depends on WHEN the kill lands (it did not fail on 9202 tonight) |
| R-518: the page promises „csak néhány másodpercre" | **wrong** — v0.243.0 had already changed it to „általában néhány perc"; tonight states the measured ≈ 8 min |
| `check-image-resolvable.py` already resolves digests | **half** — it asks whether a ref EXISTS and throws the digest away; `image_digest.py` was written |
| one chaos round ≈ one accident inside one action | **not as drawn** — actions of 6–30 s ended before accidents at +28–56 s; four rounds' accidents landed outside the action (stated per round) |
| the chaos schedule's round-11 second update (first draft: adventurelog) | changed BEFORE round 1 to romm's engine step — adventurelog v0.13.0 cannot pass health |
@@ -10,3 +10,4 @@ kimai-db mariadb 11.6->11.8 moved in catalog 376b2c3 at 21:59
romm-db mariadb 11.4->11.8 moved in catalog 431cdec at 22:00
immich-machine-learning v3.0.3->v3.2.2 moved in catalog b82b7c6 at 22:01
22:04 9202 images removed by name before Part D (54 test/old images, no prune): /var/lib/docker 86% -> 24%
nextcloud 34.0.1->34.0.4 (files_may_change) moved in catalog 5d49a11 at 22:19
@@ -0,0 +1,16 @@
| app | from → to | class | bench verdict | box verdict | memory: own (cgroup) peak % | migration line | moved? |
|---|---|---|---|---|---|---|---|
| nextcloud | nextcloud 34.0.1 → 34.0.4 | MariaDB + file-leg | proven | proven (done) | 24.2 (100) | nextcloud / Upgrading nextcloud from 34.0.1.2 ... | moved `5d49a11` (files_may_change) |
| romm | romm 5.3.0 → 5.3.1 | MariaDB | proven | proven (done) | n/a — measured before the own-memory sample existed (cgroup 79.5) | romm / INFO: [RomM][init][2026-09-23 21:12:26][0 | moved `7ff4e68` |
| romm-engine | romm-db mariadb 11.4 → 11.8 (own edge) | MariaDB engine | proven | proven (done) | 78.0 (84) | romm / INFO: [RomM][init][2026-09-23 21:47:51][0 | moved `431cdec` |
| kimai | kimai-db mariadb 11.6 → 11.8 (own edge) | MariaDB engine | proven | proven (done) | 37.9 (100) | kimai / [OK] Already at the latest version ("DoctrineMigrations\Version2 | moved `376b2c3` |
| adventurelog | adventurelog v0.12.1 → v0.13.0 (both images) | PostgreSQL (PostGIS) | failed ×2 (frontend never healthy; then backend crash-loop on `download-countries`) | failed (undone at +196 s, drill timeout 90 s) | — | adventurelog / Apply all migrations: account, admin, adventures, aut | **NOT moved** — our template's frontend healthcheck points at `/nodejs/bin/node`, gone in v0.13.0; with it dropped, the backend's start-time internet download crash-looped (R-655) |
| immich | immich-machine-learning v3.0.3 → v3.2.2 | PostgreSQL (server unchanged) | proven | proven (done) | 51.4 (100) | immich-server / [Nest] 7 - 09/23/2026, 9:11:07 PM LO | moved `b82b7c6` |
| n8n | n8n 2.40.5 → 2.41.1 | SQLite | proven | proven (done) | 22.7 (47) | n8n / Migrations in progress, please do NOT stop the process. | moved `04b63db` |
| ghost | ghost 6.64.0 → 6.65.0 | SQLite | proven | proven (done) | 24.9 (43) | ghost / [2026-09-23 21:21:22] WARN Database state requires migration | moved `e6afab9` (first watch had no load — re-run) |
| komga | komga 1.25.0 → 1.27.1 | embedded | proven | proven (done) | 60.0 (77) | komga / 2026-09-23T21:35:41.616+02:00 INFO 1 --- [ main] o.f.core | moved `fc1becc` with 768M (memory_tight at 512M) |
| opengist | opengist 1.13 → 1.15 | SQLite | proven | proven (done) | 77.8 (100) | — | moved `657c83f` (pages under `/-/`, R-654) |
| wishlist | wishlist v0.66.0 → v0.67.1 | SQLite | proven | proven (done) | 35.9 (53) | wishlist / Prisma schema loaded from prisma/schema.prisma. | moved `1545c5f` (after R-612's 512M) |
| navidrome | navidrome 0.64.0 → 0.64.1 | SQLite | proven | proven (done) | 6.3 (9) | navidrome / time="2026-09-23T19:31:04Z" level=info msg="goose: no migrations | moved `76cc1f5` (second ladder step) |
| emby | emby 4.11.0.1 → 4.11.0.3 | embedded | proven | proven (done) | 4.5 (8) | emby / Info SqliteUserRepository: Sqlite compiler options: ATOMIC_INTRINSICS | moved `8d573ad` |
| gitea | gitea 1.27.0 → 1.27.3 | SQLite | inconclusive | inconclusive () | — | — | NOT moved — inconclusive on both: its web installer blocks a headless first account (R-624) |
@@ -0,0 +1,14 @@
| # | action · app | accident (when) | what the household saw | what the box did by itself | steady | events fired (R-620 witness) | data read back |
|---|---|---|---|---|---|---|---|
| 1 | install · actualbudget | none (armed at start) | hu: — ‖ en: — | deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} | 26.6 s | app_deploy_started (info), app_start_failed (warning), app_deployed (info) | {'A': True} |
| 2 | good_update · docmost | POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 22:30:30 (armed at start) | hu: Naprakész ‖ en: Up to date | safety-dump@0.0s → pulling@2.1s → copying@76.6s → starting@81.4s → verifying@92.4s → done@108.1s | INFO [stacks] update docmost: safety dump done (1 file(s)) [/mnt/sys_drive/felhom-data/backups/primary/docmost/db-dumps/pre-restore-20260923… | 558.3 s | none | {'A': True, 'B': 'True (re-read, paged)'} |
| 3 | restore · vikunja | kill -9 of the controller's PID: killed 11644 at 22:39:39 (armed at start) | hu: Naprakész ‖ en: Up to date | {'ok': True, 'why': None, 'snapshot_id': 'helyi', 'http': 'HTTP/2 302', 'seconds': 6.1, 'state_after': 'running', 'hold_… | INFO [backup] Recovery unit captured for docmost → /mnt/sys_drive/felhom-data/backups/primary/docmost (images=3, secrets-referenced=2, data_… | 31.5 s | none | {'A': True, 'B': True} |
| 4 | fail_health · adventurelog | 1 GB hog for 5 min: 5cd58c5c3e56c7b2fbb574e9be159f17cc25033c1d3a0e87f0b2692646d8660c chaos-hog 1003MiB / 25.29… (armed at start) | hu: Frissítés elérhető — ma / A(z) adventurelog frissítése 2026-09-23 22:49-kor nem sikerült. A doboz automatikusan visszaállította az előző… ‖ en: Update available — today / The update of adventurelog at 2026-09-23 22:49 did not succeed. The box put back the previous version and its … | safety-dump@0.0s → pulling@2.1s → copying@3.2s → starting@14.2s → verifying@20.5s → undoing@110.9s → undone@155.1s | INFO [stacks] update adventurelog: UNDONE in 44s — the previous version is running on the data from before the update (the app's health chec… | 605.2 s | health_change (warning), app_update_undone (warning) | {'A': True} |
| 5 | install · papra | filled /var/lib/docker to 3 GB free (floor 2 GB + 1 GB): /dev/loop1 69G 62G 3.0G 96% /var/lib/docker at 22:50:… (armed 22:50:17) | hu: — ‖ en: — | deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'} | 26.6 s | app_deploy_started (info), app_deployed (info) | {'A': True} |
| 6 | good_update · romm | 1 GB hog for 5 min: 7922307cf3f2b0e1bebb33d30a94d644382b7596a42d0024aec74d1a81d5762f chaos-hog 1004MiB / 25.29… (armed 22:51:04) | hu: Naprakész ‖ en: Up to date | safety-dump@0.0s → pulling@2.1s → copying@3.2s → starting@8.9s → verifying@20.0s → done@55.8s | INFO [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/romm not mounted — skipping ensure (held by drive gate) | 61.7 s | none | {'A': True} |
| 7 | restore · docmost | pct stop rc=0, pct start rc=0 at 22:53:24 (armed 22:52:28) | hu: Naprakész ‖ en: Up to date | {'ok': True, 'why': None, 'snapshot_id': 'helyi', 'http': 'HTTP/2 302', 'seconds': 32.5, 'state_after': 'running', 'hold… | INFO [backup] Recovery unit captured for romm → /mnt/felhom-drives/scratch_hdd/userdata/romm/backups/primary/romm (images=3, secrets-referen… | 103.5 s | controller_started (info) | {'A': True, 'B': True} |
| 8 | cutoff · navidrome | POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 22:54:51 (armed 22:54:28) | hu: Megállítva — visszaállítás szükséges / A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotb… ‖ en: Stopped — restore needed / The update did not succeed, and the automatic undo did not either. The data is as the new version left it. The… | safety-dump@0.0s → pulling@1.1s → copying@2.1s → starting@3.2s → verifying@3.7s → undoing@94.9s → failed@95.4s | INFO [backup] Recovery unit captured for papra → /mnt/sys_drive/felhom-data/backups/primary/papra (images=1, secrets-referenced=1, data_keys… | 101.2 s | app_start_failed (warning) | {'A': False} |
| 9 | fail_health · vikunja | kill -9 of the controller's PID: killed 3308 at 23:04:11 (armed 23:03:13) | hu: Frissítés elérhető — ma / A(z) vikunja frissítése 2026-09-23 23:05-kor nem sikerült. A doboz automatikusan visszaállította az előző vált… ‖ en: Update available — today / The update of vikunja at 2026-09-23 23:05 did not succeed. The box put back the previous version and its data … | safety-dump@0.0s → pulling@0.6s → copying@3.7s → verifying@4.2s → undoing@152.0s → undone@157.7s | INFO [stacks] update vikunja: UNDONE in 6s — the previous version is running on the data from before the update (the app's health check pass… | 163.4 s | app_update_undone (warning) | {'A': True, 'B': True} |
| 10 | remove · actualbudget | systemctl restart docker: rc=0 at 23:06:10 (armed 23:06:00) | hu: Naprakész ‖ en: Up to date | remove -> 502 | 1500.4 s | none | {'A': False} |
| 11 | cutoff · nextcloud | a second Update on romm -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissí… (armed 23:40:46) | hu: Megállítva — visszaállítás szükséges / A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotb… ‖ en: Stopped — restore needed / The update did not succeed, and the automatic undo did not either. The data is as the new version left it. The… | safety-dump@0.0s → pulling@2.1s → copying@3.7s → starting@13.2s → verifying@19.5s → undoing@109.9s → failed@112.6s | INFO [backup] Recovery unit captured for romm → /mnt/felhom-drives/scratch_hdd/userdata/romm/backups/primary/romm (images=3, secrets-referen… | 142.7 s | none | {'A': False} |
| 12 | remove · papra | none (armed 23:56:06) | hu: — ‖ en: — | remove -> 200 | 40.9 s | health_change (warning), app_removed (info) | None |
@@ -0,0 +1,62 @@
{
"dump": "/mnt/sys_drive/felhom-data/backups/primary/docmost/db-dumps/docmost-postgres.sql",
"cut": "whole=1923884 cut=961942\nur big database filler chaos-hour big database filler chaos-hour big database filler chaos-hour big database filler chaos-hour big database filler chaos-hour big database filler chaos-hour big databas\n0\n",
"refused_restore": {
"result": {
"http": "HTTP/2 302",
"location": [
"location: /backups/restore?flash=flash.restore.started"
],
"seconds": 6.1,
"state_after": "running",
"hold_after": null
},
"status": {
"ok": true,
"data": {
"running": false,
"op": "restore",
"stack": "docmost",
"started_at": "2026-09-23T22:09:04.469721192Z",
"last": {
"op": "restore",
"stack": "docmost",
"ok": false,
"message": "Visszaállítás sikertelen: A(z) docmost adatbázis-másolata csonka: nem ér véget, ahogy egy teljes másolat. A visszaállítás biztonsági okból nem indult el — az alkalmazás és az adatai érintetlenek.",
"finished_at": "2026-09-23T22:09:04.472772813Z"
},
"last_recent": true
}
}
},
"page_hu": [],
"page_en": [],
"untouched": true,
"readback_A": true,
"control_restore": {
"result": {
"http": "HTTP/2 302",
"seconds": 32.4,
"state_after": "running",
"hold_after": null
},
"status": {
"ok": true,
"data": {
"running": false,
"op": "restore",
"stack": "docmost",
"started_at": "2026-09-23T22:09:20.594671114Z",
"last": {
"op": "restore",
"stack": "docmost",
"ok": true,
"message": "A(z) docmost: 3 adatkötet és az adatbázis visszaállítva — az alkalmazás újraindult.",
"finished_at": "2026-09-23T22:09:51.02510124Z"
},
"last_recent": true
}
}
},
"control_readback_A": true
}
@@ -0,0 +1,39 @@
00:08:58 the unit's dump:
total 3748
drwxr-xr-x 2 root root 4096 Sep 23 20:54 .
drwxr-xr-x 5 root root 4096 Sep 23 20:39 ..
-rw-r--r-- 1 root root 1923884 Sep 23 20:54 docmost-postgres.sql
-rw-r--r-- 1 root root 1904362 Sep 23 20:37 pre-restore-20260923T203715Z-docmost-postgres.sql
00:09:01 before:
docmost About an hour ago
docmost-postgres About an hour ago
docmost-redis About an hour ago
/docmost 2026-09-23T21:06:20.610992037Z
/docmost-postgres 2026-09-23T21:06:20.683563334Z
00:09:04 cut:
whole=1923884 cut=961942
ur big database filler chaos-hour big database filler chaos-hour big database filler chaos-hour big database filler chaos-hour big database filler chaos-hour big database filler chaos-hour big databas
0
00:09:04 [R] restoring docmost from snapshot 'helyi' (of 1 offered)
00:09:04 [R] POST /backup/restore -> HTTP/2 302 ['location: /backups/restore?flash=flash.restore.started']
00:09:04 + 0.0s restore (False, None, None)
00:09:10 [R] after restore: state=running hold=None phase=None
00:09:13 restore-status after the refused restore: {"ok": true, "data": {"running": false, "op": "restore", "stack": "docmost", "started_at": "2026-09-23T22:09:04.469721192Z", "last": {"op": "restore", "stack": "docmost", "ok": false, "message": "Visszaállítás sikertelen: A(z) docmost adatbázis-másolata csonka: nem ér véget, ahogy egy teljes másolat. A visszaállítás biztonsági okból nem indult el — az alkalmazás és az adatai érintetlenek.", "finished_at": "2026-09-23T22:09:04.472772813Z"}, "last_recent": true}}
00:09:13 /backups (hu) carries the sentence: []
00:09:13 /backups (en) carries the sentence: []
00:09:16 after:
/docmost 2026-09-23T21:06:20.610992037Z
/docmost-postgres 2026-09-23T21:06:20.683563334Z
00:09:17 docmost: login as the seeded user http=200 ok=True
00:09:17 container start times unchanged: True; seed A: True
00:09:20 [R] restoring docmost from snapshot 'helyi' (of 1 offered)
00:09:20 [R] POST /backup/restore -> HTTP/2 302 ['location: /backups/restore?flash=flash.restore.started']
00:09:20 + 0.0s restore (True, None, None)
00:09:53 + 32.4s restore (False, None, None)
00:09:53 [R] after restore: state=running hold=None phase=None
00:09:57 docmost: login as the seeded user http=200 ok=True
00:09:57 control (whole copy): status {"ok": true, "data": {"running": false, "op": "restore", "stack": "docmost", "started_at": "2026-09-23T22:09:20.594671114Z", "last": {"op": "restore", "stack": "docmost", "ok": true, "message": "A(z) docmost: 3 adatkötet és az adatbázis visszaállítva — az alkalmazás újraindult.", "finished_at": "202; seed A True
@@ -0,0 +1,13 @@
{
"before": "docmost all=3 labeled=0 copies=0\nnavidrome all=2 labeled=0 copies=1\nvikunja all=2 labeled=0 copies=0\nromm all=3 labeled=3 copies=0\nnextcloud all=6 labeled=3 copies=3\nadventurelog all=2 labeled=2 copies=0\nactualbudget all=0 labeled=0 copies=0\n",
"remove": {
"docmost": "200",
"navidrome": "200",
"vikunja": "200",
"romm": "200",
"nextcloud": "200",
"adventurelog": "200",
"actualbudget": "200"
},
"after": "docmost containers=0 volumes= copies=0\nnavidrome containers=0 volumes= copies=0\nvikunja containers=0 volumes= copies=0\nromm containers=0 volumes= copies=0\nnextcloud containers=0 volumes= copies=0\nadventurelog containers=0 volumes= copies=0\nactualbudget containers=0 volumes= copies=0\n"
}
@@ -0,0 +1,45 @@
00:10:27 volumes before the removes:
docmost all=3 labeled=0 copies=0
navidrome all=2 labeled=0 copies=1
vikunja all=2 labeled=0 copies=0
romm all=3 labeled=3 copies=0
nextcloud all=6 labeled=3 copies=3
adventurelog all=2 labeled=2 copies=0
actualbudget all=0 labeled=0 copies=0
00:10:28 [X] stop -> 200 {'ok': True, 'message': 'Stack docmost stop completed'}
00:11:00 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'docmost', 'volumes_removed': [], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalmazás nem tárolt saj
00:11:08 [X] after remove: deployed=False leftovers='/opt/docker/stacks/docmost'
00:11:09 [X] stop -> 200 {'ok': True, 'message': 'Stack navidrome stop completed'}
00:11:14 [X] remove (with drive data) -> 409 {'ok': False, 'error': 'A(z) /mnt/felhom-drives/scratch_hdd/userdata/navidrome tárhely jelenleg nem elérhető — az alkalmazás nem távolítható el, amíg a meghajtó
00:11:14 [X] refused because the drive path cannot be resolved (R-442, fail-closed and right) — removing the app and KEEPING the drive data instead
00:11:40 [X] remove (keeping drive data) -> 200 {'ok': True, 'data': {'removed': 'navidrome', 'volumes_removed': [], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'backup_paths_removed': ['/mnt/felhom-d
00:11:49 [X] after remove: deployed=False leftovers='/opt/docker/stacks/navidrome'
00:11:49 [X] stop -> 200 {'ok': True, 'message': 'Stack vikunja stop completed'}
00:12:21 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'vikunja', 'volumes_removed': [], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalmazás nem tárolt saj
00:12:29 [X] after remove: deployed=False leftovers='/opt/docker/stacks/vikunja'
00:12:33 [X] stop -> 200 {'ok': True, 'message': 'Stack romm stop completed'}
00:12:38 [X] remove (with drive data) -> 409 {'ok': False, 'error': 'A(z) /mnt/felhom-drives/scratch_hdd/userdata/romm tárhely jelenleg nem elérhető — az alkalmazás nem távolítható el, amíg a meghajtó viss
00:12:38 [X] refused because the drive path cannot be resolved (R-442, fail-closed and right) — removing the app and KEEPING the drive data instead
00:13:05 [X] remove (keeping drive data) -> 200 {'ok': True, 'data': {'removed': 'romm', 'volumes_removed': ['romm_romm_config', 'romm_romm_db_data', 'romm_romm_redis_data'], 'hdd_paths_removed': [], 'hdd_pat
00:13:13 [X] after remove: deployed=False leftovers='/opt/docker/stacks/romm'
00:13:13 [X] stop -> 200 {'ok': True, 'message': 'Stack nextcloud stop completed'}
00:13:18 [X] remove (with drive data) -> 409 {'ok': False, 'error': 'A(z) /mnt/felhom-drives/scratch_hdd/userdata/nextcloud tárhely jelenleg nem elérhető — az alkalmazás nem távolítható el, amíg a meghajtó
00:13:18 [X] refused because the drive path cannot be resolved (R-442, fail-closed and right) — removing the app and KEEPING the drive data instead
00:13:46 [X] remove (keeping drive data) -> 200 {'ok': True, 'data': {'removed': 'nextcloud', 'volumes_removed': ['nextcloud_nextcloud_db_data', 'nextcloud_nextcloud_html', 'nextcloud_nextcloud_redis_data'],
00:13:55 [X] after remove: deployed=False leftovers='/opt/docker/stacks/nextcloud'
00:13:58 [X] stop -> 200 {'ok': True, 'message': 'Stack adventurelog stop completed'}
00:14:30 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'adventurelog', 'volumes_removed': ['adventurelog_adventurelog_media', 'adventurelog_adventurelog_postgres_data'], 'hdd_paths_r
00:14:39 [X] after remove: deployed=False leftovers='/opt/docker/stacks/adventurelog'
00:14:39 [X] stop -> 200 {'ok': True, 'message': 'Stack actualbudget stop completed'}
00:15:10 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'actualbudget', 'volumes_removed': [], 'hdd_paths_removed': [], 'hdd_paths_preserved': [], 'hdd_note': 'Az alkalmazás nem tárol
00:15:19 [X] after remove: deployed=False leftovers='/opt/docker/stacks/actualbudget'
00:15:22 after the removes (the product's own):
docmost containers=0 volumes= copies=0
navidrome containers=0 volumes= copies=0
vikunja containers=0 volumes= copies=0
romm containers=0 volumes= copies=0
nextcloud containers=0 volumes= copies=0
adventurelog containers=0 volumes= copies=0
actualbudget containers=0 volumes= copies=0
@@ -0,0 +1,2 @@
calibre-web documents downloads emby immich jellyfin komga media paperless-ngx plex radarr roms sonarr
169
@@ -0,0 +1,10 @@
git:
branch: main
repo_url: https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git
sync_interval: 15m
token: <redacted>
username: ""
hub:
0
IDENTICAL-to-pre-night0923
@@ -0,0 +1,2 @@
drill origin/main=5d49a11b31fe live main=5d49a11b31fe has_actions=False (00:16)
5d49a11 nextcloud: 34.0.1 -> 34.0.4 (proven on the bench AND on 9202, with its test record) — files_may_change
@@ -0,0 +1,9 @@
purging CT 9401 from related configurations..
destroyed
template-removed
VMID Status Lock Name
9201 running demo-hp
9202 running demo-hp-scratch
local dir active 40453376 34177084 4189176 84.49%
local-lvm lvmthin active 56487936 32610485 23877450 57.73%
nvme-scratch dir active 983379700 74638248 858714840 7.59%
@@ -0,0 +1,6 @@
VMID Status Lock Name
9201 running demo-hp
9202 running demo-hp-scratch
9401 running upgrade-harness
local dir active 40453376 34304068 4062192 84.80%
nvme-scratch dir active 983379700 106830612 826522476 10.86%
@@ -0,0 +1,24 @@
romm rommapp/romm:5.3.1 Up 56 minutes (healthy)
romm-db mariadb:11.8 Up 56 minutes (healthy)
kimai-db mariadb:11.8 Up 58 minutes (healthy)
opengist ghcr.io/thomiceli/opengist:1.15 Up 58 minutes (healthy)
felhom-controller gitea.dooplex.hu/admin/felhom-controller:0.266.0 Up 6 hours (healthy)
romm-redis redis:7-alpine Up 56 minutes (healthy)
privatebin privatebin/pdo:2.0.6 Up 10 hours (healthy)
paperless-webserver ghcr.io/paperless-ngx/paperless-ngx:2.20.15 Up 10 hours (healthy)
paperless-postgres postgres:16-alpine Up 10 hours (healthy)
paperless-redis redis:7-alpine Up 10 hours (healthy)
kimai kimai/kimai2:apache-2.57.0 Up 57 minutes (healthy)
docmost docmost/docmost:0.96.0 Up 10 hours (healthy)
docmost-postgres postgres:16-alpine Up 10 hours (healthy)
docmost-redis redis:7-alpine Up 10 hours (healthy)
calibre-web crocodilestick/calibre-web-automated:v4.0.6 Up 10 hours (healthy)
bookstack lscr.io/linuxserver/bookstack:26.05.5 Up 10 hours (healthy)
bookstack-db mariadb:12.3 Up 10 hours (healthy)
adventurelog ghcr.io/seanmorley15/adventurelog-backend:v0.12.1 Up 10 hours (healthy)
adventurelog-postgres postgis/postgis:16-3.5-alpine Up 10 hours (healthy)
adventurelog-frontend ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1 Up 10 hours (healthy)
bentopdf ghcr.io/alam00000/bentopdf:v2.8.6 Up 17 hours (healthy)
filebrowser gtstef/filebrowser:1.3.3-stable Up 3 weeks (healthy)
cloudflared cloudflare/cloudflared:2026.6.0 Up 3 weeks
traefik traefik:v3.6.7 Up 3 weeks
@@ -0,0 +1,40 @@
2026/09/23 20:53:44 main.go:335: [INFO] felhom-controller 0.267.0 starting (customer: demo-hp, domain: enkisfelhom.hu)
2026/09/23 20:53:50 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event controller_started (severity info) — further controller_started events are logged at DEBUG only
2026/09/23 20:56:04 undo.go:475: [INFO] [stacks] update navidrome: event app_update_held (hold recorded: true)
2026/09/23 20:56:04 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_update_held (severity error) — further app_update_held events are logged at DEBUG only
2026/09/23 20:56:15 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_start_failed (severity warning) — further app_start_failed events are logged at DEBUG only
2026/09/23 20:58:45 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event health_change (severity warning) — further health_change events are logged at DEBUG only
2026/09/23 21:01:45 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_start_failed (severity warning)
2026/09/23 21:03:45 notifier.go:1259: [DEBUG] notifier disabled: dropped event health_change (severity warning)
2026/09/23 21:04:19 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event controller_started (severity info) — further controller_started events are logged at DEBUG only
2026/09/23 21:05:51 undo.go:477: [INFO] [stacks] update vikunja: event app_update_undone
2026/09/23 21:05:51 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_update_undone (severity warning) — further app_update_undone events are logged at DEBUG only
2026/09/23 21:06:27 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event controller_started (severity info) — further controller_started events are logged at DEBUG only
2026/09/23 21:11:23 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_start_failed (severity warning) — further app_start_failed events are logged at DEBUG only
2026/09/23 21:11:23 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event health_change (severity warning) — further health_change events are logged at DEBUG only
2026/09/23 21:16:23 notifier.go:1259: [DEBUG] notifier disabled: dropped event health_change (severity warning)
2026/09/23 21:21:23 notifier.go:1259: [DEBUG] notifier disabled: dropped event health_change (severity warning)
2026/09/23 21:26:23 notifier.go:1259: [DEBUG] notifier disabled: dropped event health_change (severity warning)
2026/09/23 21:31:23 notifier.go:1259: [DEBUG] notifier disabled: dropped event health_change (severity warning)
2026/09/23 21:36:23 notifier.go:1259: [DEBUG] notifier disabled: dropped event health_change (severity warning)
2026/09/23 21:41:23 notifier.go:1259: [DEBUG] notifier disabled: dropped event health_change (severity warning)
2026/09/23 21:42:39 undo.go:475: [INFO] [stacks] update nextcloud: event app_update_held (hold recorded: true)
2026/09/23 21:42:39 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_update_held (severity error) — further app_update_held events are logged at DEBUG only
2026/09/23 21:42:52 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_start_failed (severity warning)
2026/09/23 21:46:23 notifier.go:1259: [DEBUG] notifier disabled: dropped event health_change (severity warning)
2026/09/23 21:51:23 notifier.go:1259: [DEBUG] notifier disabled: dropped event health_change (severity warning)
2026/09/23 21:56:23 notifier.go:1259: [DEBUG] notifier disabled: dropped event health_change (severity warning)
2026/09/23 21:56:38 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event app_removed (severity info) — further app_removed events are logged at DEBUG only
2026/09/23 22:01:23 notifier.go:1259: [DEBUG] notifier disabled: dropped event health_change (severity warning)
2026/09/23 22:06:23 notifier.go:1259: [DEBUG] notifier disabled: dropped event health_change (severity warning)
2026/09/23 22:09:22 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_start_failed (severity warning)
2026/09/23 22:11:00 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_removed (severity info)
2026/09/23 22:11:23 notifier.go:1259: [DEBUG] notifier disabled: dropped event health_change (severity warning)
2026/09/23 22:11:40 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_removed (severity info)
2026/09/23 22:11:53 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_start_failed (severity warning)
2026/09/23 22:12:21 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_removed (severity info)
2026/09/23 22:13:05 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_removed (severity info)
2026/09/23 22:13:46 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_removed (severity info)
2026/09/23 22:14:30 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_removed (severity info)
2026/09/23 22:15:10 notifier.go:1259: [DEBUG] notifier disabled: dropped event app_removed (severity info)
2026/09/23 22:15:53 notifier.go:1255: [WARN] notifier disabled (no hub configured): DROPPED event controller_started (severity info) — further controller_started events are logged at DEBUG only
@@ -0,0 +1,56 @@
{
"1": [],
"2": [],
"3": [],
"4": [],
"5": [],
"6": [],
"7": [
"20:53:50 controller_started (info)"
],
"8": [
"20:56:04 app_update_held (error)",
"20:56:15 app_start_failed (warning)",
"20:58:45 health_change (warning)",
"21:01:45 app_start_failed (warning)"
],
"9": [
"21:03:45 health_change (warning)",
"21:04:19 controller_started (info)",
"21:05:51 app_update_undone (warning)"
],
"10": [
"21:06:27 controller_started (info)",
"21:11:23 app_start_failed (warning)",
"21:11:23 health_change (warning)",
"21:16:23 health_change (warning)",
"21:21:23 health_change (warning)",
"21:26:23 health_change (warning)",
"21:31:23 health_change (warning)",
"21:36:23 health_change (warning)"
],
"11": [
"21:41:23 health_change (warning)",
"21:42:39 app_update_held (error)",
"21:42:52 app_start_failed (warning)",
"21:46:23 health_change (warning)",
"21:51:23 health_change (warning)"
],
"12": [
"21:56:23 health_change (warning)",
"21:56:38 app_removed (info)",
"22:01:23 health_change (warning)",
"22:06:23 health_change (warning)",
"22:09:22 app_start_failed (warning)",
"22:11:00 app_removed (info)",
"22:11:23 health_change (warning)",
"22:11:40 app_removed (info)",
"22:11:53 app_start_failed (warning)",
"22:12:21 app_removed (info)",
"22:13:05 app_removed (info)",
"22:13:46 app_removed (info)",
"22:14:30 app_removed (info)",
"22:15:10 app_removed (info)",
"22:15:53 controller_started (info)"
]
}
@@ -28,3 +28,14 @@
| 21:41 | C move | **wishlist v0.66.0→v0.67.1** + **opengist 1.13→1.15** `657c83f` (CI 925) | apps/wishlist, apps/opengist |
| 21:45 | C move | **navidrome 0.64.0→0.64.1** `76cc1f5` — second step on its ladder | apps/navidrome |
| 21:40 | C not moved | **adventurelog v0.13.0**: backend + data fine, the NEW frontend's own healthcheck (`/health` → backend `/health/`) never passes in the template's network shape — box UNDID the update (under the 90 s drill timeout), bench never healthy in 420 s | apps/adventurelog |
| 21:58–22:18 | C moves | kimai-db 11.6→11.8 `376b2c3`, romm-db 11.4→11.8 `431cdec` (each its own edge; the engine says "already upgraded to 11.8.9"), immich-ML v3.0.3→v3.2.2 `b82b7c6`, emby `8d573ad`, n8n `04b63db`, komga + 768M `fc1becc`, nextcloud (files_may_change) `5d49a11` — **Part C done: 12 steps, 11 apps** | C-moves.txt |
| 22:05 | D0 | chaos schedule + app table committed BEFORE round 1 (`cf8dec8`); round 11's second update changed to romm's engine step before round 1 | D0-schedule.txt |
| 22:25 | D setup | six deployed + seeded (A), whole-box backup 95 s, seed B (docmost, vikunja; romm's B route 404 on 5.3.0); docmost made big with ONE login (412 spaces, 11 MB — its login is rate-limited); nextcloud rebuilt clean after **R-657** | chaos/00-* |
| 22:29–23:57 | D rounds | 12 rounds run (chaos/round-NN.*); rounds 2–4 accidents landed early (the runner waited on the wrong file for the catalog — fixed: armed at the press); round 8 held → household restore brought it back, A read; round 9 kill mid-verify → resumed → UNDONE, A+B read; round 11 held → **the named restore REFUSED → R-659 (P1), the stop rule** | chaos/, D-rounds.md |
| 23:12 | D finding | restored apps' volumes carry NO compose label → the undo copies nothing (**R-658, P1**), with a control (never-restored apps labeled) | chaos/09-volumes-unlabeled-after-restore.txt |
| 23:21 | D 9201 | guarded Update on the HP box's standing apps moved tonight: opengist → 1.15 `done`, kimai-db → 11.8 `done`, romm → 5.3.1 + 11.8 in ONE press `done`; front doors 200; romm 0 OOM kills after | press9201/ |
| 00:10 | E1 R-640 live | the household's restore refused a half-length docmost copy („…csonka… nem indult el — az alkalmazás és az adatai érintetlenek"); container start times unchanged; A read; the whole copy then restored | E1-r640-live.* |
| 00:15 | E teardown | 9202: all apps removed through the product (0 containers/volumes/copies; restored apps' remove answered `volumes_removed: []` though the volumes went — R-658), kept drive folders removed by name, config identical, live catalog; drill reset `5d49a11`, has_actions false; bench 9401 destroyed + template removed; 9201 24/24 healthy | E2–E7 |
| 00:20 | E events | the debug ring missed both `app_update_held` — rebuilt from the controller's full log (`E8-*`); R-660 (a held app also raises app_start_failed) | E8-* |
| 00:30 | E floor | **NOT raised** (brief's rule: Part D found R-658/R-659, both pre-existing); recommendation to raise → the operator's one question in STATUS | STATUS.md |
| 00:45 | E docs | DRILL record, `09` §3 21–23 + §6.4 + §6.1a, capability map, rotation tick (opengist), register 330 → 336 (R-651..R-660 opened; R-650, R-640, R-499, R-626 closed), CONTEXT, REPORT, STATUS | — |
@@ -0,0 +1,47 @@
[19:24:31] MV-adventurelog: deploying adventurelog at FROM {'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.12.1', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1'}
[19:27:32] FROM settled=True in 124.8s :: {"adventurelog": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "adventurelog-frontend": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "adventurelog-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[19:27:32] fixture: the BOX walk's own (Django), through upgrade_boxport
[19:27:36] adventurelog: createsuperuser :: Superuser created successfully.
[19:27:39] adventurelog: seeded superuser drill3cc072
[19:27:43] adventurelog: readback of the seeded account found=True
[19:27:43] C1 (seed reads back BEFORE): True
[19:27:44] MV-adventurelog: swapping to TO {'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.13.0', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0'}
[19:28:25] TO up -d rc=0
[19:35:29] TO settled=False in 423.9s :: {"adventurelog": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "adventurelog-frontend": {"status": "running", "health": "unhealthy", "restarts": 0, "exit": 0}, "adventurelog-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[19:35:29] migration lines observed: 6
[19:35:34] adventurelog: readback of the seeded account found=True
[19:35:34] RESULT (seed reads back AFTER): True
[19:35:34] MV-adventurelog: ABORT — putting the FROM images back
[19:36:15] adventurelog: readback of the seeded account found=True
[19:36:15] ABORT: app came back in 31.4s; data present=True
{
"harness_version": 3,
"edge": "MV-adventurelog",
"app": "adventurelog",
"note": "night 2026-09-23 within-a-major move: adventurelog=ghcr.io/seanmorley15/adventurelog-backend:v0.13.0, adventurelog-frontend=ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0",
"from": {
"adventurelog": "ghcr.io/seanmorley15/adventurelog-backend:v0.12.1",
"adventurelog-postgres": "postgis/postgis:16-3.5-alpine",
"adventurelog-frontend": "ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1"
},
"to": {
"adventurelog": "ghcr.io/seanmorley15/adventurelog-backend:v0.13.0",
"adventurelog-postgres": "postgis/postgis:16-3.5-alpine",
"adventurelog-frontend": "ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0"
},
"verdict": "failed",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": false,
"migration_observed": "\u001b[2Kadventurelog | Apply all migrations: account, admin, adventures, auth, authtoken, billing, contenttypes, integrations, invitations, mfa, sessions, sites, socialaccount, users, worldtravel",
"abort": "starts-and-serves",
"abort_detail": null,
"engine_state_after": null,
"memory": null,
"marks": [],
"duration_s": 423.9,
"measured_at": "2026-09-23T19:36:15Z",
"evidence": "evidence/MV-adventurelog",
"files_changed": [],
"total_s": 703.4
}
@@ -0,0 +1,20 @@
{
"adventurelog": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"adventurelog-frontend": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"adventurelog-postgres": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,102 @@
adventurelog-frontend | Listening on http://0.0.0.0:3000
adventurelog-postgres | The files belonging to this database system will be owned by user "postgres".
adventurelog-postgres | This user must also own the server process.
adventurelog-postgres |
adventurelog-postgres | The database cluster will be initialized with locale "en_US.utf8".
adventurelog-postgres | The default database encoding has accordingly been set to "UTF8".
adventurelog-postgres | The default text search configuration will be set to "english".
adventurelog-postgres |
adventurelog-postgres | Data page checksums are disabled.
adventurelog-postgres |
adventurelog-postgres | fixing permissions on existing directory /var/lib/postgresql/data ... ok
adventurelog-postgres | creating subdirectories ... ok
adventurelog-postgres | selecting dynamic shared memory implementation ... posix
adventurelog-postgres | selecting default max_connections ... 100
adventurelog-postgres | selecting default shared_buffers ... 128MB
adventurelog-postgres | selecting default time zone ... Europe/Budapest
adventurelog-postgres | creating configuration files ... ok
adventurelog-postgres | running bootstrap script ... ok
adventurelog-postgres | sh: locale: not found
adventurelog-postgres | 2026-09-23 21:25:17.370 CEST [35] WARNING: no usable system locales were found
adventurelog-postgres | performing post-bootstrap initialization ... ok
adventurelog-postgres | syncing data to disk ... ok
adventurelog-postgres |
adventurelog-postgres |
adventurelog-postgres | Success. You can now start the database server using:
adventurelog-postgres |
adventurelog-postgres | pg_ctl -D /var/lib/postgresql/data -l logfile start
adventurelog-postgres |
adventurelog-postgres | initdb: warning: enabling "trust" authentication for local connections
adventurelog-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
adventurelog-postgres | waiting for server to start....2026-09-23 21:25:18.984 CEST [41] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
adventurelog-postgres | 2026-09-23 21:25:18.990 CEST [41] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
adventurelog-postgres | 2026-09-23 21:25:19.003 CEST [44] LOG: database system was shut down at 2026-09-23 21:25:18 CEST
adventurelog-postgres | 2026-09-23 21:25:19.015 CEST [41] LOG: database system is ready to accept connections
adventurelog-postgres | done
adventurelog-postgres | server started
adventurelog-postgres | CREATE DATABASE
adventurelog-postgres |
adventurelog-postgres |
adventurelog-postgres | /usr/local/bin/docker-entrypoint.sh: sourcing /docker-entrypoint-initdb.d/10_postgis.sh
adventurelog-postgres | CREATE DATABASE
adventurelog-postgres | Loading PostGIS extensions into template_postgis
adventurelog-postgres | CREATE EXTENSION
adventurelog-postgres | CREATE EXTENSION
adventurelog-postgres | You are now connected to database "template_postgis" as user "adventurelog".
adventurelog-postgres | DO
adventurelog-postgres | Loading PostGIS extensions into adventurelog
adventurelog-postgres | CREATE EXTENSION
adventurelog-postgres | CREATE EXTENSION
adventurelog-postgres | You are now connected to database "adventurelog" as user "adventurelog".
adventurelog-postgres | DO
adventurelog-postgres |
adventurelog-postgres | waiting for server to shut down....2026-09-23 21:25:24.162 CEST [41] LOG: received fast shutdown request
adventurelog-postgres | 2026-09-23 21:25:24.168 CEST [41] LOG: aborting any active transactions
adventurelog-postgres | 2026-09-23 21:25:24.172 CEST [41] LOG: background worker "logical replication launcher" (PID 47) exited with exit code 1
adventurelog-postgres | 2026-09-23 21:25:24.172 CEST [42] LOG: shutting down
adventurelog-postgres | 2026-09-23 21:25:24.184 CEST [42] LOG: checkpoint starting: shutdown immediate
adventurelog-postgres | ..2026-09-23 21:25:26.474 CEST [42] LOG: checkpoint complete: wrote 4465 buffers (27.3%); 0 WAL file(s) added, 0 removed, 2 recycled; write=0.089 s, sync=2.133 s, total=2.302 s; sync files=963, longest=0.026 s, average=0.003 s; distance=34851 kB, estimate=34851 kB; lsn=0/36FFEE8, redo lsn=0/36FFEE8
adventurelog-postgres | 2026-09-23 21:25:26.501 CEST [41] LOG: database system is shut down
adventurelog-postgres | done
adventurelog-postgres | server stopped
adventurelog-postgres |
adventurelog-postgres | PostgreSQL init process complete; ready for start up.
adventurelog-postgres |
adventurelog-postgres | 2026-09-23 21:25:26.619 CEST [1] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
adventurelog-postgres | 2026-09-23 21:25:26.619 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
adventurelog-postgres | 2026-09-23 21:25:26.619 CEST [1] LOG: listening on IPv6 address "::", port 5432
adventurelog-postgres | 2026-09-23 21:25:26.635 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
adventurelog-postgres | 2026-09-23 21:25:26.655 CEST [65] LOG: database system was shut down at 2026-09-23 21:25:26 CEST
adventurelog-postgres | 2026-09-23 21:25:26.670 CEST [1] LOG: database system is ready to accept connections
adventurelog-postgres | 2026-09-23 21:30:26.401 CEST [63] LOG: checkpoint starting: time
adventurelog-postgres | 2026-09-23 21:34:56.159 CEST [63] LOG: checkpoint complete: wrote 6010 buffers (36.7%); 0 WAL file(s) added, 0 removed, 8 recycled; write=269.655 s, sync=0.064 s, total=269.758 s; sync files=490, longest=0.013 s, average=0.001 s; distance=129719 kB, estimate=129719 kB; lsn=0/F215008, redo lsn=0/B5ADEC0
adventurelog | PostgreSQL is up - continuing...
adventurelog | Operations to perform:
adventurelog | Apply all migrations: account, admin, adventures, auth, authtoken, contenttypes, integrations, invitations, mfa, sessions, sites, socialaccount, users, worldtravel
adventurelog | Running migrations:
adventurelog | No migrations to apply.
adventurelog | Latest data already imported.
adventurelog | █████╗ ██████╗ ██╗ ██╗███████╗███╗ ██╗████████╗██╗ ██╗██████╗ ███████╗██╗ ██████╗ ██████╗
adventurelog | ██╔══██╗██╔══██╗██║ ██║██╔════╝████╗ ██║╚══██╔══╝██║ ██║██╔══██╗██╔════╝██║ ██╔═══██╗██╔════╝
adventurelog | ███████║██║ ██║██║ ██║█████╗ ██╔██╗ ██║ ██║ ██║ ██║██████╔╝█████╗ ██║ ██║ ██║██║ ███╗
adventurelog | ██╔══██║██║ ██║╚██╗ ██╔╝██╔══╝ ██║╚██╗██║ ██║ ██║ ██║██╔══██╗██╔══╝ ██║ ██║ ██║██║ ██║
adventurelog | ██║ ██║██████╔╝ ╚████╔╝ ███████╗██║ ╚████║ ██║ ╚██████╔╝██║ ██║███████╗███████╗╚██████╔╝╚██████╔╝
adventurelog | ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝ ╚═════╝ ╚═════╝
adventurelog | “Go confidently in the direction of your dreams! Live the life you've imagined.” ― Henry David Thoreau
adventurelog | 2026-09-23 19:35:46,046 CRIT Supervisor is running as root. Privileges were not dropped because no user is specified in the config file. If you intend to run as root, you can set user=root in the config file to avoid this message.
adventurelog | 2026-09-23 19:35:46,050 INFO supervisord started with pid 1
adventurelog | 2026-09-23 19:35:47,054 INFO spawned: 'gunicorn' with pid 23
adventurelog | 2026-09-23 19:35:47,057 INFO spawned: 'memcached' with pid 24
adventurelog | 2026-09-23 19:35:47,063 INFO spawned: 'nginx' with pid 25
adventurelog | 2026-09-23 19:35:47,066 INFO spawned: 'sync_visited_regions' with pid 26
adventurelog | [2026-09-23 19:35:47 +0000] [23] [INFO] Starting gunicorn 23.0.0
adventurelog | [2026-09-23 19:35:47 +0000] [23] [INFO] Listening at: http://[::]:8000 (23)
adventurelog | [2026-09-23 19:35:47 +0000] [23] [INFO] Using worker: sync
adventurelog | [2026-09-23 19:35:47 +0000] [37] [INFO] Booting worker with pid: 37
adventurelog | [2026-09-23 19:35:47 +0000] [38] [INFO] Booting worker with pid: 38
adventurelog | 2026-09-23 19:35:49,009 INFO success: gunicorn entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | 2026-09-23 19:35:49,009 INFO success: memcached entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | 2026-09-23 19:35:49,009 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | 2026-09-23 19:35:49,009 INFO success: sync_visited_regions entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | Starting periodic sync worker for midnight background jobs...
adventurelog | Next sync scheduled in 15850s (~4.40h) at UTC midnight
@@ -0,0 +1,6 @@
adventurelog | Apply all migrations: account, admin, adventures, auth, authtoken, billing, contenttypes, integrations, invitations, mfa, sessions, sites, socialaccount, users, worldtravel
adventurelog | Running migrations:
adventurelog | Applying adventures.0072_trail_wanderer_author_fields... OK
adventurelog | Applying adventures.0073_pointfield_geography... OK
adventurelog | Applying adventures.0074_contentimage_source_metadata... OK
adventurelog | Applying adventures.0075_make_visit_dates_timezone_aware... OK
@@ -0,0 +1,16 @@
[19:24:31] MV-adventurelog: deploying adventurelog at FROM {'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.12.1', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1'}
[19:27:32] FROM settled=True in 124.8s :: {"adventurelog": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "adventurelog-frontend": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "adventurelog-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[19:27:32] fixture: the BOX walk's own (Django), through upgrade_boxport
[19:27:36] adventurelog: createsuperuser :: Superuser created successfully.
[19:27:39] adventurelog: seeded superuser drill3cc072
[19:27:43] adventurelog: readback of the seeded account found=True
[19:27:43] C1 (seed reads back BEFORE): True
[19:27:44] MV-adventurelog: swapping to TO {'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.13.0', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0'}
[19:28:25] TO up -d rc=0
[19:35:29] TO settled=False in 423.9s :: {"adventurelog": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "adventurelog-frontend": {"status": "running", "health": "unhealthy", "restarts": 0, "exit": 0}, "adventurelog-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[19:35:29] migration lines observed: 6
[19:35:34] adventurelog: readback of the seeded account found=True
[19:35:34] RESULT (seed reads back AFTER): True
[19:35:34] MV-adventurelog: ABORT — putting the FROM images back
[19:36:15] adventurelog: readback of the seeded account found=True
[19:36:15] ABORT: app came back in 31.4s; data present=True
@@ -0,0 +1,110 @@
adventurelog | PostgreSQL is up - continuing...
adventurelog | Operations to perform:
adventurelog | Apply all migrations: account, admin, adventures, auth, authtoken, billing, contenttypes, integrations, invitations, mfa, sessions, sites, socialaccount, users, worldtravel
adventurelog | Running migrations:
adventurelog | Applying adventures.0072_trail_wanderer_author_fields... OK
adventurelog | Applying adventures.0073_pointfield_geography... OK
adventurelog | Applying adventures.0074_contentimage_source_metadata... OK
adventurelog | Applying adventures.0075_make_visit_dates_timezone_aware... OK
adventurelog | Applying adventures.0076_normalize_all_day_visit_end_dates... OK
adventurelog | Applying billing.0001_initial... OK
adventurelog | Applying integrations.0007_wandererintegration_api_key_auth... OK
adventurelog | Applying integrations.0008_endurainintegration... OK
adventurelog | Applying integrations.0009_alter_endurainintegration_auth_method... OK
adventurelog | Applying worldtravel.0019_pointfield_coordinates... OK
adventurelog | Running download-countries (first boot may take several minutes; ensure ~2GB RAM is available)...
adventurelog | Latest data already imported.
adventurelog | █████╗ ██████╗ ██╗ ██╗███████╗███╗ ██╗████████╗██╗ ██╗██████╗ ███████╗██╗ ██████╗ ██████╗
adventurelog | ██╔══██╗██╔══██╗██║ ██║██╔════╝████╗ ██║╚══██╔══╝██║ ██║██╔══██╗██╔════╝██║ ██╔═══██╗██╔════╝
adventurelog | ███████║██║ ██║██║ ██║█████╗ ██╔██╗ ██║ ██║ ██║ ██║██████╔╝█████╗ ██║ ██║ ██║██║ ███╗
adventurelog | ██╔══██║██║ ██║╚██╗ ██╔╝██╔══╝ ██║╚██╗██║ ██║ ██║ ██║██╔══██╗██╔══╝ ██║ ██║ ██║██║ ██║
adventurelog | ██║ ██║██████╔╝ ╚████╔╝ ███████╗██║ ╚████║ ██║ ╚██████╔╝██║ ██║███████╗███████╗╚██████╔╝╚██████╔╝
adventurelog | ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝ ╚═════╝ ╚═════╝
adventurelog | “Go confidently in the direction of your dreams! Live the life you've imagined.” ― Henry David Thoreau
adventurelog | 2026-09-23 19:32:01,030 CRIT Supervisor is running as root. Privileges were not dropped because no user is specified in the config file. If you intend to run as root, you can set user=root in the config file to avoid this message.
adventurelog | 2026-09-23 19:32:01,032 INFO supervisord started with pid 1
adventurelog | 2026-09-23 19:32:02,036 INFO spawned: 'cron' with pid 90
adventurelog | 2026-09-23 19:32:02,040 INFO spawned: 'gunicorn' with pid 91
adventurelog | 2026-09-23 19:32:02,044 INFO spawned: 'memcached' with pid 92
adventurelog | 2026-09-23 19:32:02,047 INFO spawned: 'nginx' with pid 93
adventurelog | [2026-09-23 19:32:02 +0000] [91] [INFO] Starting gunicorn 23.0.0
adventurelog | [2026-09-23 19:32:02 +0000] [91] [INFO] Listening at: http://[::]:8000 (91)
adventurelog | [2026-09-23 19:32:02 +0000] [91] [INFO] Using worker: sync
adventurelog | [2026-09-23 19:32:02 +0000] [104] [INFO] Booting worker with pid: 104
adventurelog | [2026-09-23 19:32:02 +0000] [105] [INFO] Booting worker with pid: 105
adventurelog | 2026-09-23 19:32:03,706 INFO success: cron entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | 2026-09-23 19:32:03,706 INFO success: gunicorn entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | 2026-09-23 19:32:03,706 INFO success: memcached entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | 2026-09-23 19:32:03,706 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog-postgres | The files belonging to this database system will be owned by user "postgres".
adventurelog-postgres | This user must also own the server process.
adventurelog-postgres |
adventurelog-postgres | The database cluster will be initialized with locale "en_US.utf8".
adventurelog-postgres | The default database encoding has accordingly been set to "UTF8".
adventurelog-postgres | The default text search configuration will be set to "english".
adventurelog-postgres |
adventurelog-postgres | Data page checksums are disabled.
adventurelog-postgres |
adventurelog-postgres | fixing permissions on existing directory /var/lib/postgresql/data ... ok
adventurelog-postgres | creating subdirectories ... ok
adventurelog-postgres | selecting dynamic shared memory implementation ... posix
adventurelog-postgres | selecting default max_connections ... 100
adventurelog-postgres | selecting default shared_buffers ... 128MB
adventurelog-postgres | selecting default time zone ... Europe/Budapest
adventurelog-postgres | creating configuration files ... ok
adventurelog-postgres | running bootstrap script ... ok
adventurelog-postgres | sh: locale: not found
adventurelog-postgres | 2026-09-23 21:25:17.370 CEST [35] WARNING: no usable system locales were found
adventurelog-postgres | performing post-bootstrap initialization ... ok
adventurelog-postgres | syncing data to disk ... ok
adventurelog-postgres |
adventurelog-postgres |
adventurelog-postgres | Success. You can now start the database server using:
adventurelog-postgres |
adventurelog-postgres | pg_ctl -D /var/lib/postgresql/data -l logfile start
adventurelog-postgres |
adventurelog-postgres | initdb: warning: enabling "trust" authentication for local connections
adventurelog-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
adventurelog-postgres | waiting for server to start....2026-09-23 21:25:18.984 CEST [41] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
adventurelog-postgres | 2026-09-23 21:25:18.990 CEST [41] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
adventurelog-postgres | 2026-09-23 21:25:19.003 CEST [44] LOG: database system was shut down at 2026-09-23 21:25:18 CEST
adventurelog-postgres | 2026-09-23 21:25:19.015 CEST [41] LOG: database system is ready to accept connections
adventurelog-postgres | done
adventurelog-postgres | server started
adventurelog-postgres | CREATE DATABASE
adventurelog-postgres |
adventurelog-postgres |
adventurelog-postgres | /usr/local/bin/docker-entrypoint.sh: sourcing /docker-entrypoint-initdb.d/10_postgis.sh
adventurelog-postgres | CREATE DATABASE
adventurelog-postgres | Loading PostGIS extensions into template_postgis
adventurelog-postgres | CREATE EXTENSION
adventurelog-postgres | CREATE EXTENSION
adventurelog-postgres | You are now connected to database "template_postgis" as user "adventurelog".
adventurelog-postgres | DO
adventurelog-postgres | Loading PostGIS extensions into adventurelog
adventurelog-postgres | CREATE EXTENSION
adventurelog-postgres | CREATE EXTENSION
adventurelog-postgres | You are now connected to database "adventurelog" as user "adventurelog".
adventurelog-frontend | Listening on http://0.0.0.0:3000
adventurelog-postgres | DO
adventurelog-postgres |
adventurelog-postgres | waiting for server to shut down....2026-09-23 21:25:24.162 CEST [41] LOG: received fast shutdown request
adventurelog-postgres | 2026-09-23 21:25:24.168 CEST [41] LOG: aborting any active transactions
adventurelog-postgres | 2026-09-23 21:25:24.172 CEST [41] LOG: background worker "logical replication launcher" (PID 47) exited with exit code 1
adventurelog-postgres | 2026-09-23 21:25:24.172 CEST [42] LOG: shutting down
adventurelog-postgres | 2026-09-23 21:25:24.184 CEST [42] LOG: checkpoint starting: shutdown immediate
adventurelog-postgres | ..2026-09-23 21:25:26.474 CEST [42] LOG: checkpoint complete: wrote 4465 buffers (27.3%); 0 WAL file(s) added, 0 removed, 2 recycled; write=0.089 s, sync=2.133 s, total=2.302 s; sync files=963, longest=0.026 s, average=0.003 s; distance=34851 kB, estimate=34851 kB; lsn=0/36FFEE8, redo lsn=0/36FFEE8
adventurelog-postgres | 2026-09-23 21:25:26.501 CEST [41] LOG: database system is shut down
adventurelog-postgres | done
adventurelog-postgres | server stopped
adventurelog-postgres |
adventurelog-postgres | PostgreSQL init process complete; ready for start up.
adventurelog-postgres |
adventurelog-postgres | 2026-09-23 21:25:26.619 CEST [1] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
adventurelog-postgres | 2026-09-23 21:25:26.619 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
adventurelog-postgres | 2026-09-23 21:25:26.619 CEST [1] LOG: listening on IPv6 address "::", port 5432
adventurelog-postgres | 2026-09-23 21:25:26.635 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
adventurelog-postgres | 2026-09-23 21:25:26.655 CEST [65] LOG: database system was shut down at 2026-09-23 21:25:26 CEST
adventurelog-postgres | 2026-09-23 21:25:26.670 CEST [1] LOG: database system is ready to accept connections
adventurelog-postgres | 2026-09-23 21:30:26.401 CEST [63] LOG: checkpoint starting: time
adventurelog-postgres | 2026-09-23 21:34:56.159 CEST [63] LOG: checkpoint complete: wrote 6010 buffers (36.7%); 0 WAL file(s) added, 0 removed, 8 recycled; write=269.655 s, sync=0.064 s, total=269.758 s; sync files=490, longest=0.013 s, average=0.001 s; distance=129719 kB, estimate=129719 kB; lsn=0/F215008, redo lsn=0/B5ADEC0
@@ -0,0 +1,20 @@
{
"adventurelog": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"adventurelog-frontend": {
"status": "running",
"health": "unhealthy",
"restarts": 0,
"exit": 0
},
"adventurelog-postgres": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,31 @@
{
"harness_version": 3,
"edge": "MV-adventurelog",
"app": "adventurelog",
"note": "night 2026-09-23 within-a-major move: adventurelog=ghcr.io/seanmorley15/adventurelog-backend:v0.13.0, adventurelog-frontend=ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0",
"from": {
"adventurelog": "ghcr.io/seanmorley15/adventurelog-backend:v0.12.1",
"adventurelog-postgres": "postgis/postgis:16-3.5-alpine",
"adventurelog-frontend": "ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1"
},
"to": {
"adventurelog": "ghcr.io/seanmorley15/adventurelog-backend:v0.13.0",
"adventurelog-postgres": "postgis/postgis:16-3.5-alpine",
"adventurelog-frontend": "ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0"
},
"verdict": "failed",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": false,
"migration_observed": "\u001b[2Kadventurelog | Apply all migrations: account, admin, adventures, auth, authtoken, billing, contenttypes, integrations, invitations, mfa, sessions, sites, socialaccount, users, worldtravel",
"abort": "starts-and-serves",
"abort_detail": null,
"engine_state_after": null,
"memory": null,
"marks": [],
"duration_s": 423.9,
"measured_at": "2026-09-23T19:36:15Z",
"evidence": "evidence/MV-adventurelog",
"files_changed": [],
"total_s": 703.4
}
@@ -1,19 +1,19 @@
[19:24:31] MV-adventurelog: deploying adventurelog at FROM {'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.12.1', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1'}
[19:27:32] FROM settled=True in 124.8s :: {"adventurelog": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "adventurelog-frontend": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "adventurelog-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[19:27:32] fixture: the BOX walk's own (Django), through upgrade_boxport
[19:27:36] adventurelog: createsuperuser :: Superuser created successfully.
[19:27:39] adventurelog: seeded superuser drill3cc072
[19:27:43] adventurelog: readback of the seeded account found=True
[19:27:43] C1 (seed reads back BEFORE): True
[19:27:44] MV-adventurelog: swapping to TO {'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.13.0', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0'}
[19:28:25] TO up -d rc=0
[19:35:29] TO settled=False in 423.9s :: {"adventurelog": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "adventurelog-frontend": {"status": "running", "health": "unhealthy", "restarts": 0, "exit": 0}, "adventurelog-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[19:35:29] migration lines observed: 6
[19:35:34] adventurelog: readback of the seeded account found=True
[19:35:34] RESULT (seed reads back AFTER): True
[19:35:34] MV-adventurelog: ABORT — putting the FROM images back
[19:36:15] adventurelog: readback of the seeded account found=True
[19:36:15] ABORT: app came back in 31.4s; data present=True
[20:39:13] MV-adventurelog: deploying adventurelog at FROM {'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.12.1', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1'}
[20:40:17] FROM settled=True in 51.8s :: {"adventurelog": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "adventurelog-frontend": {"status": "running", "health": null, "restarts": 0, "exit": 0}, "adventurelog-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[20:40:17] fixture: the BOX walk's own (Django), through upgrade_boxport
[20:40:20] adventurelog: createsuperuser :: Superuser created successfully.
[20:40:22] adventurelog: seeded superuser drill92a66b
[20:40:26] adventurelog: readback of the seeded account found=True
[20:40:26] C1 (seed reads back BEFORE): True
[20:40:26] MV-adventurelog: swapping to TO {'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.13.0', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0'}
[20:40:30] TO up -d rc=0
[20:47:31] TO settled=False in 420.3s :: {"adventurelog": {"status": "running", "health": "starting", "restarts": 0, "exit": 0}, "adventurelog-frontend": {"status": "running", "health": "unhealthy", "restarts": 0, "exit": 0}, "adventurelog-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[20:47:33] migration lines observed: 6
[20:55:07] adventurelog: the app never served /admin/login/
[20:55:07] RESULT (seed reads back AFTER): False
[20:55:07] MV-adventurelog: ABORT — putting the FROM images back
[20:55:52] adventurelog: readback of the seeded account found=True
[20:55:52] ABORT: app came back in 31.2s; data present=True
{
"harness_version": 3,
"edge": "MV-adventurelog",
@@ -31,7 +31,7 @@
},
"verdict": "failed",
"seed_read_before": true,
"seed_read_after": true,
"seed_read_after": false,
"healthy_after": false,
"migration_observed": "\u001b[2Kadventurelog | Apply all migrations: account, admin, adventures, auth, authtoken, billing, contenttypes, integrations, invitations, mfa, sessions, sites, socialaccount, users, worldtravel",
"abort": "starts-and-serves",
@@ -39,9 +39,9 @@
"engine_state_after": null,
"memory": null,
"marks": [],
"duration_s": 423.9,
"measured_at": "2026-09-23T19:36:15Z",
"duration_s": 420.3,
"measured_at": "2026-09-23T20:55:52Z",
"evidence": "evidence/MV-adventurelog",
"files_changed": [],
"total_s": 703.4
"total_s": 998.6
}
@@ -7,7 +7,7 @@
},
"adventurelog-frontend": {
"status": "running",
"health": "healthy",
"health": null,
"restarts": 0,
"exit": 0
},
@@ -1,10 +1,11 @@
adventurelog-frontend | Listening on http://0.0.0.0:3000
adventurelog | PostgreSQL is up - continuing...
adventurelog-frontend | Listening on http://0.0.0.0:3000
adventurelog-postgres | The files belonging to this database system will be owned by user "postgres".
adventurelog-postgres | This user must also own the server process.
adventurelog-postgres |
adventurelog-postgres | The database cluster will be initialized with locale "en_US.utf8".
adventurelog-postgres | The default database encoding has accordingly been set to "UTF8".
adventurelog-postgres | The default text search configuration will be set to "english".
adventurelog-postgres | The default text search configuration will be set to "english".
adventurelog-postgres |
adventurelog-postgres | Data page checksums are disabled.
adventurelog-postgres |
@@ -14,26 +15,65 @@
adventurelog-postgres | selecting default max_connections ... 100
adventurelog-postgres | selecting default shared_buffers ... 128MB
adventurelog-postgres | selecting default time zone ... Europe/Budapest
adventurelog | Operations to perform:
adventurelog | Apply all migrations: account, admin, adventures, auth, authtoken, contenttypes, integrations, invitations, mfa, sessions, sites, socialaccount, users, worldtravel
adventurelog | Running migrations:
adventurelog | No migrations to apply.
adventurelog | Some data is missing. Re-importing all data.
adventurelog | Starting ultra-memory-efficient import process...
adventurelog-postgres | creating configuration files ... ok
adventurelog-postgres | running bootstrap script ... ok
adventurelog-postgres | sh: locale: not found
adventurelog-postgres | 2026-09-23 21:25:17.370 CEST [35] WARNING: no usable system locales were found
adventurelog-postgres | 2026-09-23 22:39:15.062 CEST [35] WARNING: no usable system locales were found
adventurelog-postgres | performing post-bootstrap initialization ... ok
adventurelog-postgres | initdb: warning: enabling "trust" authentication for local connections
adventurelog | Step 1: Parsing JSON and storing in temporary database...
adventurelog-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
adventurelog | Flag for af already exists
adventurelog-postgres | syncing data to disk ... ok
adventurelog | Flag for ax already exists
adventurelog-postgres |
adventurelog-postgres |
adventurelog-postgres | Success. You can now start the database server using:
adventurelog-postgres |
adventurelog-postgres | pg_ctl -D /var/lib/postgresql/data -l logfile start
adventurelog-postgres |
adventurelog-postgres | initdb: warning: enabling "trust" authentication for local connections
adventurelog-postgres | initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.
adventurelog-postgres | waiting for server to start....2026-09-23 21:25:18.984 CEST [41] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
adventurelog-postgres | 2026-09-23 21:25:18.990 CEST [41] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
adventurelog-postgres | 2026-09-23 21:25:19.003 CEST [44] LOG: database system was shut down at 2026-09-23 21:25:18 CEST
adventurelog-postgres | 2026-09-23 21:25:19.015 CEST [41] LOG: database system is ready to accept connections
adventurelog-postgres | done
adventurelog-postgres | server started
adventurelog-postgres | waiting for server to start....2026-09-23 22:39:16.298 CEST [41] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
adventurelog-postgres | 2026-09-23 22:39:16.302 CEST [41] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
adventurelog-postgres | 2026-09-23 22:39:16.313 CEST [44] LOG: database system was shut down at 2026-09-23 22:39:15 CEST
adventurelog-postgres | 2026-09-23 22:39:16.322 CEST [41] LOG: database system is ready to accept connections
adventurelog | Flag for al already exists
adventurelog | Flag for dz already exists
adventurelog | Flag for as already exists
adventurelog | Flag for ad already exists
adventurelog | Flag for ao already exists
adventurelog | Flag for ai already exists
adventurelog | Flag for aq already exists
adventurelog | Flag for ag already exists
adventurelog | Flag for ar already exists
adventurelog | Flag for am already exists
adventurelog-postgres | done
adventurelog | Flag for aw already exists
adventurelog | Flag for au already exists
adventurelog | Flag for at already exists
adventurelog | Flag for az already exists
adventurelog | Flag for bh already exists
adventurelog | Flag for bd already exists
adventurelog | Flag for bb already exists
adventurelog | Flag for by already exists
adventurelog | Flag for be already exists
adventurelog | Flag for bz already exists
adventurelog | Flag for bj already exists
adventurelog | Flag for bm already exists
adventurelog | Flag for bt already exists
adventurelog | Flag for bo already exists
adventurelog | Flag for bq already exists
adventurelog | Flag for ba already exists
adventurelog | Flag for bw already exists
adventurelog | Flag for bv already exists
adventurelog | Flag for br already exists
adventurelog | Flag for io already exists
adventurelog-postgres | server started
adventurelog-postgres | CREATE DATABASE
adventurelog-postgres |
adventurelog-postgres |
@@ -42,40 +82,115 @@
adventurelog-postgres | Loading PostGIS extensions into template_postgis
adventurelog-postgres | CREATE EXTENSION
adventurelog-postgres | CREATE EXTENSION
adventurelog | Flag for bn already exists
adventurelog-postgres | You are now connected to database "template_postgis" as user "adventurelog".
adventurelog-postgres | DO
adventurelog | Flag for bg already exists
adventurelog | Flag for bf already exists
adventurelog-postgres | Loading PostGIS extensions into adventurelog
adventurelog-postgres | CREATE EXTENSION
adventurelog-postgres | CREATE EXTENSION
adventurelog-postgres | You are now connected to database "adventurelog" as user "adventurelog".
adventurelog-postgres | DO
adventurelog | Flag for bi already exists
adventurelog | Flag for kh already exists
adventurelog | Flag for cm already exists
adventurelog | Flag for ca already exists
adventurelog | Flag for cv already exists
adventurelog | Flag for ky already exists
adventurelog | Flag for cf already exists
adventurelog | Flag for td already exists
adventurelog | Flag for cl already exists
adventurelog | Flag for cn already exists
adventurelog | Flag for cx already exists
adventurelog | Flag for cc already exists
adventurelog | Flag for co already exists
adventurelog | Flag for km already exists
adventurelog | Flag for cg already exists
adventurelog | Flag for ck already exists
adventurelog | Flag for cr already exists
adventurelog | Flag for hr already exists
adventurelog | Flag for cu already exists
adventurelog | Flag for cw already exists
adventurelog | Flag for cy already exists
adventurelog | Flag for cz already exists
adventurelog | Flag for cd already exists
adventurelog-postgres | DO
adventurelog-postgres |
adventurelog-postgres | waiting for server to shut down....2026-09-23 21:25:24.162 CEST [41] LOG: received fast shutdown request
adventurelog-postgres | 2026-09-23 21:25:24.168 CEST [41] LOG: aborting any active transactions
adventurelog-postgres | 2026-09-23 21:25:24.172 CEST [41] LOG: background worker "logical replication launcher" (PID 47) exited with exit code 1
adventurelog-postgres | 2026-09-23 21:25:24.172 CEST [42] LOG: shutting down
adventurelog-postgres | 2026-09-23 21:25:24.184 CEST [42] LOG: checkpoint starting: shutdown immediate
adventurelog-postgres | ..2026-09-23 21:25:26.474 CEST [42] LOG: checkpoint complete: wrote 4465 buffers (27.3%); 0 WAL file(s) added, 0 removed, 2 recycled; write=0.089 s, sync=2.133 s, total=2.302 s; sync files=963, longest=0.026 s, average=0.003 s; distance=34851 kB, estimate=34851 kB; lsn=0/36FFEE8, redo lsn=0/36FFEE8
adventurelog-postgres | 2026-09-23 21:25:26.501 CEST [41] LOG: database system is shut down
adventurelog-postgres | waiting for server to shut down...2026-09-23 22:39:21.144 CEST [41] LOG: received fast shutdown request
adventurelog-postgres | .2026-09-23 22:39:21.148 CEST [41] LOG: aborting any active transactions
adventurelog-postgres | 2026-09-23 22:39:21.154 CEST [41] LOG: background worker "logical replication launcher" (PID 47) exited with exit code 1
adventurelog-postgres | 2026-09-23 22:39:21.155 CEST [42] LOG: shutting down
adventurelog-postgres | 2026-09-23 22:39:21.158 CEST [42] LOG: checkpoint starting: shutdown immediate
adventurelog-postgres | 2026-09-23 22:39:21.841 CEST [42] LOG: checkpoint complete: wrote 4465 buffers (27.3%); 0 WAL file(s) added, 0 removed, 2 recycled; write=0.062 s, sync=0.603 s, total=0.686 s; sync files=963, longest=0.473 s, average=0.001 s; distance=34851 kB, estimate=34851 kB; lsn=0/36FFEE8, redo lsn=0/36FFEE8
adventurelog | Flag for dk already exists
adventurelog | Flag for dj already exists
adventurelog | Flag for dm already exists
adventurelog | Flag for do already exists
adventurelog | Flag for ec already exists
adventurelog | Flag for eg already exists
adventurelog | Flag for sv already exists
adventurelog | Flag for gq already exists
adventurelog | Flag for er already exists
adventurelog | Flag for ee already exists
adventurelog | Flag for sz already exists
adventurelog | Flag for et already exists
adventurelog | Flag for fk already exists
adventurelog | Flag for fo already exists
adventurelog | Flag for fj already exists
adventurelog | Flag for fi already exists
adventurelog | Flag for fr already exists
adventurelog | Flag for gf already exists
adventurelog-postgres | 2026-09-23 22:39:21.867 CEST [41] LOG: database system is shut down
adventurelog-postgres | done
adventurelog-postgres | server stopped
adventurelog-postgres |
adventurelog-postgres | PostgreSQL init process complete; ready for start up.
adventurelog-postgres |
adventurelog-postgres | 2026-09-23 21:25:26.619 CEST [1] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
adventurelog-postgres | 2026-09-23 21:25:26.619 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
adventurelog-postgres | 2026-09-23 21:25:26.619 CEST [1] LOG: listening on IPv6 address "::", port 5432
adventurelog-postgres | 2026-09-23 21:25:26.635 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
adventurelog-postgres | 2026-09-23 21:25:26.655 CEST [65] LOG: database system was shut down at 2026-09-23 21:25:26 CEST
adventurelog-postgres | 2026-09-23 21:25:26.670 CEST [1] LOG: database system is ready to accept connections
adventurelog-postgres | 2026-09-23 21:30:26.401 CEST [63] LOG: checkpoint starting: time
adventurelog-postgres | 2026-09-23 21:34:56.159 CEST [63] LOG: checkpoint complete: wrote 6010 buffers (36.7%); 0 WAL file(s) added, 0 removed, 8 recycled; write=269.655 s, sync=0.064 s, total=269.758 s; sync files=490, longest=0.013 s, average=0.001 s; distance=129719 kB, estimate=129719 kB; lsn=0/F215008, redo lsn=0/B5ADEC0
adventurelog | PostgreSQL is up - continuing...
adventurelog | Operations to perform:
adventurelog | Apply all migrations: account, admin, adventures, auth, authtoken, contenttypes, integrations, invitations, mfa, sessions, sites, socialaccount, users, worldtravel
adventurelog | Running migrations:
adventurelog | No migrations to apply.
adventurelog | Latest data already imported.
adventurelog-postgres | 2026-09-23 22:39:21.982 CEST [1] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
adventurelog-postgres | 2026-09-23 22:39:21.982 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
adventurelog-postgres | 2026-09-23 22:39:21.982 CEST [1] LOG: listening on IPv6 address "::", port 5432
adventurelog-postgres | 2026-09-23 22:39:21.989 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
adventurelog-postgres | 2026-09-23 22:39:22.001 CEST [65] LOG: database system was shut down at 2026-09-23 22:39:21 CEST
adventurelog-postgres | 2026-09-23 22:39:22.012 CEST [1] LOG: database system is ready to accept connections
adventurelog-postgres | 2026-09-23 22:44:22.101 CEST [63] LOG: checkpoint starting: time
adventurelog-postgres | 2026-09-23 22:45:14.598 CEST [63] LOG: checkpoint complete: wrote 526 buffers (3.2%); 0 WAL file(s) added, 0 removed, 1 recycled; write=52.413 s, sync=0.060 s, total=52.498 s; sync files=484, longest=0.009 s, average=0.001 s; distance=11716 kB, estimate=11716 kB; lsn=0/4271090, redo lsn=0/4271058
adventurelog | Flag for pf already exists
adventurelog | Flag for tf already exists
adventurelog | Flag for ga already exists
adventurelog | Flag for ge already exists
adventurelog | Traceback (most recent call last):
adventurelog | File "/code/manage.py", line 10, in <module>
adventurelog | execute_from_command_line(sys.argv)
adventurelog | ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
adventurelog | File "/usr/local/lib/python3.13/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
adventurelog | utility.execute()
adventurelog | ~~~~~~~~~~~~~~~^^
adventurelog | File "/usr/local/lib/python3.13/site-packages/django/core/management/__init__.py", line 436, in execute
adventurelog | self.fetch_command(subcommand).run_from_argv(self.argv)
adventurelog | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
adventurelog | File "/usr/local/lib/python3.13/site-packages/django/core/management/base.py", line 420, in run_from_argv
adventurelog | self.execute(*args, **cmd_options)
adventurelog | ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
adventurelog | File "/usr/local/lib/python3.13/site-packages/django/core/management/base.py", line 464, in execute
adventurelog | output = self.handle(*args, **options)
adventurelog | File "/code/worldtravel/management/commands/download-countries.py", line 123, in handle
adventurelog | self._parse_and_store_temp(countries_json_path, temp_conn)
adventurelog | ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
adventurelog | File "/code/worldtravel/management/commands/download-countries.py", line 148, in _parse_and_store_temp
adventurelog | for country in parser:
adventurelog | ^^^^^^
adventurelog | File "/usr/local/lib/python3.13/site-packages/ijson/utils.py", line 55, in coros2gen
adventurelog | f.send(value)
adventurelog | ~~~~~~^^^^^^^
adventurelog | File "/usr/local/lib/python3.13/site-packages/ijson/backends/python.py", line 46, in utf8_encoder
adventurelog | target.close()
adventurelog | ~~~~~~~~~~~~^^
adventurelog | File "/usr/local/lib/python3.13/site-packages/ijson/backends/python.py", line 116, in Lexer
adventurelog | target.send(EOF)
adventurelog | ~~~~~~~~~~~^^^^^
adventurelog | File "/usr/local/lib/python3.13/site-packages/ijson/backends/python.py", line 161, in parse_value
adventurelog | raise common.IncompleteJSONError('Incomplete JSON content')
adventurelog | ijson.common.IncompleteJSONError: Incomplete JSON content
adventurelog | █████╗ ██████╗ ██╗ ██╗███████╗███╗ ██╗████████╗██╗ ██╗██████╗ ███████╗██╗ ██████╗ ██████╗
adventurelog | ██╔══██╗██╔══██╗██║ ██║██╔════╝████╗ ██║╚══██╔══╝██║ ██║██╔══██╗██╔════╝██║ ██╔═══██╗██╔════╝
adventurelog | ███████║██║ ██║██║ ██║█████╗ ██╔██╗ ██║ ██║ ██║ ██║██████╔╝█████╗ ██║ ██║ ██║██║ ███╗
@@ -83,20 +198,20 @@ adventurelog | PostgreSQL is up - continuing...
adventurelog | ██║ ██║██████╔╝ ╚████╔╝ ███████╗██║ ╚████║ ██║ ╚██████╔╝██║ ██║███████╗███████╗╚██████╔╝╚██████╔╝
adventurelog | ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝ ╚═════╝ ╚═════╝
adventurelog | “Go confidently in the direction of your dreams! Live the life you've imagined.” ― Henry David Thoreau
adventurelog | 2026-09-23 19:35:46,046 CRIT Supervisor is running as root. Privileges were not dropped because no user is specified in the config file. If you intend to run as root, you can set user=root in the config file to avoid this message.
adventurelog | 2026-09-23 19:35:46,050 INFO supervisord started with pid 1
adventurelog | 2026-09-23 19:35:47,054 INFO spawned: 'gunicorn' with pid 23
adventurelog | 2026-09-23 19:35:47,057 INFO spawned: 'memcached' with pid 24
adventurelog | 2026-09-23 19:35:47,063 INFO spawned: 'nginx' with pid 25
adventurelog | 2026-09-23 19:35:47,066 INFO spawned: 'sync_visited_regions' with pid 26
adventurelog | [2026-09-23 19:35:47 +0000] [23] [INFO] Starting gunicorn 23.0.0
adventurelog | [2026-09-23 19:35:47 +0000] [23] [INFO] Listening at: http://[::]:8000 (23)
adventurelog | [2026-09-23 19:35:47 +0000] [23] [INFO] Using worker: sync
adventurelog | [2026-09-23 19:35:47 +0000] [37] [INFO] Booting worker with pid: 37
adventurelog | [2026-09-23 19:35:47 +0000] [38] [INFO] Booting worker with pid: 38
adventurelog | 2026-09-23 19:35:49,009 INFO success: gunicorn entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | 2026-09-23 19:35:49,009 INFO success: memcached entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | 2026-09-23 19:35:49,009 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | 2026-09-23 19:35:49,009 INFO success: sync_visited_regions entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | 2026-09-23 20:55:27,101 CRIT Supervisor is running as root. Privileges were not dropped because no user is specified in the config file. If you intend to run as root, you can set user=root in the config file to avoid this message.
adventurelog | 2026-09-23 20:55:27,104 INFO supervisord started with pid 1
adventurelog | 2026-09-23 20:55:28,107 INFO spawned: 'gunicorn' with pid 23
adventurelog | 2026-09-23 20:55:28,109 INFO spawned: 'memcached' with pid 24
adventurelog | 2026-09-23 20:55:28,112 INFO spawned: 'nginx' with pid 25
adventurelog | 2026-09-23 20:55:28,114 INFO spawned: 'sync_visited_regions' with pid 26
adventurelog | [2026-09-23 20:55:28 +0000] [23] [INFO] Starting gunicorn 23.0.0
adventurelog | [2026-09-23 20:55:28 +0000] [23] [INFO] Listening at: http://[::]:8000 (23)
adventurelog | [2026-09-23 20:55:28 +0000] [23] [INFO] Using worker: sync
adventurelog | [2026-09-23 20:55:28 +0000] [37] [INFO] Booting worker with pid: 37
adventurelog | [2026-09-23 20:55:28 +0000] [38] [INFO] Booting worker with pid: 38
adventurelog | 2026-09-23 20:55:29,853 INFO success: gunicorn entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | 2026-09-23 20:55:29,853 INFO success: memcached entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | 2026-09-23 20:55:29,853 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | 2026-09-23 20:55:29,853 INFO success: sync_visited_regions entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
adventurelog | Starting periodic sync worker for midnight background jobs...
adventurelog | Next sync scheduled in 15850s (~4.40h) at UTC midnight
adventurelog | Next sync scheduled in 11069s (~3.07h) at UTC midnight
@@ -1,16 +1,16 @@
[19:24:31] MV-adventurelog: deploying adventurelog at FROM {'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.12.1', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1'}
[19:27:32] FROM settled=True in 124.8s :: {"adventurelog": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "adventurelog-frontend": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "adventurelog-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[19:27:32] fixture: the BOX walk's own (Django), through upgrade_boxport
[19:27:36] adventurelog: createsuperuser :: Superuser created successfully.
[19:27:39] adventurelog: seeded superuser drill3cc072
[19:27:43] adventurelog: readback of the seeded account found=True
[19:27:43] C1 (seed reads back BEFORE): True
[19:27:44] MV-adventurelog: swapping to TO {'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.13.0', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0'}
[19:28:25] TO up -d rc=0
[19:35:29] TO settled=False in 423.9s :: {"adventurelog": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "adventurelog-frontend": {"status": "running", "health": "unhealthy", "restarts": 0, "exit": 0}, "adventurelog-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[19:35:29] migration lines observed: 6
[19:35:34] adventurelog: readback of the seeded account found=True
[19:35:34] RESULT (seed reads back AFTER): True
[19:35:34] MV-adventurelog: ABORT — putting the FROM images back
[19:36:15] adventurelog: readback of the seeded account found=True
[19:36:15] ABORT: app came back in 31.4s; data present=True
[20:39:13] MV-adventurelog: deploying adventurelog at FROM {'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.12.1', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1'}
[20:40:17] FROM settled=True in 51.8s :: {"adventurelog": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "adventurelog-frontend": {"status": "running", "health": null, "restarts": 0, "exit": 0}, "adventurelog-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[20:40:17] fixture: the BOX walk's own (Django), through upgrade_boxport
[20:40:20] adventurelog: createsuperuser :: Superuser created successfully.
[20:40:22] adventurelog: seeded superuser drill92a66b
[20:40:26] adventurelog: readback of the seeded account found=True
[20:40:26] C1 (seed reads back BEFORE): True
[20:40:26] MV-adventurelog: swapping to TO {'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.13.0', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0'}
[20:40:30] TO up -d rc=0
[20:47:31] TO settled=False in 420.3s :: {"adventurelog": {"status": "running", "health": "starting", "restarts": 0, "exit": 0}, "adventurelog-frontend": {"status": "running", "health": "unhealthy", "restarts": 0, "exit": 0}, "adventurelog-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[20:47:33] migration lines observed: 6
[20:55:07] adventurelog: the app never served /admin/login/
[20:55:07] RESULT (seed reads back AFTER): False
[20:55:07] MV-adventurelog: ABORT — putting the FROM images back
[20:55:52] adventurelog: readback of the seeded account found=True
[20:55:52] ABORT: app came back in 31.2s; data present=True
@@ -1,7 +1,7 @@
{
"adventurelog": {
"status": "running",
"health": "healthy",
"health": "starting",
"restarts": 0,
"exit": 0
},
@@ -15,7 +15,7 @@
},
"verdict": "failed",
"seed_read_before": true,
"seed_read_after": true,
"seed_read_after": false,
"healthy_after": false,
"migration_observed": "\u001b[2Kadventurelog | Apply all migrations: account, admin, adventures, auth, authtoken, billing, contenttypes, integrations, invitations, mfa, sessions, sites, socialaccount, users, worldtravel",
"abort": "starts-and-serves",
@@ -23,9 +23,9 @@
"engine_state_after": null,
"memory": null,
"marks": [],
"duration_s": 423.9,
"measured_at": "2026-09-23T19:36:15Z",
"duration_s": 420.3,
"measured_at": "2026-09-23T20:55:52Z",
"evidence": "evidence/MV-adventurelog",
"files_changed": [],
"total_s": 703.4
"total_s": 998.6
}
@@ -0,0 +1,145 @@
[20:01:30] MV-nextcloud: deploying nextcloud at FROM {'nextcloud': 'nextcloud:34.0.1-apache', 'nextcloud-db': 'mariadb:12.3', 'nextcloud-redis': 'redis:7-alpine'}
[20:02:13] FROM settled=True in 31.1s :: {"nextcloud": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "nextcloud-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "nextcloud-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[20:02:13] fixture: the BOX walk's own (Nextcloud), through upgrade_boxport
[20:02:15] nextcloud: occ user:add :: The account "drill52d90c" was created successfully Display name set to "drill52d90c"
[20:02:16] nextcloud: seeded user drill52d90c
[20:02:17] nextcloud: readback of the seeded user found=True
[20:02:17] C1 (seed reads back BEFORE): True
[20:02:17] MV-nextcloud: swapping to TO {'nextcloud': 'nextcloud:34.0.4-apache', 'nextcloud-db': 'mariadb:12.3', 'nextcloud-redis': 'redis:7-alpine'}
[20:02:19] TO up -d rc=0
[20:02:51] TO settled=True in 31.2s :: {"nextcloud": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "nextcloud-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "nextcloud-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[20:02:51] engine state nextcloud-db: 12.3.3-MariaDB| This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]
[20:02:51] migration lines observed: 6
[20:02:52] nextcloud: readback of the seeded user found=True
[20:02:52] RESULT (seed reads back AFTER): True
[20:02:52] files_may_change: the bind-mounted tree changed under ['/srv/felhom-gate/hdd/appdata/nextcloud']
[20:02:52] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:80
[20:03:08] + 15s nextcloud=1023M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=4M/128M peak=6M kills=0 rs=0 reqs=253
[20:03:23] + 30s nextcloud=1022M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=4M/128M peak=7M kills=0 rs=0 reqs=513
[20:03:38] + 46s nextcloud=1023M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=6M/128M peak=7M kills=0 rs=0 reqs=774
[20:03:53] + 61s nextcloud=1023M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=6M/128M peak=8M kills=0 rs=0 reqs=1035
[20:04:08] + 76s nextcloud=1022M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=7M/128M peak=8M kills=0 rs=0 reqs=1295
[20:04:23] + 91s nextcloud=1022M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=7M/128M peak=9M kills=0 rs=0 reqs=1559
[20:04:39] + 106s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=7M/128M peak=9M kills=0 rs=0 reqs=1819
[20:04:54] + 121s nextcloud=1022M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=7M/128M peak=9M kills=0 rs=0 reqs=2085
[20:05:09] + 136s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=8M/128M peak=11M kills=0 rs=0 reqs=2346
[20:05:24] + 152s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=8M/128M peak=11M kills=0 rs=0 reqs=2610
[20:05:39] + 167s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=9M/128M peak=11M kills=0 rs=0 reqs=2874
[20:05:54] + 182s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=10M/128M peak=12M kills=0 rs=0 reqs=3135
[20:06:10] + 197s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=11M/128M peak=13M kills=0 rs=0 reqs=3400
[20:06:25] + 212s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=11M/128M peak=13M kills=0 rs=0 reqs=3665
[20:06:40] + 228s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=12M/128M peak=13M kills=0 rs=0 reqs=3928
[20:06:55] + 243s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=13M/128M peak=14M kills=0 rs=0 reqs=4192
[20:07:10] + 258s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=14M/128M peak=16M kills=0 rs=0 reqs=4451
[20:07:25] + 273s nextcloud=1022M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=14M/128M peak=16M kills=0 rs=0 reqs=4709
[20:07:41] + 288s nextcloud=1023M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=14M/128M peak=16M kills=0 rs=0 reqs=4969
[20:07:56] + 303s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=15M/128M peak=17M kills=0 rs=0 reqs=5226
[20:08:11] + 318s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=16M/128M peak=17M kills=0 rs=0 reqs=5482
[20:08:26] + 334s nextcloud=1022M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=17M/128M peak=20M kills=0 rs=0 reqs=5744
[20:08:41] + 349s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=18M/128M peak=20M kills=0 rs=0 reqs=6003
[20:08:56] + 364s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=18M/128M peak=20M kills=0 rs=0 reqs=6263
[20:09:12] + 379s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=184M/512M peak=187M kills=0 rs=0 nextcloud-redis=18M/128M peak=20M kills=0 rs=0 reqs=6519
[20:09:27] + 394s nextcloud=999M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=20M/128M peak=24M kills=0 rs=0 reqs=6780
[20:09:42] + 410s nextcloud=1000M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=20M/128M peak=24M kills=0 rs=0 reqs=7040
[20:09:57] + 425s nextcloud=999M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=21M/128M peak=24M kills=0 rs=0 reqs=7301
[20:10:12] + 440s nextcloud=1000M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=21M/128M peak=24M kills=0 rs=0 reqs=7563
[20:10:27] + 455s nextcloud=1000M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=23M/128M peak=28M kills=0 rs=0 reqs=7826
[20:10:43] + 470s nextcloud=999M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=24M/128M peak=28M kills=0 rs=0 reqs=8085
[20:10:58] + 485s nextcloud=1000M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=24M/128M peak=28M kills=0 rs=0 reqs=8345
[20:11:13] + 501s nextcloud=999M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=24M/128M peak=28M kills=0 rs=0 reqs=8606
[20:11:28] + 516s nextcloud=1000M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=26M/128M peak=28M kills=0 rs=0 reqs=8862
[20:11:43] + 531s nextcloud=999M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=26M/128M peak=30M kills=0 rs=0 reqs=9122
[20:11:58] + 546s nextcloud=992M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=26M/128M peak=30M kills=0 rs=0 reqs=9379
[20:12:14] + 561s nextcloud=978M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=28M/128M peak=30M kills=0 rs=0 reqs=9639
[20:12:29] + 576s nextcloud=956M/1024M peak=1024M kills=0 rs=0 nextcloud-db=181M/512M peak=187M kills=0 rs=0 nextcloud-redis=28M/128M peak=30M kills=0 rs=0 reqs=9899
[20:12:44] + 592s nextcloud=956M/1024M peak=1024M kills=0 rs=0 nextcloud-db=181M/512M peak=187M kills=0 rs=0 nextcloud-redis=30M/128M peak=35M kills=0 rs=0 reqs=10160
[20:12:59] + 607s nextcloud=930M/1024M peak=1024M kills=0 rs=0 nextcloud-db=181M/512M peak=187M kills=0 rs=0 nextcloud-redis=30M/128M peak=35M kills=0 rs=0 reqs=10423
[20:12:59] memory watch: killed=False tight=[] requests=10423 codes={'302': 10423}
[20:12:59] MV-nextcloud: ABORT — putting the FROM images back
[20:16:04] ABORT: the app did NOT come back (rc=0, 180.9s)
{
"harness_version": 3,
"edge": "MV-nextcloud",
"app": "nextcloud",
"note": "night 2026-09-23 within-a-major move: nextcloud=nextcloud:34.0.4-apache",
"from": {
"nextcloud": "nextcloud:34.0.1-apache",
"nextcloud-db": "mariadb:12.3",
"nextcloud-redis": "redis:7-alpine"
},
"to": {
"nextcloud": "nextcloud:34.0.4-apache",
"nextcloud-db": "mariadb:12.3",
"nextcloud-redis": "redis:7-alpine"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "\u001b[2Knextcloud | Upgrading nextcloud from 34.0.1.2 ...",
"abort": "refuses",
"abort_detail": "Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?\n\u001b[2Knextcloud | => Configuring PHP session handler...\n\u001b[2Knextcloud | ==> Using Redis as PHP session handler...\n\u001b[2Knextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?\n\u001b[2Knextcloud | => Configuring PHP session handler...\n\u001b[2Knextcloud | ==> Using Redis as PHP session handler...\n\u001b[2Knextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?",
"engine_state_after": {
"nextcloud-db": {
"image": "mariadb:12.3",
"probe": "datadir version | the engine's own upgrade verdict",
"answer": "12.3.3-MariaDB| This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]",
"probe_rc": 0
}
},
"memory": {
"soak_s": 607.1,
"requested_s": 600,
"requests": 10423,
"codes": {
"302": 10423
},
"first_kill": null,
"containers": {
"nextcloud": {
"limit": 1073741824,
"peak": 1073741824,
"peak_pct": 1.0,
"anon_peak_sampled": 84439040,
"anon_peak_pct": 0.079,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
},
"nextcloud-db": {
"limit": 536870912,
"peak": 196354048,
"peak_pct": 0.366,
"anon_peak_sampled": 130146304,
"anon_peak_pct": 0.242,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
},
"nextcloud-redis": {
"limit": 134217728,
"peak": 37715968,
"peak_pct": 0.281,
"anon_peak_sampled": 9433088,
"anon_peak_pct": 0.07,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
}
},
"unmeasured": []
},
"marks": [
"files_may_change"
],
"duration_s": 31.2,
"measured_at": "2026-09-23T20:16:04Z",
"evidence": "evidence/MV-nextcloud",
"files_changed": [
"/srv/felhom-gate/hdd/appdata/nextcloud"
],
"total_s": 873.1
}
@@ -0,0 +1,116 @@
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Securing system users (equivalent to running mysql_secure_installation)
nextcloud-db |
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Stopping temporary server
nextcloud-db | 2026-09-23 22:01:37 0 [Note] mariadbd (initiated by: unknown): Normal shutdown
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: FTS optimize thread exiting.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Starting shutdown...
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Buffer pool(s) dump completed at 260923 22:01:37
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
nextcloud-db | 2026-09-23 22:01:37 0 [Note] Shutdown completed; log sequence number 45568; transaction id 15
nextcloud-db | 2026-09-23 22:01:37 0 [Note] mariadbd: Shutdown complete
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Temporary server stopped
nextcloud-db |
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: MariaDB init process done. Ready for start up.
nextcloud-db |
nextcloud-db | 2026-09-23 22:01:37 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid zBCjnNnCwpFijyK/FCLSYWzb8eA= as process 1
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Compressed tables use zlib 1.3
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Number of transaction pools: 1
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
nextcloud-db | 2026-09-23 22:01:37 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup).
nextcloud-db | create_uring failed: falling back to libaio
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Using Linux native AIO
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Completed initialization of buffer pool
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: End of log at LSN=45568
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Opened 3 undo tablespaces
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: log sequence number 45568; transaction id 14
nextcloud-db | 2026-09-23 22:01:37 0 [Note] Plugin 'FEEDBACK' is disabled.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] Plugin 'wsrep-provider' is disabled.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Buffer pool(s) load completed at 260923 22:01:37
nextcloud-db | 2026-09-23 22:01:40 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
nextcloud-db | 2026-09-23 22:01:40 0 [Note] Server socket created on IP: '::', port: '3306'.
nextcloud-redis | 1:M 23 Sep 2026 22:05:01.866 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:05:01.867 * Background saving started by pid 137
nextcloud-redis | 137:C 23 Sep 2026 22:05:01.896 * DB saved on disk
nextcloud-redis | 137:C 23 Sep 2026 22:05:01.896 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:05:01.968 * Background saving terminated with success
nextcloud | => Configuring PHP session handler...
nextcloud-redis | 1:M 23 Sep 2026 22:06:06.001 * 10000 changes in 60 seconds. Saving...
nextcloud-db | 2026-09-23 22:01:40 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
nextcloud-db | 2026-09-23 22:01:40 0 [Note] mariadbd: ready for connections.
nextcloud | ==> Using Redis as PHP session handler...
nextcloud-db | Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud-redis | 1:M 23 Sep 2026 22:06:06.001 * Background saving started by pid 180
nextcloud-redis | 180:C 23 Sep 2026 22:06:06.038 * DB saved on disk
nextcloud-redis | 180:C 23 Sep 2026 22:06:06.038 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:06:06.102 * Background saving terminated with success
nextcloud-redis | 1:M 23 Sep 2026 22:07:10.060 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:07:10.061 * Background saving started by pid 217
nextcloud-redis | 217:C 23 Sep 2026 22:07:10.103 * DB saved on disk
nextcloud-redis | 217:C 23 Sep 2026 22:07:10.104 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:07:10.162 * Background saving terminated with success
nextcloud-redis | 1:M 23 Sep 2026 22:08:15.465 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:08:15.466 * Background saving started by pid 260
nextcloud-redis | 260:C 23 Sep 2026 22:08:15.511 * DB saved on disk
nextcloud-redis | 260:C 23 Sep 2026 22:08:15.512 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:08:15.568 * Background saving terminated with success
nextcloud-redis | 1:M 23 Sep 2026 22:09:20.499 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:09:20.500 * Background saving started by pid 297
nextcloud-redis | 297:C 23 Sep 2026 22:09:20.555 * DB saved on disk
nextcloud-redis | 297:C 23 Sep 2026 22:09:20.556 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:09:20.601 * Background saving terminated with success
nextcloud-redis | 1:M 23 Sep 2026 22:10:25.171 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:10:25.172 * Background saving started by pid 340
nextcloud-redis | 340:C 23 Sep 2026 22:10:25.240 * DB saved on disk
nextcloud-redis | 340:C 23 Sep 2026 22:10:25.241 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:10:25.273 * Background saving terminated with success
nextcloud-redis | 1:M 23 Sep 2026 22:11:30.119 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:11:30.120 * Background saving started by pid 377
nextcloud-redis | 377:C 23 Sep 2026 22:11:30.186 * DB saved on disk
nextcloud-redis | 377:C 23 Sep 2026 22:11:30.187 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:11:30.220 * Background saving terminated with success
nextcloud-redis | 1:M 23 Sep 2026 22:12:35.226 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:12:35.227 * Background saving started by pid 417
nextcloud-redis | 417:C 23 Sep 2026 22:12:35.314 * DB saved on disk
nextcloud-redis | 417:C 23 Sep 2026 22:12:35.315 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:12:35.329 * Background saving terminated with success
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
@@ -0,0 +1,20 @@
{
"nextcloud": {
"status": "restarting",
"health": "unhealthy",
"restarts": 0,
"exit": 1
},
"nextcloud-db": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"nextcloud-redis": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,167 @@
nextcloud-redis | 1:C 23 Sep 2026 22:01:31.598 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
nextcloud-redis | 1:C 23 Sep 2026 22:01:31.598 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
nextcloud-redis | 1:C 23 Sep 2026 22:01:31.598 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
nextcloud-redis | 1:C 23 Sep 2026 22:01:31.598 * Configuration loaded
nextcloud-redis | 1:M 23 Sep 2026 22:01:31.598 * monotonic clock: POSIX clock_gettime
nextcloud-redis | 1:M 23 Sep 2026 22:01:31.599 * Running mode=standalone, port=6379.
nextcloud-db | 2026-09-23 22:01:31+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
nextcloud-db | 2026-09-23 22:01:31+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
nextcloud-db | 2026-09-23 22:01:31+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
nextcloud-db | 2026-09-23 22:01:31+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
nextcloud-db | 2026-09-23 22:01:32+02:00 [Note] [Entrypoint]: Initializing database files
nextcloud-db | 2026-09-23 22:01:32 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup).
nextcloud-db | create_uring failed: falling back to libaio
nextcloud-db | 2026-09-23 22:01:34+02:00 [Note] [Entrypoint]: Database files initialized
nextcloud-db | 2026-09-23 22:01:34+02:00 [Note] [Entrypoint]: Starting temporary server
nextcloud-db | 2026-09-23 22:01:34+02:00 [Note] [Entrypoint]: Waiting for server startup
nextcloud-db | 2026-09-23 22:01:34 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid zBCjnNnCwpFijyK/FCLSYWzb8eA= as process 93
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: Compressed tables use zlib 1.3
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: Number of transaction pools: 1
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
nextcloud-db | 2026-09-23 22:01:34 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup).
nextcloud-db | create_uring failed: falling back to libaio
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: Using Linux native AIO
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: Completed initialization of buffer pool
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: End of log at LSN=45568
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: Opened 3 undo tablespaces
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
nextcloud-redis | 1:M 23 Sep 2026 22:01:31.600 * Server initialized
nextcloud-redis | 1:M 23 Sep 2026 22:01:31.603 * Creating AOF base file appendonly.aof.1.base.rdb on server start
nextcloud-redis | 1:M 23 Sep 2026 22:01:31.611 * Creating AOF incr file appendonly.aof.1.incr.aof on server start
nextcloud-redis | 1:M 23 Sep 2026 22:01:31.611 * Ready to accept connections tcp
nextcloud-redis | 1:M 23 Sep 2026 22:03:57.528 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:03:57.529 * Background saving started by pid 100
nextcloud-redis | 100:C 23 Sep 2026 22:03:57.549 * DB saved on disk
nextcloud-redis | 100:C 23 Sep 2026 22:03:57.550 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:03:57.630 * Background saving terminated with success
nextcloud-redis | 1:M 23 Sep 2026 22:05:01.866 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:05:01.867 * Background saving started by pid 137
nextcloud-redis | 137:C 23 Sep 2026 22:05:01.896 * DB saved on disk
nextcloud-redis | 137:C 23 Sep 2026 22:05:01.896 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:05:01.968 * Background saving terminated with success
nextcloud-redis | 1:M 23 Sep 2026 22:06:06.001 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:06:06.001 * Background saving started by pid 180
nextcloud-redis | 180:C 23 Sep 2026 22:06:06.038 * DB saved on disk
nextcloud-redis | 180:C 23 Sep 2026 22:06:06.038 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:06:06.102 * Background saving terminated with success
nextcloud-redis | 1:M 23 Sep 2026 22:07:10.060 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:07:10.061 * Background saving started by pid 217
nextcloud-redis | 217:C 23 Sep 2026 22:07:10.103 * DB saved on disk
nextcloud-redis | 217:C 23 Sep 2026 22:07:10.104 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:07:10.162 * Background saving terminated with success
nextcloud-redis | 1:M 23 Sep 2026 22:08:15.465 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:08:15.466 * Background saving started by pid 260
nextcloud-redis | 260:C 23 Sep 2026 22:08:15.511 * DB saved on disk
nextcloud-redis | 260:C 23 Sep 2026 22:08:15.512 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:08:15.568 * Background saving terminated with success
nextcloud-redis | 1:M 23 Sep 2026 22:09:20.499 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:09:20.500 * Background saving started by pid 297
nextcloud-redis | 297:C 23 Sep 2026 22:09:20.555 * DB saved on disk
nextcloud-redis | 297:C 23 Sep 2026 22:09:20.556 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:09:20.601 * Background saving terminated with success
nextcloud-redis | 1:M 23 Sep 2026 22:10:25.171 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:10:25.172 * Background saving started by pid 340
nextcloud-redis | 340:C 23 Sep 2026 22:10:25.240 * DB saved on disk
nextcloud-redis | 340:C 23 Sep 2026 22:10:25.241 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:10:25.273 * Background saving terminated with success
nextcloud-redis | 1:M 23 Sep 2026 22:11:30.119 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:11:30.120 * Background saving started by pid 377
nextcloud-redis | 377:C 23 Sep 2026 22:11:30.186 * DB saved on disk
nextcloud-redis | 377:C 23 Sep 2026 22:11:30.187 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:11:30.220 * Background saving terminated with success
nextcloud-redis | 1:M 23 Sep 2026 22:12:35.226 * 10000 changes in 60 seconds. Saving...
nextcloud-redis | 1:M 23 Sep 2026 22:12:35.227 * Background saving started by pid 417
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud-redis | 417:C 23 Sep 2026 22:12:35.314 * DB saved on disk
nextcloud-redis | 417:C 23 Sep 2026 22:12:35.315 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB
nextcloud-redis | 1:M 23 Sep 2026 22:12:35.329 * Background saving terminated with success
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: log sequence number 45568; transaction id 14
nextcloud-db | 2026-09-23 22:01:34 0 [Note] Plugin 'FEEDBACK' is disabled.
nextcloud-db | 2026-09-23 22:01:34 0 [Note] Plugin 'wsrep-provider' is disabled.
nextcloud-db | 2026-09-23 22:01:35 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
nextcloud-db | 2026-09-23 22:01:35 0 [Note] Replication not automatically started: --skip-slave-start was specified
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud-db | 2026-09-23 22:01:35 0 [Note] mariadbd: ready for connections.
nextcloud-db | Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 0 mariadb.org binary distribution
nextcloud-db | 2026-09-23 22:01:36+02:00 [Note] [Entrypoint]: Temporary server started.
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Creating database nextcloud
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Creating user nextcloud
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Giving user nextcloud access to schema nextcloud
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Securing system users (equivalent to running mysql_secure_installation)
nextcloud-db |
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Stopping temporary server
nextcloud-db | 2026-09-23 22:01:37 0 [Note] mariadbd (initiated by: unknown): Normal shutdown
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: FTS optimize thread exiting.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Starting shutdown...
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
nextcloud | => Configuring PHP session handler...
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Buffer pool(s) dump completed at 260923 22:01:37
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
nextcloud-db | 2026-09-23 22:01:37 0 [Note] Shutdown completed; log sequence number 45568; transaction id 15
nextcloud-db | 2026-09-23 22:01:37 0 [Note] mariadbd: Shutdown complete
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Temporary server stopped
nextcloud-db |
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: MariaDB init process done. Ready for start up.
nextcloud-db |
nextcloud-db | 2026-09-23 22:01:37 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid zBCjnNnCwpFijyK/FCLSYWzb8eA= as process 1
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Compressed tables use zlib 1.3
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Number of transaction pools: 1
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
nextcloud-db | 2026-09-23 22:01:37 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup).
nextcloud-db | create_uring failed: falling back to libaio
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Using Linux native AIO
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Completed initialization of buffer pool
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: End of log at LSN=45568
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Opened 3 undo tablespaces
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: log sequence number 45568; transaction id 14
nextcloud-db | 2026-09-23 22:01:37 0 [Note] Plugin 'FEEDBACK' is disabled.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] Plugin 'wsrep-provider' is disabled.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Buffer pool(s) load completed at 260923 22:01:37
nextcloud-db | 2026-09-23 22:01:40 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
nextcloud-db | 2026-09-23 22:01:40 0 [Note] Server socket created on IP: '::', port: '3306'.
nextcloud-db | 2026-09-23 22:01:40 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
nextcloud-db | 2026-09-23 22:01:40 0 [Note] mariadbd: ready for connections.
nextcloud-db | Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
@@ -0,0 +1,8 @@
{
"nextcloud-db": {
"image": "mariadb:12.3",
"probe": "datadir version | the engine's own upgrade verdict",
"answer": "12.3.3-MariaDB| This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]",
"probe_rc": 0
}
}
@@ -0,0 +1,3 @@
{
"/srv/felhom-gate/hdd/appdata/nextcloud": "0b74bfada6b0b4098f84fe456ae07a002528f8d2be77838923a0190c08a591d1"
}
@@ -0,0 +1,3 @@
{
"/srv/felhom-gate/hdd/appdata/nextcloud": "b16738917b19ede8b81373358ac77190c8943551c6108562e006f0b2f82080fd"
}
@@ -0,0 +1,6 @@
nextcloud | Upgrading nextcloud from 34.0.1.2 ...
nextcloud | => Searching for hook scripts (*.sh) to run, located in the folder "/docker-entrypoint-hooks.d/pre-upgrade"
nextcloud | ==> Skipped: the "pre-upgrade" folder is empty (or does not exist)
nextcloud | Updating database schema
nextcloud | => Searching for hook scripts (*.sh) to run, located in the folder "/docker-entrypoint-hooks.d/post-upgrade"
nextcloud | ==> Skipped: the "post-upgrade" folder is empty (or does not exist)
@@ -0,0 +1,59 @@
[20:01:30] MV-nextcloud: deploying nextcloud at FROM {'nextcloud': 'nextcloud:34.0.1-apache', 'nextcloud-db': 'mariadb:12.3', 'nextcloud-redis': 'redis:7-alpine'}
[20:02:13] FROM settled=True in 31.1s :: {"nextcloud": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "nextcloud-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "nextcloud-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[20:02:13] fixture: the BOX walk's own (Nextcloud), through upgrade_boxport
[20:02:15] nextcloud: occ user:add :: The account "drill52d90c" was created successfully Display name set to "drill52d90c"
[20:02:16] nextcloud: seeded user drill52d90c
[20:02:17] nextcloud: readback of the seeded user found=True
[20:02:17] C1 (seed reads back BEFORE): True
[20:02:17] MV-nextcloud: swapping to TO {'nextcloud': 'nextcloud:34.0.4-apache', 'nextcloud-db': 'mariadb:12.3', 'nextcloud-redis': 'redis:7-alpine'}
[20:02:19] TO up -d rc=0
[20:02:51] TO settled=True in 31.2s :: {"nextcloud": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "nextcloud-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "nextcloud-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[20:02:51] engine state nextcloud-db: 12.3.3-MariaDB| This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]
[20:02:51] migration lines observed: 6
[20:02:52] nextcloud: readback of the seeded user found=True
[20:02:52] RESULT (seed reads back AFTER): True
[20:02:52] files_may_change: the bind-mounted tree changed under ['/srv/felhom-gate/hdd/appdata/nextcloud']
[20:02:52] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:80
[20:03:08] + 15s nextcloud=1023M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=4M/128M peak=6M kills=0 rs=0 reqs=253
[20:03:23] + 30s nextcloud=1022M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=4M/128M peak=7M kills=0 rs=0 reqs=513
[20:03:38] + 46s nextcloud=1023M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=6M/128M peak=7M kills=0 rs=0 reqs=774
[20:03:53] + 61s nextcloud=1023M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=6M/128M peak=8M kills=0 rs=0 reqs=1035
[20:04:08] + 76s nextcloud=1022M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=7M/128M peak=8M kills=0 rs=0 reqs=1295
[20:04:23] + 91s nextcloud=1022M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=7M/128M peak=9M kills=0 rs=0 reqs=1559
[20:04:39] + 106s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=7M/128M peak=9M kills=0 rs=0 reqs=1819
[20:04:54] + 121s nextcloud=1022M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=7M/128M peak=9M kills=0 rs=0 reqs=2085
[20:05:09] + 136s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=8M/128M peak=11M kills=0 rs=0 reqs=2346
[20:05:24] + 152s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=8M/128M peak=11M kills=0 rs=0 reqs=2610
[20:05:39] + 167s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=9M/128M peak=11M kills=0 rs=0 reqs=2874
[20:05:54] + 182s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=10M/128M peak=12M kills=0 rs=0 reqs=3135
[20:06:10] + 197s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=11M/128M peak=13M kills=0 rs=0 reqs=3400
[20:06:25] + 212s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=11M/128M peak=13M kills=0 rs=0 reqs=3665
[20:06:40] + 228s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=12M/128M peak=13M kills=0 rs=0 reqs=3928
[20:06:55] + 243s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=13M/128M peak=14M kills=0 rs=0 reqs=4192
[20:07:10] + 258s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=14M/128M peak=16M kills=0 rs=0 reqs=4451
[20:07:25] + 273s nextcloud=1022M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=14M/128M peak=16M kills=0 rs=0 reqs=4709
[20:07:41] + 288s nextcloud=1023M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=14M/128M peak=16M kills=0 rs=0 reqs=4969
[20:07:56] + 303s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=15M/128M peak=17M kills=0 rs=0 reqs=5226
[20:08:11] + 318s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=16M/128M peak=17M kills=0 rs=0 reqs=5482
[20:08:26] + 334s nextcloud=1022M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=17M/128M peak=20M kills=0 rs=0 reqs=5744
[20:08:41] + 349s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=18M/128M peak=20M kills=0 rs=0 reqs=6003
[20:08:56] + 364s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=180M/512M peak=184M kills=0 rs=0 nextcloud-redis=18M/128M peak=20M kills=0 rs=0 reqs=6263
[20:09:12] + 379s nextcloud=1021M/1024M peak=1024M kills=0 rs=0 nextcloud-db=184M/512M peak=187M kills=0 rs=0 nextcloud-redis=18M/128M peak=20M kills=0 rs=0 reqs=6519
[20:09:27] + 394s nextcloud=999M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=20M/128M peak=24M kills=0 rs=0 reqs=6780
[20:09:42] + 410s nextcloud=1000M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=20M/128M peak=24M kills=0 rs=0 reqs=7040
[20:09:57] + 425s nextcloud=999M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=21M/128M peak=24M kills=0 rs=0 reqs=7301
[20:10:12] + 440s nextcloud=1000M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=21M/128M peak=24M kills=0 rs=0 reqs=7563
[20:10:27] + 455s nextcloud=1000M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=23M/128M peak=28M kills=0 rs=0 reqs=7826
[20:10:43] + 470s nextcloud=999M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=24M/128M peak=28M kills=0 rs=0 reqs=8085
[20:10:58] + 485s nextcloud=1000M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=24M/128M peak=28M kills=0 rs=0 reqs=8345
[20:11:13] + 501s nextcloud=999M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=24M/128M peak=28M kills=0 rs=0 reqs=8606
[20:11:28] + 516s nextcloud=1000M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=26M/128M peak=28M kills=0 rs=0 reqs=8862
[20:11:43] + 531s nextcloud=999M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=26M/128M peak=30M kills=0 rs=0 reqs=9122
[20:11:58] + 546s nextcloud=992M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=26M/128M peak=30M kills=0 rs=0 reqs=9379
[20:12:14] + 561s nextcloud=978M/1024M peak=1024M kills=0 rs=0 nextcloud-db=183M/512M peak=187M kills=0 rs=0 nextcloud-redis=28M/128M peak=30M kills=0 rs=0 reqs=9639
[20:12:29] + 576s nextcloud=956M/1024M peak=1024M kills=0 rs=0 nextcloud-db=181M/512M peak=187M kills=0 rs=0 nextcloud-redis=28M/128M peak=30M kills=0 rs=0 reqs=9899
[20:12:44] + 592s nextcloud=956M/1024M peak=1024M kills=0 rs=0 nextcloud-db=181M/512M peak=187M kills=0 rs=0 nextcloud-redis=30M/128M peak=35M kills=0 rs=0 reqs=10160
[20:12:59] + 607s nextcloud=930M/1024M peak=1024M kills=0 rs=0 nextcloud-db=181M/512M peak=187M kills=0 rs=0 nextcloud-redis=30M/128M peak=35M kills=0 rs=0 reqs=10423
[20:12:59] memory watch: killed=False tight=[] requests=10423 codes={'302': 10423}
[20:12:59] MV-nextcloud: ABORT — putting the FROM images back
[20:16:04] ABORT: the app did NOT come back (rc=0, 180.9s)
@@ -0,0 +1,128 @@
nextcloud-redis | 1:C 23 Sep 2026 22:01:31.598 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
nextcloud-redis | 1:C 23 Sep 2026 22:01:31.598 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
nextcloud-redis | 1:C 23 Sep 2026 22:01:31.598 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
nextcloud-redis | 1:C 23 Sep 2026 22:01:31.598 * Configuration loaded
nextcloud-redis | 1:M 23 Sep 2026 22:01:31.598 * monotonic clock: POSIX clock_gettime
nextcloud-redis | 1:M 23 Sep 2026 22:01:31.599 * Running mode=standalone, port=6379.
nextcloud-redis | 1:M 23 Sep 2026 22:01:31.600 * Server initialized
nextcloud-redis | 1:M 23 Sep 2026 22:01:31.603 * Creating AOF base file appendonly.aof.1.base.rdb on server start
nextcloud-redis | 1:M 23 Sep 2026 22:01:31.611 * Creating AOF incr file appendonly.aof.1.incr.aof on server start
nextcloud-redis | 1:M 23 Sep 2026 22:01:31.611 * Ready to accept connections tcp
nextcloud-db | 2026-09-23 22:01:31+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
nextcloud-db | 2026-09-23 22:01:31+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
nextcloud-db | 2026-09-23 22:01:31+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
nextcloud-db | 2026-09-23 22:01:31+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
nextcloud-db | 2026-09-23 22:01:32+02:00 [Note] [Entrypoint]: Initializing database files
nextcloud-db | 2026-09-23 22:01:32 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup).
nextcloud-db | create_uring failed: falling back to libaio
nextcloud-db | 2026-09-23 22:01:34+02:00 [Note] [Entrypoint]: Database files initialized
nextcloud-db | 2026-09-23 22:01:34+02:00 [Note] [Entrypoint]: Starting temporary server
nextcloud-db | 2026-09-23 22:01:34+02:00 [Note] [Entrypoint]: Waiting for server startup
nextcloud-db | 2026-09-23 22:01:34 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid zBCjnNnCwpFijyK/FCLSYWzb8eA= as process 93
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: Compressed tables use zlib 1.3
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: Number of transaction pools: 1
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
nextcloud-db | 2026-09-23 22:01:34 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup).
nextcloud-db | create_uring failed: falling back to libaio
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: Using Linux native AIO
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: Completed initialization of buffer pool
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: End of log at LSN=45568
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: Opened 3 undo tablespaces
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
nextcloud-db | 2026-09-23 22:01:34 0 [Note] InnoDB: log sequence number 45568; transaction id 14
nextcloud-db | 2026-09-23 22:01:34 0 [Note] Plugin 'FEEDBACK' is disabled.
nextcloud-db | 2026-09-23 22:01:34 0 [Note] Plugin 'wsrep-provider' is disabled.
nextcloud-db | 2026-09-23 22:01:35 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
nextcloud-db | 2026-09-23 22:01:35 0 [Note] Replication not automatically started: --skip-slave-start was specified
nextcloud-db | 2026-09-23 22:01:35 0 [Note] mariadbd: ready for connections.
nextcloud-db | Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 0 mariadb.org binary distribution
nextcloud-db | 2026-09-23 22:01:36+02:00 [Note] [Entrypoint]: Temporary server started.
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Creating database nextcloud
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Creating user nextcloud
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Giving user nextcloud access to schema nextcloud
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Securing system users (equivalent to running mysql_secure_installation)
nextcloud-db |
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Stopping temporary server
nextcloud | => Configuring PHP session handler...
nextcloud | ==> Using Redis as PHP session handler...
nextcloud | Initializing nextcloud 34.0.4.1 ...
nextcloud | Upgrading nextcloud from 34.0.1.2 ...
nextcloud | => Searching for hook scripts (*.sh) to run, located in the folder "/docker-entrypoint-hooks.d/pre-upgrade"
nextcloud | ==> Skipped: the "pre-upgrade" folder is empty (or does not exist)
nextcloud | Setting log level to debug
nextcloud | Turned on maintenance mode
nextcloud-db | 2026-09-23 22:01:37 0 [Note] mariadbd (initiated by: unknown): Normal shutdown
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: FTS optimize thread exiting.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Starting shutdown...
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Buffer pool(s) dump completed at 260923 22:01:37
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
nextcloud-db | 2026-09-23 22:01:37 0 [Note] Shutdown completed; log sequence number 45568; transaction id 15
nextcloud-db | 2026-09-23 22:01:37 0 [Note] mariadbd: Shutdown complete
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: Temporary server stopped
nextcloud-db |
nextcloud-db | 2026-09-23 22:01:37+02:00 [Note] [Entrypoint]: MariaDB init process done. Ready for start up.
nextcloud-db |
nextcloud-db | 2026-09-23 22:01:37 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid zBCjnNnCwpFijyK/FCLSYWzb8eA= as process 1
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Compressed tables use zlib 1.3
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Number of transaction pools: 1
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
nextcloud-db | 2026-09-23 22:01:37 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup).
nextcloud-db | create_uring failed: falling back to libaio
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Using Linux native AIO
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Completed initialization of buffer pool
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: End of log at LSN=45568
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Opened 3 undo tablespaces
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: log sequence number 45568; transaction id 14
nextcloud-db | 2026-09-23 22:01:37 0 [Note] Plugin 'FEEDBACK' is disabled.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] Plugin 'wsrep-provider' is disabled.
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
nextcloud-db | 2026-09-23 22:01:37 0 [Note] InnoDB: Buffer pool(s) load completed at 260923 22:01:37
nextcloud-db | 2026-09-23 22:01:40 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
nextcloud-db | 2026-09-23 22:01:40 0 [Note] Server socket created on IP: '::', port: '3306'.
nextcloud-db | 2026-09-23 22:01:40 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
nextcloud-db | 2026-09-23 22:01:40 0 [Note] mariadbd: ready for connections.
nextcloud-db | Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
nextcloud | Updating database schema
nextcloud | Updated database
nextcloud | Updating <dav> ...
nextcloud | Fix broken values of calendar objects
nextcloud |
nextcloud | Starting ...
nextcloud |
nextcloud | Clean up old calendar subscriptions from deleted users that were not cleaned-up
nextcloud |
nextcloud | 0/0 [>---------------------------] 0% Starting ...
nextcloud |
nextcloud | Updated <dav> to 1.40.0
nextcloud | Updating <files_lock> ...
nextcloud | Updated <files_lock> to 34.0.1
nextcloud | Updating <files_downloadlimit> ...
nextcloud | Updated <files_downloadlimit> to 5.2.0
nextcloud | Updating <files_pdfviewer> ...
nextcloud | Updated <files_pdfviewer> to 7.0.0
nextcloud | Starting code integrity check...
nextcloud | Finished code integrity check
nextcloud | Update successful
nextcloud | Turned off maintenance mode
nextcloud | Resetting log level
nextcloud | => Searching for hook scripts (*.sh) to run, located in the folder "/docker-entrypoint-hooks.d/post-upgrade"
nextcloud | ==> Skipped: the "post-upgrade" folder is empty (or does not exist)
nextcloud | Initializing finished
nextcloud | Warning: /var/www/html/config/s3.config.php differs from the latest version of this image at /usr/src/nextcloud/config/s3.config.php
nextcloud | => Searching for hook scripts (*.sh) to run, located in the folder "/docker-entrypoint-hooks.d/before-starting"
nextcloud | ==> Skipped: the "before-starting" folder is empty (or does not exist)
nextcloud | 0/0 [->--------------------------] 0%AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.2. Set the 'ServerName' directive globally to suppress this message
nextcloud | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.2. Set the 'ServerName' directive globally to suppress this message
nextcloud | [Wed Sep 23 22:02:46.866497 2026] [mpm_prefork:notice] [pid 1:tid 1] AH00163: Apache/2.4.68 (Debian) PHP/8.5.10 configured -- resuming normal operations
nextcloud | [Wed Sep 23 22:02:46.866539 2026] [core:notice] [pid 1:tid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
nextcloud | 127.0.0.1 - - [23/Sep/2026:22:02:49 +0200] "GET /status.php HTTP/1.1" 200 1064 "-" "curl/8.14.1"
@@ -0,0 +1,20 @@
{
"nextcloud": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"nextcloud-db": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"nextcloud-redis": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,86 @@
{
"harness_version": 3,
"edge": "MV-nextcloud",
"app": "nextcloud",
"note": "night 2026-09-23 within-a-major move: nextcloud=nextcloud:34.0.4-apache",
"from": {
"nextcloud": "nextcloud:34.0.1-apache",
"nextcloud-db": "mariadb:12.3",
"nextcloud-redis": "redis:7-alpine"
},
"to": {
"nextcloud": "nextcloud:34.0.4-apache",
"nextcloud-db": "mariadb:12.3",
"nextcloud-redis": "redis:7-alpine"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "\u001b[2Knextcloud | Upgrading nextcloud from 34.0.1.2 ...",
"abort": "refuses",
"abort_detail": "Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?\n\u001b[2Knextcloud | => Configuring PHP session handler...\n\u001b[2Knextcloud | ==> Using Redis as PHP session handler...\n\u001b[2Knextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?\n\u001b[2Knextcloud | => Configuring PHP session handler...\n\u001b[2Knextcloud | ==> Using Redis as PHP session handler...\n\u001b[2Knextcloud | Can't start Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have pulled the newest image version?",
"engine_state_after": {
"nextcloud-db": {
"image": "mariadb:12.3",
"probe": "datadir version | the engine's own upgrade verdict",
"answer": "12.3.3-MariaDB| This installation of MariaDB is already upgraded to 12.3.3-MariaDB. There is no need to run mariadb-upgrade again. [exit=1]",
"probe_rc": 0
}
},
"memory": {
"soak_s": 607.1,
"requested_s": 600,
"requests": 10423,
"codes": {
"302": 10423
},
"first_kill": null,
"containers": {
"nextcloud": {
"limit": 1073741824,
"peak": 1073741824,
"peak_pct": 1.0,
"anon_peak_sampled": 84439040,
"anon_peak_pct": 0.079,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
},
"nextcloud-db": {
"limit": 536870912,
"peak": 196354048,
"peak_pct": 0.366,
"anon_peak_sampled": 130146304,
"anon_peak_pct": 0.242,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
},
"nextcloud-redis": {
"limit": 134217728,
"peak": 37715968,
"peak_pct": 0.281,
"anon_peak_sampled": 9433088,
"anon_peak_pct": 0.07,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
}
},
"unmeasured": []
},
"marks": [
"files_may_change"
],
"duration_s": 31.2,
"measured_at": "2026-09-23T20:16:04Z",
"evidence": "evidence/MV-nextcloud",
"files_changed": [
"/srv/felhom-gate/hdd/appdata/nextcloud"
],
"total_s": 873.1
}
@@ -0,0 +1,40 @@
[18:39:45] C3: deploying privatebin at FROM {'privatebin': 'privatebin/pdo:2.0.5'}
[18:40:16] FROM settled=True in 30.8s :: {"privatebin": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[18:40:16] privatebin: seeded paste id=a7c6f18ad9707051
[18:40:16] privatebin: readback http=200 marker_present=True
[18:40:16] C1 (seed reads back BEFORE): True
[18:40:16] C3: swapping to TO {'privatebin': 'alpine:3.20'}
[18:40:20] TO up -d rc=0
[18:47:24] TO settled=False in 424.4s :: {"privatebin": {"status": "restarting", "health": "unhealthy", "restarts": 0, "exit": 0}}
[18:47:24] migration lines observed: 0
[18:47:24] RESULT (seed reads back AFTER): False
[18:47:25] C3: ABORT — putting the FROM images back
[18:47:56] privatebin: readback http=200 marker_present=True
[18:47:56] ABORT: app came back in 30.8s; data present=True
{
"harness_version": 3,
"edge": "C3",
"app": "privatebin",
"note": "NEGATIVE control: the TO image starts and exits immediately",
"from": {
"privatebin": "privatebin/pdo:2.0.5"
},
"to": {
"privatebin": "alpine:3.20"
},
"verdict": "failed",
"seed_read_before": true,
"seed_read_after": false,
"healthy_after": false,
"migration_observed": null,
"abort": "starts-and-serves",
"abort_detail": null,
"engine_state_after": null,
"memory": null,
"marks": [],
"duration_s": 424.4,
"measured_at": "2026-09-23T18:47:56Z",
"evidence": "evidence/C3",
"files_changed": [],
"total_s": 491.2
}
@@ -0,0 +1,8 @@
{
"privatebin": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,5 @@
privatebin | [23-Sep-2026 20:47:25] NOTICE: fpm is running, pid 11
privatebin | [23-Sep-2026 20:47:25] NOTICE: ready to handle connections
privatebin | 127.0.0.1 - - [23/Sep/2026:20:47:55 +0200] "GET / HTTP/1.1" 200 19657 "-" "Wget" "-"
privatebin | 172.18.0.1 - - [23/Sep/2026:20:47:55 +0200] "GET / HTTP/1.1" 200 22914 "-" "curl/8.14.1" "-"
privatebin | 172.18.0.1 - - [23/Sep/2026:20:47:55 +0200] "GET /?pasteid=a7c6f18ad9707051 HTTP/1.1" 200 310 "-" "curl/8.14.1" "-"
@@ -0,0 +1,13 @@
[18:39:45] C3: deploying privatebin at FROM {'privatebin': 'privatebin/pdo:2.0.5'}
[18:40:16] FROM settled=True in 30.8s :: {"privatebin": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[18:40:16] privatebin: seeded paste id=a7c6f18ad9707051
[18:40:16] privatebin: readback http=200 marker_present=True
[18:40:16] C1 (seed reads back BEFORE): True
[18:40:16] C3: swapping to TO {'privatebin': 'alpine:3.20'}
[18:40:20] TO up -d rc=0
[18:47:24] TO settled=False in 424.4s :: {"privatebin": {"status": "restarting", "health": "unhealthy", "restarts": 0, "exit": 0}}
[18:47:24] migration lines observed: 0
[18:47:24] RESULT (seed reads back AFTER): False
[18:47:25] C3: ABORT — putting the FROM images back
[18:47:56] privatebin: readback http=200 marker_present=True
[18:47:56] ABORT: app came back in 30.8s; data present=True
@@ -0,0 +1,8 @@
{
"privatebin": {
"status": "restarting",
"health": "unhealthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,27 @@
{
"harness_version": 3,
"edge": "C3",
"app": "privatebin",
"note": "NEGATIVE control: the TO image starts and exits immediately",
"from": {
"privatebin": "privatebin/pdo:2.0.5"
},
"to": {
"privatebin": "alpine:3.20"
},
"verdict": "failed",
"seed_read_before": true,
"seed_read_after": false,
"healthy_after": false,
"migration_observed": null,
"abort": "starts-and-serves",
"abort_detail": null,
"engine_state_after": null,
"memory": null,
"marks": [],
"duration_s": 424.4,
"measured_at": "2026-09-23T18:47:56Z",
"evidence": "evidence/C3",
"files_changed": [],
"total_s": 491.2
}
@@ -1 +1,3 @@
22:01:25 START nextcloud ['nextcloud=nextcloud:34.0.4-apache']
22:16:09 DONE nextcloud rc=0 verdict=proven read_before=True read_after=True abort=refuses marks=['files_may_change'] peaks={'nextcloud': 1.0, 'nextcloud-db': 0.366, 'nextcloud-redis': 0.281} detail='Nextcloud because the version of the data (34.0.4.1) is higher than the docker image version (34.0.1.2) and downgrading is not supported. Are you sure you have ' (884s)
22:16:09 QUEUE Q11 FINISHED
@@ -0,0 +1,4 @@
22:38:24 START adventurelog ['adventurelog=ghcr.io/seanmorley15/adventurelog-backend:v0.13.0', 'adventurelog-frontend=ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0']
22:39:08 START adventurelog ['adventurelog=ghcr.io/seanmorley15/adventurelog-backend:v0.13.0', 'adventurelog-frontend=ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0']
22:56:00 DONE adventurelog rc=0 verdict=failed read_before=True read_after=False abort=starts-and-serves marks=[] peaks={} detail='None' (1012s)
22:56:00 QUEUE Q12 FINISHED
@@ -0,0 +1,31 @@
#!/usr/bin/env python3
"""Make docmost the BIG database of the chaos hour, through its own API with ONE login (its login is
rate-limited: 290 of 300 per-call logins answered 401 in setup). Spaces with a 4 KB description each,
then the database size asked of PostgreSQL itself."""
import json, os, sys, time
sys.path.insert(0, ".")
import walk as w
from chaos import load, save, sub_of
s = load(); A = s["apps"]["docmost"]["A"]; sub = sub_of("docmost")
w.login()
jar = f"{w.SC}/big.jar"
rc, code, out = w.app_curl(sub, "/api/auth/login", "-c", jar, "-H", "Content-Type: application/json",
data=json.dumps({"email": A["email"], "password": A["pw"]}), method="POST")
w.say(f"login http={code}")
ok = 0
desc = ("chaos-hour big database filler " * 140)[:4000]
for i in range(400):
name = f"big{i:03d}{os.urandom(2).hex()}"
rc, code, out = w.app_curl(sub, "/api/spaces/create", "-b", jar, "-H", "Content-Type: application/json",
data=json.dumps({"name": name, "slug": name, "description": desc}), method="POST")
if code in ("200", "201"):
ok += 1
elif i < 5 or i % 50 == 0:
w.say(f" {i}: http={code} {out[:120]}")
w.say(f"created {ok} spaces with one login")
size = w.guest("docker exec docmost-postgres psql -U docmost -d docmost -Atc \"select pg_size_pretty(pg_database_size('docmost')), (select count(*) from spaces)\"")
w.say(f"docmost database: {size.strip()}")
s["apps"]["docmost"]["big_extra_spaces"] = s["apps"]["docmost"].get("big_extra_spaces", 0) + ok
s["apps"]["docmost"]["db_size"] = size.strip()
save(s)
open("chaos/00-bigdb.log", "w").write("\n".join(w.LOG) + "\n")
@@ -0,0 +1 @@
[1790195982.4679723, 1790197454.9976318]
@@ -0,0 +1,88 @@
{
"apps": {
"docmost": {
"A": {
"email": "drill-98dd5988@gate.invalid",
"pw": "Drill-229ddff459946cb47bd6"
},
"big_extra_spaces": 410,
"B": {
"space": "drillBcd9d57"
},
"db_size": "11 MB|412"
},
"adventurelog": {
"A": {
"user": "drill3b57cc",
"pw": "Drill-17e741dd879a60b119f5"
}
},
"romm": {
"A": {
"user": "drill1182a0",
"pw": "Drill-075df1cd6ce6be24d01d"
},
"B": null
},
"vikunja": {
"A": {
"user": "drill976cbb",
"pw": "Drill-4d0ece299eca8fcdec71",
"title": "drill-97252f7378",
"pid": 2
},
"B": {
"title": "drillB-532c79dd",
"pid": 3,
"tid": 1,
"att": "drill attachment 50c2fcf095d70713"
}
},
"navidrome": {
"A": {
"user": "drille98865",
"pw": "Drill-02eb15051ebb33619030"
}
},
"nextcloud": {
"A": {
"uid": "drill4f7de4",
"pw": "Drill-1ede1ff8ca366cc4e6b8"
}
},
"actualbudget": {
"A": {
"pw": "Drill-29fc431da523254ffc1f"
}
},
"papra": {
"A": {
"email": "drill-bb835c68@gate.invalid",
"pw": "Drill-3ac01034208d27b2e316"
}
}
},
"setup_readback": {
"docmost": {
"A": true,
"B": true
},
"adventurelog": {
"A": true
},
"romm": {
"A": true
},
"vikunja": {
"A": true,
"B": true
},
"navidrome": {
"A": true
},
"nextcloud": {
"A": null,
"note": "no seed A recorded"
}
}
}
+25 -8
View File
@@ -212,11 +212,14 @@ def drill_wait_ref(app, ref):
return None
def act(action, app, rnd, note, s):
"""Run the action. Returns when the app is steady (or the cap). The accident fires in a thread."""
def act(action, app, rnd, note, s, arm=lambda: None):
"""Run the action. Returns when the app is steady (or the cap). The accident fires in a thread,
ARMED at the moment of the press itself (round 2 showed why: the catalog took ~7 min to reach the
box, and an accident timed from the round's start landed before the update ever began)."""
t0 = time.time()
if action == "install":
vals = w.deploy_values(app, sub_of(app))
arm()
code, d = w.ctl("POST", f"/api/stacks/{app}/deploy", {"values": vals})
note["act"] = f"deploy -> {code} {str(d)[:120]}"
secs, st = steady(app, t0)
@@ -227,10 +230,12 @@ def act(action, app, rnd, note, s):
save(s)
return secs, st
if action == "remove":
arm()
code = w.remove(app)
note["act"] = f"remove -> {code}"
return steady(app, t0, want_deployed=False)
if action == "restore":
arm()
res = w.restore(app)
note["act"] = {k: res.get(k) for k in ("ok", "why", "snapshot_id", "http", "seconds", "state_after", "hold_after")}
return steady(app, t0)
@@ -240,8 +245,9 @@ def act(action, app, rnd, note, s):
else: # fail_health / cutoff: the real image move + a probe port the app does not answer
h = break_edge(app, frm, to, port, 8999 if port != 8999 else 8998)
note["drill_commit"] = h
note["badge_catchup_rounds"] = drill_wait_ref(app, to.split(",")[0])
w.sync_rescan(expect_app=app, expect_ref=to.split(",")[0])
# For an INSTALLED app the stack dir's compose is the applied one, not the catalog's — waiting on
# it cost ~7 min in rounds 2 and 4. The badge's own input (`catalog_images`) is the right wait.
note["badge_catchup_s"] = w.sync_rescan(expect_app=app, expect_ref=to.split(",")[0], tries=60, delay=5)
on_phase = None
if action == "cutoff":
done = {}
@@ -254,6 +260,7 @@ docker run --rm -v $c:/c alpine sh -c 'rm -f /c/felhom-undo-complete; ls /c | he
note["cutoff"] = out.strip()
w.say(" >>> finished-marker removed from one undo copy:\n" + out)
return False
arm()
phases, st = live.press(app, poll=0.5, on_phase=on_phase)
note["phases"] = phases
return steady(app, t0)
@@ -352,16 +359,22 @@ def run_round(n):
note["before"] = household(app) if w.stack(app).get("deployed") else {"state": "not deployed"}
if n in SECOND: # the second app gets its good step in the drill catalog before the round
note["second_drill_commit"] = w.drill_bump(SECOND[n], "mariadb:11.4", "mariadb:11.8")
note["second_template_rounds"] = drill_wait_ref(SECOND[n], "mariadb:11.8")
note["second_badge_catchup_s"] = w.sync_rescan(expect_app=SECOND[n], expect_ref="mariadb:11.8", tries=60, delay=5)
t0 = time.time()
timer = threading.Timer(sched["delay_s"], accident, args=(sched["accident"], n, app, note))
timer.start()
def arm():
note["armed_at"] = time.strftime("%H:%M:%S")
timer.start()
try:
secs, st = act(sched["action"], app, n, note, s)
secs, st = act(sched["action"], app, n, note, s, arm)
except Exception as e:
note["act_exception"] = repr(e)
secs, st = None, {}
timer.join()
if timer.is_alive() or note.get("armed_at"):
timer.join()
else:
note["accident"] = "NOT FIRED — the action ended before it was armed"
if sched["accident"] in ("power_cut", "docker_restart", "controller_kill"):
note["controller_back_s"] = wait_controller()
secs2, st = steady(app, t0, want_deployed=(sched["action"] != "remove"))
@@ -379,6 +392,10 @@ def run_round(n):
note["events"] = events_since(t_iso)
note["box_log"] = box_log(t_iso, app)
note["undo_copies_left"] = w.guest(f"docker volume ls -q --filter label=felhom.undo-copy-of={app} | wc -l").strip()
# the WHOLE controller log of the round, off the machine now (R-320): round 7's power cut took the
# container's earlier log with it, and round 1's app_start_failed could no longer be tied to an app
open(os.path.join(EVD, f"round-{n:02d}-controller.log"), "w").write(
w.guest(f"docker logs --since {t_iso} felhom-controller 2>&1 | grep -vE 'auth: valid session|router.go:81' | tail -3000"))
repair_drill(sched["action"], app)
json.dump(note, open(os.path.join(EVD, f"round-{n:02d}.json"), "w"), indent=2, ensure_ascii=False)
open(os.path.join(EVD, f"round-{n:02d}.log"), "w").write("\n".join(w.LOG) + "\n")
@@ -0,0 +1,3 @@
22:26:32 login http=200
22:26:48 created 400 spaces with one login
22:26:51 docmost database: 11 MB|412
@@ -0,0 +1,14 @@
22:27:04 [X] stop -> 200 {'ok': True, 'message': 'Stack nextcloud stop completed'}
22:27:09 [X] remove (with drive data) -> 409 {'ok': False, 'error': 'A(z) /mnt/felhom-drives/scratch_hdd/userdata/nextcloud tárhely jelenleg nem elérhető — az alkalmazás nem távolítható el, amíg a meghajtó
22:27:09 [X] refused because the drive path cannot be resolved (R-442, fail-closed and right) — removing the app and KEEPING the drive data instead
22:27:36 [X] remove (keeping drive data) -> 200 {'ok': True, 'data': {'removed': 'nextcloud', 'volumes_removed': ['nextcloud_nextcloud_db_data', 'nextcloud_nextcloud_html', 'nextcloud_nextcloud_redis_data'],
22:27:45 [X] after remove: deployed=False leftovers='/opt/docker/stacks/nextcloud'
22:27:48 calibre-web documents downloads emby immich jellyfin komga media navidrome paperless-ngx plex radarr romm roms sonarr
22:27:51 [1] made the drive paths this app requires: ['/mnt/felhom-drives/scratch_hdd/userdata/nextcloud']
22:27:51 [1] required fields filled beyond DOMAIN/SUBDOMAIN: ['NEXTCLOUD_ADMIN_PASSWORD', 'HDD_PATH']
22:27:51 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
22:28:36 [1] deployed, controller state=running, pinned={'nextcloud': 'nextcloud:34.0.1-apache', 'nextcloud-db': 'mariadb:12.3', 'nextcloud-redis': 'redis:7-alpine'}
22:28:45 nextcloud: occ user:add :: The account "drill4f7de4" was created successfully Display name set to "drill4f7de4"
22:28:48 nextcloud: seeded user drill4f7de4
22:28:55 nextcloud: readback of the seeded user found=True
22:28:55 nextcloud seed A: True; readback: True
@@ -0,0 +1,22 @@
Installing with MySQL database
=> Searching for hook scripts (*.sh) to run, located in the folder "/docker-entrypoint-hooks.d/pre-installation"
==> Skipped: the "pre-installation" folder is empty (or does not exist)
Starting nextcloud installation
Login is invalid because files already exist for this user
Retrying install...
Login is invalid because files already exist for this user
Retrying install...
Login is invalid because files already exist for this user
Retrying install...
Login is invalid because files already exist for this user
Retrying install...
total 141572
drwxrwx--- 5 www-data www-data 4096 Sep 23 20:15 .
drwxr-sr-x 3 root root 4096 Sep 23 18:55 ..
-rw-rw-r-- 1 www-data www-data 542 Sep 23 20:15 .htaccess
-rw-rw-r-- 1 www-data www-data 52 Sep 23 18:57 .ncdata
drwxr-sr-x 3 www-data www-data 4096 Sep 23 18:55 admin
drwxr-sr-x 6 www-data www-data 4096 Sep 23 18:57 appdata_oclterted7nn
drwxr-xr-x 2 www-data www-data 4096 Sep 23 18:56 drillf006e5
-rw-rw-r-- 1 www-data www-data 0 Sep 23 20:15 index.html
-rw-r----- 1 www-data www-data 144934959 Sep 23 18:58 nextcloud.log
@@ -0,0 +1,352 @@
22:06:47 == setup docmost (PostgreSQL + the BIG database (300 extra spaces))
22:07:03 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
22:08:49 [1] deployed, controller state=running, pinned={'docmost': 'docmost/docmost:0.95.0', 'docmost-postgres': 'postgres:16-alpine', 'docmost-redis': 'redis:7-alpine'}
22:08:49 docmost: /api/auth/setup http=200 rc=0
22:08:49 == setup adventurelog (PostgreSQL (PostGIS))
22:08:53 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
22:10:38 [1] deployed, controller state=running, pinned={'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.12.1', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine'}
22:10:44 adventurelog: createsuperuser :: Superuser created successfully.
22:10:50 adventurelog: seeded superuser drill3b57cc
22:10:50 == setup romm (MariaDB)
22:10:56 [1] made the drive paths this app requires: ['/mnt/felhom-drives/scratch_hdd/userdata/romm']
22:10:56 [1] required fields filled beyond DOMAIN/SUBDOMAIN: ['HDD_PATH']
22:10:56 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
22:11:56 [1] deployed, controller state=running, pinned={'romm': 'rommapp/romm:5.3.0', 'romm-db': 'mariadb:11.4', 'romm-redis': 'redis:7-alpine'}
22:12:09 romm: POST /api/users http=201
22:12:09 == setup vikunja (volume-only (SQLite + files in volumes))
22:12:13 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
22:12:18 [1] deployed, controller state=running, pinned={'vikunja': 'vikunja/vikunja:2.5.0'}
22:12:18 vikunja: register http=200
22:12:18 vikunja: create project http=201
22:12:18 == setup navidrome (volume-only (SQLite) + a drive folder)
22:12:24 [1] made the drive paths this app requires: ['/mnt/felhom-drives/scratch_hdd/userdata/navidrome']
22:12:24 [1] required fields filled beyond DOMAIN/SUBDOMAIN: ['HDD_PATH']
22:12:24 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
22:12:40 [1] deployed, controller state=running, pinned={'navidrome': 'deluan/navidrome:0.64.0'}
22:12:40 navidrome: createAdmin http=200
22:12:40 == setup nextcloud (FILE-LEG (user files on the drive) + MariaDB)
22:12:46 [1] made the drive paths this app requires: ['/mnt/felhom-drives/scratch_hdd/userdata/nextcloud']
22:12:46 [1] required fields filled beyond DOMAIN/SUBDOMAIN: ['NEXTCLOUD_ADMIN_PASSWORD', 'HDD_PATH']
22:12:46 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
22:14:37 [1] deployed, controller state=unhealthy, pinned={'nextcloud': 'nextcloud:34.0.1-apache', 'nextcloud-db': 'mariadb:12.3', 'nextcloud-redis': 'redis:7-alpine'}
22:14:37 [1] NOTE: the controller's own state is 'unhealthy', not 'running' — recorded, not treated as a failure; the fixture's front-door wait is the real gate
22:23:18 nextcloud: occ status never said installed: Nextcloud is not installed - only a limited number of commands are available - installed: false - version: 34.0.1.2 - versionstring: 34.0.1 - edition: - mainten
22:23:19 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-df84-7c98-a311-52eff16d1a5b","name":"drillB90903b","description":"","slug":"drillb90903b","logo":null,"visibility":"private","defaultRol
22:23:19 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e0d7-7610-887d-8149cf47bac5","name":"drillB63ccd4","description":"","slug":"drillb63ccd4","logo":null,"visibility":"private","defaultRol
22:23:19 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e21e-7b48-820b-610638e8d404","name":"drillBd30a5e","description":"","slug":"drillbd30a5e","logo":null,"visibility":"private","defaultRol
22:23:20 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e35c-711f-9e73-76e5c0fc84a1","name":"drillB204493","description":"","slug":"drillb204493","logo":null,"visibility":"private","defaultRol
22:23:20 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e49a-7be3-9188-edb2ce015686","name":"drillBe99e15","description":"","slug":"drillbe99e15","logo":null,"visibility":"private","defaultRol
22:23:20 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e5db-7ad5-9588-6c977acf5dba","name":"drillBffb74c","description":"","slug":"drillbffb74c","logo":null,"visibility":"private","defaultRol
22:23:21 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e71e-78fa-ba8d-5da49b9c0cc7","name":"drillB48b432","description":"","slug":"drillb48b432","logo":null,"visibility":"private","defaultRol
22:23:21 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e85a-7c62-8cd2-a63cf04c8b29","name":"drillBb3fc23","description":"","slug":"drillbb3fc23","logo":null,"visibility":"private","defaultRol
22:23:21 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e996-7e8b-bbb9-d73fd0cac22c","name":"drillBdc4bf4","description":"","slug":"drillbdc4bf4","logo":null,"visibility":"private","defaultRol
22:23:22 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-ead5-73aa-811f-3690fdfe0fc6","name":"drillBcdd5bd","description":"","slug":"drillbcdd5bd","logo":null,"visibility":"private","defaultRol
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:37 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:37 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:37 docmost: 10 extra spaces created (the big database)
22:23:37 == one whole-box backup on 9202 (the restore rounds need a copy)
22:23:37 backup -> 200 {'ok': True, 'message': 'Mentés elindítva'}
22:25:12 backup finished after 95s: {'db_dump': {'count': 5, 'duration': '1m30.406632262s', 'last_run': '2026-09-23T20:25:07.503991541Z', 'success': True}, 'enabled': True, 'running': False}
22:25:13 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cff1-9c46-7b33-802f-cd1da6c34802","name":"drillBcd9d57","description":"","slug":"drillbcd9d57","logo":null,"visibility":"private","defaultRol
22:25:13 seed B for docmost (after the backup): True
22:25:13 romm seed B: POST /api/users (as the admin) http=404 404 page not found
22:25:13 seed B for romm (after the backup): False
22:25:13 vikunja seed B: project http=200 task=1 attachment upload http=200 {"errors":null,"success":[{"id":1,"task_id":1,"created_by":{"id":1,"name":"","username":"drill976cbb","created":"2026-09
22:25:13 seed B for vikunja (after the backup): True
22:25:13 docmost: login as the seeded user http=200 ok=True
22:25:14 docmost B: /api/spaces http=200 seeded-space-listed=True (negative control listed=False)
22:25:25 adventurelog: readback of the seeded account found=True
22:25:51 romm: login as the seeded user http=200 ok=True
22:25:52 vikunja: readback of the seeded project http=200 ok=True
22:25:52 vikunja B: project readback=True attachment content readback=True
22:25:52 navidrome: login as the seeded user http=200 ok=True
22:25:52 setup readback: {"docmost": {"A": true, "B": true}, "adventurelog": {"A": true}, "romm": {"A": true}, "vikunja": {"A": true, "B": true}, "navidrome": {"A": true}, "nextcloud": {"A": null, "note": "no seed A recorded"}}
@@ -0,0 +1,352 @@
22:06:47 == setup docmost (PostgreSQL + the BIG database (300 extra spaces))
22:07:03 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
22:08:49 [1] deployed, controller state=running, pinned={'docmost': 'docmost/docmost:0.95.0', 'docmost-postgres': 'postgres:16-alpine', 'docmost-redis': 'redis:7-alpine'}
22:08:49 docmost: /api/auth/setup http=200 rc=0
22:08:49 == setup adventurelog (PostgreSQL (PostGIS))
22:08:53 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
22:10:38 [1] deployed, controller state=running, pinned={'adventurelog': 'ghcr.io/seanmorley15/adventurelog-backend:v0.12.1', 'adventurelog-frontend': 'ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1', 'adventurelog-postgres': 'postgis/postgis:16-3.5-alpine'}
22:10:44 adventurelog: createsuperuser :: Superuser created successfully.
22:10:50 adventurelog: seeded superuser drill3b57cc
22:10:50 == setup romm (MariaDB)
22:10:56 [1] made the drive paths this app requires: ['/mnt/felhom-drives/scratch_hdd/userdata/romm']
22:10:56 [1] required fields filled beyond DOMAIN/SUBDOMAIN: ['HDD_PATH']
22:10:56 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
22:11:56 [1] deployed, controller state=running, pinned={'romm': 'rommapp/romm:5.3.0', 'romm-db': 'mariadb:11.4', 'romm-redis': 'redis:7-alpine'}
22:12:09 romm: POST /api/users http=201
22:12:09 == setup vikunja (volume-only (SQLite + files in volumes))
22:12:13 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
22:12:18 [1] deployed, controller state=running, pinned={'vikunja': 'vikunja/vikunja:2.5.0'}
22:12:18 vikunja: register http=200
22:12:18 vikunja: create project http=201
22:12:18 == setup navidrome (volume-only (SQLite) + a drive folder)
22:12:24 [1] made the drive paths this app requires: ['/mnt/felhom-drives/scratch_hdd/userdata/navidrome']
22:12:24 [1] required fields filled beyond DOMAIN/SUBDOMAIN: ['HDD_PATH']
22:12:24 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
22:12:40 [1] deployed, controller state=running, pinned={'navidrome': 'deluan/navidrome:0.64.0'}
22:12:40 navidrome: createAdmin http=200
22:12:40 == setup nextcloud (FILE-LEG (user files on the drive) + MariaDB)
22:12:46 [1] made the drive paths this app requires: ['/mnt/felhom-drives/scratch_hdd/userdata/nextcloud']
22:12:46 [1] required fields filled beyond DOMAIN/SUBDOMAIN: ['NEXTCLOUD_ADMIN_PASSWORD', 'HDD_PATH']
22:12:46 [1] deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
22:14:37 [1] deployed, controller state=unhealthy, pinned={'nextcloud': 'nextcloud:34.0.1-apache', 'nextcloud-db': 'mariadb:12.3', 'nextcloud-redis': 'redis:7-alpine'}
22:14:37 [1] NOTE: the controller's own state is 'unhealthy', not 'running' — recorded, not treated as a failure; the fixture's front-door wait is the real gate
22:23:18 nextcloud: occ status never said installed: Nextcloud is not installed - only a limited number of commands are available - installed: false - version: 34.0.1.2 - versionstring: 34.0.1 - edition: - mainten
22:23:19 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-df84-7c98-a311-52eff16d1a5b","name":"drillB90903b","description":"","slug":"drillb90903b","logo":null,"visibility":"private","defaultRol
22:23:19 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e0d7-7610-887d-8149cf47bac5","name":"drillB63ccd4","description":"","slug":"drillb63ccd4","logo":null,"visibility":"private","defaultRol
22:23:19 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e21e-7b48-820b-610638e8d404","name":"drillBd30a5e","description":"","slug":"drillbd30a5e","logo":null,"visibility":"private","defaultRol
22:23:20 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e35c-711f-9e73-76e5c0fc84a1","name":"drillB204493","description":"","slug":"drillb204493","logo":null,"visibility":"private","defaultRol
22:23:20 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e49a-7be3-9188-edb2ce015686","name":"drillBe99e15","description":"","slug":"drillbe99e15","logo":null,"visibility":"private","defaultRol
22:23:20 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e5db-7ad5-9588-6c977acf5dba","name":"drillBffb74c","description":"","slug":"drillbffb74c","logo":null,"visibility":"private","defaultRol
22:23:21 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e71e-78fa-ba8d-5da49b9c0cc7","name":"drillB48b432","description":"","slug":"drillb48b432","logo":null,"visibility":"private","defaultRol
22:23:21 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e85a-7c62-8cd2-a63cf04c8b29","name":"drillBb3fc23","description":"","slug":"drillbb3fc23","logo":null,"visibility":"private","defaultRol
22:23:21 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-e996-7e8b-bbb9-d73fd0cac22c","name":"drillBdc4bf4","description":"","slug":"drillbdc4bf4","logo":null,"visibility":"private","defaultRol
22:23:22 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cfef-ead5-73aa-811f-3690fdfe0fc6","name":"drillBcdd5bd","description":"","slug":"drillbcdd5bd","logo":null,"visibility":"private","defaultRol
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:22 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:23 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:24 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:25 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:26 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:27 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:28 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:29 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:30 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:31 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:32 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:33 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:34 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:35 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:36 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:37 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:37 docmost seed B: /api/spaces/create http=401 {"message":"Unauthorized","statusCode":401}
22:23:37 docmost: 10 extra spaces created (the big database)
22:23:37 == one whole-box backup on 9202 (the restore rounds need a copy)
22:23:37 backup -> 200 {'ok': True, 'message': 'Mentés elindítva'}
22:25:12 backup finished after 95s: {'db_dump': {'count': 5, 'duration': '1m30.406632262s', 'last_run': '2026-09-23T20:25:07.503991541Z', 'success': True}, 'enabled': True, 'running': False}
22:25:13 docmost seed B: /api/spaces/create http=200 {"data":{"id":"01a0cff1-9c46-7b33-802f-cd1da6c34802","name":"drillBcd9d57","description":"","slug":"drillbcd9d57","logo":null,"visibility":"private","defaultRol
22:25:13 seed B for docmost (after the backup): True
22:25:13 romm seed B: POST /api/users (as the admin) http=404 404 page not found
22:25:13 seed B for romm (after the backup): False
22:25:13 vikunja seed B: project http=200 task=1 attachment upload http=200 {"errors":null,"success":[{"id":1,"task_id":1,"created_by":{"id":1,"name":"","username":"drill976cbb","created":"2026-09
22:25:13 seed B for vikunja (after the backup): True
22:25:13 docmost: login as the seeded user http=200 ok=True
22:25:14 docmost B: /api/spaces http=200 seeded-space-listed=True (negative control listed=False)
22:25:25 adventurelog: readback of the seeded account found=True
22:25:51 romm: login as the seeded user http=200 ok=True
22:25:52 vikunja: readback of the seeded project http=200 ok=True
22:25:52 vikunja B: project readback=True attachment content readback=True
22:25:52 navidrome: login as the seeded user http=200 ok=True
22:25:52 setup readback: {"docmost": {"A": true, "B": true}, "adventurelog": {"A": true}, "romm": {"A": true}, "vikunja": {"A": true, "B": true}, "navidrome": {"A": true}, "nextcloud": {"A": null, "note": "no seed A recorded"}}
@@ -0,0 +1,6 @@
docmost: all=3 labeled=0
navidrome: all=2 labeled=0
vikunja: all=2 labeled=0
romm: all=3 labeled=3
nextcloud: all=3 labeled=3
adventurelog: all=2 labeled=2
@@ -0,0 +1,2 @@
round 8: seed A did not read back — the stop rule
Cleared 23:03: round 8's app was HELD (stopped by design after the cut-off undo copy), not lost — the household's restore brought it back and seed A read back (round-08-recovery.*).
@@ -0,0 +1,8 @@
22:29:10 ==== ROUND 1: install on actualbudget x none at +11s (2026-09-23T20:29:10Z)
22:29:11 + 0.2s actualbudget: deployed=True state=not_deployed updating=False phase=None hold='None'
22:29:17 + 6.3s actualbudget: deployed=True state=deploying updating=False phase=None hold='None'
22:29:23 + 12.4s actualbudget: deployed=True state=starting updating=False phase=None hold='None'
22:29:37 + 26.6s actualbudget: deployed=True state=running updating=False phase=None hold='None'
22:29:37 actualbudget: /account/bootstrap http=200 :: {"status":"ok","data":{"token":"cbe15b58-92da-4f64-8a4d-04ac8679a894"}}
22:29:41 actualbudget: login with the seeded password http=200 ok=True
22:29:44 ==== ROUND 1 END: steady in 26.6s; readback={'A': True}; events=3
@@ -0,0 +1,70 @@
{
"round": 1,
"action": "install",
"accident": "none",
"delay_s": 11,
"app": "actualbudget",
"started": "2026-09-23T20:29:10Z",
"before": {
"state": "not deployed"
},
"act": "deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}",
"time_to_steady_s": 26.6,
"after": {
"badges": {
"hu": [],
"en": []
},
"lines": {
"hu": {
"undone_line": null,
"hold": null
},
"en": {
"undone_line": null,
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"update_error": null
}
},
"observables": {
"pinned_images": {
"actualbudget": "actualbudget/actual-server:26.9.0"
},
"installed_images": {
"actualbudget": "actualbudget/actual-server:26.9.0"
},
"catalog_images": null,
"live_compose_image_lines": [
"image: actualbudget/actual-server:26.9.0"
],
"docker_inspect": [
"actualbudget actualbudget/actual-server:26.9.0 running=true restarts=0"
]
},
"readback": {
"A": true
},
"events": [
"2026-09-23T20:29:10Z app_deploy_started (info)",
"2026-09-23T20:29:16Z app_start_failed (warning)",
"2026-09-23T20:29:22Z app_deployed (info)"
],
"box_log": [
"2026-09-23T20:29:10Z INFO [api] Deploy requested for stack: actualbudget",
"2026-09-23T20:29:10Z INFO [stacks] Deploying stack actualbudget with 2 env vars: [DOMAIN, SUBDOMAIN]",
"2026-09-23T20:29:10Z INFO [stacks] Deploying stack actualbudget — checking 1 images...",
"2026-09-23T20:29:21Z INFO [stacks] Stack actualbudget deployed successfully (took 10.9s)",
"2026-09-23T20:29:22Z INFO [stacks] installed-images actualbudget: recorded 1 service(s) (actualbudget=actualbudget/actual-server:26.9.0 (sha256:552beab3dec8…))",
"2026-09-23T20:29:22Z INFO [stacks] pin actualbudget: actualbudget=actualbudget/actual-server:26.9.0",
"2026-09-23T20:29:25Z INFO [stacks] Stack actualbudget post-start status:",
"2026-09-23T20:29:25Z INFO [stacks] actualbudget actualbudget/actual-server:26.9.0 running Up 3 seconds (health: starting)"
],
"undo_copies_left": "0"
}
@@ -0,0 +1,7 @@
22:29:10 ==== ROUND 1: install on actualbudget x none at +11s (2026-09-23T20:29:10Z)
22:29:11 + 0.2s actualbudget: deployed=True state=not_deployed updating=False phase=None hold='None'
22:29:17 + 6.3s actualbudget: deployed=True state=deploying updating=False phase=None hold='None'
22:29:23 + 12.4s actualbudget: deployed=True state=starting updating=False phase=None hold='None'
22:29:37 + 26.6s actualbudget: deployed=True state=running updating=False phase=None hold='None'
22:29:37 actualbudget: /account/bootstrap http=200 :: {"status":"ok","data":{"token":"cbe15b58-92da-4f64-8a4d-04ac8679a894"}}
22:29:41 actualbudget: login with the seeded password http=200 ok=True
@@ -0,0 +1,16 @@
22:29:44 ==== ROUND 2: good_update on docmost x box_backup at +46s (2026-09-23T20:29:44Z)
22:29:45 [5] drill commit b5b7f194a6b8: docmost docmost/docmost:0.95.0 -> docmost/docmost:0.96.0 (push rc=0)
22:30:30 >>> ACCIDENT box_backup at 22:30:30
22:30:30 >>> POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 22:30:30
22:37:14 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
22:37:14 + 0.0s phase=safety-dump label=Adatbázis pillanatkép…
22:37:17 + 2.1s phase=pulling label=Új verzió letöltése…
22:38:31 + 76.6s phase=copying label=Az adatok másolása a frissítés előtt…
22:38:36 + 81.4s phase=starting label=Indítás az új verzióval…
22:38:47 + 92.4s phase=verifying label=Működés ellenőrzése…
22:39:03 + 108.1s phase=done label=Frissítve
22:39:03 END phase=done err=None hold=None
22:39:03 + 558.3s docmost: deployed=True state=running updating=False phase=done hold='None'
22:39:07 docmost: login as the seeded user http=200 ok=True
22:39:07 docmost B: /api/spaces http=200 seeded-space-listed=False (negative control listed=False)
22:39:10 ==== ROUND 2 END: steady in 558.3s; readback={'A': True, 'B': False}; events=0
@@ -0,0 +1,199 @@
{
"round": 2,
"action": "good_update",
"accident": "POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 22:30:30",
"delay_s": 46,
"app": "docmost",
"started": "2026-09-23T20:29:44Z",
"before": {
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"lines": {
"hu": {
"undone_line": null,
"hold": null
},
"en": {
"undone_line": null,
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"update_error": null
}
},
"drill_commit": "b5b7f194a6b8",
"badge_catchup_rounds": null,
"phases": [
[
0.0,
"safety-dump",
"Adatbázis pillanatkép…"
],
[
2.1,
"pulling",
"Új verzió letöltése…"
],
[
76.6,
"copying",
"Az adatok másolása a frissítés előtt…"
],
[
81.4,
"starting",
"Indítás az új verzióval…"
],
[
92.4,
"verifying",
"Működés ellenőrzése…"
],
[
108.1,
"done",
"Frissítve"
]
],
"time_to_steady_s": 558.3,
"after": {
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"lines": {
"hu": {
"undone_line": null,
"hold": null
},
"en": {
"undone_line": null,
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": "done",
"hold_reason": null,
"update_error": null
}
},
"observables": {
"pinned_images": {
"docmost": "docmost/docmost:0.96.0",
"docmost-postgres": "postgres:16-alpine",
"docmost-redis": "redis:7-alpine"
},
"installed_images": {
"docmost": "docmost/docmost:0.96.0",
"docmost-postgres": "postgres:16-alpine",
"docmost-redis": "redis:7-alpine"
},
"catalog_images": {
"docmost": "docmost/docmost:0.96.0",
"docmost-postgres": "postgres:16-alpine",
"docmost-redis": "redis:7-alpine"
},
"live_compose_image_lines": [
"image: docmost/docmost:0.96.0",
"image: postgres:16-alpine",
"image: redis:7-alpine"
],
"docker_inspect": [
"docmost docmost/docmost:0.96.0 running=true restarts=0",
"docmost-postgres postgres:16-alpine running=true restarts=0",
"docmost-redis redis:7-alpine running=true restarts=0"
]
},
"readback": {
"A": true,
"B": false
},
"events": [],
"box_log": [
"2026-09-23T20:34:12Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:34:24Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:34:36Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:34:46Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:34:49Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:35:01Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:35:13Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:35:25Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:35:37Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:35:50Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:36:02Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:36:14Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:36:26Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:36:39Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:36:46Z INFO [scheduler] Running job: backup-cache",
"2026-09-23T20:36:46Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:36:46Z INFO [backup] Found 5 DB dump files across drives",
"2026-09-23T20:36:46Z INFO [backup] Discovered 5 databases",
"2026-09-23T20:36:46Z INFO [backup] Backup status cache refreshed",
"2026-09-23T20:36:46Z INFO [scheduler] Job backup-cache completed (took 279ms)",
"2026-09-23T20:36:51Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:37:03Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:37:12Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:37:14Z INFO [api] update requested for stack: docmost",
"2026-09-23T20:37:14Z INFO [stacks] update docmost: accepted — guarded update started",
"2026-09-23T20:37:14Z INFO [stacks] update docmost: phase checking",
"2026-09-23T20:37:14Z INFO [stacks] update docmost: precondition met — Tier 1 (own recovery unit) copy from 2026-09-23T20:31:46Z (5m0s old, limit 24h0m0s)",
"2026-09-23T20:37:14Z INFO [stacks] update docmost: phase safety-dump",
"2026-09-23T20:37:15Z INFO [backup] Discovered 5 databases",
"2026-09-23T20:37:15Z INFO [backup] DB dump: docmost-postgres → pre-restore-20260923T203715Z-docmost-postgres.sql (1.8 MB, 331ms, 42 tables)",
"2026-09-23T20:37:15Z INFO [offbox] docmost: pre-restore safety dump written → pre-restore-20260923T203715Z-docmost-postgres.sql (1.8 MB)",
"2026-09-23T20:37:15Z INFO [backup] update safety dump for docmost: 1 file(s) [/mnt/sys_drive/felhom-data/backups/primary/docmost/db-dumps/pre-restore-20260923T203715Z-docmost-postgres.sql]",
"2026-09-23T20:37:15Z INFO [stacks] update docmost: safety dump done (1 file(s)) [/mnt/sys_drive/felhom-data/backups/primary/docmost/db-dumps/pre-restore-20260923T203715Z-docmost-postgres.sql]",
"2026-09-23T20:37:16Z INFO [stacks] update docmost: the undo copy will hold 3 named volume(s), 65.5 MiB",
"2026-09-23T20:37:16Z INFO [stacks] update docmost: phase pinning",
"2026-09-23T20:37:16Z INFO [stacks] update docmost: pin advanced to the catalog's current definition (docmost=docmost/docmost:0.96.0, docmost-postgres=postgres:16-alpine, docmost-redis=redis:7-alpine)",
"2026-09-23T20:37:16Z INFO [stacks] update docmost: phase pulling",
"2026-09-23T20:37:46Z INFO [deadapp] check alive: 260 scans since boot, 10 deployed app(s) evaluated, 1 currently down",
"2026-09-23T20:38:31Z INFO [stacks] update docmost: phase copying",
"2026-09-23T20:38:33Z INFO [stacks] update docmost: phase copying",
"2026-09-23T20:38:35Z INFO [stacks] update docmost: copied docmost_docmost_postgres_data → docmost_docmost_postgres_data.pre-update-20260923T203833Z in 1.612s",
"2026-09-23T20:38:35Z INFO [stacks] update docmost: phase copying",
"2026-09-23T20:38:35Z INFO [stacks] update docmost: copied docmost_docmost_redis_data → docmost_docmost_redis_data.pre-update-20260923T203833Z in 473ms",
"2026-09-23T20:38:35Z INFO [stacks] update docmost: phase copying",
"2026-09-23T20:38:35Z INFO [stacks] update docmost: copied docmost_docmost_storage → docmost_docmost_storage.pre-update-20260923T203833Z in 443ms",
"2026-09-23T20:38:35Z INFO [stacks] update docmost: phase starting",
"2026-09-23T20:38:46Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:38:47Z INFO [stacks] update docmost: phase verifying",
"2026-09-23T20:39:02Z INFO [stacks] update docmost: healthy after 15s (the app's health check passed)",
"2026-09-23T20:39:02Z INFO [stacks] installed-images docmost: recorded 3 service(s) (docmost=docmost/docmost:0.96.0 (sha256:b56947fcfd08…), docmost-postgres=postgres:16-alpine (sha256:721873c34ceb…), docmost-redis=redis:7-alpine (sha256:858f009f9709…))",
"2026-09-23T20:39:02Z INFO [stacks] update docmost: DONE in 1m48s"
],
"undo_copies_left": "0",
"readback_B_reread": {
"value": true,
"why": "the first reading asked page 1 only (20 of 412 spaces, sorted by name); B sat pages deep. Row present in PostgreSQL (drillBcd9d57, 22:25:13). Fixture fixed to page through; this is the re-read through the app."
}
}
@@ -0,0 +1,15 @@
22:29:44 ==== ROUND 2: good_update on docmost x box_backup at +46s (2026-09-23T20:29:44Z)
22:29:45 [5] drill commit b5b7f194a6b8: docmost docmost/docmost:0.95.0 -> docmost/docmost:0.96.0 (push rc=0)
22:30:30 >>> ACCIDENT box_backup at 22:30:30
22:30:30 >>> POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 22:30:30
22:37:14 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
22:37:14 + 0.0s phase=safety-dump label=Adatbázis pillanatkép…
22:37:17 + 2.1s phase=pulling label=Új verzió letöltése…
22:38:31 + 76.6s phase=copying label=Az adatok másolása a frissítés előtt…
22:38:36 + 81.4s phase=starting label=Indítás az új verzióval…
22:38:47 + 92.4s phase=verifying label=Működés ellenőrzése…
22:39:03 + 108.1s phase=done label=Frissítve
22:39:03 END phase=done err=None hold=None
22:39:03 + 558.3s docmost: deployed=True state=running updating=False phase=done hold='None'
22:39:07 docmost: login as the seeded user http=200 ok=True
22:39:07 docmost B: /api/spaces http=200 seeded-space-listed=False (negative control listed=False)
@@ -0,0 +1,13 @@
22:39:10 ==== ROUND 3: restore on vikunja x controller_kill at +28s (2026-09-23T20:39:10Z)
22:39:11 [R] restoring vikunja from snapshot 'helyi' (of 1 offered)
22:39:11 [R] POST /backup/restore -> HTTP/2 302 ['location: /backups/restore?flash=flash.restore.started']
22:39:11 + 0.0s restore (True, None, None)
22:39:17 + 6.1s restore (False, None, None)
22:39:17 [R] after restore: state=running hold=None phase=None
22:39:20 + 9.3s vikunja: deployed=True state=running updating=False phase=None hold='None'
22:39:39 >>> ACCIDENT controller_kill at 22:39:39
22:39:42 >>> kill -9 of the controller's PID: killed 11644 at 22:39:39
22:39:42 + 31.5s vikunja: deployed=True state=running updating=False phase=None hold='None'
22:39:46 vikunja: readback of the seeded project http=200 ok=True
22:39:46 vikunja B: project readback=True attachment content readback=True
22:39:49 ==== ROUND 3 END: steady in 31.5s; readback={'A': True, 'B': True}; events=0
@@ -0,0 +1,132 @@
{
"round": 3,
"action": "restore",
"accident": "kill -9 of the controller's PID: killed 11644 at 22:39:39",
"delay_s": 28,
"app": "vikunja",
"started": "2026-09-23T20:39:10Z",
"before": {
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"lines": {
"hu": {
"undone_line": null,
"hold": null
},
"en": {
"undone_line": null,
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"update_error": null
}
},
"act": {
"ok": true,
"why": null,
"snapshot_id": "helyi",
"http": "HTTP/2 302",
"seconds": 6.1,
"state_after": "running",
"hold_after": null
},
"controller_back_s": 0.2,
"time_to_steady_s": 31.5,
"after": {
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"lines": {
"hu": {
"undone_line": null,
"hold": null
},
"en": {
"undone_line": null,
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"update_error": null
}
},
"observables": {
"pinned_images": {
"vikunja": "vikunja/vikunja:2.5.0"
},
"installed_images": {
"vikunja": "vikunja/vikunja:2.5.0"
},
"catalog_images": {
"vikunja": "vikunja/vikunja:2.5.0"
},
"live_compose_image_lines": [
"image: vikunja/vikunja:2.5.0"
],
"docker_inspect": [
"vikunja vikunja/vikunja:2.5.0 running=true restarts=0"
]
},
"readback": {
"A": true,
"B": true
},
"events": [],
"box_log": [
"2026-09-23T20:39:11Z WARN [web] Restore requested (async): stack=vikunja, snapshot=helyi from 172.18.0.2:43380",
"2026-09-23T20:39:11Z INFO [backup] Restoring vikunja from recovery unit /mnt/sys_drive/felhom-data/backups/primary/vikunja: images=1, secrets recovered=1/1, data_keys=0",
"2026-09-23T20:39:11Z INFO [stacks] Stopping stack: vikunja",
"2026-09-23T20:39:11Z INFO [stacks] Stack vikunja stopped successfully (took 0.3s)",
"2026-09-23T20:39:11Z INFO [backup] Restoring Docker volume vikunja_vikunja_data for vikunja",
"2026-09-23T20:39:11Z INFO [backup] Restoring Docker volume vikunja_vikunja_db for vikunja",
"2026-09-23T20:39:12Z INFO [backup] Restored 2 Docker volume(s) for vikunja",
"2026-09-23T20:39:12Z INFO [stacks] Redeploying vikunja from recovery unit with 3 env vars",
"2026-09-23T20:39:12Z INFO [stacks] pin vikunja: vikunja=vikunja/vikunja:2.5.0",
"2026-09-23T20:39:12Z INFO [stacks] Starting stack: vikunja",
"2026-09-23T20:39:12Z INFO [stacks] Stack vikunja started successfully (took 0.4s)",
"2026-09-23T20:39:13Z INFO [stacks] installed-images vikunja: recorded 1 service(s) (vikunja=vikunja/vikunja:2.5.0 (sha256:22df4c1bc884…))",
"2026-09-23T20:39:41Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:39:42Z INFO [stacks] desired state for vikunja recorded as \"running\" (was \"\")",
"2026-09-23T20:39:42Z INFO [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false)",
"2026-09-23T20:39:42Z INFO [scheduler] Registered periodic job: backup-cache (every 5m0s)",
"2026-09-23T20:39:42Z INFO [scheduler] Daily job tier2-backup scheduled for 2026-09-24 03:30 CEST",
"2026-09-23T20:39:42Z INFO [scheduler] Daily job offbox-backup scheduled for 2026-09-24 04:15 CEST",
"2026-09-23T20:39:42Z INFO [backup] Found 6 DB dump files across drives",
"2026-09-23T20:39:42Z INFO [backup] Discovered 5 databases",
"2026-09-23T20:39:42Z INFO [backup] Recovery unit captured for docmost → /mnt/sys_drive/felhom-data/backups/primary/docmost (images=3, secrets-referenced=2, data_keys=0, portable-carried=2/2, withheld=0)",
"2026-09-23T20:39:42Z INFO [backup] Backup status cache refreshed"
],
"undo_copies_left": "0"
}
@@ -0,0 +1,12 @@
22:39:10 ==== ROUND 3: restore on vikunja x controller_kill at +28s (2026-09-23T20:39:10Z)
22:39:11 [R] restoring vikunja from snapshot 'helyi' (of 1 offered)
22:39:11 [R] POST /backup/restore -> HTTP/2 302 ['location: /backups/restore?flash=flash.restore.started']
22:39:11 + 0.0s restore (True, None, None)
22:39:17 + 6.1s restore (False, None, None)
22:39:17 [R] after restore: state=running hold=None phase=None
22:39:20 + 9.3s vikunja: deployed=True state=running updating=False phase=None hold='None'
22:39:39 >>> ACCIDENT controller_kill at 22:39:39
22:39:42 >>> kill -9 of the controller's PID: killed 11644 at 22:39:39
22:39:42 + 31.5s vikunja: deployed=True state=running updating=False phase=None hold='None'
22:39:46 vikunja: readback of the seeded project http=200 ok=True
22:39:46 vikunja B: project readback=True attachment content readback=True
@@ -0,0 +1,17 @@
22:39:50 ==== ROUND 4: fail_health on adventurelog x memory_hog at +43s (2026-09-23T20:39:50Z)
22:39:51 [5] drill commit fb8df47449f4: adventurelog ghcr.io/seanmorley15/adventurelog-backend:v0.12.1,ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1 -> ghcr.io/seanmorley15/adventurelog-backend:v0.13.0,ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0 (push rc=0)
22:40:33 >>> ACCIDENT memory_hog at 22:40:33
22:40:57 >>> 1 GB hog for 5 min: 5cd58c5c3e56c7b2fbb574e9be159f17cc25033c1d3a0e87f0b2692646d8660c
chaos-hog 1003MiB / 25.29GiB at 22:40:33
22:47:20 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
22:47:20 + 0.0s phase=safety-dump label=Adatbázis pillanatkép…
22:47:22 + 2.1s phase=pulling label=Új verzió letöltése…
22:47:23 + 3.2s phase=copying label=Az adatok másolása a frissítés előtt…
22:47:34 + 14.2s phase=starting label=Indítás az új verzióval…
22:47:40 + 20.5s phase=verifying label=Működés ellenőrzése…
22:49:11 + 110.9s phase=undoing label=Visszaállítás az előző változatra…
22:49:55 + 155.1s phase=undone label=Visszaállítva az előző változatra
22:49:55 END phase=undone err=None hold=None
22:49:55 + 605.2s adventurelog: deployed=True state=running updating=False phase=undone hold='None'
22:50:12 adventurelog: readback of the seeded account found=True
22:50:16 ==== ROUND 4 END: steady in 605.2s; readback={'A': True}; events=2
@@ -0,0 +1,208 @@
{
"round": 4,
"action": "fail_health",
"accident": "1 GB hog for 5 min: 5cd58c5c3e56c7b2fbb574e9be159f17cc25033c1d3a0e87f0b2692646d8660c\nchaos-hog 1003MiB / 25.29GiB at 22:40:33",
"delay_s": 43,
"app": "adventurelog",
"started": "2026-09-23T20:39:50Z",
"before": {
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"lines": {
"hu": {
"undone_line": null,
"hold": null
},
"en": {
"undone_line": null,
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"update_error": null
}
},
"drill_commit": "fb8df47449f4",
"badge_catchup_rounds": null,
"phases": [
[
0.0,
"safety-dump",
"Adatbázis pillanatkép…"
],
[
2.1,
"pulling",
"Új verzió letöltése…"
],
[
3.2,
"copying",
"Az adatok másolása a frissítés előtt…"
],
[
14.2,
"starting",
"Indítás az új verzióval…"
],
[
20.5,
"verifying",
"Működés ellenőrzése…"
],
[
110.9,
"undoing",
"Visszaállítás az előző változatra…"
],
[
155.1,
"undone",
"Visszaállítva az előző változatra"
]
],
"time_to_steady_s": 605.2,
"after": {
"badges": {
"hu": [
{
"title": "Újabb változat érhető el ehhez az alkalmazáshoz. A frissítés indításához nyomd meg a Frissítés gombot.",
"text": "Frissítés elérhető — ma"
}
],
"en": [
{
"title": "A newer version of this app is available. Select the Update button to start it.",
"text": "Update available — today"
}
]
},
"lines": {
"hu": {
"undone_line": "A(z) adventurelog frissítése 2026-09-23 22:49-kor nem sikerült. A doboz automatikusan visszaállította az előző változatot és az adatokat — semmi nem veszett el.",
"hold": null
},
"en": {
"undone_line": "The update of adventurelog at 2026-09-23 22:49 did not succeed. The box put back the previous version and its data automatically — nothing was lost.",
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": "undone",
"hold_reason": null,
"update_error": null
}
},
"observables": {
"pinned_images": {
"adventurelog": "ghcr.io/seanmorley15/adventurelog-backend:v0.12.1",
"adventurelog-frontend": "ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1",
"adventurelog-postgres": "postgis/postgis:16-3.5-alpine"
},
"installed_images": {
"adventurelog": "ghcr.io/seanmorley15/adventurelog-backend:v0.12.1",
"adventurelog-frontend": "ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1",
"adventurelog-postgres": "postgis/postgis:16-3.5-alpine"
},
"catalog_images": {
"adventurelog": "ghcr.io/seanmorley15/adventurelog-backend:v0.13.0",
"adventurelog-frontend": "ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0",
"adventurelog-postgres": "postgis/postgis:16-3.5-alpine"
},
"live_compose_image_lines": [
"image: ghcr.io/seanmorley15/adventurelog-backend:v0.12.1",
"image: postgis/postgis:16-3.5-alpine",
"image: ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1"
],
"docker_inspect": [
"adventurelog ghcr.io/seanmorley15/adventurelog-backend:v0.12.1 running=true restarts=0",
"adventurelog-postgres postgis/postgis:16-3.5-alpine running=true restarts=0",
"adventurelog-frontend ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1 running=true restarts=0"
]
},
"readback": {
"A": true
},
"events": [
"2026-09-23T20:49:42Z health_change (warning)",
"2026-09-23T20:49:55Z app_update_undone (warning)"
],
"box_log": [
"2026-09-23T20:45:17Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:45:29Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:45:32Z WARN Health probe adventurelog: API GET :8999/api/ → Get \"http://adventurelog:8999/api/\": dial tcp 172.18.0.9:8999: connect: connection refused",
"2026-09-23T20:45:42Z WARN Health probe adventurelog: API GET :8999/api/ → Get \"http://adventurelog:8999/api/\": dial tcp 172.18.0.9:8999: connect: connection refused",
"2026-09-23T20:45:42Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:45:42Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:45:52Z WARN Health probe adventurelog: API GET :8999/api/ → Get \"http://adventurelog:8999/api/\": dial tcp 172.18.0.9:8999: connect: connection refused",
"2026-09-23T20:45:54Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:46:07Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:46:12Z WARN Health probe adventurelog: API GET :8999/api/ → Get \"http://adventurelog:8999/api/\": dial tcp 172.18.0.9:8999: connect: connection refused",
"2026-09-23T20:46:19Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:46:31Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:46:32Z WARN Health probe adventurelog: API GET :8999/api/ → Get \"http://adventurelog:8999/api/\": dial tcp 172.18.0.9:8999: connect: connection refused",
"2026-09-23T20:46:44Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:46:52Z WARN Health probe adventurelog: API GET :8999/api/ → Get \"http://adventurelog:8999/api/\": dial tcp 172.18.0.9:8999: connect: connection refused",
"2026-09-23T20:46:56Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:47:02Z WARN Health probe adventurelog: API GET :8999/api/ → Get \"http://adventurelog:8999/api/\": dial tcp 172.18.0.9:8999: connect: connection refused",
"2026-09-23T20:47:08Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:47:17Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:47:20Z INFO [api] update requested for stack: adventurelog",
"2026-09-23T20:47:20Z INFO [stacks] update adventurelog: accepted — guarded update started",
"2026-09-23T20:47:20Z INFO [stacks] update adventurelog: phase checking",
"2026-09-23T20:47:20Z INFO [stacks] update adventurelog: precondition met — Tier 1 (own recovery unit) copy from 2026-09-23T20:44:42Z (3m0s old, limit 24h0m0s)",
"2026-09-23T20:47:20Z INFO [stacks] update adventurelog: phase safety-dump",
"2026-09-23T20:47:20Z INFO [backup] Discovered 5 databases",
"2026-09-23T20:47:21Z INFO [backup] DB dump: adventurelog-postgres → pre-restore-20260923T204720Z-adventurelog-postgres.sql (7.8 MB, 760ms, 47 tables)",
"2026-09-23T20:47:21Z INFO [offbox] adventurelog: pre-restore safety dump written → pre-restore-20260923T204720Z-adventurelog-postgres.sql (7.8 MB)",
"2026-09-23T20:47:21Z INFO [backup] update safety dump for adventurelog: 1 file(s) [/mnt/sys_drive/felhom-data/backups/primary/adventurelog/db-dumps/pre-restore-20260923T204720Z-adventurelog-postgres.sql]",
"2026-09-23T20:47:21Z INFO [stacks] update adventurelog: safety dump done (1 file(s)) [/mnt/sys_drive/felhom-data/backups/primary/adventurelog/db-dumps/pre-restore-20260923T204720Z-adventurelog-postgres.sql]",
"2026-09-23T20:47:22Z WARN Health probe adventurelog: API GET :8999/api/ → Get \"http://adventurelog:8999/api/\": dial tcp 172.18.0.9:8999: connect: connection refused",
"2026-09-23T20:47:22Z INFO [stacks] update adventurelog: the undo copy will hold 2 named volume(s), 234.6 MiB",
"2026-09-23T20:47:22Z INFO [stacks] update adventurelog: phase pinning",
"2026-09-23T20:47:22Z INFO [stacks] update adventurelog: pin advanced to the catalog's current definition (adventurelog=ghcr.io/seanmorley15/adventurelog-backend:v0.13.0, adventurelog-frontend=ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0, adventurelog-postgres=postgis/postgis:16-3.5-alpine)",
"2026-09-23T20:47:22Z INFO [stacks] update adventurelog: phase pulling",
"2026-09-23T20:47:23Z INFO [stacks] update adventurelog: phase copying",
"2026-09-23T20:47:27Z INFO [stacks] update adventurelog: phase copying",
"2026-09-23T20:47:28Z INFO [stacks] update adventurelog: copied adventurelog_adventurelog_media → adventurelog_adventurelog_media.pre-update-20260923T204727Z in 1.556s",
"2026-09-23T20:47:28Z INFO [stacks] update adventurelog: phase copying",
"2026-09-23T20:47:32Z WARN Health probe adventurelog: API GET :8999/api/ → Get \"http://adventurelog:8999/api/\": dial tcp: lookup adventurelog on 127.0.0.11:53: no such host",
"2026-09-23T20:47:34Z INFO [stacks] update adventurelog: copied adventurelog_adventurelog_postgres_data → adventurelog_adventurelog_postgres_data.pre-update-20260923T204727Z in 5.273s",
"2026-09-23T20:47:34Z INFO [stacks] update adventurelog: phase starting",
"2026-09-23T20:47:40Z INFO [stacks] update adventurelog: phase verifying",
"2026-09-23T20:47:42Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:49:11Z ERROR [stacks] update adventurelog FAILED after the new version was started: not healthy: not healthy within 1m30s (last: state unhealthy)",
"2026-09-23T20:49:11Z INFO [stacks] update adventurelog: kept 4304 bytes of the app's own log at /opt/docker/stacks/adventurelog/hold-logs/20260923T204911Z/compose-logs.txt before stopping it (R-621)",
"2026-09-23T20:49:11Z INFO [stacks] update adventurelog: phase undoing",
"2026-09-23T20:49:11Z WARN [stacks] update adventurelog: UNDO — putting back the previous version and its 2 volume copy(ies) (reason: not healthy: not healthy within 1m30s (last: state unhealthy))",
"2026-09-23T20:49:32Z INFO [stacks] pin adventurelog: adventurelog=ghcr.io/seanmorley15/adventurelog-backend:v0.12.1, adventurelog-frontend=ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1, adventurelog-postgres=postgis/postgis:16-3.5-alpine",
"2026-09-23T20:49:42Z INFO [scheduler] Running job: backup-cache",
"2026-09-23T20:49:42Z INFO [stacks] ScanStacks complete: 55 stacks found (10 deployed, 45 available)",
"2026-09-23T20:49:42Z INFO [backup] Found 7 DB dump files across drives",
"2026-09-23T20:49:42Z INFO [backup] Discovered 5 databases",
"2026-09-23T20:49:42Z INFO [backup] Backup status cache refreshed",
"2026-09-23T20:49:42Z INFO [scheduler] Job backup-cache completed (took 400ms)",
"2026-09-23T20:49:55Z INFO [stacks] update adventurelog: event app_update_undone",
"2026-09-23T20:49:55Z WARN notifier disabled (no hub configured): DROPPED event app_update_undone (severity warning) — further app_update_undone events are logged at DEBUG only",
"2026-09-23T20:49:55Z INFO [stacks] update adventurelog: UNDONE in 44s — the previous version is running on the data from before the update (the app's health check passed)"
],
"undo_copies_left": "0"
}
@@ -0,0 +1,16 @@
22:39:50 ==== ROUND 4: fail_health on adventurelog x memory_hog at +43s (2026-09-23T20:39:50Z)
22:39:51 [5] drill commit fb8df47449f4: adventurelog ghcr.io/seanmorley15/adventurelog-backend:v0.12.1,ghcr.io/seanmorley15/adventurelog-frontend:v0.12.1 -> ghcr.io/seanmorley15/adventurelog-backend:v0.13.0,ghcr.io/seanmorley15/adventurelog-frontend:v0.13.0 (push rc=0)
22:40:33 >>> ACCIDENT memory_hog at 22:40:33
22:40:57 >>> 1 GB hog for 5 min: 5cd58c5c3e56c7b2fbb574e9be159f17cc25033c1d3a0e87f0b2692646d8660c
chaos-hog 1003MiB / 25.29GiB at 22:40:33
22:47:20 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
22:47:20 + 0.0s phase=safety-dump label=Adatbázis pillanatkép…
22:47:22 + 2.1s phase=pulling label=Új verzió letöltése…
22:47:23 + 3.2s phase=copying label=Az adatok másolása a frissítés előtt…
22:47:34 + 14.2s phase=starting label=Indítás az új verzióval…
22:47:40 + 20.5s phase=verifying label=Működés ellenőrzése…
22:49:11 + 110.9s phase=undoing label=Visszaállítás az előző változatra…
22:49:55 + 155.1s phase=undone label=Visszaállítva az előző változatra
22:49:55 END phase=undone err=None hold=None
22:49:55 + 605.2s adventurelog: deployed=True state=running updating=False phase=undone hold='None'
22:50:12 adventurelog: readback of the seeded account found=True
@@ -0,0 +1,9 @@
22:50:17 ==== ROUND 5: install on papra x disk_fill at +28s (2026-09-23T20:50:17Z)
22:50:17 + 0.2s papra: deployed=True state=not_deployed updating=False phase=None hold='None'
22:50:19 + 2.3s papra: deployed=True state=starting updating=False phase=None hold='None'
22:50:43 + 26.6s papra: deployed=True state=running updating=False phase=None hold='None'
22:50:44 papra: sign-up http=200
22:50:45 >>> ACCIDENT disk_fill at 22:50:45
22:50:48 >>> filled /var/lib/docker to 3 GB free (floor 2 GB + 1 GB): /dev/loop1 69G 62G 3.0G 96% /var/lib/docker at 22:50:45
22:50:55 papra: sign-in as the seeded account http=200 ok=True
22:50:58 ==== ROUND 5 END: steady in 26.6s; readback={'A': True}; events=2
@@ -0,0 +1,73 @@
{
"round": 5,
"action": "install",
"accident": "filled /var/lib/docker to 3 GB free (floor 2 GB + 1 GB): /dev/loop1 69G 62G 3.0G 96% /var/lib/docker at 22:50:45",
"delay_s": 28,
"app": "papra",
"started": "2026-09-23T20:50:17Z",
"before": {
"state": "not deployed"
},
"armed_at": "22:50:17",
"act": "deploy -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}",
"time_to_steady_s": 26.6,
"after": {
"badges": {
"hu": [],
"en": []
},
"lines": {
"hu": {
"undone_line": null,
"hold": null
},
"en": {
"undone_line": null,
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"update_error": null
}
},
"observables": {
"pinned_images": {
"papra": "ghcr.io/papra-hq/papra:26.6.2-rootless"
},
"installed_images": {
"papra": "ghcr.io/papra-hq/papra:26.6.2-rootless"
},
"catalog_images": null,
"live_compose_image_lines": [
"image: ghcr.io/papra-hq/papra:26.6.2-rootless"
],
"docker_inspect": [
"papra ghcr.io/papra-hq/papra:26.6.2-rootless running=true restarts=0"
]
},
"readback": {
"A": true
},
"events": [
"2026-09-23T20:50:17Z app_deploy_started (info)",
"2026-09-23T20:50:18Z app_deployed (info)"
],
"box_log": [
"2026-09-23T20:50:17Z INFO [api] Deploy requested for stack: papra",
"2026-09-23T20:50:17Z INFO [stacks] Deploying stack papra with 3 env vars: [DOMAIN, SUBDOMAIN, AUTH_SECRET]",
"2026-09-23T20:50:17Z INFO [stacks] Deploying stack papra — checking 1 images...",
"2026-09-23T20:50:17Z WARN notifier disabled (no hub configured): DROPPED event app_deploy_started (severity info) — further app_deploy_started events are logged at DEBUG only",
"2026-09-23T20:50:17Z INFO [stacks] Stack papra deployed successfully (took 0.5s)",
"2026-09-23T20:50:18Z INFO [stacks] installed-images papra: recorded 1 service(s) (papra=ghcr.io/papra-hq/papra:26.6.2-rootless (sha256:a281cb44176d…))",
"2026-09-23T20:50:18Z INFO [stacks] pin papra: papra=ghcr.io/papra-hq/papra:26.6.2-rootless",
"2026-09-23T20:50:18Z WARN notifier disabled (no hub configured): DROPPED event app_deployed (severity info) — further app_deployed events are logged at DEBUG only",
"2026-09-23T20:50:21Z INFO [stacks] Stack papra post-start status:",
"2026-09-23T20:50:21Z INFO [stacks] papra ghcr.io/papra-hq/papra:26.6.2-rootless running Up 3 seconds (health: starting)",
"2026-09-23T20:50:42Z INFO [deadapp] check alive: 20 scans since boot, 11 deployed app(s) evaluated, 1 currently down"
],
"undo_copies_left": "0"
}
@@ -0,0 +1,8 @@
22:50:17 ==== ROUND 5: install on papra x disk_fill at +28s (2026-09-23T20:50:17Z)
22:50:17 + 0.2s papra: deployed=True state=not_deployed updating=False phase=None hold='None'
22:50:19 + 2.3s papra: deployed=True state=starting updating=False phase=None hold='None'
22:50:43 + 26.6s papra: deployed=True state=running updating=False phase=None hold='None'
22:50:44 papra: sign-up http=200
22:50:45 >>> ACCIDENT disk_fill at 22:50:45
22:50:48 >>> filled /var/lib/docker to 3 GB free (floor 2 GB + 1 GB): /dev/loop1 69G 62G 3.0G 96% /var/lib/docker at 22:50:45
22:50:55 papra: sign-in as the seeded account http=200 ok=True
@@ -0,0 +1,16 @@
22:50:58 ==== ROUND 6: good_update on romm x memory_hog at +46s (2026-09-23T20:50:58Z)
22:50:59 [5] drill commit d2cd01ae0adc: romm rommapp/romm:5.3.0 -> rommapp/romm:5.3.1 (push rc=0)
22:51:04 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
22:51:04 + 0.0s phase=safety-dump label=Adatbázis pillanatkép…
22:51:06 + 2.1s phase=pulling label=Új verzió letöltése…
22:51:07 + 3.2s phase=copying label=Az adatok másolása a frissítés előtt…
22:51:13 + 8.9s phase=starting label=Indítás az új verzióval…
22:51:24 + 20.0s phase=verifying label=Működés ellenőrzése…
22:51:50 >>> ACCIDENT memory_hog at 22:51:50
22:52:00 + 55.8s phase=done label=Frissítve
22:52:00 END phase=done err=None hold=None
22:52:00 + 61.7s romm: deployed=True state=running updating=False phase=done hold='None'
22:52:15 >>> 1 GB hog for 5 min: 7922307cf3f2b0e1bebb33d30a94d644382b7596a42d0024aec74d1a81d5762f
chaos-hog 1004MiB / 25.29GiB at 22:51:50
22:52:24 romm: login as the seeded user http=200 ok=True
22:52:27 ==== ROUND 6 END: steady in 61.7s; readback={'A': True}; events=0
@@ -0,0 +1,174 @@
{
"round": 6,
"action": "good_update",
"accident": "1 GB hog for 5 min: 7922307cf3f2b0e1bebb33d30a94d644382b7596a42d0024aec74d1a81d5762f\nchaos-hog 1004MiB / 25.29GiB at 22:51:50",
"delay_s": 46,
"app": "romm",
"started": "2026-09-23T20:50:58Z",
"before": {
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"lines": {
"hu": {
"undone_line": null,
"hold": null
},
"en": {
"undone_line": null,
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"update_error": null
}
},
"drill_commit": "d2cd01ae0adc",
"badge_catchup_s": 4.5,
"armed_at": "22:51:04",
"phases": [
[
0.0,
"safety-dump",
"Adatbázis pillanatkép…"
],
[
2.1,
"pulling",
"Új verzió letöltése…"
],
[
3.2,
"copying",
"Az adatok másolása a frissítés előtt…"
],
[
8.9,
"starting",
"Indítás az új verzióval…"
],
[
20.0,
"verifying",
"Működés ellenőrzése…"
],
[
55.8,
"done",
"Frissítve"
]
],
"time_to_steady_s": 61.7,
"after": {
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"lines": {
"hu": {
"undone_line": null,
"hold": null
},
"en": {
"undone_line": null,
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": "done",
"hold_reason": null,
"update_error": null
}
},
"observables": {
"pinned_images": {
"romm": "rommapp/romm:5.3.1",
"romm-db": "mariadb:11.4",
"romm-redis": "redis:7-alpine"
},
"installed_images": {
"romm": "rommapp/romm:5.3.1",
"romm-db": "mariadb:11.4",
"romm-redis": "redis:7-alpine"
},
"catalog_images": {
"romm": "rommapp/romm:5.3.1",
"romm-db": "mariadb:11.4",
"romm-redis": "redis:7-alpine"
},
"live_compose_image_lines": [
"image: rommapp/romm:5.3.1",
"image: mariadb:11.4",
"image: redis:7-alpine"
],
"docker_inspect": [
"romm rommapp/romm:5.3.1 running=true restarts=0",
"romm-db mariadb:11.4 running=true restarts=0",
"romm-redis redis:7-alpine running=true restarts=0"
]
},
"readback": {
"A": true
},
"events": [],
"box_log": [
"2026-09-23T20:51:00Z INFO [stacks] ScanStacks complete: 55 stacks found (11 deployed, 44 available)",
"2026-09-23T20:51:02Z INFO [stacks] ScanStacks complete: 55 stacks found (11 deployed, 44 available)",
"2026-09-23T20:51:04Z INFO [api] update requested for stack: romm",
"2026-09-23T20:51:04Z INFO [stacks] update romm: accepted — guarded update started",
"2026-09-23T20:51:04Z INFO [stacks] update romm: phase checking",
"2026-09-23T20:51:04Z INFO [stacks] update romm: precondition met — Tier 1 (own recovery unit) copy from 2026-09-23T20:31:55Z (19m0s old, limit 24h0m0s)",
"2026-09-23T20:51:04Z INFO [stacks] update romm: phase safety-dump",
"2026-09-23T20:51:04Z INFO [backup] Discovered 5 databases",
"2026-09-23T20:51:05Z INFO [backup] DB dump: romm-db → pre-restore-20260923T205104Z-romm-mariadb.sql (110.2 KB, 335ms, 36 tables)",
"2026-09-23T20:51:05Z INFO [offbox] romm: pre-restore safety dump written → pre-restore-20260923T205104Z-romm-mariadb.sql (110.2 KB)",
"2026-09-23T20:51:05Z INFO [backup] update safety dump for romm: 1 file(s) [/mnt/felhom-drives/scratch_hdd/userdata/romm/backups/primary/romm/db-dumps/pre-restore-20260923T205104Z-romm-mariadb.sql]",
"2026-09-23T20:51:05Z INFO [stacks] update romm: safety dump done (1 file(s)) [/mnt/felhom-drives/scratch_hdd/userdata/romm/backups/primary/romm/db-dumps/pre-restore-20260923T205104Z-romm-mariadb.sql]",
"2026-09-23T20:51:06Z INFO [stacks] update romm: the undo copy will hold 3 named volume(s), 182.1 MiB",
"2026-09-23T20:51:06Z INFO [stacks] update romm: phase pinning",
"2026-09-23T20:51:06Z INFO [stacks] update romm: pin advanced to the catalog's current definition (romm=rommapp/romm:5.3.1, romm-db=mariadb:11.4, romm-redis=redis:7-alpine)",
"2026-09-23T20:51:06Z INFO [stacks] update romm: phase pulling",
"2026-09-23T20:51:07Z INFO [stacks] update romm: phase copying",
"2026-09-23T20:51:11Z INFO [stacks] update romm: phase copying",
"2026-09-23T20:51:11Z INFO [stacks] update romm: copied romm_romm_config → romm_romm_config.pre-update-20260923T205111Z in 465ms",
"2026-09-23T20:51:11Z INFO [stacks] update romm: phase copying",
"2026-09-23T20:51:12Z INFO [stacks] update romm: copied romm_romm_db_data → romm_romm_db_data.pre-update-20260923T205111Z in 988ms",
"2026-09-23T20:51:12Z INFO [stacks] update romm: phase copying",
"2026-09-23T20:51:13Z INFO [stacks] update romm: copied romm_romm_redis_data → romm_romm_redis_data.pre-update-20260923T205111Z in 501ms",
"2026-09-23T20:51:13Z INFO [stacks] update romm: phase starting",
"2026-09-23T20:51:13Z INFO [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/romm not mounted — skipping ensure (held by drive gate)",
"2026-09-23T20:51:24Z INFO [stacks] update romm: phase verifying",
"2026-09-23T20:51:42Z INFO [stacks] ScanStacks complete: 55 stacks found (11 deployed, 44 available)",
"2026-09-23T20:51:59Z INFO [stacks] update romm: healthy after 35s (the app's health check passed)",
"2026-09-23T20:52:00Z INFO [stacks] installed-images romm: recorded 3 service(s) (romm=rommapp/romm:5.3.1 (sha256:0d66b4ea152a…), romm-db=mariadb:11.4 (sha256:70cc072b29b4…), romm-redis=redis:7-alpine (sha256:858f009f9709…))",
"2026-09-23T20:52:00Z INFO [stacks] update romm: DONE in 56s"
],
"undo_copies_left": "0"
}
@@ -0,0 +1,15 @@
22:50:58 ==== ROUND 6: good_update on romm x memory_hog at +46s (2026-09-23T20:50:58Z)
22:50:59 [5] drill commit d2cd01ae0adc: romm rommapp/romm:5.3.0 -> rommapp/romm:5.3.1 (push rc=0)
22:51:04 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
22:51:04 + 0.0s phase=safety-dump label=Adatbázis pillanatkép…
22:51:06 + 2.1s phase=pulling label=Új verzió letöltése…
22:51:07 + 3.2s phase=copying label=Az adatok másolása a frissítés előtt…
22:51:13 + 8.9s phase=starting label=Indítás az új verzióval…
22:51:24 + 20.0s phase=verifying label=Működés ellenőrzése…
22:51:50 >>> ACCIDENT memory_hog at 22:51:50
22:52:00 + 55.8s phase=done label=Frissítve
22:52:00 END phase=done err=None hold=None
22:52:00 + 61.7s romm: deployed=True state=running updating=False phase=done hold='None'
22:52:15 >>> 1 GB hog for 5 min: 7922307cf3f2b0e1bebb33d30a94d644382b7596a42d0024aec74d1a81d5762f
chaos-hog 1004MiB / 25.29GiB at 22:51:50
22:52:24 romm: login as the seeded user http=200 ok=True
@@ -0,0 +1,14 @@
22:52:28 ==== ROUND 7: restore on docmost x power_cut at +56s (2026-09-23T20:52:28Z)
22:52:28 [R] restoring docmost from snapshot 'helyi' (of 1 offered)
22:52:28 [R] POST /backup/restore -> HTTP/2 302 ['location: /backups/restore?flash=flash.restore.started']
22:52:28 + 0.0s restore (True, None, None)
22:53:00 + 32.4s restore (False, None, None)
22:53:00 [R] after restore: state=running hold=None phase=None
22:53:04 + 35.8s docmost: deployed=True state=running updating=False phase=None hold='None'
22:53:24 >>> ACCIDENT power_cut at 22:53:24
22:53:35 >>> pct stop rc=0, pct start rc=0 at 22:53:24
22:53:47 + 79.1s docmost: deployed=True state=starting updating=False phase=None hold='None'
22:54:11 + 103.5s docmost: deployed=True state=running updating=False phase=None hold='None'
22:54:16 docmost: login as the seeded user http=200 ok=True
22:54:17 docmost B: /api/spaces http=200 seeded-space-listed=True (negative control listed=False)
22:54:22 ==== ROUND 7 END: steady in 103.5s; readback={'A': True, 'B': True}; events=1
@@ -0,0 +1,160 @@
{
"round": 7,
"action": "restore",
"accident": "pct stop rc=0, pct start rc=0 at 22:53:24",
"delay_s": 56,
"app": "docmost",
"started": "2026-09-23T20:52:28Z",
"before": {
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"lines": {
"hu": {
"undone_line": null,
"hold": null
},
"en": {
"undone_line": null,
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"update_error": null
}
},
"armed_at": "22:52:28",
"act": {
"ok": true,
"why": null,
"snapshot_id": "helyi",
"http": "HTTP/2 302",
"seconds": 32.5,
"state_after": "running",
"hold_after": null
},
"controller_back_s": 12.3,
"time_to_steady_s": 103.5,
"after": {
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"lines": {
"hu": {
"undone_line": null,
"hold": null
},
"en": {
"undone_line": null,
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"update_error": null
}
},
"observables": {
"pinned_images": {
"docmost": "docmost/docmost:0.96.0",
"docmost-postgres": "postgres:16-alpine",
"docmost-redis": "redis:7-alpine"
},
"installed_images": {
"docmost": "docmost/docmost:0.96.0",
"docmost-postgres": "postgres:16-alpine",
"docmost-redis": "redis:7-alpine"
},
"catalog_images": {
"docmost": "docmost/docmost:0.96.0",
"docmost-postgres": "postgres:16-alpine",
"docmost-redis": "redis:7-alpine"
},
"live_compose_image_lines": [
"image: docmost/docmost:0.96.0",
"image: postgres:16-alpine",
"image: redis:7-alpine"
],
"docker_inspect": [
"docmost docmost/docmost:0.96.0 running=true restarts=0",
"docmost-redis redis:7-alpine running=true restarts=0",
"docmost-postgres postgres:16-alpine running=true restarts=0"
]
},
"readback": {
"A": true,
"B": true
},
"events": [
"2026-09-23T20:53:50Z controller_started (info)"
],
"box_log": [
"2026-09-23T20:52:28Z WARN [web] Restore requested (async): stack=docmost, snapshot=helyi from 172.18.0.2:56506",
"2026-09-23T20:52:28Z INFO [backup] Restoring docmost from recovery unit /mnt/sys_drive/felhom-data/backups/primary/docmost: images=3, secrets recovered=2/2, data_keys=0",
"2026-09-23T20:52:28Z INFO [stacks] Stopping stack: docmost",
"2026-09-23T20:52:29Z INFO [stacks] Stack docmost stopped successfully (took 1.3s)",
"2026-09-23T20:52:29Z INFO [backup] Restoring Docker volume docmost_docmost_postgres_data for docmost",
"2026-09-23T20:52:30Z INFO [backup] Restoring Docker volume docmost_docmost_redis_data for docmost",
"2026-09-23T20:52:31Z INFO [backup] Restoring Docker volume docmost_docmost_storage for docmost",
"2026-09-23T20:52:31Z INFO [backup] Restored 3 Docker volume(s) for docmost",
"2026-09-23T20:52:31Z INFO [stacks] Redeploying docmost from recovery unit with 4 env vars",
"2026-09-23T20:52:31Z INFO [stacks] pin docmost: docmost=docmost/docmost:0.96.0, docmost-postgres=postgres:16-alpine, docmost-redis=redis:7-alpine",
"2026-09-23T20:52:31Z INFO [stacks] Starting stack docmost services only: [docmost-postgres]",
"2026-09-23T20:52:32Z INFO [stacks] Stack docmost services [docmost-postgres] started (took 0.5s)",
"2026-09-23T20:52:32Z INFO [backup] Discovered 5 databases",
"2026-09-23T20:52:32Z INFO [backup] Restore docmost: replaying DB dump into docmost-postgres (postgres)",
"2026-09-23T20:52:34Z INFO [backup] Imported DB dump docmost-postgres.sql into docmost-postgres (postgres)",
"2026-09-23T20:52:34Z INFO [backup] Restore docmost: replayed 1 DB dump(s)",
"2026-09-23T20:52:34Z INFO [stacks] Starting stack: docmost",
"2026-09-23T20:52:45Z INFO [stacks] Stack docmost started successfully (took 11.2s)",
"2026-09-23T20:52:45Z INFO [stacks] installed-images docmost: recorded 3 service(s) (docmost=docmost/docmost:0.96.0 (sha256:b56947fcfd08…), docmost-postgres=postgres:16-alpine (sha256:721873c34ceb…), docmost-redis=redis:7-alpine (sha256:858f009f9709…))",
"2026-09-23T20:52:48Z INFO [stacks] Stack docmost post-start status:",
"2026-09-23T20:52:48Z INFO [stacks] docmost docmost/docmost:0.96.0 running Up 3 seconds (health: starting)",
"2026-09-23T20:52:48Z INFO [stacks] docmost-postgres postgres:16-alpine running Up 16 seconds (healthy)",
"2026-09-23T20:52:48Z INFO [stacks] docmost-redis redis:7-alpine running Up 14 seconds (healthy)",
"2026-09-23T20:52:58Z INFO [backup] Restore-from-unit completed: docmost — 3 volume(s) of 3 listed, 1 database(s) of 1 listed",
"2026-09-23T20:52:58Z INFO [web] Restore completed (async): stack=docmost in 30.595564222s (volumes 3/3, dbs 1/1)",
"2026-09-23T20:53:44Z INFO [stacks] ScanStacks complete: 55 stacks found (11 deployed, 44 available)",
"2026-09-23T20:53:44Z INFO [stacks] desired state for docmost recorded as \"running\" (was \"\")",
"2026-09-23T20:53:44Z INFO [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false)",
"2026-09-23T20:53:44Z INFO [scheduler] Registered periodic job: backup-cache (every 5m0s)",
"2026-09-23T20:53:44Z INFO [scheduler] Daily job tier2-backup scheduled for 2026-09-24 03:30 CEST",
"2026-09-23T20:53:44Z INFO [scheduler] Daily job offbox-backup scheduled for 2026-09-24 04:15 CEST",
"2026-09-23T20:53:45Z INFO [backup] Found 8 DB dump files across drives",
"2026-09-23T20:53:46Z INFO [backup] Discovered 5 databases",
"2026-09-23T20:53:46Z INFO [backup] Recovery unit captured for adventurelog → /mnt/sys_drive/felhom-data/backups/primary/adventurelog (images=3, secrets-referenced=2, data_keys=1, portable-carried=2/2, withheld=0)",
"2026-09-23T20:53:46Z INFO [backup] Recovery unit captured for papra → /mnt/sys_drive/felhom-data/backups/primary/papra (images=1, secrets-referenced=1, data_keys=1, portable-carried=1/1, withheld=0)",
"2026-09-23T20:53:46Z INFO [backup] Recovery unit captured for romm → /mnt/felhom-drives/scratch_hdd/userdata/romm/backups/primary/romm (images=3, secrets-referenced=3, data_keys=0, portable-carried=3/3, withheld=0)",
"2026-09-23T20:53:46Z INFO [backup] Backup status cache refreshed"
],
"undo_copies_left": "0"
}
@@ -0,0 +1,13 @@
22:52:28 ==== ROUND 7: restore on docmost x power_cut at +56s (2026-09-23T20:52:28Z)
22:52:28 [R] restoring docmost from snapshot 'helyi' (of 1 offered)
22:52:28 [R] POST /backup/restore -> HTTP/2 302 ['location: /backups/restore?flash=flash.restore.started']
22:52:28 + 0.0s restore (True, None, None)
22:53:00 + 32.4s restore (False, None, None)
22:53:00 [R] after restore: state=running hold=None phase=None
22:53:04 + 35.8s docmost: deployed=True state=running updating=False phase=None hold='None'
22:53:24 >>> ACCIDENT power_cut at 22:53:24
22:53:35 >>> pct stop rc=0, pct start rc=0 at 22:53:24
22:53:47 + 79.1s docmost: deployed=True state=starting updating=False phase=None hold='None'
22:54:11 + 103.5s docmost: deployed=True state=running updating=False phase=None hold='None'
22:54:16 docmost: login as the seeded user http=200 ok=True
22:54:17 docmost B: /api/spaces http=200 seeded-space-listed=True (negative control listed=False)
@@ -0,0 +1,36 @@
{
"snapshots": [
{
"time": "2026-09-23T20:31:04Z",
"short_id": "helyi",
"tier": 1,
"drive_label": "Tárhely (navidrome)"
}
],
"restore": {
"ok": true,
"snapshot_id": "helyi",
"http": "HTTP/2 302",
"seconds": 10.2,
"state_after": "running",
"hold_after": null
},
"readback_A": true,
"observables": {
"pinned_images": {
"navidrome": "deluan/navidrome:0.64.0"
},
"installed_images": {
"navidrome": "deluan/navidrome:0.64.0"
},
"catalog_images": {
"navidrome": "deluan/navidrome:0.64.1"
},
"live_compose_image_lines": [
"image: deluan/navidrome:0.64.0"
],
"docker_inspect": [
"navidrome deluan/navidrome:0.64.0 running=true restarts=0"
]
}
}
@@ -0,0 +1,9 @@
23:02:41 restore points offered: [{"time": "2026-09-23T20:31:04Z", "short_id": "helyi", "tier": 1, "drive_label": "Tárhely (navidrome)"}]
23:02:41 [R] restoring navidrome from snapshot 'helyi' (of 1 offered)
23:02:41 [R] POST /backup/restore -> HTTP/2 302 ['location: /backups/restore?flash=flash.restore.started']
23:02:41 + 0.0s restore (True, None, None)
23:02:51 + 10.1s restore (False, None, None)
23:02:51 [R] after restore: state=running hold=None phase=None
23:02:55 after restore: state=running hold=None phase=None
23:02:55 navidrome: login as the seeded user http=200 ok=True
23:02:58 seed A after the household's restore: True; pinned {'navidrome': 'deluan/navidrome:0.64.0'}
@@ -0,0 +1,21 @@
22:54:23 ==== ROUND 8: cutoff on navidrome x box_backup at +23s (2026-09-23T20:54:23Z)
22:54:24 [5] drill commit ce80a4a74a2b: navidrome deluan/navidrome:0.64.0 -> deluan/navidrome:0.64.1 (push rc=0)
22:54:29 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
22:54:29 + 0.0s phase=safety-dump label=Adatbázis pillanatkép…
22:54:30 + 1.1s phase=pulling label=Új verzió letöltése…
22:54:31 + 2.1s phase=copying label=Az adatok másolása a frissítés előtt…
22:54:32 + 3.2s phase=starting label=Indítás az új verzióval…
22:54:32 + 3.7s phase=verifying label=Működés ellenőrzése…
22:54:37 >>> finished-marker removed from one undo copy:
copy: navidrome_navidrome_data.pre-update-20260923T205431Z
data
22:54:51 >>> ACCIDENT box_backup at 22:54:51
22:54:51 >>> POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 22:54:51
22:56:04 + 94.9s phase=undoing label=Visszaállítás az előző változatra…
22:56:04 + 95.4s phase=failed label=A frissítés nem sikerült
22:56:04 END phase=failed err='A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) navidrome frissítése 2026-09-23 22: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-23 22:31 — ez a másolat csak a beállításokat és az adatbázist tartalmazza, a fájlokat nem.' hold='A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) navidrome frissítése 2026-09-23 22: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-23 22:31 — ez a másolat csak a beállításokat és az adatbázist tartalmazza, a fájlokat nem.'
22:56:04 + 101.2s navidrome: deployed=True state=stopped updating=False phase=failed hold='A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új v'
22:59:09 app never answered on music/ (last rc=0 code=404)
23:02:10 app never answered on music/ (last rc=0 code=404)
23:02:15 ==== ROUND 8 END: steady in 101.2s; readback={'A': False}; events=1
@@ -0,0 +1,192 @@
{
"round": 8,
"action": "cutoff",
"accident": "POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 22:54:51",
"delay_s": 23,
"app": "navidrome",
"started": "2026-09-23T20:54:23Z",
"before": {
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"lines": {
"hu": {
"undone_line": null,
"hold": null
},
"en": {
"undone_line": null,
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"update_error": null
}
},
"drill_commit": "ce80a4a74a2b",
"badge_catchup_s": 4.7,
"armed_at": "22:54:28",
"cutoff": "copy: navidrome_navidrome_data.pre-update-20260923T205431Z\ndata",
"phases": [
[
0.0,
"safety-dump",
"Adatbázis pillanatkép…"
],
[
1.1,
"pulling",
"Új verzió letöltése…"
],
[
2.1,
"copying",
"Az adatok másolása a frissítés előtt…"
],
[
3.2,
"starting",
"Indítás az új verzióval…"
],
[
3.7,
"verifying",
"Működés ellenőrzése…"
],
[
94.9,
"undoing",
"Visszaállítás az előző változatra…"
],
[
95.4,
"failed",
"A frissítés nem sikerült"
]
],
"time_to_steady_s": 101.2,
"after": {
"badges": {
"hu": [
{
"title": "A frissítés nem sikerült, és az automatikus visszaállítás sem.",
"text": "Megállítva — visszaállítás szükséges"
}
],
"en": [
{
"title": "The update did not succeed, and the automatic undo did not either.",
"text": "Stopped — restore needed"
}
]
},
"lines": {
"hu": {
"undone_line": null,
"hold": "A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) navidrome frissítése 2026-09-23 22: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-23 22:31 — ez a másolat csak a beállításokat és az adatbázist tartalmazza, a fájlokat nem."
},
"en": {
"undone_line": null,
"hold": "The update did not succeed, and the automatic undo did not either. The data is as the new version left it. The update of navidrome at 2026-09-23 22:56 did not succeed, and the app did not start on the new version. The app stays stopped for safety, so that its data is not damaged. It can be restored on the Backups page from this backup: own drive, 2026-09-23 22:31 — this copy holds only the settings and the database, not the files."
}
},
"state": {
"deployed": true,
"state": "stopped",
"update_phase": "failed",
"hold_reason": "A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) navidrome frissítése 2026-09-23 22: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-23 22:31 — ez a másolat csak a beállításokat és az adatbázist tartalmazza, a fájlokat nem.",
"update_error": "A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) navidrome frissítése 2026-09-23 22: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-23 22:31 — ez a másolat csak a beállításokat és az adatbázist tartalmazza, a fájlokat nem."
}
},
"observables": {
"pinned_images": {
"navidrome": "deluan/navidrome:0.64.1"
},
"installed_images": {
"navidrome": "deluan/navidrome:0.64.0"
},
"catalog_images": {
"navidrome": "deluan/navidrome:0.64.1"
},
"live_compose_image_lines": [
"image: deluan/navidrome:0.64.1"
],
"docker_inspect": []
},
"readback": {
"A": false
},
"events": [
"2026-09-23T21:01:45Z app_start_failed (warning)"
],
"box_log": [
"2026-09-23T20:55:22Z WARN [backup] Skipping volume dump for navidrome — the app is HELD stopped (its restore point is preserved)",
"2026-09-23T20:55:22Z INFO [backup] Stopping nextcloud for safe volume dump",
"2026-09-23T20:55:25Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_db_data → 162.7 MB",
"2026-09-23T20:55:25Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.10:8999: connect: connection refused",
"2026-09-23T20:55:32Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_html → 745.1 MB",
"2026-09-23T20:55:33Z INFO [backup] Volume dump: nextcloud/nextcloud_nextcloud_redis_data → 10.0 KB",
"2026-09-23T20:55:33Z INFO [backup] Restarting nextcloud after volume dump",
"2026-09-23T20:55:33Z INFO [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/nextcloud not mounted — skipping ensure (held by drive gate)",
"2026-09-23T20:55:39Z INFO [backup] Stopping paperless-ngx for safe volume dump",
"2026-09-23T20:55:45Z WARN Health probe navidrome: API GET :8999/ping → Get \"http://navidrome:8999/ping\": dial tcp 172.18.0.10:8999: connect: connection refused",
"2026-09-23T20:55:45Z INFO [stacks] ScanStacks complete: 55 stacks found (11 deployed, 44 available)",
"2026-09-23T20:55:47Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_data → 725.0 KB",
"2026-09-23T20:55:48Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_postgres_data → 67.8 MB",
"2026-09-23T20:55:48Z INFO [backup] Volume dump: paperless-ngx/paperless-ngx_paperless_redis_data → 649.5 KB",
"2026-09-23T20:55:48Z INFO [backup] Restarting paperless-ngx after volume dump",
"2026-09-23T20:55:48Z INFO [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/paperless-ngx not mounted — skipping ensure (held by drive gate)",
"2026-09-23T20:56:00Z INFO [backup] Stopping papra for safe volume dump",
"2026-09-23T20:56:01Z INFO [backup] Volume dump: papra/papra_papra_data → 571.0 KB",
"2026-09-23T20:56:01Z INFO [backup] Restarting papra after volume dump",
"2026-09-23T20:56:02Z INFO [backup] Stopping privatebin for safe volume dump",
"2026-09-23T20:56:03Z INFO [backup] Volume dump: privatebin/privatebin_privatebin_data → 1.5 KB",
"2026-09-23T20:56:03Z INFO [backup] Restarting privatebin after volume dump",
"2026-09-23T20:56:03Z ERROR [stacks] update navidrome FAILED after the new version was started: not healthy: not healthy within 1m30s (last: state unhealthy)",
"2026-09-23T20:56:03Z INFO [stacks] update navidrome: kept 4221 bytes of the app's own log at /opt/docker/stacks/navidrome/hold-logs/20260923T205603Z/compose-logs.txt before stopping it (R-621)",
"2026-09-23T20:56:03Z INFO [stacks] update navidrome: phase undoing",
"2026-09-23T20:56:03Z WARN [stacks] update navidrome: UNDO — putting back the previous version and its 1 volume copy(ies) (reason: not healthy: not healthy within 1m30s (last: state unhealthy))",
"2026-09-23T20:56:03Z INFO [backup] Stopping romm for safe volume dump",
"2026-09-23T20:56:04Z ERROR [stacks] update navidrome: the undo copy navidrome_navidrome_data.pre-update-20260923T205431Z has no finished-marker — it is cut off or missing; NOTHING is put back",
"2026-09-23T20:56:04Z ERROR [stacks] update navidrome: the UNDO failed too (untouched) — HOLDING the app; the undo copies are kept: [{navidrome_navidrome_data navidrome_navidrome_data.pre-update-20260923T205431Z}]",
"2026-09-23T20:56:04Z WARN [settings] restore hold SET for navidrome — the app stays stopped until it is cleared",
"2026-09-23T20:56:04Z WARN [backup] navidrome is HELD STOPPED after a failed update (restore point: tier 1 \"saját meghajtó\", 2026-09-23T20:31:04Z; holds: \"csak a beállításokat és az adatbázist tartalmazza, a fájlokat nem\"; undo: \"untouched\")",
"2026-09-23T20:56:04Z INFO [stacks] update navidrome: event app_update_held (hold recorded: true)",
"2026-09-23T20:56:04Z WARN notifier disabled (no hub configured): DROPPED event app_update_held (severity error) — further app_update_held events are logged at DEBUG only",
"2026-09-23T20:56:11Z INFO [backup] Volume dump: romm/romm_romm_config → 2.5 KB",
"2026-09-23T20:56:11Z INFO [backup] Volume dump: romm/romm_romm_db_data → 154.7 MB",
"2026-09-23T20:56:12Z INFO [backup] Volume dump: romm/romm_romm_redis_data → 15.7 MB",
"2026-09-23T20:56:12Z INFO [backup] Restarting romm after volume dump",
"2026-09-23T20:56:12Z INFO [stacks] userdata belt: drive /mnt/felhom-drives/scratch_hdd/userdata/romm not mounted — skipping ensure (held by drive gate)",
"2026-09-23T20:56:23Z INFO [backup] Stopping vikunja for safe volume dump",
"2026-09-23T20:56:24Z INFO [backup] Volume dump: vikunja/vikunja_vikunja_data → 2.5 KB",
"2026-09-23T20:56:25Z INFO [backup] Volume dump: vikunja/vikunja_vikunja_db → 2.7 MB",
"2026-09-23T20:56:25Z INFO [backup] Restarting vikunja after volume dump",
"2026-09-23T20:56:26Z INFO [backup] App-data backup completed: 5 databases (10.6 MB total), 10 volume dump(s) (1m34.231s)",
"2026-09-23T20:56:26Z INFO [backup] Recovery unit captured for papra → /mnt/sys_drive/felhom-data/backups/primary/papra (images=1, secrets-referenced=1, data_keys=1, portable-carried=1/1, withheld=0)",
"2026-09-23T20:57:45Z INFO [stacks] ScanStacks complete: 55 stacks found (11 deployed, 44 available)",
"2026-09-23T20:58:45Z INFO [scheduler] Running job: backup-cache",
"2026-09-23T20:58:45Z INFO [backup] Found 8 DB dump files across drives",
"2026-09-23T20:58:45Z INFO [backup] Discovered 5 databases",
"2026-09-23T20:58:45Z INFO [backup] Backup status cache refreshed",
"2026-09-23T20:58:45Z INFO [scheduler] Job backup-cache completed (took 207ms)",
"2026-09-23T20:59:45Z INFO [stacks] ScanStacks complete: 55 stacks found (11 deployed, 44 available)",
"2026-09-23T21:01:45Z INFO [stacks] ScanStacks complete: 55 stacks found (11 deployed, 44 available)"
],
"undo_copies_left": "1"
}
@@ -0,0 +1,20 @@
22:54:23 ==== ROUND 8: cutoff on navidrome x box_backup at +23s (2026-09-23T20:54:23Z)
22:54:24 [5] drill commit ce80a4a74a2b: navidrome deluan/navidrome:0.64.0 -> deluan/navidrome:0.64.1 (push rc=0)
22:54:29 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
22:54:29 + 0.0s phase=safety-dump label=Adatbázis pillanatkép…
22:54:30 + 1.1s phase=pulling label=Új verzió letöltése…
22:54:31 + 2.1s phase=copying label=Az adatok másolása a frissítés előtt…
22:54:32 + 3.2s phase=starting label=Indítás az új verzióval…
22:54:32 + 3.7s phase=verifying label=Működés ellenőrzése…
22:54:37 >>> finished-marker removed from one undo copy:
copy: navidrome_navidrome_data.pre-update-20260923T205431Z
data
22:54:51 >>> ACCIDENT box_backup at 22:54:51
22:54:51 >>> POST /api/backup/run -> 200 {'ok': True, 'message': 'Mentés elindítva'} at 22:54:51
22:56:04 + 94.9s phase=undoing label=Visszaállítás az előző változatra…
22:56:04 + 95.4s phase=failed label=A frissítés nem sikerült
22:56:04 END phase=failed err='A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) navidrome frissítése 2026-09-23 22: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-23 22:31 — ez a másolat csak a beállításokat és az adatbázist tartalmazza, a fájlokat nem.' hold='A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új változat által hagyott állapotban vannak. A(z) navidrome frissítése 2026-09-23 22: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-23 22:31 — ez a másolat csak a beállításokat és az adatbázist tartalmazza, a fájlokat nem.'
22:56:04 + 101.2s navidrome: deployed=True state=stopped updating=False phase=failed hold='A frissítés nem sikerült, és az automatikus visszaállítás sem. Az adatok az új v'
22:59:09 app never answered on music/ (last rc=0 code=404)
23:02:10 app never answered on music/ (last rc=0 code=404)
@@ -0,0 +1,17 @@
23:03:08 ==== ROUND 9: fail_health on vikunja x controller_kill at +58s (2026-09-23T21:03:08Z)
23:03:09 [5] drill commit 16512923234a: vikunja vikunja/vikunja:2.5.0 -> vikunja/vikunja:2.6.0 (push rc=0)
23:03:13 Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Frissítés elindult – az állapot a kártyán követhető'}
23:03:13 + 0.0s phase=safety-dump label=Adatbázis pillanatkép…
23:03:14 + 0.6s phase=pulling label=Új verzió letöltése…
23:03:17 + 3.7s phase=copying label=Az adatok másolása a frissítés előtt…
23:03:17 + 4.2s phase=verifying label=Működés ellenőrzése…
23:04:11 >>> ACCIDENT controller_kill at 23:04:11
23:04:14 >>> kill -9 of the controller's PID: killed 3308 at 23:04:11
23:05:45 + 152.0s phase=undoing label=Visszaállítás az előző változatra…
23:05:51 + 157.7s phase=undone label=Visszaállítva az előző változatra
23:05:51 END phase=undone err=None hold=None
23:05:51 + 163.3s vikunja: deployed=True state=running updating=False phase=undone hold='None'
23:05:51 + 163.4s vikunja: deployed=True state=running updating=False phase=undone hold='None'
23:05:55 vikunja: readback of the seeded project http=200 ok=True
23:05:55 vikunja B: project readback=True attachment content readback=True
23:05:59 ==== ROUND 9 END: steady in 163.4s; readback={'A': True, 'B': True}; events=1
@@ -0,0 +1,189 @@
{
"round": 9,
"action": "fail_health",
"accident": "kill -9 of the controller's PID: killed 3308 at 23:04:11",
"delay_s": 58,
"app": "vikunja",
"started": "2026-09-23T21:03:08Z",
"before": {
"badges": {
"hu": [
{
"title": "Ez az alkalmazás a legfrissebb elérhető változatot futtatja.",
"text": "Naprakész"
}
],
"en": [
{
"title": "This app is running the newest version available.",
"text": "Up to date"
}
]
},
"lines": {
"hu": {
"undone_line": null,
"hold": null
},
"en": {
"undone_line": null,
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": null,
"hold_reason": null,
"update_error": null
}
},
"drill_commit": "16512923234a",
"badge_catchup_s": 4.4,
"armed_at": "23:03:13",
"phases": [
[
0.0,
"safety-dump",
"Adatbázis pillanatkép…"
],
[
0.6,
"pulling",
"Új verzió letöltése…"
],
[
3.7,
"copying",
"Az adatok másolása a frissítés előtt…"
],
[
4.2,
"verifying",
"Működés ellenőrzése…"
],
[
152.0,
"undoing",
"Visszaállítás az előző változatra…"
],
[
157.7,
"undone",
"Visszaállítva az előző változatra"
]
],
"controller_back_s": 0.2,
"time_to_steady_s": 163.4,
"after": {
"badges": {
"hu": [
{
"title": "Újabb változat érhető el ehhez az alkalmazáshoz. A frissítés indításához nyomd meg a Frissítés gombot.",
"text": "Frissítés elérhető — ma"
}
],
"en": [
{
"title": "A newer version of this app is available. Select the Update button to start it.",
"text": "Update available — today"
}
]
},
"lines": {
"hu": {
"undone_line": "A(z) vikunja frissítése 2026-09-23 23:05-kor nem sikerült. A doboz automatikusan visszaállította az előző változatot és az adatokat — semmi nem veszett el.",
"hold": null
},
"en": {
"undone_line": "The update of vikunja at 2026-09-23 23:05 did not succeed. The box put back the previous version and its data automatically — nothing was lost.",
"hold": null
}
},
"state": {
"deployed": true,
"state": "running",
"update_phase": "undone",
"hold_reason": null,
"update_error": null
}
},
"observables": {
"pinned_images": {
"vikunja": "vikunja/vikunja:2.5.0"
},
"installed_images": {
"vikunja": "vikunja/vikunja:2.5.0"
},
"catalog_images": {
"vikunja": "vikunja/vikunja:2.6.0"
},
"live_compose_image_lines": [
"image: vikunja/vikunja:2.5.0"
],
"docker_inspect": [
"vikunja vikunja/vikunja:2.5.0 running=true restarts=0"
]
},
"readback": {
"A": true,
"B": true
},
"events": [
"2026-09-23T21:05:51Z app_update_undone (warning)"
],
"box_log": [
"2026-09-23T21:03:09Z INFO [sync] Updated vikunja/.felhom.yml",
"2026-09-23T21:03:09Z INFO [stacks] ScanStacks complete: 55 stacks found (11 deployed, 44 available)",
"2026-09-23T21:03:09Z INFO [api] Catalog sync completed: Sablonok frissítve — frissítve: vikunja",
"2026-09-23T21:03:11Z INFO [stacks] ScanStacks complete: 55 stacks found (11 deployed, 44 available)",
"2026-09-23T21:03:13Z INFO [api] update requested for stack: vikunja",
"2026-09-23T21:03:13Z INFO [stacks] update vikunja: accepted — guarded update started",
"2026-09-23T21:03:13Z INFO [stacks] update vikunja: phase checking",
"2026-09-23T21:03:13Z INFO [stacks] update vikunja: precondition met — Tier 1 (own recovery unit) copy from 2026-09-23T20:56:25Z (7m0s old, limit 24h0m0s)",
"2026-09-23T21:03:13Z INFO [stacks] update vikunja: phase safety-dump",
"2026-09-23T21:03:13Z INFO [backup] Discovered 5 databases",
"2026-09-23T21:03:13Z INFO [backup] update safety dump for vikunja: the app has no database — nothing to copy (no-op)",
"2026-09-23T21:03:13Z INFO [stacks] update vikunja: safety dump done (0 file(s)) []",
"2026-09-23T21:03:13Z INFO [stacks] update vikunja: the undo copy will hold 0 named volume(s), 0.0 MiB",
"2026-09-23T21:03:13Z INFO [stacks] update vikunja: phase pinning",
"2026-09-23T21:03:13Z INFO [stacks] update vikunja: pin advanced to the catalog's current definition (vikunja=vikunja/vikunja:2.6.0)",
"2026-09-23T21:03:13Z INFO [stacks] update vikunja: phase pulling",
"2026-09-23T21:03:16Z INFO [stacks] update vikunja: phase copying",
"2026-09-23T21:03:17Z INFO [stacks] update vikunja: phase starting",
"2026-09-23T21:03:17Z INFO [stacks] update vikunja: phase verifying",
"2026-09-23T21:03:17Z WARN Health probe vikunja: API GET :8999/api/v1/info → Get \"http://vikunja:8999/api/v1/info\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-23T21:03:35Z WARN Health probe vikunja: API GET :8999/api/v1/info → Get \"http://vikunja:8999/api/v1/info\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-23T21:03:45Z INFO [scheduler] Running job: backup-cache",
"2026-09-23T21:04:14Z INFO [stacks] ScanStacks complete: 55 stacks found (11 deployed, 44 available)",
"2026-09-23T21:04:14Z WARN [stacks] update recovery: vikunja was interrupted in verifying (started 2026-09-23T21:03:13Z) — the new version may have run; marking it Updating and RESUMING the health wait",
"2026-09-23T21:04:14Z WARN [update] 1 interrupted update(s) will resume after the backup side is wired: [vikunja]",
"2026-09-23T21:04:14Z INFO [backup] restore record wired: /opt/docker/felhom-controller/data/restore-status.json (interrupted at startup: false)",
"2026-09-23T21:04:14Z INFO [scheduler] Registered periodic job: backup-cache (every 5m0s)",
"2026-09-23T21:04:14Z INFO [scheduler] Daily job tier2-backup scheduled for 2026-09-24 03:30 CEST",
"2026-09-23T21:04:14Z INFO [scheduler] Daily job offbox-backup scheduled for 2026-09-24 04:15 CEST",
"2026-09-23T21:04:14Z INFO [stacks] update vikunja: resuming after a controller restart — `up -d` then the health wait",
"2026-09-23T21:04:14Z INFO [backup] Found 8 DB dump files across drives",
"2026-09-23T21:04:14Z INFO [stacks] update vikunja: phase verifying",
"2026-09-23T21:04:14Z WARN Health probe vikunja: API GET :8999/api/v1/info → Get \"http://vikunja:8999/api/v1/info\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-23T21:04:14Z INFO [backup] Discovered 5 databases",
"2026-09-23T21:04:14Z INFO [backup] Backup status cache refreshed",
"2026-09-23T21:04:15Z WARN [api] Unauthorized request to /api/stacks/vikunja from 172.18.0.12:57278",
"2026-09-23T21:04:34Z WARN Health probe vikunja: API GET :8999/api/v1/info → Get \"http://vikunja:8999/api/v1/info\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-23T21:04:44Z WARN Health probe vikunja: API GET :8999/api/v1/info → Get \"http://vikunja:8999/api/v1/info\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-23T21:04:54Z WARN Health probe vikunja: API GET :8999/api/v1/info → Get \"http://vikunja:8999/api/v1/info\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-23T21:05:14Z WARN Health probe vikunja: API GET :8999/api/v1/info → Get \"http://vikunja:8999/api/v1/info\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-23T21:05:24Z WARN Health probe vikunja: API GET :8999/api/v1/info → Get \"http://vikunja:8999/api/v1/info\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-23T21:05:44Z WARN Health probe vikunja: API GET :8999/api/v1/info → Get \"http://vikunja:8999/api/v1/info\": dial tcp 172.18.0.2:8999: connect: connection refused",
"2026-09-23T21:05:45Z ERROR [stacks] update vikunja FAILED after the new version was started: not healthy: not healthy within 1m30s (last: state unhealthy)",
"2026-09-23T21:05:45Z INFO [stacks] update vikunja: kept 1299 bytes of the app's own log at /opt/docker/stacks/vikunja/hold-logs/20260923T210545Z/compose-logs.txt before stopping it (R-621)",
"2026-09-23T21:05:45Z INFO [stacks] update vikunja: phase undoing",
"2026-09-23T21:05:45Z WARN [stacks] update vikunja: UNDO — putting back the previous version and its 0 volume copy(ies) (reason: not healthy: not healthy within 1m30s (last: state unhealthy))",
"2026-09-23T21:05:45Z INFO [stacks] pin vikunja: vikunja=vikunja/vikunja:2.5.0",
"2026-09-23T21:05:46Z WARN Health probe vikunja: API GET :3456/api/v1/info → Get \"http://vikunja:3456/api/v1/info\": dial tcp 172.18.0.2:3456: connect: connection refused",
"2026-09-23T21:05:51Z INFO [stacks] update vikunja: event app_update_undone",
"2026-09-23T21:05:51Z WARN notifier disabled (no hub configured): DROPPED event app_update_undone (severity warning) — further app_update_undone events are logged at DEBUG only",
"2026-09-23T21:05:51Z INFO [stacks] update vikunja: UNDONE in 6s — the previous version is running on the data from before the update (the app's health check passed)"
],
"undo_copies_left": "0"
}

Some files were not shown because too many files have changed in this diff Show More