docs: 07 kept data; register (R-657, R-690, R-692 closed; R-450/463/687/688/691 narrowed; R-693, R-694 opened); night-2026-09-26 evidence (part0, C, D, E, F)
gates / gates (push) Successful in 27s

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-25 14:35:15 +02:00
parent f12f8609fc
commit 302f24e47c
70 changed files with 5572 additions and 6 deletions
@@ -557,6 +557,34 @@ successes only. After an agent restart the success is read back from the tier's
anything is stopped, logged, and reported once as `backup_tier_skipped`; `unknown` is never skipped.
**Still open:** quiescing per tier, so a slow second tier does not keep every app down.
### 6.5 Kept data — what a removed app leaves on the drive (controller v0.274.0, `09` §3 decision 36)
**What it is.** "Remove the app, keep my data" leaves the app's drive folder (`<drive>/appdata/<app>`, or the folder
its definition binds through `${HDD_PATH}`) in place. A reinstall over it no longer runs silently into the old files
(R-657): the install asks „A megőrzött adataimat használom" / "Use my kept data" (the database from the newest copy of
THIS drive's install — the app's own unit or the second-drive mirror — loaded under the kept files, then the
template's `after_load:`, e.g. nextcloud's `occ files:scan --all`) or „Tiszta lappal kezdem" / "Start fresh".
**Where it lives.** "Start fresh" RENAMES the folder — same drive, never a copy, never across drives — to
`<drive>/kept/<app>/<YYYY-MM-DD_HHMMSS>/`, together with the removed app's unit when one sits on that drive (so a later
Load has its database). `<drive>/kept` is in `ProtectedHDDPaths`, never under `userdata/`, never bound by a live app.
The page „Megőrzött adatok" / "Kept data" lists every dated folder and every `appdata/<x>` no installed app binds.
**It is NOT backed up.** No tier captures `<drive>/kept` or a leftover `appdata/<x>` of a removed app; the page says
so („Erről nem készül mentés." / "This is not backed up."). What brings it back into an app is the unit it carries
(or the app's own unit on the drive), listed per row as „Visszatölthető innen" / "Can be loaded from".
**Who deletes it.** Only the household, by Delete on that page with the app's name typed (a wrong name, or a path that
is not a listed item, is refused — proven live 2026-09-25). **The box never deletes kept data by itself** — whether it
ever should (e.g. after 90 days with warnings) is operator decision **D3, open** (`STATUS.md`). Until then kept data
can fill a drive; the drive-full warning names the kept folders and their sizes as space the household can free.
**Read-only view.** The file browser shows each kept item under „Megőrzött adatok", one `:ro` bind per item, and
follows the list at the next sync (a write is refused: `Read-only file system`, proven live). Not yet readable there:
a folder its app owns with mode 0770 (nextcloud, `www-data`) — R-691.
Evidence: `audits/night-2026-09-26/E/` (E1 spike, E5 live proof).
## 7. The recovery chain (D3) — the reason this document exists
**[DESIGN] 3-2-1 describes copies. It does not describe recovery.**
@@ -0,0 +1,42 @@
[11:21:19] scratch drive folders cleared before FROM (R-656): none existed
[11:21:19] C3: deploying privatebin at FROM {'privatebin': 'privatebin/pdo:2.0.5'}
[11:21:56] FROM settled=True in 30.8s :: {"privatebin": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[11:21:56] privatebin: seeded paste id=6d06e345497ece79
[11:21:56] privatebin: readback http=200 marker_present=True
[11:21:56] C1 (seed reads back BEFORE): True
[11:21:56] C3: swapping to TO {'privatebin': 'alpine:3.20'}
[11:22:00] TO up -d rc=0
[11:29:04] TO settled=False in 424.4s :: {"privatebin": {"status": "restarting", "health": "unhealthy", "restarts": 0, "exit": 0}}
[11:29:04] migration lines observed: 0
[11:29:04] RESULT (seed reads back AFTER): False
[11:29:05] C3: ABORT — putting the FROM images back
[11:29:36] privatebin: readback http=200 marker_present=True
[11:29:36] ABORT: app came back in 30.8s; data present=True
{
"harness_version": 4,
"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-25T11:29:36Z",
"evidence": "evidence/C3",
"scratch_cleared": [],
"files_changed": [],
"total_s": 496.4
}
@@ -0,0 +1,166 @@
[11:29:36] scratch drive folders cleared before FROM (R-656): none existed
[11:29:36] MV-docmost: deploying docmost at FROM {'docmost': 'docmost/docmost:0.96.0', 'docmost-postgres': 'postgres:16-alpine', 'docmost-redis': 'redis:7-alpine'}
[11:31:07] FROM settled=True in 31.1s :: {"docmost": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[11:31:07] docmost: /api/auth/setup http=200 rc=0
[11:31:07] docmost: login as the seeded user http=200 ok=True
[11:31:07] C1 (seed reads back BEFORE): True
[11:31:08] MV-docmost: PostgreSQL major move {'service': 'docmost-postgres', 'engine': 'postgres', 'from': 16, 'to': 18} — converting on the bench before the swap
[11:31:33] CONVERTED docmost-postgres PostgreSQL 16 -> 18 in 25.0s (dump 0.54s / 132184 B, load 2.06s, check equal over 48 tables)
[11:31:33] MV-docmost: swapping to TO {'docmost': 'docmost/docmost:0.96.0', 'docmost-postgres': 'postgres:18-alpine', 'docmost-redis': 'redis:7-alpine'}
[11:31:44] TO up -d rc=0
[11:32:15] TO settled=True in 31.1s :: {"docmost": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[11:32:15] engine state docmost-postgres: 18
[11:32:15] migration lines observed: 1
[11:32:15] docmost: login as the seeded user http=200 ok=True
[11:32:15] RESULT (seed reads back AFTER): True
[11:32:16] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000
[11:32:31] + 15s docmost=342M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=186M kills=0 rs=0 docmost-redis=7M/128M peak=9M kills=0 rs=0 reqs=300
[11:32:46] + 30s docmost=346M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=186M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=600
[11:33:01] + 46s docmost=352M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=186M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=896
[11:33:17] + 61s docmost=353M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=186M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=1196
[11:33:32] + 76s docmost=375M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=186M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=1496
[11:33:47] + 91s docmost=373M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=186M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=1796
[11:34:02] + 106s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=2092
[11:34:17] + 121s docmost=372M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=2392
[11:34:32] + 136s docmost=373M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=2692
[11:34:47] + 152s docmost=372M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=8M/128M peak=10M kills=0 rs=0 reqs=2988
[11:35:03] + 167s docmost=371M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=3288
[11:35:18] + 182s docmost=370M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=8M/128M peak=10M kills=0 rs=0 reqs=3588
[11:35:33] + 197s docmost=370M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=3888
[11:35:48] + 212s docmost=367M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=4186
[11:36:03] + 227s docmost=369M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=4484
[11:36:18] + 242s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=4784
[11:36:34] + 258s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=183M/256M peak=187M kills=0 rs=0 docmost-redis=8M/128M peak=10M kills=0 rs=0 reqs=5084
[11:36:49] + 273s docmost=369M/384M peak=384M kills=0 rs=0 docmost-postgres=185M/256M peak=188M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=5380
[11:37:04] + 288s docmost=370M/384M peak=384M kills=0 rs=0 docmost-postgres=186M/256M peak=189M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=5680
[11:37:19] + 303s docmost=369M/384M peak=384M kills=0 rs=0 docmost-postgres=187M/256M peak=189M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=5980
[11:37:34] + 318s docmost=369M/384M peak=384M kills=0 rs=0 docmost-postgres=188M/256M peak=191M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=6280
[11:37:49] + 334s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=189M/256M peak=191M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=6576
[11:38:05] + 349s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=191M/256M peak=193M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=6876
[11:38:20] + 364s docmost=367M/384M peak=384M kills=0 rs=0 docmost-postgres=193M/256M peak=194M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=7176
[11:38:35] + 379s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=196M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=7476
[11:38:50] + 394s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=194M/256M peak=196M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=7772
[11:39:05] + 409s docmost=364M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=196M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=8072
[11:39:20] + 424s docmost=364M/384M peak=384M kills=0 rs=0 docmost-postgres=193M/256M peak=196M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=8372
[11:39:36] + 440s docmost=366M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=196M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=8672
[11:39:51] + 455s docmost=367M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=8M/128M peak=10M kills=0 rs=0 reqs=8969
[11:40:06] + 470s docmost=369M/384M peak=384M kills=0 rs=0 docmost-postgres=193M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=9269
[11:40:21] + 485s docmost=369M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=9569
[11:40:36] + 500s docmost=367M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=9869
[11:40:51] + 515s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=10165
[11:41:06] + 530s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=10465
[11:41:22] + 546s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=193M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=10765
[11:41:37] + 561s docmost=367M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=11065
[11:41:52] + 576s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=8M/128M peak=10M kills=0 rs=0 reqs=11361
[11:42:07] + 591s docmost=365M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=11661
[11:42:22] + 606s docmost=366M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=8M/128M peak=10M kills=0 rs=0 reqs=11961
[11:42:22] memory watch: killed=False tight=['docmost'] requests=11961 codes={'200': 11961}
[11:42:22] MV-docmost: ABORT — putting the FROM images back
[11:45:26] ABORT: the app did NOT come back (rc=1, 180.7s)
{
"harness_version": 4,
"edge": "MV-docmost",
"app": "docmost",
"note": "night 2026-09-23 within-a-major move: docmost-postgres=postgres:18-alpine",
"from": {
"docmost": "docmost/docmost:0.96.0",
"docmost-postgres": "postgres:16-alpine",
"docmost-redis": "redis:7-alpine"
},
"to": {
"docmost": "docmost/docmost:0.96.0",
"docmost-postgres": "postgres:18-alpine",
"docmost-redis": "redis:7-alpine"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "\u001b[2Kdocmost | {\"level\":\"info\",\"time\":\"2026-09-25T11:31:51.496Z\",\"pid\":45,\"hostname\":\"2ef0af245c57\",\"context\":\"DatabaseMigrationService\",\"msg\":\"No pending database migrations\"}",
"abort": "refuses",
"abort_detail": "26 13:36:34.064 * 100 changes in 300 seconds. Saving...\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:36:34.064 * Background saving started by pid 191\n\u001b[2Kdocmost-redis | 191:C 25 Sep 2026 13:36:34.076 * DB saved on disk\n\u001b[2Kdocmost-redis | 191:C 25 Sep 2026 13:36:34.077 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:36:34.165 * Background saving terminated with success\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:41:35.035 * 100 changes in 300 seconds. Saving...\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:41:35.036 * Background saving started by pid 374\n\u001b[2Kdocmost-redis | 374:C 25 Sep 2026 13:41:35.048 * DB saved on disk\n\u001b[2Kdocmost-redis | 374:C 25 Sep 2026 13:41:35.049 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:41:35.136 * Background saving terminated with success",
"engine_state_after": {
"docmost-postgres": {
"image": "postgres:18-alpine",
"probe": "datadir major version",
"answer": "18",
"probe_rc": 0
}
},
"memory": {
"soak_s": 606.6,
"requested_s": 600,
"requests": 11961,
"codes": {
"200": 11961
},
"first_kill": null,
"containers": {
"docmost": {
"limit": 402653184,
"peak": 402665472,
"peak_pct": 1.0,
"anon_peak_sampled": 366161920,
"anon_peak_pct": 0.909,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
},
"docmost-postgres": {
"limit": 268435456,
"peak": 206811136,
"peak_pct": 0.77,
"anon_peak_sampled": 16371712,
"anon_peak_pct": 0.061,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
},
"docmost-redis": {
"limit": 134217728,
"peak": 11501568,
"peak_pct": 0.086,
"anon_peak_sampled": 4087808,
"anon_peak_pct": 0.03,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
}
},
"unmeasured": [],
"load": "reached"
},
"marks": [
"memory_tight"
],
"duration_s": 31.1,
"measured_at": "2026-09-25T11:45:26Z",
"evidence": "evidence/MV-docmost",
"scratch_cleared": [],
"engine_conversion": {
"service": "docmost-postgres",
"engine": "postgres",
"from": 16,
"to": 18,
"dump_s": 0.54,
"dump_bytes": 132184,
"new_engine_ready_s": 2.2,
"load_s": 2.06,
"dropped": [
"docmost"
],
"skipped_create_role": [
"CREATE ROLE docmost;"
],
"result": "converted",
"check_equal": true,
"pg_version": "18",
"tables": 48,
"convert_s": 25.0
},
"files_changed": [],
"total_s": 950.2
}
@@ -0,0 +1,8 @@
{
"privatebin": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,5 @@
privatebin | [25-Sep-2026 13:29:05] NOTICE: fpm is running, pid 10
privatebin | [25-Sep-2026 13:29:05] NOTICE: ready to handle connections
privatebin | 127.0.0.1 - - [25/Sep/2026:13:29:35 +0200] "GET / HTTP/1.1" 200 19664 "-" "Wget" "-"
privatebin | 172.18.0.1 - - [25/Sep/2026:13:29:36 +0200] "GET / HTTP/1.1" 200 22914 "-" "curl/8.14.1" "-"
privatebin | 172.18.0.1 - - [25/Sep/2026:13:29:36 +0200] "GET /?pasteid=6d06e345497ece79 HTTP/1.1" 200 310 "-" "curl/8.14.1" "-"
@@ -0,0 +1,14 @@
[11:21:19] scratch drive folders cleared before FROM (R-656): none existed
[11:21:19] C3: deploying privatebin at FROM {'privatebin': 'privatebin/pdo:2.0.5'}
[11:21:56] FROM settled=True in 30.8s :: {"privatebin": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[11:21:56] privatebin: seeded paste id=6d06e345497ece79
[11:21:56] privatebin: readback http=200 marker_present=True
[11:21:56] C1 (seed reads back BEFORE): True
[11:21:56] C3: swapping to TO {'privatebin': 'alpine:3.20'}
[11:22:00] TO up -d rc=0
[11:29:04] TO settled=False in 424.4s :: {"privatebin": {"status": "restarting", "health": "unhealthy", "restarts": 0, "exit": 0}}
[11:29:04] migration lines observed: 0
[11:29:04] RESULT (seed reads back AFTER): False
[11:29:05] C3: ABORT — putting the FROM images back
[11:29:36] privatebin: readback http=200 marker_present=True
[11:29:36] 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,28 @@
{
"harness_version": 4,
"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-25T11:29:36Z",
"evidence": "evidence/C3",
"scratch_cleared": [],
"files_changed": [],
"total_s": 496.4
}
@@ -0,0 +1,80 @@
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-redis | 1:M 25 Sep 2026 13:30:25.238 * monotonic clock: POSIX clock_gettime
docmost-redis | 1:M 25 Sep 2026 13:30:25.239 * Running mode=standalone, port=6379.
docmost-redis | 1:M 25 Sep 2026 13:30:25.240 * Server initialized
docmost-redis | 1:M 25 Sep 2026 13:30:25.244 * Creating AOF base file appendonly.aof.1.base.rdb on server start
docmost-redis | 1:M 25 Sep 2026 13:30:25.251 * Creating AOF incr file appendonly.aof.1.incr.aof on server start
docmost-redis | 1:M 25 Sep 2026 13:30:25.251 * Ready to accept connections tcp
docmost-redis | 1:signal-handler (1790335869) Received SIGTERM scheduling shutdown...
docmost-redis | 1:M 25 Sep 2026 13:31:09.303 * User requested shutdown...
docmost-redis | 1:M 25 Sep 2026 13:31:09.303 * Calling fsync() on the AOF file.
docmost-redis | 1:M 25 Sep 2026 13:31:09.322 * Saving the final RDB snapshot before exiting.
docmost-redis | 1:M 25 Sep 2026 13:31:09.334 * DB saved on disk
docmost-redis | 1:M 25 Sep 2026 13:31:09.335 # Redis is now ready to exit, bye bye...
docmost-redis | 1:C 25 Sep 2026 13:31:33.400 # 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.
docmost-redis | 1:C 25 Sep 2026 13:31:33.401 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
docmost-redis | 1:C 25 Sep 2026 13:31:33.401 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
docmost-redis | 1:C 25 Sep 2026 13:31:33.401 * Configuration loaded
docmost-redis | 1:M 25 Sep 2026 13:31:33.401 * monotonic clock: POSIX clock_gettime
docmost-redis | 1:M 25 Sep 2026 13:31:33.402 * Running mode=standalone, port=6379.
docmost-redis | 1:M 25 Sep 2026 13:31:33.403 * Server initialized
docmost-redis | 1:M 25 Sep 2026 13:31:33.403 * Reading RDB base file on AOF loading...
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * Loading RDB produced by version 7.4.11
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * RDB age 68 seconds
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * RDB memory usage when created 0.90 Mb
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * RDB is base AOF
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * Done loading RDB, keys loaded: 0, keys expired: 0.
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * DB loaded from base file appendonly.aof.1.base.rdb: 0.001 seconds
docmost-redis | 1:M 25 Sep 2026 13:31:33.406 * DB loaded from incr file appendonly.aof.1.incr.aof: 0.001 seconds
docmost-redis | 1:M 25 Sep 2026 13:31:33.406 * DB loaded from append only file: 0.002 seconds
docmost-redis | 1:M 25 Sep 2026 13:31:33.406 * Opening AOF incr file appendonly.aof.1.incr.aof on server start
docmost-redis | 1:M 25 Sep 2026 13:31:33.406 * Ready to accept connections tcp
docmost-redis | 1:M 25 Sep 2026 13:36:34.064 * 100 changes in 300 seconds. Saving...
docmost-redis | 1:M 25 Sep 2026 13:36:34.064 * Background saving started by pid 191
docmost-redis | 191:C 25 Sep 2026 13:36:34.076 * DB saved on disk
docmost-redis | 191:C 25 Sep 2026 13:36:34.077 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
docmost-redis | 1:M 25 Sep 2026 13:36:34.165 * Background saving terminated with success
docmost-redis | 1:M 25 Sep 2026 13:41:35.035 * 100 changes in 300 seconds. Saving...
docmost-redis | 1:M 25 Sep 2026 13:41:35.036 * Background saving started by pid 374
docmost-redis | 374:C 25 Sep 2026 13:41:35.048 * DB saved on disk
docmost-redis | 374:C 25 Sep 2026 13:41:35.049 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
docmost-redis | 1:M 25 Sep 2026 13:41:35.136 * Background saving terminated with success
@@ -0,0 +1,20 @@
{
"docmost": {
"status": "created",
"health": null,
"restarts": 0,
"exit": 0
},
"docmost-postgres": {
"status": "restarting",
"health": "unhealthy",
"restarts": 0,
"exit": 1
},
"docmost-redis": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,176 @@
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-redis | 1:C 25 Sep 2026 13:30:25.237 # 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.
docmost-redis | 1:C 25 Sep 2026 13:30:25.238 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
docmost-redis | 1:C 25 Sep 2026 13:30:25.238 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
docmost-redis | 1:C 25 Sep 2026 13:30:25.238 * Configuration loaded
docmost-redis | 1:M 25 Sep 2026 13:30:25.238 * monotonic clock: POSIX clock_gettime
docmost-redis | 1:M 25 Sep 2026 13:30:25.239 * Running mode=standalone, port=6379.
docmost-redis | 1:M 25 Sep 2026 13:30:25.240 * Server initialized
docmost-redis | 1:M 25 Sep 2026 13:30:25.244 * Creating AOF base file appendonly.aof.1.base.rdb on server start
docmost-postgres |
docmost-redis | 1:M 25 Sep 2026 13:30:25.251 * Creating AOF incr file appendonly.aof.1.incr.aof on server start
docmost-redis | 1:M 25 Sep 2026 13:30:25.251 * Ready to accept connections tcp
docmost-redis | 1:signal-handler (1790335869) Received SIGTERM scheduling shutdown...
docmost-redis | 1:M 25 Sep 2026 13:31:09.303 * User requested shutdown...
docmost-redis | 1:M 25 Sep 2026 13:31:09.303 * Calling fsync() on the AOF file.
docmost-redis | 1:M 25 Sep 2026 13:31:09.322 * Saving the final RDB snapshot before exiting.
docmost-redis | 1:M 25 Sep 2026 13:31:09.334 * DB saved on disk
docmost-redis | 1:M 25 Sep 2026 13:31:09.335 # Redis is now ready to exit, bye bye...
docmost-redis | 1:C 25 Sep 2026 13:31:33.400 # 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.
docmost-redis | 1:C 25 Sep 2026 13:31:33.401 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
docmost-redis | 1:C 25 Sep 2026 13:31:33.401 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
docmost-redis | 1:C 25 Sep 2026 13:31:33.401 * Configuration loaded
docmost-redis | 1:M 25 Sep 2026 13:31:33.401 * monotonic clock: POSIX clock_gettime
docmost-redis | 1:M 25 Sep 2026 13:31:33.402 * Running mode=standalone, port=6379.
docmost-redis | 1:M 25 Sep 2026 13:31:33.403 * Server initialized
docmost-redis | 1:M 25 Sep 2026 13:31:33.403 * Reading RDB base file on AOF loading...
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * Loading RDB produced by version 7.4.11
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * RDB age 68 seconds
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * RDB memory usage when created 0.90 Mb
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * RDB is base AOF
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * Done loading RDB, keys loaded: 0, keys expired: 0.
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * DB loaded from base file appendonly.aof.1.base.rdb: 0.001 seconds
docmost-redis | 1:M 25 Sep 2026 13:31:33.406 * DB loaded from incr file appendonly.aof.1.incr.aof: 0.001 seconds
docmost-redis | 1:M 25 Sep 2026 13:31:33.406 * DB loaded from append only file: 0.002 seconds
docmost-redis | 1:M 25 Sep 2026 13:31:33.406 * Opening AOF incr file appendonly.aof.1.incr.aof on server start
docmost-redis | 1:M 25 Sep 2026 13:31:33.406 * Ready to accept connections tcp
docmost-redis | 1:M 25 Sep 2026 13:36:34.064 * 100 changes in 300 seconds. Saving...
docmost-redis | 1:M 25 Sep 2026 13:36:34.064 * Background saving started by pid 191
docmost-redis | 191:C 25 Sep 2026 13:36:34.076 * DB saved on disk
docmost-redis | 191:C 25 Sep 2026 13:36:34.077 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
docmost-redis | 1:M 25 Sep 2026 13:36:34.165 * Background saving terminated with success
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-redis | 1:M 25 Sep 2026 13:41:35.035 * 100 changes in 300 seconds. Saving...
docmost-redis | 1:M 25 Sep 2026 13:41:35.036 * Background saving started by pid 374
docmost-redis | 374:C 25 Sep 2026 13:41:35.048 * DB saved on disk
docmost-redis | 374:C 25 Sep 2026 13:41:35.049 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
docmost-redis | 1:M 25 Sep 2026 13:41:35.136 * Background saving terminated with success
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
@@ -0,0 +1,54 @@
db:docmost owner=docmost enc=UTF8 coll=en_US.utf8
db:postgres owner=docmost enc=UTF8 coll=en_US.utf8
ext:docmost:pg_trgm
ext:docmost:plpgsql
ext:docmost:unaccent
role:docmost super=true login=true pw=true
rows:docmost:public.ai_chat_messages=0
rows:docmost:public.ai_chats=0
rows:docmost:public.api_keys=0
rows:docmost:public.attachments=0
rows:docmost:public.audit=0
rows:docmost:public.auth_accounts=0
rows:docmost:public.auth_providers=0
rows:docmost:public.backlinks=0
rows:docmost:public.base_properties=0
rows:docmost:public.base_rows=0
rows:docmost:public.base_views=0
rows:docmost:public.billing=0
rows:docmost:public.comments=0
rows:docmost:public.favorites=0
rows:docmost:public.file_tasks=0
rows:docmost:public.group_users=1
rows:docmost:public.groups=1
rows:docmost:public.kysely_migration=52
rows:docmost:public.kysely_migration_lock=1
rows:docmost:public.labels=0
rows:docmost:public.notifications=0
rows:docmost:public.oauth_authorization_codes=0
rows:docmost:public.oauth_clients=0
rows:docmost:public.oauth_grants=0
rows:docmost:public.oauth_tokens=0
rows:docmost:public.page_access=0
rows:docmost:public.page_history=0
rows:docmost:public.page_labels=0
rows:docmost:public.page_permissions=0
rows:docmost:public.page_transclusion_references=0
rows:docmost:public.page_transclusions=0
rows:docmost:public.page_verifications=0
rows:docmost:public.page_verifiers=0
rows:docmost:public.pages=0
rows:docmost:public.public_spaces=0
rows:docmost:public.scim_tokens=0
rows:docmost:public.shares=0
rows:docmost:public.siem_destinations=0
rows:docmost:public.space_members=2
rows:docmost:public.spaces=1
rows:docmost:public.templates=0
rows:docmost:public.user_mfa=0
rows:docmost:public.user_sessions=2
rows:docmost:public.user_tokens=0
rows:docmost:public.users=1
rows:docmost:public.watchers=0
rows:docmost:public.workspace_invitations=0
rows:docmost:public.workspaces=1
@@ -0,0 +1,54 @@
db:docmost owner=docmost enc=UTF8 coll=en_US.utf8
db:postgres owner=docmost enc=UTF8 coll=en_US.utf8
ext:docmost:pg_trgm
ext:docmost:plpgsql
ext:docmost:unaccent
role:docmost super=true login=true pw=true
rows:docmost:public.ai_chat_messages=0
rows:docmost:public.ai_chats=0
rows:docmost:public.api_keys=0
rows:docmost:public.attachments=0
rows:docmost:public.audit=0
rows:docmost:public.auth_accounts=0
rows:docmost:public.auth_providers=0
rows:docmost:public.backlinks=0
rows:docmost:public.base_properties=0
rows:docmost:public.base_rows=0
rows:docmost:public.base_views=0
rows:docmost:public.billing=0
rows:docmost:public.comments=0
rows:docmost:public.favorites=0
rows:docmost:public.file_tasks=0
rows:docmost:public.group_users=1
rows:docmost:public.groups=1
rows:docmost:public.kysely_migration=52
rows:docmost:public.kysely_migration_lock=1
rows:docmost:public.labels=0
rows:docmost:public.notifications=0
rows:docmost:public.oauth_authorization_codes=0
rows:docmost:public.oauth_clients=0
rows:docmost:public.oauth_grants=0
rows:docmost:public.oauth_tokens=0
rows:docmost:public.page_access=0
rows:docmost:public.page_history=0
rows:docmost:public.page_labels=0
rows:docmost:public.page_permissions=0
rows:docmost:public.page_transclusion_references=0
rows:docmost:public.page_transclusions=0
rows:docmost:public.page_verifications=0
rows:docmost:public.page_verifiers=0
rows:docmost:public.pages=0
rows:docmost:public.public_spaces=0
rows:docmost:public.scim_tokens=0
rows:docmost:public.shares=0
rows:docmost:public.siem_destinations=0
rows:docmost:public.space_members=2
rows:docmost:public.spaces=1
rows:docmost:public.templates=0
rows:docmost:public.user_mfa=0
rows:docmost:public.user_sessions=2
rows:docmost:public.user_tokens=0
rows:docmost:public.users=1
rows:docmost:public.watchers=0
rows:docmost:public.workspace_invitations=0
rows:docmost:public.workspaces=1
@@ -0,0 +1,8 @@
{
"docmost-postgres": {
"image": "postgres:18-alpine",
"probe": "datadir major version",
"answer": "18",
"probe_rc": 0
}
}
@@ -0,0 +1 @@
docmost | {"level":"info","time":"2026-09-25T11:31:51.496Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"No pending database migrations"}
@@ -0,0 +1,59 @@
[11:29:36] scratch drive folders cleared before FROM (R-656): none existed
[11:29:36] MV-docmost: deploying docmost at FROM {'docmost': 'docmost/docmost:0.96.0', 'docmost-postgres': 'postgres:16-alpine', 'docmost-redis': 'redis:7-alpine'}
[11:31:07] FROM settled=True in 31.1s :: {"docmost": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[11:31:07] docmost: /api/auth/setup http=200 rc=0
[11:31:07] docmost: login as the seeded user http=200 ok=True
[11:31:07] C1 (seed reads back BEFORE): True
[11:31:08] MV-docmost: PostgreSQL major move {'service': 'docmost-postgres', 'engine': 'postgres', 'from': 16, 'to': 18} — converting on the bench before the swap
[11:31:33] CONVERTED docmost-postgres PostgreSQL 16 -> 18 in 25.0s (dump 0.54s / 132184 B, load 2.06s, check equal over 48 tables)
[11:31:33] MV-docmost: swapping to TO {'docmost': 'docmost/docmost:0.96.0', 'docmost-postgres': 'postgres:18-alpine', 'docmost-redis': 'redis:7-alpine'}
[11:31:44] TO up -d rc=0
[11:32:15] TO settled=True in 31.1s :: {"docmost": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[11:32:15] engine state docmost-postgres: 18
[11:32:15] migration lines observed: 1
[11:32:15] docmost: login as the seeded user http=200 ok=True
[11:32:15] RESULT (seed reads back AFTER): True
[11:32:16] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000
[11:32:31] + 15s docmost=342M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=186M kills=0 rs=0 docmost-redis=7M/128M peak=9M kills=0 rs=0 reqs=300
[11:32:46] + 30s docmost=346M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=186M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=600
[11:33:01] + 46s docmost=352M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=186M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=896
[11:33:17] + 61s docmost=353M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=186M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=1196
[11:33:32] + 76s docmost=375M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=186M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=1496
[11:33:47] + 91s docmost=373M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=186M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=1796
[11:34:02] + 106s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=2092
[11:34:17] + 121s docmost=372M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=2392
[11:34:32] + 136s docmost=373M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=2692
[11:34:47] + 152s docmost=372M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=8M/128M peak=10M kills=0 rs=0 reqs=2988
[11:35:03] + 167s docmost=371M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=3288
[11:35:18] + 182s docmost=370M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=8M/128M peak=10M kills=0 rs=0 reqs=3588
[11:35:33] + 197s docmost=370M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=3888
[11:35:48] + 212s docmost=367M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=4186
[11:36:03] + 227s docmost=369M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=4484
[11:36:18] + 242s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=182M/256M peak=187M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=4784
[11:36:34] + 258s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=183M/256M peak=187M kills=0 rs=0 docmost-redis=8M/128M peak=10M kills=0 rs=0 reqs=5084
[11:36:49] + 273s docmost=369M/384M peak=384M kills=0 rs=0 docmost-postgres=185M/256M peak=188M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=5380
[11:37:04] + 288s docmost=370M/384M peak=384M kills=0 rs=0 docmost-postgres=186M/256M peak=189M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=5680
[11:37:19] + 303s docmost=369M/384M peak=384M kills=0 rs=0 docmost-postgres=187M/256M peak=189M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=5980
[11:37:34] + 318s docmost=369M/384M peak=384M kills=0 rs=0 docmost-postgres=188M/256M peak=191M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=6280
[11:37:49] + 334s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=189M/256M peak=191M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=6576
[11:38:05] + 349s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=191M/256M peak=193M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=6876
[11:38:20] + 364s docmost=367M/384M peak=384M kills=0 rs=0 docmost-postgres=193M/256M peak=194M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=7176
[11:38:35] + 379s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=196M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=7476
[11:38:50] + 394s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=194M/256M peak=196M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=7772
[11:39:05] + 409s docmost=364M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=196M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=8072
[11:39:20] + 424s docmost=364M/384M peak=384M kills=0 rs=0 docmost-postgres=193M/256M peak=196M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=8372
[11:39:36] + 440s docmost=366M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=196M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=8672
[11:39:51] + 455s docmost=367M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=8M/128M peak=10M kills=0 rs=0 reqs=8969
[11:40:06] + 470s docmost=369M/384M peak=384M kills=0 rs=0 docmost-postgres=193M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=9269
[11:40:21] + 485s docmost=369M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=9569
[11:40:36] + 500s docmost=367M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=9869
[11:40:51] + 515s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=10165
[11:41:06] + 530s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=10465
[11:41:22] + 546s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=193M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=10765
[11:41:37] + 561s docmost=367M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=11065
[11:41:52] + 576s docmost=368M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=8M/128M peak=10M kills=0 rs=0 reqs=11361
[11:42:07] + 591s docmost=365M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=7M/128M peak=10M kills=0 rs=0 reqs=11661
[11:42:22] + 606s docmost=366M/384M peak=384M kills=0 rs=0 docmost-postgres=192M/256M peak=197M kills=0 rs=0 docmost-redis=8M/128M peak=10M kills=0 rs=0 reqs=11961
[11:42:22] memory watch: killed=False tight=['docmost'] requests=11961 codes={'200': 11961}
[11:42:22] MV-docmost: ABORT — putting the FROM images back
[11:45:26] ABORT: the app did NOT come back (rc=1, 180.7s)
@@ -0,0 +1,166 @@
docmost-redis | 1:C 25 Sep 2026 13:30:25.237 # 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.
docmost-redis | 1:C 25 Sep 2026 13:30:25.238 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
docmost-redis | 1:C 25 Sep 2026 13:30:25.238 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
docmost-redis | 1:C 25 Sep 2026 13:30:25.238 * Configuration loaded
docmost-redis | 1:M 25 Sep 2026 13:30:25.238 * monotonic clock: POSIX clock_gettime
docmost-redis | 1:M 25 Sep 2026 13:30:25.239 * Running mode=standalone, port=6379.
docmost-redis | 1:M 25 Sep 2026 13:30:25.240 * Server initialized
docmost-redis | 1:M 25 Sep 2026 13:30:25.244 * Creating AOF base file appendonly.aof.1.base.rdb on server start
docmost-redis | 1:M 25 Sep 2026 13:30:25.251 * Creating AOF incr file appendonly.aof.1.incr.aof on server start
docmost-redis | 1:M 25 Sep 2026 13:30:25.251 * Ready to accept connections tcp
docmost-redis | 1:signal-handler (1790335869) Received SIGTERM scheduling shutdown...
docmost-redis | 1:M 25 Sep 2026 13:31:09.303 * User requested shutdown...
docmost-redis | 1:M 25 Sep 2026 13:31:09.303 * Calling fsync() on the AOF file.
docmost-redis | 1:M 25 Sep 2026 13:31:09.322 * Saving the final RDB snapshot before exiting.
docmost-redis | 1:M 25 Sep 2026 13:31:09.334 * DB saved on disk
docmost-redis | 1:M 25 Sep 2026 13:31:09.335 # Redis is now ready to exit, bye bye...
docmost-redis | 1:C 25 Sep 2026 13:31:33.400 # 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.
docmost-redis | 1:C 25 Sep 2026 13:31:33.401 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
docmost-redis | 1:C 25 Sep 2026 13:31:33.401 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
docmost-redis | 1:C 25 Sep 2026 13:31:33.401 * Configuration loaded
docmost-redis | 1:M 25 Sep 2026 13:31:33.401 * monotonic clock: POSIX clock_gettime
docmost-redis | 1:M 25 Sep 2026 13:31:33.402 * Running mode=standalone, port=6379.
docmost-redis | 1:M 25 Sep 2026 13:31:33.403 * Server initialized
docmost-redis | 1:M 25 Sep 2026 13:31:33.403 * Reading RDB base file on AOF loading...
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * Loading RDB produced by version 7.4.11
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * RDB age 68 seconds
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * RDB memory usage when created 0.90 Mb
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * RDB is base AOF
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * Done loading RDB, keys loaded: 0, keys expired: 0.
docmost-redis | 1:M 25 Sep 2026 13:31:33.404 * DB loaded from base file appendonly.aof.1.base.rdb: 0.001 seconds
docmost-redis | 1:M 25 Sep 2026 13:31:33.406 * DB loaded from incr file appendonly.aof.1.incr.aof: 0.001 seconds
docmost-redis | 1:M 25 Sep 2026 13:31:33.406 * DB loaded from append only file: 0.002 seconds
docmost-redis | 1:M 25 Sep 2026 13:31:33.406 * Opening AOF incr file appendonly.aof.1.incr.aof on server start
docmost-redis | 1:M 25 Sep 2026 13:31:33.406 * Ready to accept connections tcp
docmost | $ pnpm --filter ./apps/server run start:prod
docmost | $ cross-env NODE_ENV=production node dist/main
docmost | (node:45) ExperimentalWarning: localStorage is not available because --localstorage-file was not provided.
docmost | (Use `node --trace-warnings ...` to show where the warning was created)
docmost | {"level":"info","time":"2026-09-25T11:30:42.747Z","pid":45,"hostname":"2ef0af245c57","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-25T11:30:43.084Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-25T11:30:43.111Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.842Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20240324T085400-uuid_v7_fn\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20240324T085500-workspaces\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20240324T085600-users\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20240324T085700-groups\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20240324T085900-spaces\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20240324T086100-add-workspace-fk\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20240324T086200-workspace_invitations\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20240324T086300-pages\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20240324T086400-page_history\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20240324T086600-comments\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20240324T086700-attachments\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20240324T086800-pages-tsvector-trigger\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20240707T145623-drop-redundant-pages-slug_id-index\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20240903T124647-user-tokens\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20241218T223249-backlinks\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20250106T195516-billing\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20250118T194658-sso-auth\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20250222T114520-add_license_key_to_workspace\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20250327T145832-add-contributorIds-to-pages\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20250408T191830-shares\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20250521T154949-file_tasks\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20250623T215045-more-billing-columns\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20250715T070817-mfa\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20250725T052004-add-new-comments-columns\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20250729T213756-add-unaccent-pg_trm-update-tsvector.\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20250831T191600-add-group-sync-to-auth-providers\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20250831T202306-ldap-auth\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20250901T184612-attachments-search\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20250912T101500-api-keys\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260205T214213-add-settings-to-spaces\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260209T120000-add-contributor_ids-to-page-history\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260213T085259-notifications\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260213T085320-watchers\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260213T085337-backfill-watchers\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260224T233803-page-permissions\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260228T223532-audit\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260326T121350-user-sessions\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.843Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260329T163516-add-new-indexes\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.844Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260409T132415-ai-chat\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.844Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260412T135891-templates\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.844Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260412T162318-favorites\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.844Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260413T121647-page-verifications\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.844Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260414T124451-update-file_tasks\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.844Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260501T092214-scim\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.844Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260501T202258-page-transclusions\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.844Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260509T121236-labels\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.844Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260529T125146-bases\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.844Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260620T010047-personal-spaces\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.844Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260824T211732-page-title-trgm-index\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.844Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260825T022612-oauth\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.844Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260902T121326-siem-destinations\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.844Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"Migration \"20260904T171920-public-spaces\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.918Z","pid":45,"hostname":"2ef0af245c57","context":"NestApplication","msg":"Nest application successfully started"}
docmost | {"level":"info","time":"2026-09-25T11:30:44.932Z","pid":45,"hostname":"2ef0af245c57","context":"NestApplication","msg":"Listening on http://127.0.0.1:3000 / https://docs.gate.invalid"}
docmost | [ELIFECYCLE] Command failed.
docmost | $ pnpm --filter ./apps/server run start:prod
docmost | $ cross-env NODE_ENV=production node dist/main
docmost | (node:45) ExperimentalWarning: localStorage is not available because --localstorage-file was not provided.
docmost | (Use `node --trace-warnings ...` to show where the warning was created)
docmost | {"level":"info","time":"2026-09-25T11:31:51.005Z","pid":45,"hostname":"2ef0af245c57","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-25T11:31:51.300Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-25T11:31:51.355Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"info","time":"2026-09-25T11:31:51.496Z","pid":45,"hostname":"2ef0af245c57","context":"DatabaseMigrationService","msg":"No pending database migrations"}
docmost | {"level":"info","time":"2026-09-25T11:31:51.537Z","pid":45,"hostname":"2ef0af245c57","context":"NestApplication","msg":"Nest application successfully started"}
docmost | {"level":"info","time":"2026-09-25T11:31:51.548Z","pid":45,"hostname":"2ef0af245c57","context":"NestApplication","msg":"Listening on http://127.0.0.1:3000 / https://docs.gate.invalid"}
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are enabled.
docmost-postgres |
docmost-postgres | fixing permissions on existing directory /var/lib/postgresql/18/docker ... ok
docmost-postgres | creating subdirectories ... ok
docmost-postgres | selecting dynamic shared memory implementation ... posix
docmost-postgres | selecting default "max_connections" ... 100
docmost-postgres | selecting default "shared_buffers" ... 128MB
docmost-postgres | selecting default time zone ... Europe/Budapest
docmost-postgres | creating configuration files ... ok
docmost-postgres | running bootstrap script ... ok
docmost-postgres | sh: locale: not found
docmost-postgres | 2026-09-25 13:31:28.303 CEST [47] WARNING: no usable system locales were found
docmost-postgres | performing post-bootstrap initialization ... ok
docmost-postgres | syncing data to disk ... ok
docmost-postgres |
docmost-postgres |
docmost-postgres | Success. You can now start the database server using:
docmost-postgres |
docmost-postgres | pg_ctl -D /var/lib/postgresql/18/docker -l logfile start
docmost-postgres |
docmost-postgres | initdb: warning: enabling "trust" authentication for local connections
docmost-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.
docmost-postgres | waiting for server to start....2026-09-25 13:31:29.431 CEST [53] LOG: starting PostgreSQL 18.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
docmost-postgres | 2026-09-25 13:31:29.434 CEST [53] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
docmost-postgres | 2026-09-25 13:31:29.448 CEST [59] LOG: database system was shut down at 2026-09-25 13:31:28 CEST
docmost-postgres | 2026-09-25 13:31:29.458 CEST [53] LOG: database system is ready to accept connections
docmost-postgres | done
docmost-postgres | server started
docmost-postgres | CREATE DATABASE
docmost-postgres |
docmost-postgres |
docmost-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
docmost-postgres |
docmost-postgres | waiting for server to shut down....2026-09-25 13:31:29.656 CEST [53] LOG: received fast shutdown request
docmost-postgres | 2026-09-25 13:31:29.660 CEST [53] LOG: aborting any active transactions
docmost-postgres | 2026-09-25 13:31:29.666 CEST [53] LOG: background worker "logical replication launcher" (PID 62) exited with exit code 1
docmost-postgres | 2026-09-25 13:31:29.666 CEST [57] LOG: shutting down
docmost-postgres | 2026-09-25 13:31:29.669 CEST [57] LOG: checkpoint starting: shutdown immediate
docmost-postgres | 2026-09-25 13:31:29.813 CEST [57] LOG: checkpoint complete: wrote 943 buffers (5.8%), wrote 3 SLRU buffers; 0 WAL file(s) added, 0 removed, 0 recycled; write=0.024 s, sync=0.107 s, total=0.147 s; sync files=303, longest=0.075 s, average=0.001 s; distance=4362 kB, estimate=4362 kB; lsn=0/1BA8858, redo lsn=0/1BA8858
docmost-postgres | 2026-09-25 13:31:29.847 CEST [53] LOG: database system is shut down
docmost-postgres | done
docmost-postgres | server stopped
docmost-postgres |
docmost-postgres | PostgreSQL init process complete; ready for start up.
docmost-postgres |
docmost-postgres | 2026-09-25 13:31:29.900 CEST [1] LOG: starting PostgreSQL 18.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
docmost-postgres | 2026-09-25 13:31:29.900 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
docmost-postgres | 2026-09-25 13:31:29.900 CEST [1] LOG: listening on IPv6 address "::", port 5432
docmost-postgres | 2026-09-25 13:31:29.907 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
docmost-postgres | 2026-09-25 13:31:29.918 CEST [81] LOG: database system was shut down at 2026-09-25 13:31:29 CEST
docmost-postgres | 2026-09-25 13:31:29.927 CEST [1] LOG: database system is ready to accept connections
docmost-postgres | 2026-09-25 13:31:30.254 CEST [79] LOG: checkpoint starting: immediate force wait
docmost-postgres | 2026-09-25 13:31:30.286 CEST [79] LOG: checkpoint complete: wrote 1 buffers (0.0%), wrote 3 SLRU buffers; 0 WAL file(s) added, 0 removed, 0 recycled; write=0.008 s, sync=0.006 s, total=0.032 s; sync files=3, longest=0.003 s, average=0.002 s; distance=1 kB, estimate=1 kB; lsn=0/1BA8D60, redo lsn=0/1BA8D08
@@ -0,0 +1,20 @@
{
"docmost": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"docmost-postgres": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"docmost-redis": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,107 @@
{
"harness_version": 4,
"edge": "MV-docmost",
"app": "docmost",
"note": "night 2026-09-23 within-a-major move: docmost-postgres=postgres:18-alpine",
"from": {
"docmost": "docmost/docmost:0.96.0",
"docmost-postgres": "postgres:16-alpine",
"docmost-redis": "redis:7-alpine"
},
"to": {
"docmost": "docmost/docmost:0.96.0",
"docmost-postgres": "postgres:18-alpine",
"docmost-redis": "redis:7-alpine"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "\u001b[2Kdocmost | {\"level\":\"info\",\"time\":\"2026-09-25T11:31:51.496Z\",\"pid\":45,\"hostname\":\"2ef0af245c57\",\"context\":\"DatabaseMigrationService\",\"msg\":\"No pending database migrations\"}",
"abort": "refuses",
"abort_detail": "26 13:36:34.064 * 100 changes in 300 seconds. Saving...\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:36:34.064 * Background saving started by pid 191\n\u001b[2Kdocmost-redis | 191:C 25 Sep 2026 13:36:34.076 * DB saved on disk\n\u001b[2Kdocmost-redis | 191:C 25 Sep 2026 13:36:34.077 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:36:34.165 * Background saving terminated with success\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:41:35.035 * 100 changes in 300 seconds. Saving...\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:41:35.036 * Background saving started by pid 374\n\u001b[2Kdocmost-redis | 374:C 25 Sep 2026 13:41:35.048 * DB saved on disk\n\u001b[2Kdocmost-redis | 374:C 25 Sep 2026 13:41:35.049 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:41:35.136 * Background saving terminated with success",
"engine_state_after": {
"docmost-postgres": {
"image": "postgres:18-alpine",
"probe": "datadir major version",
"answer": "18",
"probe_rc": 0
}
},
"memory": {
"soak_s": 606.6,
"requested_s": 600,
"requests": 11961,
"codes": {
"200": 11961
},
"first_kill": null,
"containers": {
"docmost": {
"limit": 402653184,
"peak": 402665472,
"peak_pct": 1.0,
"anon_peak_sampled": 366161920,
"anon_peak_pct": 0.909,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
},
"docmost-postgres": {
"limit": 268435456,
"peak": 206811136,
"peak_pct": 0.77,
"anon_peak_sampled": 16371712,
"anon_peak_pct": 0.061,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
},
"docmost-redis": {
"limit": 134217728,
"peak": 11501568,
"peak_pct": 0.086,
"anon_peak_sampled": 4087808,
"anon_peak_pct": 0.03,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
}
},
"unmeasured": [],
"load": "reached"
},
"marks": [
"memory_tight"
],
"duration_s": 31.1,
"measured_at": "2026-09-25T11:45:26Z",
"evidence": "evidence/MV-docmost",
"scratch_cleared": [],
"engine_conversion": {
"service": "docmost-postgres",
"engine": "postgres",
"from": 16,
"to": 18,
"dump_s": 0.54,
"dump_bytes": 132184,
"new_engine_ready_s": 2.2,
"load_s": 2.06,
"dropped": [
"docmost"
],
"skipped_create_role": [
"CREATE ROLE docmost;"
],
"result": "converted",
"check_equal": true,
"pg_version": "18",
"tables": 48,
"convert_s": 25.0
},
"files_changed": [],
"total_s": 950.2
}
@@ -0,0 +1,166 @@
[11:46:17] scratch drive folders cleared before FROM (R-656): none existed
[11:46:17] MV-docmost: deploying docmost at FROM {'docmost': 'docmost/docmost:0.96.0', 'docmost-postgres': 'postgres:16-alpine', 'docmost-redis': 'redis:7-alpine'}
[11:46:59] FROM settled=True in 31.1s :: {"docmost": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[11:47:00] docmost: /api/auth/setup http=200 rc=0
[11:47:00] docmost: login as the seeded user http=200 ok=True
[11:47:00] C1 (seed reads back BEFORE): True
[11:47:00] MV-docmost: PostgreSQL major move {'service': 'docmost-postgres', 'engine': 'postgres', 'from': 16, 'to': 18} — converting on the bench before the swap
[11:47:11] CONVERTED docmost-postgres PostgreSQL 16 -> 18 in 11.0s (dump 0.54s / 132196 B, load 2.02s, check equal over 48 tables)
[11:47:11] MV-docmost: swapping to TO {'docmost': 'docmost/docmost:0.96.0', 'docmost-postgres': 'postgres:18-alpine', 'docmost-redis': 'redis:7-alpine'}
[11:47:23] TO up -d rc=0
[11:47:54] TO settled=True in 31.2s :: {"docmost": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[11:47:54] engine state docmost-postgres: 18
[11:47:54] migration lines observed: 1
[11:47:54] docmost: login as the seeded user http=200 ok=True
[11:47:54] RESULT (seed reads back AFTER): True
[11:47:55] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000
[11:48:10] + 15s docmost=422M/512M peak=460M kills=0 rs=0 docmost-postgres=118M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=300
[11:48:25] + 30s docmost=432M/512M peak=460M kills=0 rs=0 docmost-postgres=118M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=600
[11:48:40] + 45s docmost=437M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=898
[11:48:55] + 61s docmost=434M/512M peak=460M kills=0 rs=0 docmost-postgres=118M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=1196
[11:49:10] + 76s docmost=422M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=1496
[11:49:26] + 91s docmost=422M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=1796
[11:49:41] + 106s docmost=422M/512M peak=460M kills=0 rs=0 docmost-postgres=118M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=2096
[11:49:56] + 121s docmost=421M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=2396
[11:50:11] + 136s docmost=423M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=2696
[11:50:26] + 152s docmost=422M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=2992
[11:50:41] + 167s docmost=420M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=3292
[11:50:57] + 182s docmost=415M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=3592
[11:51:12] + 197s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=3892
[11:51:27] + 212s docmost=414M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=4188
[11:51:42] + 227s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=4488
[11:51:57] + 243s docmost=416M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=4788
[11:52:12] + 258s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=5088
[11:52:28] + 273s docmost=416M/512M peak=460M kills=0 rs=0 docmost-postgres=121M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=5384
[11:52:43] + 288s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=122M/256M peak=125M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=5684
[11:52:58] + 303s docmost=416M/512M peak=460M kills=0 rs=0 docmost-postgres=123M/256M peak=125M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=5984
[11:53:13] + 318s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=124M/256M peak=127M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=6284
[11:53:28] + 334s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=126M/256M peak=128M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=6584
[11:53:43] + 349s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=127M/256M peak=130M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=6884
[11:53:59] + 364s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=130M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=7184
[11:54:14] + 379s docmost=414M/512M peak=460M kills=0 rs=0 docmost-postgres=126M/256M peak=131M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=7484
[11:54:29] + 394s docmost=416M/512M peak=460M kills=0 rs=0 docmost-postgres=125M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=7780
[11:54:44] + 409s docmost=418M/512M peak=460M kills=0 rs=0 docmost-postgres=125M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=8080
[11:54:59] + 425s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=125M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=8380
[11:55:14] + 440s docmost=418M/512M peak=460M kills=0 rs=0 docmost-postgres=125M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=8680
[11:55:30] + 455s docmost=418M/512M peak=460M kills=0 rs=0 docmost-postgres=122M/256M peak=131M kills=0 rs=0 docmost-redis=4M/128M peak=8M kills=0 rs=0 reqs=8980
[11:55:45] + 470s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=121M/256M peak=131M kills=0 rs=0 docmost-redis=4M/128M peak=8M kills=0 rs=0 reqs=9276
[11:56:00] + 485s docmost=418M/512M peak=460M kills=0 rs=0 docmost-postgres=121M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=9576
[11:56:15] + 500s docmost=415M/512M peak=460M kills=0 rs=0 docmost-postgres=121M/256M peak=131M kills=0 rs=0 docmost-redis=4M/128M peak=8M kills=0 rs=0 reqs=9876
[11:56:30] + 516s docmost=415M/512M peak=460M kills=0 rs=0 docmost-postgres=122M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=10176
[11:56:45] + 531s docmost=416M/512M peak=460M kills=0 rs=0 docmost-postgres=121M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=10472
[11:57:01] + 546s docmost=416M/512M peak=460M kills=0 rs=0 docmost-postgres=121M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=10772
[11:57:16] + 561s docmost=418M/512M peak=460M kills=0 rs=0 docmost-postgres=121M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=11072
[11:57:31] + 576s docmost=418M/512M peak=460M kills=0 rs=0 docmost-postgres=122M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=11372
[11:57:46] + 591s docmost=419M/512M peak=460M kills=0 rs=0 docmost-postgres=122M/256M peak=131M kills=0 rs=0 docmost-redis=4M/128M peak=8M kills=0 rs=0 reqs=11672
[11:58:01] + 606s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=122M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=11972
[11:58:02] memory watch: killed=False tight=['docmost'] requests=11972 codes={'200': 11972}
[11:58:02] MV-docmost: ABORT — putting the FROM images back
[12:01:05] ABORT: the app did NOT come back (rc=1, 181.1s)
{
"harness_version": 4,
"edge": "MV-docmost",
"app": "docmost",
"note": "night 2026-09-23 within-a-major move: docmost-postgres=postgres:18-alpine",
"from": {
"docmost": "docmost/docmost:0.96.0",
"docmost-postgres": "postgres:16-alpine",
"docmost-redis": "redis:7-alpine"
},
"to": {
"docmost": "docmost/docmost:0.96.0",
"docmost-postgres": "postgres:18-alpine",
"docmost-redis": "redis:7-alpine"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "\u001b[2Kdocmost | {\"level\":\"info\",\"time\":\"2026-09-25T11:47:30.079Z\",\"pid\":45,\"hostname\":\"807844441a94\",\"context\":\"DatabaseMigrationService\",\"msg\":\"No pending database migrations\"}",
"abort": "refuses",
"abort_detail": "26 13:52:13.041 * 100 changes in 300 seconds. Saving...\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:52:13.042 * Background saving started by pid 190\n\u001b[2Kdocmost-redis | 190:C 25 Sep 2026 13:52:13.056 * DB saved on disk\n\u001b[2Kdocmost-redis | 190:C 25 Sep 2026 13:52:13.056 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:52:13.143 * Background saving terminated with success\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:57:14.072 * 100 changes in 300 seconds. Saving...\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:57:14.072 * Background saving started by pid 373\n\u001b[2Kdocmost-redis | 373:C 25 Sep 2026 13:57:14.085 * DB saved on disk\n\u001b[2Kdocmost-redis | 373:C 25 Sep 2026 13:57:14.086 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:57:14.173 * Background saving terminated with success",
"engine_state_after": {
"docmost-postgres": {
"image": "postgres:18-alpine",
"probe": "datadir major version",
"answer": "18",
"probe_rc": 0
}
},
"memory": {
"soak_s": 606.8,
"requested_s": 600,
"requests": 11972,
"codes": {
"200": 11972
},
"first_kill": null,
"containers": {
"docmost": {
"limit": 536870912,
"peak": 482848768,
"peak_pct": 0.899,
"anon_peak_sampled": 431427584,
"anon_peak_pct": 0.804,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
},
"docmost-postgres": {
"limit": 268435456,
"peak": 138342400,
"peak_pct": 0.515,
"anon_peak_sampled": 13156352,
"anon_peak_pct": 0.049,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
},
"docmost-redis": {
"limit": 134217728,
"peak": 9109504,
"peak_pct": 0.068,
"anon_peak_sampled": 4136960,
"anon_peak_pct": 0.031,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
}
},
"unmeasured": [],
"load": "reached"
},
"marks": [
"memory_tight"
],
"duration_s": 31.2,
"measured_at": "2026-09-25T12:01:05Z",
"evidence": "evidence/MV-docmost",
"scratch_cleared": [],
"engine_conversion": {
"service": "docmost-postgres",
"engine": "postgres",
"from": 16,
"to": 18,
"dump_s": 0.54,
"dump_bytes": 132196,
"new_engine_ready_s": 2.2,
"load_s": 2.02,
"dropped": [
"docmost"
],
"skipped_create_role": [
"CREATE ROLE docmost;"
],
"result": "converted",
"check_equal": true,
"pg_version": "18",
"tables": 48,
"convert_s": 11.0
},
"files_changed": [],
"total_s": 887.8
}
@@ -0,0 +1,80 @@
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-redis | 1:M 25 Sep 2026 13:46:18.044 * monotonic clock: POSIX clock_gettime
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-redis | 1:M 25 Sep 2026 13:46:18.045 * Running mode=standalone, port=6379.
docmost-redis | 1:M 25 Sep 2026 13:46:18.045 * Server initialized
docmost-redis | 1:M 25 Sep 2026 13:46:18.052 * Creating AOF base file appendonly.aof.1.base.rdb on server start
docmost-redis | 1:M 25 Sep 2026 13:46:18.059 * Creating AOF incr file appendonly.aof.1.incr.aof on server start
docmost-redis | 1:M 25 Sep 2026 13:46:18.059 * Ready to accept connections tcp
docmost-redis | 1:signal-handler (1790336821) Received SIGTERM scheduling shutdown...
docmost-redis | 1:M 25 Sep 2026 13:47:01.307 * User requested shutdown...
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-redis | 1:M 25 Sep 2026 13:47:01.307 * Calling fsync() on the AOF file.
docmost-redis | 1:M 25 Sep 2026 13:47:01.308 * Saving the final RDB snapshot before exiting.
docmost-redis | 1:M 25 Sep 2026 13:47:01.321 * DB saved on disk
docmost-redis | 1:M 25 Sep 2026 13:47:01.321 # Redis is now ready to exit, bye bye...
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-redis | 1:C 25 Sep 2026 13:47:12.207 # 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.
docmost-redis | 1:C 25 Sep 2026 13:47:12.208 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
docmost-redis | 1:C 25 Sep 2026 13:47:12.208 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
docmost-redis | 1:C 25 Sep 2026 13:47:12.208 * Configuration loaded
docmost-redis | 1:M 25 Sep 2026 13:47:12.208 * monotonic clock: POSIX clock_gettime
docmost-redis | 1:M 25 Sep 2026 13:47:12.209 * Running mode=standalone, port=6379.
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * Server initialized
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * Reading RDB base file on AOF loading...
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * Loading RDB produced by version 7.4.11
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * RDB age 54 seconds
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * RDB memory usage when created 0.90 Mb
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * RDB is base AOF
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * Done loading RDB, keys loaded: 0, keys expired: 0.
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * DB loaded from base file appendonly.aof.1.base.rdb: 0.000 seconds
docmost-redis | 1:M 25 Sep 2026 13:47:12.211 * DB loaded from incr file appendonly.aof.1.incr.aof: 0.001 seconds
docmost-redis | 1:M 25 Sep 2026 13:47:12.211 * DB loaded from append only file: 0.001 seconds
docmost-redis | 1:M 25 Sep 2026 13:47:12.211 * Opening AOF incr file appendonly.aof.1.incr.aof on server start
docmost-redis | 1:M 25 Sep 2026 13:47:12.211 * Ready to accept connections tcp
docmost-redis | 1:M 25 Sep 2026 13:52:13.041 * 100 changes in 300 seconds. Saving...
docmost-redis | 1:M 25 Sep 2026 13:52:13.042 * Background saving started by pid 190
docmost-redis | 190:C 25 Sep 2026 13:52:13.056 * DB saved on disk
docmost-redis | 190:C 25 Sep 2026 13:52:13.056 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
docmost-redis | 1:M 25 Sep 2026 13:52:13.143 * Background saving terminated with success
docmost-redis | 1:M 25 Sep 2026 13:57:14.072 * 100 changes in 300 seconds. Saving...
docmost-redis | 1:M 25 Sep 2026 13:57:14.072 * Background saving started by pid 373
docmost-redis | 373:C 25 Sep 2026 13:57:14.085 * DB saved on disk
docmost-redis | 373:C 25 Sep 2026 13:57:14.086 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
docmost-redis | 1:M 25 Sep 2026 13:57:14.173 * Background saving terminated with success
@@ -0,0 +1,20 @@
{
"docmost": {
"status": "created",
"health": null,
"restarts": 0,
"exit": 0
},
"docmost-postgres": {
"status": "restarting",
"health": "unhealthy",
"restarts": 0,
"exit": 1
},
"docmost-redis": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,176 @@
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-redis | 1:C 25 Sep 2026 13:46:18.043 # 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.
docmost-redis | 1:C 25 Sep 2026 13:46:18.043 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
docmost-redis | 1:C 25 Sep 2026 13:46:18.043 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
docmost-redis | 1:C 25 Sep 2026 13:46:18.043 * Configuration loaded
docmost-redis | 1:M 25 Sep 2026 13:46:18.044 * monotonic clock: POSIX clock_gettime
docmost-redis | 1:M 25 Sep 2026 13:46:18.045 * Running mode=standalone, port=6379.
docmost-redis | 1:M 25 Sep 2026 13:46:18.045 * Server initialized
docmost-redis | 1:M 25 Sep 2026 13:46:18.052 * Creating AOF base file appendonly.aof.1.base.rdb on server start
docmost-redis | 1:M 25 Sep 2026 13:46:18.059 * Creating AOF incr file appendonly.aof.1.incr.aof on server start
docmost-redis | 1:M 25 Sep 2026 13:46:18.059 * Ready to accept connections tcp
docmost-redis | 1:signal-handler (1790336821) Received SIGTERM scheduling shutdown...
docmost-redis | 1:M 25 Sep 2026 13:47:01.307 * User requested shutdown...
docmost-redis | 1:M 25 Sep 2026 13:47:01.307 * Calling fsync() on the AOF file.
docmost-redis | 1:M 25 Sep 2026 13:47:01.308 * Saving the final RDB snapshot before exiting.
docmost-redis | 1:M 25 Sep 2026 13:47:01.321 * DB saved on disk
docmost-redis | 1:M 25 Sep 2026 13:47:01.321 # Redis is now ready to exit, bye bye...
docmost-redis | 1:C 25 Sep 2026 13:47:12.207 # 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.
docmost-redis | 1:C 25 Sep 2026 13:47:12.208 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
docmost-redis | 1:C 25 Sep 2026 13:47:12.208 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
docmost-redis | 1:C 25 Sep 2026 13:47:12.208 * Configuration loaded
docmost-redis | 1:M 25 Sep 2026 13:47:12.208 * monotonic clock: POSIX clock_gettime
docmost-redis | 1:M 25 Sep 2026 13:47:12.209 * Running mode=standalone, port=6379.
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * Server initialized
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * Reading RDB base file on AOF loading...
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * Loading RDB produced by version 7.4.11
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * RDB age 54 seconds
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres |
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * RDB memory usage when created 0.90 Mb
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * RDB is base AOF
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * Done loading RDB, keys loaded: 0, keys expired: 0.
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * DB loaded from base file appendonly.aof.1.base.rdb: 0.000 seconds
docmost-redis | 1:M 25 Sep 2026 13:47:12.211 * DB loaded from incr file appendonly.aof.1.incr.aof: 0.001 seconds
docmost-redis | 1:M 25 Sep 2026 13:47:12.211 * DB loaded from append only file: 0.001 seconds
docmost-redis | 1:M 25 Sep 2026 13:47:12.211 * Opening AOF incr file appendonly.aof.1.incr.aof on server start
docmost-redis | 1:M 25 Sep 2026 13:47:12.211 * Ready to accept connections tcp
docmost-redis | 1:M 25 Sep 2026 13:52:13.041 * 100 changes in 300 seconds. Saving...
docmost-redis | 1:M 25 Sep 2026 13:52:13.042 * Background saving started by pid 190
docmost-redis | 190:C 25 Sep 2026 13:52:13.056 * DB saved on disk
docmost-redis | 190:C 25 Sep 2026 13:52:13.056 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
docmost-redis | 1:M 25 Sep 2026 13:52:13.143 * Background saving terminated with success
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-redis | 1:M 25 Sep 2026 13:57:14.072 * 100 changes in 300 seconds. Saving...
docmost-redis | 1:M 25 Sep 2026 13:57:14.072 * Background saving started by pid 373
docmost-redis | 373:C 25 Sep 2026 13:57:14.085 * DB saved on disk
docmost-redis | 373:C 25 Sep 2026 13:57:14.086 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
docmost-redis | 1:M 25 Sep 2026 13:57:14.173 * Background saving terminated with success
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are disabled.
docmost-postgres |
docmost-postgres | initdb: error: directory "/var/lib/postgresql/data" exists but is not empty
docmost-postgres | initdb: hint: If you want to create a new database system, either remove or empty the directory "/var/lib/postgresql/data" or run initdb with an argument other than "/var/lib/postgresql/data".
@@ -0,0 +1,54 @@
db:docmost owner=docmost enc=UTF8 coll=en_US.utf8
db:postgres owner=docmost enc=UTF8 coll=en_US.utf8
ext:docmost:pg_trgm
ext:docmost:plpgsql
ext:docmost:unaccent
role:docmost super=true login=true pw=true
rows:docmost:public.ai_chat_messages=0
rows:docmost:public.ai_chats=0
rows:docmost:public.api_keys=0
rows:docmost:public.attachments=0
rows:docmost:public.audit=0
rows:docmost:public.auth_accounts=0
rows:docmost:public.auth_providers=0
rows:docmost:public.backlinks=0
rows:docmost:public.base_properties=0
rows:docmost:public.base_rows=0
rows:docmost:public.base_views=0
rows:docmost:public.billing=0
rows:docmost:public.comments=0
rows:docmost:public.favorites=0
rows:docmost:public.file_tasks=0
rows:docmost:public.group_users=1
rows:docmost:public.groups=1
rows:docmost:public.kysely_migration=52
rows:docmost:public.kysely_migration_lock=1
rows:docmost:public.labels=0
rows:docmost:public.notifications=0
rows:docmost:public.oauth_authorization_codes=0
rows:docmost:public.oauth_clients=0
rows:docmost:public.oauth_grants=0
rows:docmost:public.oauth_tokens=0
rows:docmost:public.page_access=0
rows:docmost:public.page_history=0
rows:docmost:public.page_labels=0
rows:docmost:public.page_permissions=0
rows:docmost:public.page_transclusion_references=0
rows:docmost:public.page_transclusions=0
rows:docmost:public.page_verifications=0
rows:docmost:public.page_verifiers=0
rows:docmost:public.pages=0
rows:docmost:public.public_spaces=0
rows:docmost:public.scim_tokens=0
rows:docmost:public.shares=0
rows:docmost:public.siem_destinations=0
rows:docmost:public.space_members=2
rows:docmost:public.spaces=1
rows:docmost:public.templates=0
rows:docmost:public.user_mfa=0
rows:docmost:public.user_sessions=2
rows:docmost:public.user_tokens=0
rows:docmost:public.users=1
rows:docmost:public.watchers=0
rows:docmost:public.workspace_invitations=0
rows:docmost:public.workspaces=1
@@ -0,0 +1,54 @@
db:docmost owner=docmost enc=UTF8 coll=en_US.utf8
db:postgres owner=docmost enc=UTF8 coll=en_US.utf8
ext:docmost:pg_trgm
ext:docmost:plpgsql
ext:docmost:unaccent
role:docmost super=true login=true pw=true
rows:docmost:public.ai_chat_messages=0
rows:docmost:public.ai_chats=0
rows:docmost:public.api_keys=0
rows:docmost:public.attachments=0
rows:docmost:public.audit=0
rows:docmost:public.auth_accounts=0
rows:docmost:public.auth_providers=0
rows:docmost:public.backlinks=0
rows:docmost:public.base_properties=0
rows:docmost:public.base_rows=0
rows:docmost:public.base_views=0
rows:docmost:public.billing=0
rows:docmost:public.comments=0
rows:docmost:public.favorites=0
rows:docmost:public.file_tasks=0
rows:docmost:public.group_users=1
rows:docmost:public.groups=1
rows:docmost:public.kysely_migration=52
rows:docmost:public.kysely_migration_lock=1
rows:docmost:public.labels=0
rows:docmost:public.notifications=0
rows:docmost:public.oauth_authorization_codes=0
rows:docmost:public.oauth_clients=0
rows:docmost:public.oauth_grants=0
rows:docmost:public.oauth_tokens=0
rows:docmost:public.page_access=0
rows:docmost:public.page_history=0
rows:docmost:public.page_labels=0
rows:docmost:public.page_permissions=0
rows:docmost:public.page_transclusion_references=0
rows:docmost:public.page_transclusions=0
rows:docmost:public.page_verifications=0
rows:docmost:public.page_verifiers=0
rows:docmost:public.pages=0
rows:docmost:public.public_spaces=0
rows:docmost:public.scim_tokens=0
rows:docmost:public.shares=0
rows:docmost:public.siem_destinations=0
rows:docmost:public.space_members=2
rows:docmost:public.spaces=1
rows:docmost:public.templates=0
rows:docmost:public.user_mfa=0
rows:docmost:public.user_sessions=2
rows:docmost:public.user_tokens=0
rows:docmost:public.users=1
rows:docmost:public.watchers=0
rows:docmost:public.workspace_invitations=0
rows:docmost:public.workspaces=1
@@ -0,0 +1,8 @@
{
"docmost-postgres": {
"image": "postgres:18-alpine",
"probe": "datadir major version",
"answer": "18",
"probe_rc": 0
}
}
@@ -0,0 +1 @@
docmost | {"level":"info","time":"2026-09-25T11:47:30.079Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"No pending database migrations"}
@@ -0,0 +1,59 @@
[11:46:17] scratch drive folders cleared before FROM (R-656): none existed
[11:46:17] MV-docmost: deploying docmost at FROM {'docmost': 'docmost/docmost:0.96.0', 'docmost-postgres': 'postgres:16-alpine', 'docmost-redis': 'redis:7-alpine'}
[11:46:59] FROM settled=True in 31.1s :: {"docmost": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[11:47:00] docmost: /api/auth/setup http=200 rc=0
[11:47:00] docmost: login as the seeded user http=200 ok=True
[11:47:00] C1 (seed reads back BEFORE): True
[11:47:00] MV-docmost: PostgreSQL major move {'service': 'docmost-postgres', 'engine': 'postgres', 'from': 16, 'to': 18} — converting on the bench before the swap
[11:47:11] CONVERTED docmost-postgres PostgreSQL 16 -> 18 in 11.0s (dump 0.54s / 132196 B, load 2.02s, check equal over 48 tables)
[11:47:11] MV-docmost: swapping to TO {'docmost': 'docmost/docmost:0.96.0', 'docmost-postgres': 'postgres:18-alpine', 'docmost-redis': 'redis:7-alpine'}
[11:47:23] TO up -d rc=0
[11:47:54] TO settled=True in 31.2s :: {"docmost": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-postgres": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "docmost-redis": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[11:47:54] engine state docmost-postgres: 18
[11:47:54] migration lines observed: 1
[11:47:54] docmost: login as the seeded user http=200 ok=True
[11:47:54] RESULT (seed reads back AFTER): True
[11:47:55] memory watch: 600s, 4 callers on 1 path(s) at 172.18.0.2:3000
[11:48:10] + 15s docmost=422M/512M peak=460M kills=0 rs=0 docmost-postgres=118M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=300
[11:48:25] + 30s docmost=432M/512M peak=460M kills=0 rs=0 docmost-postgres=118M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=600
[11:48:40] + 45s docmost=437M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=898
[11:48:55] + 61s docmost=434M/512M peak=460M kills=0 rs=0 docmost-postgres=118M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=1196
[11:49:10] + 76s docmost=422M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=1496
[11:49:26] + 91s docmost=422M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=1796
[11:49:41] + 106s docmost=422M/512M peak=460M kills=0 rs=0 docmost-postgres=118M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=2096
[11:49:56] + 121s docmost=421M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=2396
[11:50:11] + 136s docmost=423M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=2696
[11:50:26] + 152s docmost=422M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=2992
[11:50:41] + 167s docmost=420M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=3292
[11:50:57] + 182s docmost=415M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=3592
[11:51:12] + 197s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=3892
[11:51:27] + 212s docmost=414M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=4188
[11:51:42] + 227s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=4488
[11:51:57] + 243s docmost=416M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=4788
[11:52:12] + 258s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=119M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=5088
[11:52:28] + 273s docmost=416M/512M peak=460M kills=0 rs=0 docmost-postgres=121M/256M peak=123M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=5384
[11:52:43] + 288s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=122M/256M peak=125M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=5684
[11:52:58] + 303s docmost=416M/512M peak=460M kills=0 rs=0 docmost-postgres=123M/256M peak=125M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=5984
[11:53:13] + 318s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=124M/256M peak=127M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=6284
[11:53:28] + 334s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=126M/256M peak=128M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=6584
[11:53:43] + 349s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=127M/256M peak=130M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=6884
[11:53:59] + 364s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=130M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=7M kills=0 rs=0 reqs=7184
[11:54:14] + 379s docmost=414M/512M peak=460M kills=0 rs=0 docmost-postgres=126M/256M peak=131M kills=0 rs=0 docmost-redis=4M/128M peak=7M kills=0 rs=0 reqs=7484
[11:54:29] + 394s docmost=416M/512M peak=460M kills=0 rs=0 docmost-postgres=125M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=7780
[11:54:44] + 409s docmost=418M/512M peak=460M kills=0 rs=0 docmost-postgres=125M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=8080
[11:54:59] + 425s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=125M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=8380
[11:55:14] + 440s docmost=418M/512M peak=460M kills=0 rs=0 docmost-postgres=125M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=8680
[11:55:30] + 455s docmost=418M/512M peak=460M kills=0 rs=0 docmost-postgres=122M/256M peak=131M kills=0 rs=0 docmost-redis=4M/128M peak=8M kills=0 rs=0 reqs=8980
[11:55:45] + 470s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=121M/256M peak=131M kills=0 rs=0 docmost-redis=4M/128M peak=8M kills=0 rs=0 reqs=9276
[11:56:00] + 485s docmost=418M/512M peak=460M kills=0 rs=0 docmost-postgres=121M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=9576
[11:56:15] + 500s docmost=415M/512M peak=460M kills=0 rs=0 docmost-postgres=121M/256M peak=131M kills=0 rs=0 docmost-redis=4M/128M peak=8M kills=0 rs=0 reqs=9876
[11:56:30] + 516s docmost=415M/512M peak=460M kills=0 rs=0 docmost-postgres=122M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=10176
[11:56:45] + 531s docmost=416M/512M peak=460M kills=0 rs=0 docmost-postgres=121M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=10472
[11:57:01] + 546s docmost=416M/512M peak=460M kills=0 rs=0 docmost-postgres=121M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=10772
[11:57:16] + 561s docmost=418M/512M peak=460M kills=0 rs=0 docmost-postgres=121M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=11072
[11:57:31] + 576s docmost=418M/512M peak=460M kills=0 rs=0 docmost-postgres=122M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=11372
[11:57:46] + 591s docmost=419M/512M peak=460M kills=0 rs=0 docmost-postgres=122M/256M peak=131M kills=0 rs=0 docmost-redis=4M/128M peak=8M kills=0 rs=0 reqs=11672
[11:58:01] + 606s docmost=417M/512M peak=460M kills=0 rs=0 docmost-postgres=122M/256M peak=131M kills=0 rs=0 docmost-redis=5M/128M peak=8M kills=0 rs=0 reqs=11972
[11:58:02] memory watch: killed=False tight=['docmost'] requests=11972 codes={'200': 11972}
[11:58:02] MV-docmost: ABORT — putting the FROM images back
[12:01:05] ABORT: the app did NOT come back (rc=1, 181.1s)
@@ -0,0 +1,166 @@
docmost-postgres | The files belonging to this database system will be owned by user "postgres".
docmost-postgres | This user must also own the server process.
docmost-postgres |
docmost-postgres | The database cluster will be initialized with locale "en_US.utf8".
docmost-postgres | The default database encoding has accordingly been set to "UTF8".
docmost-postgres | The default text search configuration will be set to "english".
docmost-postgres |
docmost-postgres | Data page checksums are enabled.
docmost-postgres |
docmost-postgres | fixing permissions on existing directory /var/lib/postgresql/18/docker ... ok
docmost-postgres | creating subdirectories ... ok
docmost-postgres | selecting dynamic shared memory implementation ... posix
docmost-postgres | selecting default "max_connections" ... 100
docmost-postgres | selecting default "shared_buffers" ... 128MB
docmost-postgres | selecting default time zone ... Europe/Budapest
docmost-postgres | creating configuration files ... ok
docmost-postgres | running bootstrap script ... ok
docmost-postgres | sh: locale: not found
docmost-postgres | 2026-09-25 13:47:07.004 CEST [47] WARNING: no usable system locales were found
docmost-postgres | performing post-bootstrap initialization ... ok
docmost-postgres | syncing data to disk ... ok
docmost-postgres |
docmost-postgres |
docmost-postgres | Success. You can now start the database server using:
docmost-postgres |
docmost-postgres | pg_ctl -D /var/lib/postgresql/18/docker -l logfile start
docmost-postgres |
docmost-postgres | initdb: warning: enabling "trust" authentication for local connections
docmost-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.
docmost-postgres | waiting for server to start....2026-09-25 13:47:08.179 CEST [53] LOG: starting PostgreSQL 18.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
docmost-postgres | 2026-09-25 13:47:08.183 CEST [53] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
docmost-postgres | 2026-09-25 13:47:08.195 CEST [59] LOG: database system was shut down at 2026-09-25 13:47:07 CEST
docmost-postgres | 2026-09-25 13:47:08.203 CEST [53] LOG: database system is ready to accept connections
docmost-postgres | done
docmost-postgres | server started
docmost-postgres | CREATE DATABASE
docmost-postgres |
docmost-postgres |
docmost-postgres | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
docmost-postgres |
docmost-postgres | waiting for server to shut down....2026-09-25 13:47:08.418 CEST [53] LOG: received fast shutdown request
docmost-postgres | 2026-09-25 13:47:08.422 CEST [53] LOG: aborting any active transactions
docmost-postgres | 2026-09-25 13:47:08.425 CEST [53] LOG: background worker "logical replication launcher" (PID 62) exited with exit code 1
docmost-postgres | 2026-09-25 13:47:08.427 CEST [57] LOG: shutting down
docmost-postgres | 2026-09-25 13:47:08.430 CEST [57] LOG: checkpoint starting: shutdown immediate
docmost-postgres | 2026-09-25 13:47:08.581 CEST [57] LOG: checkpoint complete: wrote 943 buffers (5.8%), wrote 3 SLRU buffers; 0 WAL file(s) added, 0 removed, 0 recycled; write=0.025 s, sync=0.114 s, total=0.155 s; sync files=303, longest=0.084 s, average=0.001 s; distance=4362 kB, estimate=4362 kB; lsn=0/1BA8858, redo lsn=0/1BA8858
docmost-postgres | 2026-09-25 13:47:08.608 CEST [53] LOG: database system is shut down
docmost-postgres | done
docmost-postgres | server stopped
docmost-postgres |
docmost-postgres | PostgreSQL init process complete; ready for start up.
docmost-postgres |
docmost-postgres | 2026-09-25 13:47:08.660 CEST [1] LOG: starting PostgreSQL 18.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
docmost-postgres | 2026-09-25 13:47:08.660 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
docmost-postgres | 2026-09-25 13:47:08.660 CEST [1] LOG: listening on IPv6 address "::", port 5432
docmost-postgres | 2026-09-25 13:47:08.666 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
docmost-postgres | 2026-09-25 13:47:08.676 CEST [76] LOG: database system was shut down at 2026-09-25 13:47:08 CEST
docmost-postgres | 2026-09-25 13:47:08.685 CEST [1] LOG: database system is ready to accept connections
docmost-postgres | 2026-09-25 13:47:09.008 CEST [74] LOG: checkpoint starting: immediate force wait
docmost-postgres | 2026-09-25 13:47:09.038 CEST [74] LOG: checkpoint complete: wrote 1 buffers (0.0%), wrote 3 SLRU buffers; 0 WAL file(s) added, 0 removed, 0 recycled; write=0.008 s, sync=0.006 s, total=0.031 s; sync files=3, longest=0.003 s, average=0.002 s; distance=1 kB, estimate=1 kB; lsn=0/1BA8D60, redo lsn=0/1BA8D08
docmost | $ pnpm --filter ./apps/server run start:prod
docmost | $ cross-env NODE_ENV=production node dist/main
docmost | (node:45) ExperimentalWarning: localStorage is not available because --localstorage-file was not provided.
docmost | (Use `node --trace-warnings ...` to show where the warning was created)
docmost | {"level":"info","time":"2026-09-25T11:46:35.273Z","pid":45,"hostname":"807844441a94","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-25T11:46:35.492Z","pid":45,"hostname":"807844441a94","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-25T11:46:35.541Z","pid":45,"hostname":"807844441a94","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.246Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20240324T085400-uuid_v7_fn\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20240324T085500-workspaces\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20240324T085600-users\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20240324T085700-groups\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20240324T085900-spaces\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20240324T086100-add-workspace-fk\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20240324T086200-workspace_invitations\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20240324T086300-pages\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20240324T086400-page_history\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20240324T086600-comments\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20240324T086700-attachments\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20240324T086800-pages-tsvector-trigger\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20240707T145623-drop-redundant-pages-slug_id-index\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20240903T124647-user-tokens\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20241218T223249-backlinks\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20250106T195516-billing\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20250118T194658-sso-auth\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20250222T114520-add_license_key_to_workspace\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20250327T145832-add-contributorIds-to-pages\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20250408T191830-shares\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20250521T154949-file_tasks\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20250623T215045-more-billing-columns\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20250715T070817-mfa\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20250725T052004-add-new-comments-columns\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20250729T213756-add-unaccent-pg_trm-update-tsvector.\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20250831T191600-add-group-sync-to-auth-providers\" executed successfully"}
docmost-redis | 1:C 25 Sep 2026 13:46:18.043 # 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.
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20250831T202306-ldap-auth\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20250901T184612-attachments-search\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20250912T101500-api-keys\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260205T214213-add-settings-to-spaces\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260209T120000-add-contributor_ids-to-page-history\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260213T085259-notifications\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260213T085320-watchers\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260213T085337-backfill-watchers\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260224T233803-page-permissions\" executed successfully"}
docmost-redis | 1:C 25 Sep 2026 13:46:18.043 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
docmost-redis | 1:C 25 Sep 2026 13:46:18.043 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
docmost-redis | 1:C 25 Sep 2026 13:46:18.043 * Configuration loaded
docmost-redis | 1:M 25 Sep 2026 13:46:18.044 * monotonic clock: POSIX clock_gettime
docmost-redis | 1:M 25 Sep 2026 13:46:18.045 * Running mode=standalone, port=6379.
docmost-redis | 1:M 25 Sep 2026 13:46:18.045 * Server initialized
docmost-redis | 1:M 25 Sep 2026 13:46:18.052 * Creating AOF base file appendonly.aof.1.base.rdb on server start
docmost-redis | 1:M 25 Sep 2026 13:46:18.059 * Creating AOF incr file appendonly.aof.1.incr.aof on server start
docmost-redis | 1:M 25 Sep 2026 13:46:18.059 * Ready to accept connections tcp
docmost-redis | 1:signal-handler (1790336821) Received SIGTERM scheduling shutdown...
docmost-redis | 1:M 25 Sep 2026 13:47:01.307 * User requested shutdown...
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260228T223532-audit\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260326T121350-user-sessions\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260329T163516-add-new-indexes\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260409T132415-ai-chat\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260412T135891-templates\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260412T162318-favorites\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260413T121647-page-verifications\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260414T124451-update-file_tasks\" executed successfully"}
docmost-redis | 1:M 25 Sep 2026 13:47:01.307 * Calling fsync() on the AOF file.
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260501T092214-scim\" executed successfully"}
docmost-redis | 1:M 25 Sep 2026 13:47:01.308 * Saving the final RDB snapshot before exiting.
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260501T202258-page-transclusions\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.247Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260509T121236-labels\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.248Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260529T125146-bases\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.248Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260620T010047-personal-spaces\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.248Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260824T211732-page-title-trgm-index\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.248Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260825T022612-oauth\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.248Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260902T121326-siem-destinations\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.248Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"Migration \"20260904T171920-public-spaces\" executed successfully"}
docmost | {"level":"info","time":"2026-09-25T11:46:37.301Z","pid":45,"hostname":"807844441a94","context":"NestApplication","msg":"Nest application successfully started"}
docmost-redis | 1:M 25 Sep 2026 13:47:01.321 * DB saved on disk
docmost-redis | 1:M 25 Sep 2026 13:47:01.321 # Redis is now ready to exit, bye bye...
docmost-redis | 1:C 25 Sep 2026 13:47:12.207 # 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.
docmost-redis | 1:C 25 Sep 2026 13:47:12.208 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
docmost-redis | 1:C 25 Sep 2026 13:47:12.208 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
docmost-redis | 1:C 25 Sep 2026 13:47:12.208 * Configuration loaded
docmost-redis | 1:M 25 Sep 2026 13:47:12.208 * monotonic clock: POSIX clock_gettime
docmost-redis | 1:M 25 Sep 2026 13:47:12.209 * Running mode=standalone, port=6379.
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * Server initialized
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * Reading RDB base file on AOF loading...
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * Loading RDB produced by version 7.4.11
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * RDB age 54 seconds
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * RDB memory usage when created 0.90 Mb
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * RDB is base AOF
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * Done loading RDB, keys loaded: 0, keys expired: 0.
docmost-redis | 1:M 25 Sep 2026 13:47:12.210 * DB loaded from base file appendonly.aof.1.base.rdb: 0.000 seconds
docmost-redis | 1:M 25 Sep 2026 13:47:12.211 * DB loaded from incr file appendonly.aof.1.incr.aof: 0.001 seconds
docmost-redis | 1:M 25 Sep 2026 13:47:12.211 * DB loaded from append only file: 0.001 seconds
docmost-redis | 1:M 25 Sep 2026 13:47:12.211 * Opening AOF incr file appendonly.aof.1.incr.aof on server start
docmost-redis | 1:M 25 Sep 2026 13:47:12.211 * Ready to accept connections tcp
docmost | {"level":"info","time":"2026-09-25T11:46:37.313Z","pid":45,"hostname":"807844441a94","context":"NestApplication","msg":"Listening on http://127.0.0.1:3000 / https://docs.gate.invalid"}
docmost | [ELIFECYCLE] Command failed.
docmost | $ pnpm --filter ./apps/server run start:prod
docmost | $ cross-env NODE_ENV=production node dist/main
docmost | (node:45) ExperimentalWarning: localStorage is not available because --localstorage-file was not provided.
docmost | (Use `node --trace-warnings ...` to show where the warning was created)
docmost | {"level":"info","time":"2026-09-25T11:47:29.662Z","pid":45,"hostname":"807844441a94","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-25T11:47:29.878Z","pid":45,"hostname":"807844441a94","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-25T11:47:29.921Z","pid":45,"hostname":"807844441a94","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"info","time":"2026-09-25T11:47:30.079Z","pid":45,"hostname":"807844441a94","context":"DatabaseMigrationService","msg":"No pending database migrations"}
docmost | {"level":"info","time":"2026-09-25T11:47:30.114Z","pid":45,"hostname":"807844441a94","context":"NestApplication","msg":"Nest application successfully started"}
docmost | {"level":"info","time":"2026-09-25T11:47:30.126Z","pid":45,"hostname":"807844441a94","context":"NestApplication","msg":"Listening on http://127.0.0.1:3000 / https://docs.gate.invalid"}
@@ -0,0 +1,20 @@
{
"docmost": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"docmost-postgres": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"docmost-redis": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,107 @@
{
"harness_version": 4,
"edge": "MV-docmost",
"app": "docmost",
"note": "night 2026-09-23 within-a-major move: docmost-postgres=postgres:18-alpine",
"from": {
"docmost": "docmost/docmost:0.96.0",
"docmost-postgres": "postgres:16-alpine",
"docmost-redis": "redis:7-alpine"
},
"to": {
"docmost": "docmost/docmost:0.96.0",
"docmost-postgres": "postgres:18-alpine",
"docmost-redis": "redis:7-alpine"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "\u001b[2Kdocmost | {\"level\":\"info\",\"time\":\"2026-09-25T11:47:30.079Z\",\"pid\":45,\"hostname\":\"807844441a94\",\"context\":\"DatabaseMigrationService\",\"msg\":\"No pending database migrations\"}",
"abort": "refuses",
"abort_detail": "26 13:52:13.041 * 100 changes in 300 seconds. Saving...\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:52:13.042 * Background saving started by pid 190\n\u001b[2Kdocmost-redis | 190:C 25 Sep 2026 13:52:13.056 * DB saved on disk\n\u001b[2Kdocmost-redis | 190:C 25 Sep 2026 13:52:13.056 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:52:13.143 * Background saving terminated with success\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:57:14.072 * 100 changes in 300 seconds. Saving...\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:57:14.072 * Background saving started by pid 373\n\u001b[2Kdocmost-redis | 373:C 25 Sep 2026 13:57:14.085 * DB saved on disk\n\u001b[2Kdocmost-redis | 373:C 25 Sep 2026 13:57:14.086 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB\n\u001b[2Kdocmost-redis | 1:M 25 Sep 2026 13:57:14.173 * Background saving terminated with success",
"engine_state_after": {
"docmost-postgres": {
"image": "postgres:18-alpine",
"probe": "datadir major version",
"answer": "18",
"probe_rc": 0
}
},
"memory": {
"soak_s": 606.8,
"requested_s": 600,
"requests": 11972,
"codes": {
"200": 11972
},
"first_kill": null,
"containers": {
"docmost": {
"limit": 536870912,
"peak": 482848768,
"peak_pct": 0.899,
"anon_peak_sampled": 431427584,
"anon_peak_pct": 0.804,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
},
"docmost-postgres": {
"limit": 268435456,
"peak": 138342400,
"peak_pct": 0.515,
"anon_peak_sampled": 13156352,
"anon_peak_pct": 0.049,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
},
"docmost-redis": {
"limit": 134217728,
"peak": 9109504,
"peak_pct": 0.068,
"anon_peak_sampled": 4136960,
"anon_peak_pct": 0.031,
"oom_kills": 0,
"restarts": 0,
"oomkilled_flag": false,
"measured": true
}
},
"unmeasured": [],
"load": "reached"
},
"marks": [
"memory_tight"
],
"duration_s": 31.2,
"measured_at": "2026-09-25T12:01:05Z",
"evidence": "evidence/MV-docmost",
"scratch_cleared": [],
"engine_conversion": {
"service": "docmost-postgres",
"engine": "postgres",
"from": 16,
"to": 18,
"dump_s": 0.54,
"dump_bytes": 132196,
"new_engine_ready_s": 2.2,
"load_s": 2.02,
"dropped": [
"docmost"
],
"skipped_create_role": [
"CREATE ROLE docmost;"
],
"result": "converted",
"check_equal": true,
"pg_version": "18",
"tables": 48,
"convert_s": 11.0
},
"files_changed": [],
"total_s": 887.8
}
@@ -0,0 +1 @@
# D2 arrival, 15s after polling began (11:32:26Z): demo-felhom=[gitea.dooplex.hu/admin/felhom-controller:0.273.0 healthy] demo-hp=[gitea.dooplex.hu/admin/felhom-controller:0.273.0 healthy]
@@ -0,0 +1,4 @@
# D2 global floor 0.273.0 (declared MinAgent 0.131.0) — 2026-09-25T11:32:00Z
impact before: {"below":4,"valid":true,"version":"0.273.0"}
POST /configuration/global-floor -> HTTP/1.1 303 See Other Location: /configuration?flash=floor_set
read back: Effective floor: v0.273.0 — source: DB (hub_settings) ; env fallback would be v0.120.0 Save global floor… DB override: v0.273.0 … Type the version again to conf
@@ -0,0 +1,13 @@
# 9202, 2026-09-25T12:33:08Z: the kept pre-conversion copy of docmost, and the release job
docmost_docmost_postgres_data.pre-update-20260925T111256Z
conversion_copy:
volume: docmost_docmost_postgres_data
copy: docmost_docmost_postgres_data.pre-update-20260925T111256Z
at: "2026-09-25T11:13:34Z"
from: 16
to: 18
2026/09/25 12:30:39 scheduler.go:102: [INFO] [scheduler] Registered periodic job: conversion-copy-release (every 1h0m0s)
2026/09/25 12:30:39 scheduler.go:67: [DEBUG] [scheduler] periodic job registered: name="conversion-copy-release" interval=1h0m0s totalJobs=10
-rw-r--r-- 1 root root 154903 2026-09-25T11:08:02 pre-restore-20260925T110802Z-docmost-postgres.sql
-rw-r--r-- 1 root root 155357 2026-09-25T11:11:16 pre-restore-20260925T111115Z-docmost-postgres.sql
-rw-r--r-- 1 root root 155810 2026-09-25T11:12:53 pre-restore-20260925T111253Z-docmost-postgres.sql
@@ -0,0 +1,17 @@
- **Kept data — `09` §3 decision 36 (Part E).** A reinstall over an app's kept drive folder asks the household:
„A megőrzött adataimat használom" / "Use my kept data" (a load from the newest copy of THIS drive's install — own
unit or second-drive mirror — then the template's `after_load:`) or „Tiszta lappal kezdem" / "Start fresh" (the
folder is renamed into `<drive>/kept/<app>/<date>/`, with the removed app's unit; nothing is deleted). The install
API answers 409 `kept_data_choice` until one is chosen; `DeployStack` refuses too (`ErrKeptDataChoice`). New page
„Megőrzött adatok" / "Kept data" (`/kept-data`, linked from Tárhely): app, date, size, which copy can bring it back;
Load / Look / Delete (typed confirmation — the only deletion of kept data; the box deletes none by itself, D3 open).
FileBrowser gains a read-only „Megőrzött adatok" source (one `:ro` bind per item). The drive-full warning names the
kept folders and sizes. `<drive>/kept` is in `ProtectedHDDPaths` and outside every backup leg. `.felhom.yml`
`after_load:` (nextcloud: `occ files:scan --all`, catalog `9cc829c`).
- **R-690 fixed** — the removed-app restore (R-487) never found a unit on a DATA drive: `primaryUnitDirFor` and
`ListRestorePoints` asked `GetStackComposePath` (true for every catalog app), so nextcloud came back with no env,
no database and its files bound on the guest's root disk (measured on 0.272.0, `E/E1-README.md`). Now
`isStackDeployed`; pinned by a production-shaped provider (the R-487 fake answered it for deployed apps only).
- Red-proofs (each seen failing, tree restored): R-690 ×2, kept rules 1–4, the install guard, the install API,
the copy's drive check, the `:ro` bind — `E/redproofs/`. Parity: 7 Hungarian fixtures regenerated, the only
removed lines are the two edited deploy-page lines; 2 new (`kept_data_full`, `kept_data_empty`).
@@ -0,0 +1,3 @@
# 9202 before: gitea.dooplex.hu/admin/felhom-controller:0.273.0-rc1
# 9202 after: gitea.dooplex.hu/admin/felhom-controller:0.274.0-rc1 healthy
# 9202 now: gitea.dooplex.hu/admin/felhom-controller:0.274.0-rc2 healthy (rc2 = rc1 + R-692's fix)
@@ -0,0 +1,18 @@
# E5 1-list — 2026-09-25T13:52:57+0200; controller gitea.dooplex.hu/admin/felhom-controller:0.274.0-rc2
drive: total 20
drwxr-xr-x 5 root root 4096 Sep 15 09:13 .
drwxr-xr-x 3 root root 4096 Sep 13 20:23 ..
drwxr-xr-x 4 root root 4096 Sep 25 10:39 appdata
drwxr-xr-x 4 root root 4096 Sep 15 09:16 backups
drwxrwsr-x 18 root 1000 4096 Sep 25 10:39 userdata
ls: cannot access '/mnt/felhom-drives/scratch_hdd/kept': No such file or directory
/mnt/felhom-drives/scratch_hdd/appdata:
total 16
drwxr-xr-x 4 root root 4096 Sep 25 10:39 .
drwxr-xr-x 5 root root 4096 Sep 15 09:13 ..
drwxrwx--- 5 www-data www-data 4096 Sep 25 10:39 nextcloud
drwxr-xr-x 4 root root 4096 Sep 15 09:13 paperless
126M /mnt/felhom-drives/scratch_hdd/appdata/nextcloud
GET /kept-data: ...s ↗ Hub kapcsolat kikapcsolva — a központi monitoring nem aktív Rendszermonitor → Vissza Megőrzött adatok Az eltávolított alkalmazások lemezen maradt adatai. Megnézheted őket, betöltheted egy új telepítésbe, vagy törölheted. Magától a szerver soha nem töröl közülük semmit. Erről nem készül mentés. Nextcloud 2026-09-25 12:39 · 125.4 MB Visszatölthető innen: nincs mentés — csak a fájlok Megnézem Törlés A(z) Nextcloud megőrzött adatai (125.4 MB) véglegesen törlődnek. Ezt nem lehet visszacsinálni. A törléshez írd be: Nextcloud Végleges törlés RomM 2026-09-24 22:11 · 12.0 KB Visszatölthető innen: nincs mentés — csak a fájlok Megnézem Törlés A(z) RomM megőrzött adatai (12.0 KB) véglegesen törlődnek. Ezt nem lehet visszacsinálni. A törléshez írd be: RomM Végleges törlés Paperless-ngx 2026-09-15 1...
GET /kept-data?lang=en: ...-rc2 Magyar English Sign out ↗ The hub connection is off — central monitoring is not running System monitor → Back Kept data Data that removed apps left on the drives. You can look at it, load it into a new install, or delete it. The server never deletes any of it by itself. This is not backed up. Nextcloud 2026-09-25 12:39 · 125.4 MB Can be loaded from: no backup — the files only Look Delete The kept data of Nextcloud (125.4 MB) is deleted for good. This cannot be undone. To delete it, type: Nextcloud Delete for good RomM 2026-09-24 22:11 · 12.0 KB Can be loaded from: no backup — the files only Look Delete The kept data of RomM (12.0 KB) is deleted for good. This cannot be undone. To delete it, type: RomM Delete for good Paperless-ngx 2026-09-15 11:13 · 1.2 MB Can be loaded from: no backu...
@@ -0,0 +1,38 @@
# E5 2-ask — 2026-09-25T13:53:08+0200; controller gitea.dooplex.hu/admin/felhom-controller:0.274.0-rc2
deploy, no choice, lang=hu -> 409
{
"ok": false,
"data": {
"code": "kept_data_choice",
"title": "Ennek az alkalmazásnak megvannak a régi adatai",
"body": "A(z) Nextcloud korábbi adatai (125.4 MB, 2026-09-25) még a lemezen vannak. Mit csináljunk velük?",
"use_label": "A megőrzött adataimat használom",
"use_desc": "",
"use_off": "Az adatbázisról nincs mentés, ezért az alkalmazás nem tudja betölteni a régi fájlokat. A fájlokat megnézheted a Megőrzött adatok között.",
"use_offered": false,
"fresh_label": "Tiszta lappal kezdem",
"fresh_desc": "A régi adatok egy mai dátummal jelölt mappába kerülnek. Nem törlünk semmit.",
"not_backed_up": "Erről nem készül mentés."
},
"error": "Ennek az alkalmazásnak megvannak a régi adatai"
}
deploy, no choice, lang=en -> 409
{
"ok": false,
"data": {
"code": "kept_data_choice",
"title": "This app's old data is still here",
"body": "The old data of Nextcloud (125.4 MB, from 2026-09-25) is still on the drive. What should happen to it?",
"use_label": "Use my kept data",
"use_desc": "",
"use_off": "There is no backup of the database, so the app cannot load the old files. You can look at the files under Kept data.",
"use_offered": false,
"fresh_label": "Start fresh",
"fresh_desc": "The old data moves to a folder marked with today's date. Nothing is deleted.",
"not_backed_up": "This is not backed up."
},
"error": "This app's old data is still here"
}
still not installed: False nextcloud
paperless
@@ -0,0 +1,31 @@
# E5 3-fresh — 2026-09-25T13:53:25+0200; controller gitea.dooplex.hu/admin/felhom-controller:0.274.0-rc2
deploy kept_data=fresh -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
deployed after (80.4, 'unhealthy')
drive now: /mnt/felhom-drives/scratch_hdd/appdata:
total 16
drwxr-xr-x 4 root root 4096 Sep 25 11:53 .
drwxr-xr-x 6 root root 4096 Sep 25 11:53 ..
drwxrwx--- 4 www-data www-data 4096 Sep 25 11:54 nextcloud
drwxr-xr-x 4 root root 4096 Sep 15 09:13 paperless
/mnt/felhom-drives/scratch_hdd/appdata/nextcloud:
total 24
drwxrwx--- 4 www-data www-data 4096 Sep 25 11:54 .
drwxr-xr-x 4 root root 4096 Sep 25 11:53 ..
-rw-rw-r-- 1 www-data www-data 542 Sep 25 11:54 .htaccess
-rw-rw-r-- 1 www-data www-data 52 Sep 25 11:54 .ncdata
drwxr-xr-x 3 www-data www-data 4096 Sep 25 11:54 admin
drwxr-xr-x 3 www-data www-data 4096 Sep 25 11:54 appdata_occ3u0b61xxr
-rw-rw-r-- 1 www-data www-data 0 Sep 25 11:54 index.html
-rw-rw-r-- 1 www-data www-data 0 Sep 25 11:53 nextcloud.log
/mnt/felhom-drives/scratch_hdd/kept
/mnt/felhom-drives/scratch_hdd/kept/nextcloud
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_135332
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_135332/appdata
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_135332/.felhom-kept.json
126M /mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_135332
nextcloud: occ user:add :: The account "drill369ffe" was created successfully Display name set to "drill369ffe"
nextcloud: seeded user drill369ffe
seeded: True
kept page: datok Az eltávolított alkalmazások lemezen maradt adatai. Megnézheted őket, betöltheted egy új telepítésbe, vagy törölheted. Magától a szerver soha nem töröl közülük semmit. Erről nem készül mentés. Nextcloud 2026-09-25 13:53 · 125.4 MB Visszatölthető innen: nincs mentés — csak a fájlok Az alkalmazás újra telepítve van. Megnézem Törlés A(z) Nextcloud megőrzött adatai (125.4 MB) véglegesen törlődnek. Ezt nem lehet visszacsinálni. A törléshez írd be: Nextcloud Végleges törlés RomM 2026-09-24 22:11 · 12.0 KB Visszatölthető innen: nincs mentés — csak a fájlok Megnézem Törlés A(z) RomM megőrzött adatai (12.0 KB) véglegesen törlődnek. Ezt nem lehet visszacsinálni. A törléshez írd be: RomM Végleges törlés Paperless-ngx 2026-09-15 11:13 · 1.2 MB Visszatölthető innen: nincs mentés — csak a fájlok A
@@ -0,0 +1,14 @@
# E5 4-remove-keep — 2026-09-25T13:58:37+0200; controller gitea.dooplex.hu/admin/felhom-controller:0.274.0-rc2
stop 200
remove keep data + backups -> 200 {'ok': True, 'data': {'removed': 'nextcloud', 'volumes_removed': ['nextcloud_nextcloud_db_data', 'nextcloud_nextcloud_html', 'nextcloud_nextcloud_redis_data'], 'hdd_paths_removed': [], 'hdd_paths_pres
after: False nextcloud
paperless
-rw-r--r-- 1 root root 1591 2026-09-25T11:57:50 manifest.json
drwxr-xr-x 2 root root 4096 2026-09-25T11:57:41 volume-dumps
/mnt/felhom-drives/scratch_hdd/backups/primary/nextcloud/db-dumps:
total 864
drwxr-xr-x 2 root root 4096 2026-09-25T11:57:00 .
drwxr-xr-x 5 root root 4096 2026-09-25T11:57:50 ..
-rw-r--r-- 1 root root 873058 2026-09-25T11:57:00 nextcloud-mariadb.sql
@@ -0,0 +1,12 @@
13:55:26 before:
2026/09/25 11:52:50 scheduler.go:132: [INFO] [scheduler] Daily job offsite-proof scheduled for 2026-09-26 05:30 CEST
2026/09/25 11:52:50 scheduler.go:132: [INFO] [scheduler] Daily job metrics-prune scheduled for 2026-09-26 04:00 CEST
2026/09/25 11:52:50 scheduler.go:132: [INFO] [scheduler] Daily job fill-watch scheduled for 2026-09-26 03:30 CEST
13:55:26 POST /backups/window window_start=13:57 -> 303
13:55:32 after:
2026/09/25 11:55:26 auth.go:142: [DEBUG] [web] auth: valid session for POST /backups/window
2026/09/25 11:55:26 server.go:545: [DEBUG] [web] ServeHTTP: POST /backups/window from 172.18.0.6:51602
2026/09/25 11:55:26 scheduler.go:172: [INFO] [scheduler] Daily job db-dump rescheduled 02:30 → 13:57 (next run 2026-09-25 13:57 CEST)
2026/09/25 11:55:26 scheduler.go:172: [INFO] [scheduler] Daily job tier2-backup rescheduled 03:30 → 14:57 (next run 2026-09-25 14:57 CEST)
2026/09/25 11:55:26 scheduler.go:172: [INFO] [scheduler] Daily job offbox-backup rescheduled 04:15 → 15:42 (next run 2026-09-25 15:42 CEST)
2026/09/25 11:55:26 backup_handlers.go:65: [INFO] [web] backup window set to 13:57 (legs 13:57/14:57/15:42)
@@ -0,0 +1,19 @@
2026/09/25 11:55:26 scheduler.go:172: [INFO] [scheduler] Daily job db-dump rescheduled 02:30 → 13:57 (next run 2026-09-25 13:57 CEST)
2026/09/25 11:55:26 recovery_unit.go:235: [INFO] [backup] Recovery unit captured for nextcloud → /mnt/felhom-drives/scratch_hdd/backups/primary/nextcloud (images=3, secrets-referenced=3, data_keys=0, portable-carried=2/2, withheld=1)
2026/09/25 11:57:00 scheduler.go:346: [INFO] [scheduler] Running job: db-dump
2026/09/25 11:57:00 dbdump.go:410: [INFO] [backup] DB dump: nextcloud-db → nextcloud-mariadb.sql (852.6 KB, 500ms, 131 tables)
2026/09/25 11:57:17 backup.go:923: [INFO] [backup] Stopping nextcloud for safe volume dump
2026/09/25 11:57:25 backup.go:824: [INFO] [backup] Volume dump: nextcloud/nextcloud_nextcloud_db_data → 164.5 MB
2026/09/25 11:57:40 backup.go:824: [INFO] [backup] Volume dump: nextcloud/nextcloud_nextcloud_html → 761.6 MB
2026/09/25 11:57:41 backup.go:824: [INFO] [backup] Volume dump: nextcloud/nextcloud_nextcloud_redis_data → 182.0 KB
2026/09/25 11:57:41 backup.go:933: [INFO] [backup] Restarting nextcloud after volume dump
2026/09/25 11:57:50 recovery_unit.go:235: [INFO] [backup] Recovery unit captured for nextcloud → /mnt/felhom-drives/scratch_hdd/backups/primary/nextcloud (images=3, secrets-referenced=3, data_keys=0, portable-carried=2/2, withheld=1)
2026/09/25 11:58:09 scheduler.go:363: [INFO] [scheduler] Job db-dump completed (took 1m9.379s)
-rw-r--r-- 1 root root 1591 2026-09-25T11:57:50 manifest.json
drwxr-xr-x 2 root root 4096 2026-09-25T11:57:41 volume-dumps
/mnt/felhom-drives/scratch_hdd/backups/primary/nextcloud/db-dumps:
total 864
drwxr-xr-x 2 root root 4096 2026-09-25T11:57:00 .
drwxr-xr-x 5 root root 4096 2026-09-25T11:57:50 ..
-rw-r--r-- 1 root root 873058 2026-09-25T11:57:00 nextcloud-mariadb.sql
@@ -0,0 +1,12 @@
13:58:19 before:
2026/09/25 11:55:26 scheduler.go:172: [INFO] [scheduler] Daily job db-dump rescheduled 02:30 → 13:57 (next run 2026-09-25 13:57 CEST)
2026/09/25 11:55:26 scheduler.go:172: [INFO] [scheduler] Daily job tier2-backup rescheduled 03:30 → 14:57 (next run 2026-09-25 14:57 CEST)
2026/09/25 11:55:26 scheduler.go:172: [INFO] [scheduler] Daily job offbox-backup rescheduled 04:15 → 15:42 (next run 2026-09-25 15:42 CEST)
13:58:20 POST /backups/window window_start=02:30 -> 303
13:58:26 after:
2026/09/25 11:58:19 auth.go:142: [DEBUG] [web] auth: valid session for POST /backups/window
2026/09/25 11:58:19 server.go:545: [DEBUG] [web] ServeHTTP: POST /backups/window from 172.18.0.6:36118
2026/09/25 11:58:19 scheduler.go:172: [INFO] [scheduler] Daily job db-dump rescheduled 13:57 → 02:30 (next run 2026-09-26 02:30 CEST)
2026/09/25 11:58:19 scheduler.go:172: [INFO] [scheduler] Daily job tier2-backup rescheduled 14:57 → 03:30 (next run 2026-09-26 03:30 CEST)
2026/09/25 11:58:19 scheduler.go:172: [INFO] [scheduler] Daily job offbox-backup rescheduled 15:42 → 04:15 (next run 2026-09-26 04:15 CEST)
2026/09/25 11:58:20 backup_handlers.go:65: [INFO] [web] backup window set to 02:30 (legs 02:30/03:30/04:15)
@@ -0,0 +1,24 @@
# E5 5-use — 2026-09-25T13:59:46+0200; controller gitea.dooplex.hu/admin/felhom-controller:0.274.0-rc2
ask first -> 409 use_offered=True use_desc=Az adatbázist a 2026-09-25-i mentésből töltjük vissza, és a régi fájlokkal indítjuk az alkalmazást. Ami ezután változott, hiányozhat.
deploy kept_data=use -> 202 {'ok': True, 'message': 'A(z) Nextcloud megőrzött adatainak betöltése elindult.'}
deployed after (35.2, 'running')
controller lines:
2026/09/25 11:59:58 kept_install.go:94: [INFO] [api] Deploy nextcloud: USE MY KEPT DATA — loading from /mnt/felhom-drives/scratch_hdd/backups/primary/nextcloud (2026-09-25T11:57:50Z) under the kept files [/mnt/felhom-drives/scratch_hdd/appdata/nextcloud]
2026/09/25 11:59:58 restore_unit.go:372: [WARN] [backup] Restore nextcloud: generated replacement for [NEXTCLOUD_ADMIN_PASSWORD] — the credential was reset (old value unrecoverable); no data-encrypting key was involved, but a regenerated DATABASE password will not match the restored data directory
2026/09/25 11:59:58 restore_unit.go:383: [INFO] [backup] Restoring nextcloud from recovery unit /mnt/felhom-drives/scratch_hdd/backups/primary/nextcloud: images=3, secrets recovered=2/3, data_keys=0
2026/09/25 11:59:58 restore.go:152: [INFO] [backup] Restoring Docker volume nextcloud_nextcloud_db_data for nextcloud
2026/09/25 11:59:59 restore.go:152: [INFO] [backup] Restoring Docker volume nextcloud_nextcloud_html for nextcloud
2026/09/25 12:00:05 restore.go:152: [INFO] [backup] Restoring Docker volume nextcloud_nextcloud_redis_data for nextcloud
2026/09/25 12:00:06 restore.go:195: [INFO] [backup] Restored 3 Docker volume(s) for nextcloud
2026/09/25 12:00:06 deploy.go:708: [INFO] [stacks] Redeploying nextcloud from recovery unit with 7 env vars
2026/09/25 12:00:07 restore_db.go:87: [INFO] [backup] Restore nextcloud: replaying DB dump into nextcloud-db (mariadb)
2026/09/25 12:00:16 restore_db.go:97: [INFO] [backup] Restore nextcloud: replayed 1 DB dump(s)
2026/09/25 12:00:30 restore_unit.go:468: [INFO] [backup] Restore-from-unit completed: nextcloud — 3 volume(s) of 3 listed, 1 database(s) of 1 listed
2026/09/25 12:00:30 kept_load.go:136: [INFO] [backup] kept load nextcloud from /mnt/felhom-drives/scratch_hdd/backups/primary/nextcloud done in 32s (volumes 3/3, dbs 1/1)
2026/09/25 12:00:31 kept.go:515: [INFO] [stacks] after_load nextcloud: nextcloud [php occ files:scan --all] in 688ms (err=<nil>): Starting scan for user 1 out of 2 (admin)
nextcloud: readback of the seeded user found=True
seed (the account) reads back: True
PROPFIND files of drill369ffe -> 207; before-backup.txt visible=True
PROPFIND files of drill369ffe -> 207; after-backup.txt visible=True
PROPFIND files of drill369ffe -> 207; never-written.txt visible=False
@@ -0,0 +1,19 @@
# E5 6-fresh-again — 2026-09-25T14:09:14+0200; controller gitea.dooplex.hu/admin/felhom-controller:0.274.0-rc2
remove keep data + backups -> 200
deploy fresh -> 202 {'ok': True, 'message': 'Telepítés elindítva – az állapot a kártyán követhető'}
deployed after (50.3, 'running')
kept now: /mnt/felhom-drives/scratch_hdd/kept
/mnt/felhom-drives/scratch_hdd/kept/nextcloud
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_135332
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_135332/appdata
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_135332/.felhom-kept.json
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014/appdata
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014/.felhom-kept.json
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014/unit
126M /mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_135332
1.1G /mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014
remove the fresh install (keep data, delete backups) -> 200 {'ok': True, 'data': {'removed': 'nextcloud', 'volumes_removed': ['nextcloud_nextcloud_db_data', 'nextcloud_nextcloud_html', 'nextcloud_nextcloud_redis_data'],
kept page hu: datok Az eltávolított alkalmazások lemezen maradt adatai. Megnézheted őket, betöltheted egy új telepítésbe, vagy törölheted. Magától a szerver soha nem töröl közülük semmit. Erről nem készül mentés. Nextcloud 2026-09-25 14:10 · 62.8 MB Visszatölthető innen: nincs mentés — csak a fájlok Megnézem Törlés A(z) Nextcloud megőrzött adatai (62.8 MB) véglegesen törlődnek. Ezt nem lehet visszacsinálni. A törléshez írd be: Nextcloud Végleges törlés Nextcloud 2026-09-25 14:10 · 1.0 GB Visszatölthető innen: a vele megőrzött mentés, 2026-09-25 13:57 Betöltés Megnézem Törlés A(z) Nextcloud megőrzött adatai (1.0 GB) véglegesen törlődnek. Ezt nem lehet visszacsinálni. A törléshez írd be: Nextcloud Végleges törlés Nextcloud 2026-09-25 13:53 · 125.4 MB Visszatölthető innen: nincs mentés — csak a fájlok Megnézem Törlés A(z) Nextcloud megőrzött adatai (125.4 MB) véglegesen törlődnek. Ezt nem lehet visszacsinálni. A törléshez írd be: Nextcloud Végleges törlés RomM 2026-09-24 22:11 · 12.0 KB Visszatölthető innen: nincs mentés — csak a fájlok Megnézem Törlés A(z) RomM megőrzött adatai (12.0 KB) véglegesen törlődnek. Ezt nem lehet visszacsinálni. A törléshez írd be: RomM Végleges törlés Paperless-ngx 2026-09-15 11:13 · 1.2 MB Visszatölthető innen: nincs mentés — csak a fájlok Az alkalmazás újra telepítve van. Megnézem Törlés A(z) Paperless-ngx megőrzött adatai (1.2 MB) véglegesen törlődnek. Ezt nem le
kept page en: monitor → Back Kept data Data that removed apps left on the drives. You can look at it, load it into a new install, or delete it. The server never deletes any of it by itself. This is not backed up. Nextcloud 2026-09-25 14:10 · 62.8 MB Can be loaded from: no backup — the files only Look Delete The kept data of Nextcloud (62.8 MB) is deleted for good. This cannot be undone. To delete it, type: Nextcloud Delete for good Nextcloud 2026-09-25 14:10 · 1.0 GB Can be loaded from: the backup kept with it, 2026-09-25 13:57 Load Look Delete The kept data of Nextcloud (1.0 GB) is deleted for good. This cannot be undone. To delete it, type: Nextcloud Delete for good Nextcloud 2026-09-25 13:53 · 125.4 MB Can be loaded from: no backup — the files only Look Delete The kept data of Nextcloud (125.4 MB) is deleted for good. This cannot be undone. To delete it, type: Nextcloud Delete for good RomM 2026-09-24 22:11 · 12.0 KB Can be loaded from: no backup — the files only Look Delete The kept data of RomM (12.0 KB) is deleted for good. This cannot be undone. To delete it, type: RomM Delete for good Paperless-ngx 2026-09-15 11:13 · 1.2 MB Can be loaded from: no backup — the files only The app is installed again. Look Delete The kept data of Paperless-ngx (1.2 MB) is deleted for good. This cannot be undone. To delete it, type: Paperless-ngx Delete for good (function(){ var burger=document.querySelec
@@ -0,0 +1,24 @@
listed paths: ['/mnt/felhom-drives/scratch_hdd/appdata/nextcloud', '/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014', '/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014', '/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_135332', '/mnt/felhom-drives/scratch_hdd/userdata/romm/appdata/romm', '/mnt/felhom-drives/scratch_hdd/appdata/paperless']
the loadable item: /mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014
LOAD while the leftover occupies the folder -> 302 {'flash_error': 'Az alkalmazás mappájában már vannak adatok, ezért a megőrzött fájlokat nem tettük vissza. Nem változott semmi.'}
DELETE leftover with a WRONG name -> 302 {'flash_error': 'A beírt név nem egyezik (Nextcloud), ezért nem töröltünk semmit.'}
leftover still there: yes
DELETE a path that is not listed (userdata) -> 302 {'flash_error': 'Ez nem megőrzött adat, ezért nem nyúltunk hozzá.'}
DELETE leftover with the right name -> 302 {'flash': 'A(z) Nextcloud megőrzött adatai törölve.'}
leftover now: gone
LOAD the dated item with its backup -> 302 {'flash': 'flash.restore.started'}
controller lines:
2026/09/25 12:12:38 kept.go:424: [INFO] [stacks] kept nextcloud: moved /mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014/appdata/nextcloud back → /mnt/felhom-drives/scratch_hdd/appdata/nextcloud (load)
2026/09/25 12:12:38 kept_handlers.go:176: [INFO] [web] kept LOAD nextcloud: /mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014 from /mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014/unit (from 172.18.0.6:43270)
2026/09/25 12:12:38 restore_unit.go:383: [INFO] [backup] Restoring nextcloud from recovery unit /mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014/unit: images=3, secrets recovered=2/3, data_keys=0
2026/09/25 12:13:12 restore_unit.go:468: [INFO] [backup] Restore-from-unit completed: nextcloud — 3 volume(s) of 3 listed, 1 database(s) of 1 listed
2026/09/25 12:13:12 kept_load.go:136: [INFO] [backup] kept load nextcloud from /mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014/unit done in 34s (volumes 3/3, dbs 1/1)
2026/09/25 12:13:13 kept.go:515: [INFO] [stacks] after_load nextcloud: nextcloud [php occ files:scan --all] in 765ms (err=<nil>): Starting scan for user 1 out of 2 (admin)
2026/09/25 12:13:13 kept.go:444: [INFO] [stacks] kept nextcloud: /mnt/felhom-drives/scratch_hdd/backups/primary/nextcloud already holds a unit — the loaded one stays in /mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014/unit (listed; the househo
nextcloud: readback of the seeded user found=True
account reads back: True
the loaded item left the list: False | list now: ['/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014', '/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_135332', '/mnt/felhom-drives/scratch_hdd/userdata/romm/appdata/romm', '/mnt/felhom-drives/scratch_hdd/appdata/paperless']
PROPFIND files of drill369ffe -> 207; before-backup.txt visible=True
PROPFIND files of drill369ffe -> 207; after-backup.txt visible=True
PROPFIND files of drill369ffe -> 207; never-written.txt visible=False
@@ -0,0 +1,17 @@
# the file browser's kept-data mounts (docker inspect) — 2026-09-25T12:28:38Z
/mnt/felhom-drives/scratch_hdd/userdata/romm/appdata/romm -> /srv/megorzott/romm-romm rw=false
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_135332 -> /srv/megorzott/scratch_hdd-nextcloud-2026-09-25_135332 rw=false
/mnt/felhom-drives/scratch_hdd/kept/nextcloud/2026-09-25_141014 -> /srv/megorzott/scratch_hdd-nextcloud-2026-09-25_141014 rw=false
/mnt/felhom-drives/scratch_hdd/appdata/paperless -> /srv/megorzott/scratch_hdd-paperless rw=false
# the kept source in the file browser's own config
defaultEnabled: true
- path: "/srv/megorzott"
name: "Megőrzött adatok"
config:
defaultEnabled: true
userDefaults:
# a write into /srv/megorzott/romm-romm from inside the file browser's container:
touch: /srv/megorzott/romm-romm/cc-write-test: Read-only file system
rc=1
# control: a write into its userdata source works:
rc=0
@@ -0,0 +1,4 @@
### RED-PROOF R-692: drop the ${HDD_PATH} owner filter
--- FAIL: TestKept_OwnerIsNeverTheFileBrowser (0.01s)
kept_test.go:295: the leftovers must be named by the app that binds them through HDD_PATH, never the file browser: map[cloudapp:Cloud App paperless:Filebrowser]
FAIL
@@ -0,0 +1,2 @@
demo-hp /kept-data items: []
Megőrzött adatok Az eltávolított alkalmazások lemezen maradt adatai. Megnézheted őket, betöltheted egy új telepítésbe, vagy törölheted. Magától a szerver soha nem töröl közülük semmit. Erről nem készül mentés. Nincs megőrzött adat. (function(){ var burger=document.querySelector('.nav-burger'); var sidebar=document.getElementById('sidebar'); var backdrop=document.querySelector('.nav-backdrop'); if(
@@ -0,0 +1,5 @@
# global floor 0.274.0 (declared MinAgent 0.131.0) — 2026-09-25T12:30:04Z
impact before: {"below":4,"valid":true,"version":"0.274.0"}
POST -> HTTP/1.1 303 See Other Location: /configuration?flash=floor_set
read back: Effective floor: v0.274.0 — source: DB (hub_settings) ; env fallback would be v0
arrival after 16s of polling: demo-felhom=[gitea.dooplex.hu/admin/felhom-controller:0.274.0 healthy] demo-hp=[gitea.dooplex.hu/admin/felhom-controller:0.274.0 healthy]
@@ -0,0 +1,25 @@
## rule1: first attempt removed the block — build failed (unused variable), not a result
## rule2: no undo on a failed rename
--- FAIL: TestKept_KeepAsideIsARenameAndRollsBack (0.00s)
kept_test.go:101: the first folder was not put back after the failed move: stat /tmp/TestKept_KeepAsideIsARenameAndRollsBack288451927/001/drive/appdata/cloudapp/user1/file.txt: no such file or directory
## rule3: kept not protected
--- FAIL: TestKept_KeptDirIsProtected (0.00s)
kept_test.go:132: <drive>/kept is not in ProtectedHDDPaths
## rule4: delete without the listed check
--- FAIL: TestKept_DeleteRefusesAnythingNotListed (0.00s)
kept_test.go:185: delete of /tmp/TestKept_DeleteRefusesAnythingNotListed3626460414/001/drive/appdata/cloudapp: want ErrKeptNotListed, got <nil>
## install guard removed
--- FAIL: TestKept_DeployRefusesOverOldDataWithoutAChoice (0.01s)
kept_test.go:214: choice "": no choice was accepted — want ErrKeptDataChoice, got <nil>
## rule1 (redone — the first mutation did not compile): appdata prefix check disabled
--- FAIL: TestKept_OnlyAppdataBindsAreOldData (0.00s)
kept_test.go:64: old data = [/tmp/TestKept_OnlyAppdataBindsAreOldData2495434777/001/drive/appdata/cloudapp /tmp/TestKept_OnlyAppdataBindsAreOldData2495434777/001/drive/media /tmp/TestKept_OnlyAppdataBindsAreOldData2495434777/001/drive/userdata/Photos], want only [/tmp/TestKept_OnlyAppdataBindsAreOldData2495434777/001/drive/appdata/cloudapp] (a household folder must never be moved)
## backup: the unit's HDD_PATH check disabled
--- FAIL: TestKept_DBCopyIsTheNewestUsableForThisDrive (0.00s)
kept_load_test.go:43: a unit taken of another drive was offered: {UnitDir:/tmp/TestKept_DBCopyIsTheNewestUsableForThisDrive3608708086/004/backups/primary/nextcloud Tier:1 Time:2026-09-25 12:29:20.057488373 +0200 CEST DriveLabel:HDD}
## web: the :ro suffix dropped
--- FAIL: TestKept_FileBrowserBindsAreReadOnly (0.00s)
kept_fb_test.go:23: bind " - /mnt/felhom-drives/hdd_1/kept/nextcloud/2026-09-25_130000:/srv/megorzott/hdd_1-nextcloud-2026-09-25_130000" is not a read-only bind of /mnt/felhom-drives/hdd_1/kept/nextcloud/2026-09-25_130000 under /srv/megorzott
## api: keptDataAtInstall returns false at once
--- FAIL: TestKept_InstallAPIAsksAndInstallsNothing (0.00s)
kept_install_test.go:57: no choice: handled=false code=200 body=map[]
@@ -0,0 +1 @@
cloudflare_manual = ["the Cloudflare tunnel that serves enkisfelhom.hu (this customer's config carried its own tunnel token)", 'the DNS records of enkisfelhom.hu (the apex and *.enkisfelhom.hu)']
@@ -0,0 +1,33 @@
# Part 0 — the rulings recorded, last night read (read-only), 2026-09-25 midday
**Recorded:** `09` §3 decisions 35 and 36; D3 in `STATUS.md`'s decision section; `CONTEXT.md`.
## Last night (24 → 25 September) on both demo boxes
The controllers were restarted by the 0.272.0 delivery at ~11:30 CEST, so their own logs and debug rings no
longer reach the night (5 000-line ring). Read instead from the hub's stored reports (`P0-hub-update-leg.txt`,
a copy of the hub DB with its `-wal`, deleted after) and the agents' journals (`P0-wholebox-backup.txt`):
| box | update leg | steps | whole-box backup |
|---|---|---|---|
| demo-felhom | 04:15:46–04:16:06 CEST, after the off-site copy | opengist 1.13 → 1.15 **done** in 20.1 s | ran **07:29:19–07:30:31 CEST** to `felhom-backup` — after the leg had ended at 04:16; it had nothing to wait for |
| demo-hp | 04:18:41, 0.07 s | none (every app current) — **reported as `"steps": null`** (R-687's cosmetic item, seen live; fixed in v0.273.0) | **none** — its last was the evening's 21:59 hand-triggered one (Part A4 of the previous night), not due |
**R-687 item 4 (the full-system gate waiting for the leg) did not occur on either box again**: on demo-felhom the
backup came three hours after the leg; demo-hp had none due.
**Found while reading, filed as R-689:** demo-hp's scheduled restore test picks the golden template
`local:backup/felhom-golden-0.236.0.tar.zst` as "the newest settled archive" and fails with
`HTTP 403 … missing privilege VM.Backup` every 6 h (2026-09-24 10:36, 2026-09-25 04:57 and 10:57)
— `P0-demo-hp-restoretest-golden.txt`. Agent-side; the agent is untouched this session.
## Which boxes run docmost (the brief said: demo-hp only)
**TRUE.** demo-felhom runs cloudflared, controller, filebrowser, opengist, traefik — no docmost. demo-hp runs
docmost 0.96.0 on `postgres:16-alpine` (`P0-docmost-demo-hp.txt`): pinned and installed refs equal, digests
recorded 2026-09-22; deployed 2026-08-31.
Its last copies, per tier: **own unit (Tier 1)** `db-dumps/` 2026-09-25 02:15 UTC, manifest 09:31 UTC;
**second drive (Tier 2)** `hdd_1/backups/secondary/docmost/recovery-unit` mirrored 2026-09-25 01:30 UTC (the layout
marker) — directory mtime 2026-09-24 20:59; **off-site** — the night's off-site run covered 9 apps / 90 snapshots
at 04:15–04:18 CEST (the previous night's record); per-app snapshot times were not read.
@@ -0,0 +1,88 @@
"""e5.py <step> — Part E's live proof on 9202 (controller 0.274.0-rc1, drill catalog), one step per call.
Every act through the product's own endpoints (the ones the pages call). Evidence: E/E5-<step>.txt."""
import json, sys, time, re
import walk as w, fixtures
step = sys.argv[1]
OUT = open(f"{w.EV}/E/E5-{step}.txt", "w", buffering=1)
def say(*a):
w.say(*a); OUT.write(" ".join(map(str, a)) + "\n")
HDD = "/mnt/felhom-drives/scratch_hdd"
TOK = w.SC + "/seed-tokens.json"
w.login()
def kept_page(lang=""):
h = w.page("/kept-data" + ("?lang=en" if lang else ""))
t = re.sub(r"\s+", " ", re.sub(r"<[^>]+>", " ", h))
return t
def deploy(choice=None, lang=""):
vals = w.deploy_values("nextcloud", "c-nc"); vals["HDD_PATH"] = HDD
body = {"values": vals}
if choice:
body["kept_data"] = choice
return w.ctl("POST", "/api/stacks/nextcloud/deploy" + ("?lang=en" if lang else ""), body)
def wait_deployed(limit=600):
t0 = time.time()
while time.time() - t0 < limit:
st = w.stack("nextcloud")
if st.get("deployed") and (st.get("app_config") or {}).get("pinned_images") and st.get("state") in ("running", "unhealthy", "degraded"):
return round(time.time() - t0, 1), st.get("state")
time.sleep(5)
return None, w.stack("nextcloud").get("state")
def g(cmd):
return w.guest(cmd)
say(f"# E5 {step} — {time.strftime('%FT%T%z')}; controller {g('cat /etc/felhom-controller-image').strip()}")
if step == "1-list":
say("drive:", g(f"ls -la {HDD}; ls -la {HDD}/appdata {HDD}/kept 2>&1; du -sh {HDD}/appdata/nextcloud 2>&1"))
for lang in ("", "en"):
t = kept_page(lang)
i = t.find("extcloud")
say(f"GET /kept-data{'?lang=en' if lang else ''}: ...{t[max(0,i-300):i+500]}...")
elif step == "2-ask":
for lang in ("", "en"):
code, d = deploy(None, lang)
say(f"deploy, no choice, lang={lang or 'hu'} -> {code}")
say(json.dumps(d, ensure_ascii=False, indent=1)[:1600])
say("still not installed:", w.stack("nextcloud").get("deployed"), g(f"ls {HDD}/appdata"))
elif step == "3-fresh":
code, d = deploy("fresh")
say(f"deploy kept_data=fresh -> {code} {str(d)[:200]}")
say("deployed after", wait_deployed())
say("drive now:", g(f"ls -la {HDD}/appdata {HDD}/appdata/nextcloud 2>&1 | head -20; find {HDD}/kept -maxdepth 3 | head; du -sh {HDD}/kept/nextcloud/* 2>&1"))
toks = json.load(open(TOK)); toks["nextcloud"] = fixtures.FIXTURES["nextcloud"].seed(w, "c-nc", say)
json.dump(toks, open(TOK, "w"), default=str)
say("seeded:", toks["nextcloud"] is not None)
t = kept_page(); i = t.find("extcloud"); say("kept page:", t[max(0, i-200):i+600])
elif step == "4-remove-keep":
code, d = w.ctl("POST", "/api/stacks/nextcloud/stop"); say("stop", code)
time.sleep(15)
code, d = w.ctl("POST", "/api/stacks/nextcloud/remove", {"remove_hdd_data": False, "remove_backups": False})
say(f"remove keep data + backups -> {code} {str(d)[:200]}")
time.sleep(8)
say("after:", w.stack("nextcloud").get("deployed"), g(f"ls {HDD}/appdata; ls -la --time-style=+%FT%T {HDD}/backups/primary/nextcloud {HDD}/backups/primary/nextcloud/db-dumps 2>&1 | tail -8"))
elif step == "5-use":
code, d = deploy(None)
say(f"ask first -> {code} use_offered={(d.get('data') or {}).get('use_offered')} use_desc={(d.get('data') or {}).get('use_desc')}")
since = g("date -u +%Y-%m-%dT%H:%M:%SZ").strip()
code, d = deploy("use")
say(f"deploy kept_data=use -> {code} {str(d)[:200]}")
say("deployed after", wait_deployed(1200))
for i in range(60):
if "after_load" in g(f"docker logs --since {since} felhom-controller 2>&1 | grep -c after_load") or i > 58:
break
time.sleep(5)
time.sleep(20)
say("controller lines:\n" + g(f"docker logs --since {since} felhom-controller 2>&1 | grep -iE 'kept|after_load|restore|unit|Restor' | grep -v DEBUG | cut -c1-300 | head -40"))
toks = json.load(open(TOK))
say("seed (the account) reads back:", fixtures.FIXTURES["nextcloud"].verify(w, "c-nc", toks["nextcloud"], say))
elif step == "6-fresh-again":
code, d = w.ctl("POST", "/api/stacks/nextcloud/stop"); time.sleep(15)
code, d = w.ctl("POST", "/api/stacks/nextcloud/remove", {"remove_hdd_data": False, "remove_backups": False})
say(f"remove keep data + backups -> {code}")
time.sleep(8)
code, d = deploy("fresh"); say(f"deploy fresh -> {code} {str(d)[:160]}"); say("deployed after", wait_deployed())
say("kept now:", g(f"find {HDD}/kept -maxdepth 3 | head -20; du -sh {HDD}/kept/nextcloud/* 2>&1"))
code, d = w.ctl("POST", "/api/stacks/nextcloud/stop"); time.sleep(15)
code, d = w.ctl("POST", "/api/stacks/nextcloud/remove", {"remove_hdd_data": False, "remove_backups": True})
say(f"remove the fresh install (keep data, delete backups) -> {code} {str(d)[:160]}")
time.sleep(8)
for lang in ("", "en"):
t = kept_page(lang); i = t.find("extcloud"); say(f"kept page {lang or 'hu'}:", t[max(0, i-200):i+1200])
@@ -0,0 +1,47 @@
import re, time, json, sys
import walk as w, fixtures
OUT = open(f"{w.EV}/E/E5-7-load-delete.txt", "w", buffering=1)
def say(*a):
w.say(*a); OUT.write(" ".join(map(str, a)) + "\n")
HDD = "/mnt/felhom-drives/scratch_hdd"
w.login()
import os
sess = open(f"{w.SC}/sess{os.getpid()}.txt").read().strip(); csrf = open(f"{w.SC}/csrf{os.getpid()}.txt").read().strip()
def form(path, data):
args = ["curl", "-sk", "-D", "-", "-o", "/dev/null", "-H", w.HOSTHDR, "-H", f"Cookie: {sess}", "-X", "POST", "--data-urlencode", f"_csrf={csrf}"]
for k, v in data.items():
args += ["--data-urlencode", f"{k}={v}"]
r = w.sh(args + [f"{w.BASE}{path}"])
loc = re.search(r"(?im)^location:\s*(\S+)", r.stdout or "")
code = (r.stdout or "").split(" ", 2)[1] if r.stdout else "?"
return code, (loc.group(1) if loc else "")
import urllib.parse
def flash(loc):
q = urllib.parse.parse_qs(urllib.parse.urlparse(loc).query)
return {k: v[0] for k, v in q.items()}
items = re.findall(r'name="path" value="([^"]+)"', w.page("/kept-data"))
say("listed paths:", items)
leftover = f"{HDD}/appdata/nextcloud"
dated = [p for p in items if "/kept/nextcloud/" in p]
unitdated = [p for p in dated if w.guest(f"test -d {p}/unit && echo yes").strip() == "yes"][0]
say("the loadable item:", unitdated)
c, loc = form("/kept-data/load", {"path": unitdated}); say(f"LOAD while the leftover occupies the folder -> {c} {flash(loc)}")
c, loc = form("/kept-data/delete", {"path": leftover, "confirm": "Nextclod"}); say(f"DELETE leftover with a WRONG name -> {c} {flash(loc)}")
say("leftover still there:", w.guest(f"test -d {leftover} && echo yes || echo GONE").strip())
c, loc = form("/kept-data/delete", {"path": "/mnt/felhom-drives/scratch_hdd/userdata", "confirm": "userdata"}); say(f"DELETE a path that is not listed (userdata) -> {c} {flash(loc)}")
c, loc = form("/kept-data/delete", {"path": leftover, "confirm": "Nextcloud"}); say(f"DELETE leftover with the right name -> {c} {flash(loc)}")
say("leftover now:", w.guest(f"test -d {leftover} && echo STILL || echo gone").strip())
since = w.guest("date -u +%Y-%m-%dT%H:%M:%SZ").strip()
c, loc = form("/kept-data/load", {"path": unitdated}); say(f"LOAD the dated item with its backup -> {c} {flash(loc)}")
t0 = time.time()
while time.time() - t0 < 900:
st = w.stack("nextcloud")
if st.get("deployed") and st.get("state") == "running" and "after_load" in w.guest(f"docker logs --since {since} felhom-controller 2>&1 | grep -c after_load"):
break
time.sleep(10)
time.sleep(20)
say("controller lines:\n" + w.guest(f"docker logs --since {since} felhom-controller 2>&1 | grep -iE 'kept|after_load|Restore-from-unit' | grep -v DEBUG | cut -c1-260 | head -12"))
toks = json.load(open(w.SC + "/seed-tokens.json"))
say("account reads back:", fixtures.FIXTURES["nextcloud"].verify(w, "c-nc", toks["nextcloud"], say))
items2 = re.findall(r'name="path" value="([^"]+)"', w.page("/kept-data"))
say("the loaded item left the list:", unitdated not in items2, "| list now:", items2)
+8
View File
@@ -398,3 +398,11 @@ Compressed here to title, shipping version, evidence, and the sentences that sta
| **R-671** | **The undo copies kept by a hold survived the hold's clearing by a restore (P3).** v0.272.0: the restore that lifts an update hold removes that hold's undo copies (never a restore hold, never mid-update). Live on 9202: navidrome held with 1 copy kept → the backup page's restore → hold CLEARED, "removed 1 undo cop(y/ies)", 0 copies left, data read back. | v0.272.0, 2026-09-25 | `git show eb1c56a:documentation/backlog/OPEN-ITEMS.md`; `audits/retire-peti-2026-09-25/B/live/` |
| **R-670** | **Every undo logged a false `backup block rejected … docker-compose.yml unreadable` (P3).** v0.272.0: probe-only copies load with `stacks.LoadProbeMetadata`. Live on 9202: an undo of navidrome (a backup block in its `.felhom.yml`) logged 0 such lines. | v0.272.0, 2026-09-25 | `git show eb1c56a:documentation/backlog/OPEN-ITEMS.md`; `audits/retire-peti-2026-09-25/B/live/r670-verdict.txt` |
| **R-677** | **A re-tested floating tag's badge age read the tag's date (P3).** v0.272.0: `stacks.BehindSinceAge` — a digest-only move counts from `tested_at`; both producers. Live on 9202: „Frissítés elérhető — ma” / "Update available — today" with `catalog_since` two days old. | v0.272.0, 2026-09-25 | `git show eb1c56a:documentation/backlog/OPEN-ITEMS.md`; `audits/retire-peti-2026-09-25/B/live/live272.json` |
## 2026-09-25 (evening) — the box converts a PostgreSQL major; kept data (controller v0.273.0 + v0.274.0, hub v0.125.0)
| id | what closed | closed | where the full text is |
|---|---|---|---|
| **R-657** | **A reinstall over kept data ran silently into the old files (nextcloud never installed) (P2).** Operator ruling 2026-09-25 (`09` §3 decision 36), built in v0.274.0: the install asks „use my kept data" / „start fresh" (409 `kept_data_choice` until chosen); start fresh renames into `<drive>/kept/<app>/<date>/`; the „Megőrzött adatok" page lists, loads, deletes (typed). Proven live on 9202 in both languages (`audits/night-2026-09-26/E/E5-*`). | CLOSED 2026-09-25 — controller v0.274.0 | `git show 3386041e6215:documentation/backlog/OPEN-ITEMS.md`; `audits/night-2026-09-26/E/` |
| **R-690** | **The removed-app restore (R-487) never found a unit kept on a DATA drive (P1).** v0.274.0: `isStackDeployed` instead of `GetStackComposePath` (true for every catalog app); the R-487 test's fake had answered it for deployed apps only. Proven live: „use my kept data" loaded from `scratch_hdd/backups/primary/nextcloud`. | CLOSED 2026-09-25 — controller v0.274.0 | filed and closed this session; `audits/night-2026-09-26/E/E1-README.md` |
| **R-692** | **The Kept-data list named two leftovers "Filebrowser" (P2).** Found live on 9202 (0.274.0-rc1, 2026-09-25): the read-only view makes the file browser's compose bind every kept folder by absolute path, and the owner lookup took it. No live folder was at risk. Fixed before release in v0.274.0: an owner binds the folder through `${HDD_PATH}` (the folder or one inside it), never a protected stack. `TestKept_OwnerIsNeverTheFileBrowser`, red-proofed. `audits/night-2026-09-26/E/` | CLOSED 2026-09-25 — fixed in v0.274.0 before it shipped | filed and closed this session; `audits/night-2026-09-26/E/E5-redproof-owner.txt` |
File diff suppressed because one or more lines are too long