SPIKE: an upgrade test that runs again — and a real defect in our own bookstack template
gates / gates (push) Successful in 19s

R-449. Until today one app upgrade out of 53 had ever been measured, by hand, and
the whole update arc was designed against that single data point.

C3 first: the negative control, whose TO image exits immediately, came back
failed. That is what makes the greens mean anything, and it cost 556s because a
negative is only honest if it waits out the full settle window.

Seven edges, three apps. All five real catalog upgrades kept the customer's data.

The finding that changes an assumption the arc was carrying: whether an upgrade
can be UNDONE is a property of the individual APP, not of upgrades. Docmost
refuses - 'corrupted migrations: previously executed migration
20260213T085259-notifications is missing' - and privatebin does not. That
reproduces the Nextcloud result on a second app by a DIFFERENT mechanism, so the
struck word 'rollback' now rests on two measurements instead of one.

The finding nobody was looking for, R-459: our own bookstack template moves
MariaDB across a major and sets no MARIADB_* env at all, so the engine logs that
the datadir upgrade it requires is being skipped, and serves anyway. The cause is
assigned rather than guessed - the app half alone produces no upgrade line, both
edges that move the engine produce it - which is exactly what decomposing E3 into
E3a and E3b was for. It also explains why E3's abort looked like it worked: the
datadir was never converted. Whether that ever breaks is NOT established, and the
row says so.

Also opened: R-460 (bookstack's file half cannot be seeded headlessly), R-461
(target-selection.md names a venue that does not exist and fences a VM that is
gone), R-462 (the widening, costed with this run's real numbers - and the cost is
dominated by fixtures, which do not amortise).

Teardown all three layers, hub checked rather than asserted. local-lvm read 30.50
percent before and after. The capability map was deliberately NOT edited: this
measured apps, not the product.
This commit is contained in:
2026-09-06 11:48:57 +02:00
parent 417df06f35
commit a1a6c73fe1
55 changed files with 2234 additions and 54 deletions
@@ -0,0 +1,219 @@
# SPIKE — does a real app upgrade keep the customer's data, and can it be undone? (2026-09-06)
> **THE ANSWER, IN ONE SENTENCE: on all five real catalog upgrades measured, the customer's data
> survived — and whether the upgrade can be UNDONE is not a property of upgrades at all, it is a
> property of the individual app, which is why it has to be measured per app rather than reasoned
> about.**
>
> **AND THE FINDING NOBODY WAS LOOKING FOR, which is a defect in our own catalog:** this repo's
> bookstack template moves MariaDB **11.6 → 12.3**, and MariaDB 12.3 comes up, says in its own words
> that a datadir upgrade is **required**, **skips it**, and serves anyway — because the template sets
> no `MARIADB_AUTO_UPGRADE`. The app works. The engine is running on a datadir it itself calls
> un-upgraded. **R-459.**
**Class: spike.** No controller code, no product change, no customer's box. Everything ran inside a
throwaway LXC destroyed at the end (§7). **R-449** asked for "an upgrade test that runs again"; the
harness is `app-catalog-felhom.eu/scripts/upgrade-test.py` and it is now a maintained script, not an
audit artifact.
---
## 1. C3 first — the harness can say no
**Everything below is conditional on this, so it is reported first.** C3 is an edge whose TO image is
`alpine:3.20` — a real image that pulls cleanly and exits immediately.
```
verdict: failed seed_read_before: true seed_read_after: false healthy_after: false
TO settled=False in 421.1s :: {"privatebin": {"status": "restarting", "health": "unhealthy"}}
```
**C3 came back RED.** A harness that cannot fail a known-broken upgrade proves nothing with its
greens. It also cost the most wall-clock of any edge (556 s), because a negative is only honest if it
waits out the full settle window.
**C1 (the seed reads back BEFORE the upgrade) passed on every edge**, including C3 — a fixture that
cannot prove itself first proves nothing after.
## 2. The verdict table
| edge | app | from → to | verdict | data after | **abort** | TO settle | total |
|---|---|---|---|---|---|---|---|
| **C3** | privatebin | `2.0.5` → **`alpine:3.20`** | **failed** | no | starts-and-serves | 421.1 s | 556.0 s |
| **C2** | privatebin | `2.0.5` → `2.0.5` (no-op) | proven | yes | starts-and-serves | 0.1 s | 6.4 s |
| **E1** | privatebin | `1.7.5` → `2.0.5` (major) | **proven** | yes | **starts-and-serves** | 5.2 s | 21.5 s |
| **E2** | docmost | `0.25.3` → `0.95.0` | **proven** | yes | **REFUSES** | 10.7 s | 305.1 s |
| **E3** | bookstack | app `25.02.2`→`26.05.2` **+** mariadb `11.6`→`12.3` | **proven** | yes | starts-and-serves¹ | 15.7 s | 77.5 s |
| **E3a** | bookstack | app only, engine held at `11.6` | **proven** | yes | starts-and-serves | 15.7 s | 71.8 s |
| **E3b** | bookstack | engine only `11.6`→`12.3`, app held | **proven** | yes | starts-and-serves¹ | 0.2 s | 48.8 s |
¹ **and §4 is why that is not the good news it looks like.**
## 3. The abort is a property of the APP, not of upgrades
**E2, docmost — the abort REFUSES.** The old image will not start on the migrated database. Verbatim,
from the app's own log:
```
{"level":"error","context":"DatabaseMigrationService",
"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
{"level":"error","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
```
The container then crash-loops: `{"docmost": {"status": "restarting", "health": "unhealthy", "exit": 1}}`
while `docmost-postgres` and `docmost-redis` stay healthy beside it.
**This independently reproduces the Nextcloud finding on a second app — and by a DIFFERENT
mechanism.** Nextcloud refused on an explicit version comparison; docmost refuses because its
migration ledger contains entries the older code does not know about. Two apps, two unrelated causes,
same outcome. **`09-update-architecture.md` §4's ruling that "rollback" is the wrong word is now
supported by two independent measurements rather than one.**
**E1, privatebin — the abort WORKS**, and the reason is structural: privatebin is file-backed with no
database and no schema, so a major version change moves no data. Its migration-line capture is empty,
which is a true negative rather than a missed observation.
**So the vocabulary needs one more distinction than the arc currently has.** There is no single answer
to "can an update be undone". There are apps where it can and apps where it cannot, and **the only way
to know which is to measure that app**. This is the finding R-449 existed to produce.
## 4. The finding nobody was looking for — R-459
E3 is the catalog's own bookstack transition, and it moves the **database engine** across a major at
the same time as the app. It came back `proven`, and its abort came back `starts-and-serves`. **Both
are true and both are misleading, and the decomposition is what showed it.**
Verbatim, at the moment MariaDB 12.3 first started on the 11.6 datadir:
```
[Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required,
but skipped due to $MARIADB_AUTO_UPGRADE setting
```
Confirmed by reading which engine actually served in each edge — not inferred:
| edge | engine that served the TO step | upgrade line |
|---|---|---|
| E3 (app **and** engine) | `12.3.3-MariaDB-ubu2404` | **required, but skipped** |
| **E3a (app only)** | `11.6.2-MariaDB-ubu2404` | **none** |
| E3b (**engine only**) | `12.3.3-MariaDB-ubu2404` | **required, but skipped** |
**E3a is the control that assigns the cause.** The app half alone produces no engine upgrade line at
all; both edges that move the engine produce it. **This is exactly what the decomposition was for, and
a bundled edge could never have said it.**
`templates/bookstack/docker-compose.yml` sets **no `MARIADB_*` environment at all**, so
`MARIADB_AUTO_UPGRADE` is unset and the image's entrypoint declines to run `mariadb-upgrade`.
**And this is why the abort "worked":** the datadir was never converted, so MariaDB 11.6 could still
read it — on the way back it says `MariaDB upgrade not required`. **The reversibility of E3 is a
side-effect of an upgrade that did not fully happen.**
**What is NOT established, and the row says so:** whether running 12.3 on an unconverted 11.6 datadir
ever actually breaks. It did not break here. MariaDB itself calls the upgrade required; we measured
that it is skipped, and we did **not** measure a consequence. **Naming the gap is the finding; the
consequence is a separate measurement.**
## 5. What each edge cost — the numbers the widening must be costed with
**Measured, not estimated**, which is the whole point of §15.5 of the task.
| | |
|---|---|
| wall-clock, successful edges | **6.4 s – 305.1 s**, median **71.8 s** |
| wall-clock, the failing edge | **556 s** — a negative costs ~8× a positive, because it must wait out the full settle window |
| total for 7 edges | **~18 minutes** of harness time, plus ~35 minutes of build-out and two fixture iterations |
| disk, 3 apps / 11 images | **5.07 GB** of images, 6.0 GB guest total |
| **naive extrapolation to 53 apps** | **~90 GB of images** and, at the median, ~1 h of harness time for one edge each — **but see the caveat below, which is the real cost** |
**The real cost is not the machine, it is the fixture.** Two of the three apps needed a bespoke
non-browser seed route, and one of those (bookstack) needed two attempts and a discarded approach
(§6). **Harness time scales with apps; fixture time scales with apps too, and it does not amortise.**
Costing the widening from the 71.8 s median alone would understate it by an order of magnitude.
## 6. Fixtures — what worked, what did not, and what cannot be done at all
Every seed went in through the app's **own** interface. Nothing was written into a volume or a
database by hand (R-156).
| app | seed route | readback route | notes |
|---|---|---|---|
| privatebin | its JSON paste API (HTTP POST) | HTTP GET of the same paste | **file-backed, no database — this single seed IS the file half**; there is no database half to seed |
| docmost | `POST /api/auth/setup` | `POST /api/auth/login` as the seeded user | the readback deliberately uses the app's own front door, and is version-stable across the 0.25→0.95 API churn |
| bookstack | `php artisan bookstack:create-admin` | `php artisan bookstack:reset-mfa --email=…` | **database half only — see below** |
**Two dead ends, recorded because they cost time and will cost the next person the same:**
1. **PrivateBin refuses a malformed paste envelope** with `{"status":1,"message":"Invalid data."}`.
`ct`, the IV and the salt must all be real base64. The first fixture attempt used placeholder
strings and was rejected — which read like an app failure and was a harness bug.
2. **BookStack cannot be verified over HTTP without TLS.** Its `APP_URL` comes from the template as
`https://${SUBDOMAIN}.${DOMAIN}`, so it marks its session and XSRF cookies **`secure`**; curl over
plain http stores neither, sends neither, and **every login POST returns 419 Page Expired** — which
looks exactly like a wrong password. The container serves no TLS. There is no http route to a
logged-in session without changing the app's own configuration, which would be measuring a
different app.
**So bookstack's readback is `artisan` on both sides**, and two things were done to keep that honest:
the readback command is a *different* command from the seed and must FIND the record the other one
created; and **the fixture runs its own negative control on every call** — it also looks up an email
that cannot exist and requires the answer `A user where email=… could not be found.` A readback that
had broken into always saying "found" therefore fails instead of passing everything.
**One thing genuinely cannot be done headlessly, and it is a gap, not a defect: the FILE half of
bookstack.** Seeding an uploaded image or attachment needs an API token that BookStack only mints
through a browser. **So for bookstack this run proves the database survived and says nothing about
uploaded files.** **R-460.**
**A note on the standing "gate on the exit code" rule, because this run had to break it once.**
`bookstack:reset-mfa` asks for interactive confirmation, finds no TTY, and exits **1 in both cases** —
for a user it found and one it did not. The exit code carries no information there, so the
discriminator is the output, required positive AND with the not-found sentence required absent. Stated
rather than done quietly.
## 7. Venue and teardown — all three layers
Throwaway **LXC 9401 `upgrade-spike`** on `demo-hp`, Debian 13, 4 cores, 6 GB, created for this run.
**Two things the runbook says about this venue are now out of date, and were worked around rather than
followed blindly:**
- **`/mnt/nvme-1tb` does not exist.** The 1 TB NVMe is mounted at **`/mnt/hdd_1`** and is the enrolled
user-data drive. A dir storage `scratch-upg` was created **at its root** (the runbook's own rule —
a subdirectory fails the agent's `exactMount` check) and removed at teardown. The guest's disk was
deliberately kept **off `local-lvm`**, whose over-subscription is the runbook's real warning.
- **`drill-r50` (VM 300) no longer exists.** `qm list` returns nothing on this host. The runbook's
"do not destroy it" fence currently protects nothing. **R-461.**
| layer | before | after |
|---|---|---|
| **1 — the machine** | guest 9401 created | **destroyed**; `pct list` shows only 9201. `scratch-upg` storage **removed**. Downloaded LXC template deleted. |
| **2 — the host** | `local-lvm` **30.50 %**, `local` 19 595 164 KiB | `local-lvm` **30.50 % — unchanged, never touched**; `local` 19 605 084 KiB (+9.7 MB). `pct fstrim 9401` before destroy: **52.8 GiB trimmed** |
| **3 — the hub** | 2 enrolled hosts | **2 enrolled hosts, 0 customers created.** Checked, not assumed: `/hosts` lists exactly `demo-felhom-8363b5` and `demo-hp-bb76ea`. **This run created no customer, no appliance and no host record.** |
**No felhom-controller was in the path at any point** — raw `docker compose` throughout. The property
under test belongs to the app and its images; putting the controller in the path would have confounded
the two, which is the choice the persistence sweep made and stated.
## 8. What was NOT measured
- **50 of 53 apps.** Three is the sample that decides whether the idea is sound, not a fleet survey.
- **Whether an unconverted MariaDB datadir ever breaks** (§4). Measured that the upgrade is skipped;
did not measure a consequence.
- **The FILE half of bookstack and docmost.** privatebin's seed is a file; the other two prove the
database only.
- **Any edge with realistic data VOLUME.** Every seed here is one record. An upgrade that migrates
10 GB may behave differently, and the durations above are therefore floors, not estimates.
- **Anything through felhom-controller**, deliberately (§7).
## 9. Observations — noticed, documented, not acted on
1. **`docker compose logs` only shows the containers that currently exist**, so the abort — which
replaces them — erases the TO step's output from any capture taken afterwards. **The single most
important line of this run survived only because it had already been extracted.** The harness now
writes `to-full.log` at the TO step. Same class as R-320, one layer down.
2. **A negative edge costs ~8× a positive** because it must wait out the settle window. If the
widening runs many edges, that asymmetry dominates the schedule, not the average.
3. **`bookstack:reset-mfa`'s help output disagrees with its argument parsing** in 25.02.2 — the usage
line says `[options]` and a positional argument is rejected with *"No arguments expected"*, which is
correct but reads as a missing feature. Upstream's problem, recorded because it cost a minute.
@@ -0,0 +1,8 @@
{
"privatebin": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,11 @@
privatebin | [06-Sep-2026 11:25:20] NOTICE: fpm is running, pid 11
privatebin | [06-Sep-2026 11:25:20] NOTICE: ready to handle connections
privatebin | 127.0.0.1 - - [06/Sep/2026:11:25:25 +0200] "GET / HTTP/1.1" 200 11465 "-" "Wget" "-"
privatebin | 172.18.0.1 - - [06/Sep/2026:11:25:25 +0200] "GET / HTTP/1.1" 200 22914 "-" "curl/8.14.1" "-"
privatebin | 172.18.0.1 - - [06/Sep/2026:11:25:25 +0200] "POST / HTTP/1.1" 200 156 "-" "curl/8.14.1" "-"
privatebin | 172.18.0.1 - - [06/Sep/2026:11:25:25 +0200] "GET / HTTP/1.1" 200 22914 "-" "curl/8.14.1" "-"
privatebin | 172.18.0.1 - - [06/Sep/2026:11:25:25 +0200] "GET /?pasteid=ee0b2b1da99ffa3d HTTP/1.1" 200 310 "-" "curl/8.14.1" "-"
privatebin | 172.18.0.1 - - [06/Sep/2026:11:25:25 +0200] "GET / HTTP/1.1" 200 22914 "-" "curl/8.14.1" "-"
privatebin | 172.18.0.1 - - [06/Sep/2026:11:25:25 +0200] "GET /?pasteid=ee0b2b1da99ffa3d HTTP/1.1" 200 310 "-" "curl/8.14.1" "-"
privatebin | 172.18.0.1 - - [06/Sep/2026:11:25:26 +0200] "GET / HTTP/1.1" 200 22914 "-" "curl/8.14.1" "-"
privatebin | 172.18.0.1 - - [06/Sep/2026:11:25:26 +0200] "GET /?pasteid=ee0b2b1da99ffa3d HTTP/1.1" 200 310 "-" "curl/8.14.1" "-"
@@ -0,0 +1,14 @@
[09:25:19] C2: deploying privatebin at FROM {'privatebin': 'privatebin/pdo:2.0.5'}
[09:25:25] FROM settled=True in 5.2s :: {"privatebin": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[09:25:25] privatebin: seeded paste id=ee0b2b1da99ffa3d
[09:25:25] privatebin: readback http=200 marker_present=True
[09:25:25] C1 (seed reads back BEFORE): True
[09:25:25] C2: swapping to TO {'privatebin': 'privatebin/pdo:2.0.5'}
[09:25:25] TO up -d rc=0
[09:25:25] TO settled=True in 0.1s :: {"privatebin": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[09:25:25] migration lines observed: 0
[09:25:25] privatebin: readback http=200 marker_present=True
[09:25:25] RESULT (seed reads back AFTER): True
[09:25:25] C2: ABORT — putting the FROM images back
[09:25:26] privatebin: readback http=200 marker_present=True
[09:25:26] ABORT: app came back in 0.1s; data present=True
@@ -0,0 +1,8 @@
{
"privatebin": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,23 @@
{
"harness_version": 1,
"edge": "C2",
"app": "privatebin",
"note": "no-op control: a version to ITSELF",
"from": {
"privatebin": "privatebin/pdo:2.0.5"
},
"to": {
"privatebin": "privatebin/pdo:2.0.5"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": null,
"abort": "starts-and-serves",
"abort_detail": null,
"duration_s": 0.1,
"measured_at": "2026-09-06T09:25:26Z",
"evidence": "evidence/C2",
"total_s": 6.4
}
@@ -0,0 +1,8 @@
{
"privatebin": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,5 @@
privatebin | [06-Sep-2026 11:24:43] NOTICE: fpm is running, pid 11
privatebin | [06-Sep-2026 11:24:43] NOTICE: ready to handle connections
privatebin | 127.0.0.1 - - [06/Sep/2026:11:24:48 +0200] "GET / HTTP/1.1" 200 19657 "-" "Wget" "-"
privatebin | 172.18.0.1 - - [06/Sep/2026:11:24:48 +0200] "GET / HTTP/1.1" 200 22914 "-" "curl/8.14.1" "-"
privatebin | 172.18.0.1 - - [06/Sep/2026:11:24:48 +0200] "GET /?pasteid=d5cb8959c9012690 HTTP/1.1" 200 310 "-" "curl/8.14.1" "-"
@@ -0,0 +1,14 @@
[09:15:32] C3: deploying privatebin at FROM {'privatebin': 'privatebin/pdo:2.0.5'}
[09:15:38] FROM settled=True in 5.2s :: {"privatebin": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[09:15:38] privatebin: seeded paste id=d5cb8959c9012690
[09:15:38] privatebin: readback http=200 marker_present=True
[09:15:38] C1 (seed reads back BEFORE): True
[09:15:38] C3: swapping to TO {'privatebin': 'alpine:3.20'}
[09:15:41] TO up -d rc=0
[09:22:42] TO settled=False in 421.1s :: {"privatebin": {"status": "restarting", "health": "unhealthy", "restarts": 0, "exit": 0}}
[09:22:42] migration lines observed: 0
[09:24:42] app never answered on http://invalid:8080/ (last rc=6 code=000)
[09:24:42] RESULT (seed reads back AFTER): False
[09:24:42] C3: ABORT — putting the FROM images back
[09:24:48] privatebin: readback http=200 marker_present=True
[09:24:48] ABORT: app came back in 5.3s; data present=True
@@ -0,0 +1,8 @@
{
"privatebin": {
"status": "restarting",
"health": "unhealthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,23 @@
{
"harness_version": 1,
"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,
"duration_s": 421.1,
"measured_at": "2026-09-06T09:24:48Z",
"evidence": "evidence/C3",
"total_s": 556.0
}
@@ -0,0 +1,8 @@
{
"privatebin": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,11 @@
privatebin | execlineb: fatal: unable to exec /usr/sbin/php-fpm85: No such file or directory
privatebin | [06-Sep-2026 11:25:42] NOTICE: fpm is running, pid 12
privatebin | [06-Sep-2026 11:25:42] NOTICE: ready to handle connections
privatebin | execlineb: fatal: unable to exec /usr/sbin/php-fpm85: No such file or directory
privatebin | execlineb: fatal: unable to exec /usr/sbin/php-fpm85: No such file or directory
privatebin | execlineb: fatal: unable to exec /usr/sbin/php-fpm85: No such file or directory
privatebin | execlineb: fatal: unable to exec /usr/sbin/php-fpm85: No such file or directory
privatebin | execlineb: fatal: unable to exec /usr/sbin/php-fpm85: No such file or directory
privatebin | 127.0.0.1 - - [06/Sep/2026:11:25:47 +0200] "GET / HTTP/1.1" 200 15538 "-" "Wget" "-"
privatebin | 172.18.0.1 - - [06/Sep/2026:11:25:47 +0200] "GET / HTTP/1.1" 200 19527 "-" "curl/8.14.1" "-"
privatebin | 172.18.0.1 - - [06/Sep/2026:11:25:47 +0200] "GET /?pasteid=b2bbc62b2d8ee417 HTTP/1.1" 200 336 "-" "curl/8.14.1" "-"
@@ -0,0 +1,14 @@
[09:25:26] E1: deploying privatebin at FROM {'privatebin': 'privatebin/pdo:1.7.5'}
[09:25:35] FROM settled=True in 5.2s :: {"privatebin": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[09:25:35] privatebin: seeded paste id=b2bbc62b2d8ee417
[09:25:35] privatebin: readback http=200 marker_present=True
[09:25:35] C1 (seed reads back BEFORE): True
[09:25:35] E1: swapping to TO {'privatebin': 'privatebin/pdo:2.0.5'}
[09:25:36] TO up -d rc=0
[09:25:41] TO settled=True in 5.2s :: {"privatebin": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[09:25:41] migration lines observed: 0
[09:25:41] privatebin: readback http=200 marker_present=True
[09:25:41] RESULT (seed reads back AFTER): True
[09:25:41] E1: ABORT — putting the FROM images back
[09:25:47] privatebin: readback http=200 marker_present=True
[09:25:47] ABORT: app came back in 5.2s; data present=True
@@ -0,0 +1,8 @@
{
"privatebin": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,23 @@
{
"harness_version": 1,
"edge": "E1",
"app": "privatebin",
"note": "catalog transition cf8b645, a major",
"from": {
"privatebin": "privatebin/pdo:1.7.5"
},
"to": {
"privatebin": "privatebin/pdo:2.0.5"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": null,
"abort": "starts-and-serves",
"abort_detail": null,
"duration_s": 5.2,
"measured_at": "2026-09-06T09:25:47Z",
"evidence": "evidence/E1",
"total_s": 21.5
}
@@ -0,0 +1,91 @@
docmost-redis | 1:C 06 Sep 2026 11:26:52.375 # 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":"error","time":"2026-09-06T09:29:34.884Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
docmost | {"level":"error","time":"2026-09-06T09:29:34.884Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","err":{"type":"Error","message":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing","stack":"Error: corrupted migrations: previously executed migration 20260213T085259-notifications is missing\n at #ensureNoMissingMigrations (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:487:23)\n at #getState (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:439:40)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async run (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:409:31)\n at async /app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/kysely.js:569:32\n at async DefaultConnectionProvider.provideConnection (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20)\n at async #migrate (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:268:20)\n at async MigrationService.migrateToLatest (/app/apps/server/dist/database/services/migration.service.js:36:36)\n at async DatabaseModule.onApplicationBootstrap (/app/apps/server/dist/database/database.module.js:50:13)\n at async callModuleBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:51:9)\n at async NestApplication.callBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application-context.js:274:13)\n at async NestApplication.init (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:105:9)\n at async NestApplication.listen (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:175:13)\n at async bootstrap (/app/apps/server/dist/main.js:82:5)"},"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
docmost | /app/apps/server:
docmost |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.25.3 start:prod: `cross-env NODE_ENV=production node dist/main`
docmost | Exit status 1
docmost |  ELIFECYCLE  Command failed with exit code 1.
docmost |
docmost | > docmost@0.25.3 start /app
docmost | > pnpm --filter ./apps/server run start:prod
docmost |
docmost |
docmost | > server@0.25.3 start:prod /app/apps/server
docmost | > cross-env NODE_ENV=production node dist/main
docmost |
docmost | {"level":"info","time":"2026-09-06T09:30:06.457Z","pid":43,"hostname":"136cff373e66","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-06T09:30:06.689Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-06T09:30:06.711Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"error","time":"2026-09-06T09:30:06.830Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
docmost | {"level":"error","time":"2026-09-06T09:30:06.830Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","err":{"type":"Error","message":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing","stack":"Error: corrupted migrations: previously executed migration 20260213T085259-notifications is missing\n at #ensureNoMissingMigrations (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:487:23)\n at #getState (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:439:40)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async run (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:409:31)\n at async /app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/kysely.js:569:32\n at async DefaultConnectionProvider.provideConnection (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20)\n at async #migrate (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:268:20)\n at async MigrationService.migrateToLatest (/app/apps/server/dist/database/services/migration.service.js:36:36)\n at async DatabaseModule.onApplicationBootstrap (/app/apps/server/dist/database/database.module.js:50:13)\n at async callModuleBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:51:9)\n at async NestApplication.callBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application-context.js:274:13)\n at async NestApplication.init (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:105:9)\n at async NestApplication.listen (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:175:13)\n at async bootstrap (/app/apps/server/dist/main.js:82:5)"},"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
docmost | /app/apps/server:
docmost |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.25.3 start:prod: `cross-env NODE_ENV=production node dist/main`
docmost | Exit status 1
docmost |  ELIFECYCLE  Command failed with exit code 1.
docmost |
docmost | > docmost@0.25.3 start /app
docmost | > pnpm --filter ./apps/server run start:prod
docmost |
docmost |
docmost | > server@0.25.3 start:prod /app/apps/server
docmost | > cross-env NODE_ENV=production node dist/main
docmost |
docmost | {"level":"info","time":"2026-09-06T09:31:03.944Z","pid":43,"hostname":"136cff373e66","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-06T09:31:04.196Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-06T09:31:04.219Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"error","time":"2026-09-06T09:31:04.343Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
docmost | {"level":"error","time":"2026-09-06T09:31:04.343Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","err":{"type":"Error","message":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing","stack":"Error: corrupted migrations: previously executed migration 20260213T085259-notifications is missing\n at #ensureNoMissingMigrations (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:487:23)\n at #getState (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:439:40)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async run (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:409:31)\n at async /app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/kysely.js:569:32\n at async DefaultConnectionProvider.provideConnection (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20)\n at async #migrate (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:268:20)\n at async MigrationService.migrateToLatest (/app/apps/server/dist/database/services/migration.service.js:36:36)\n at async DatabaseModule.onApplicationBootstrap (/app/apps/server/dist/database/database.module.js:50:13)\n at async callModuleBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:51:9)\n at async NestApplication.callBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application-context.js:274:13)\n at async NestApplication.init (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:105:9)\n at async NestApplication.listen (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:175:13)\n at async bootstrap (/app/apps/server/dist/main.js:82:5)"},"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
docmost | /app/apps/server:
docmost |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.25.3 start:prod: `cross-env NODE_ENV=production node dist/main`
docmost | Exit status 1
docmost |  ELIFECYCLE  Command failed with exit code 1.
docmost-postgres | 2026-09-06 11:26:53.029 CEST [35] WARNING: no usable system locales were found
docmost-postgres | performing post-bootstrap initialization ... ok
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 | 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/data -l logfile start
docmost-postgres |
docmost-postgres | waiting for server to start....2026-09-06 11:26:53.769 CEST [41] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
docmost-postgres | 2026-09-06 11:26:53.772 CEST [41] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
docmost-postgres | 2026-09-06 11:26:53.785 CEST [44] LOG: database system was shut down at 2026-09-06 11:26:53 CEST
docmost-postgres | 2026-09-06 11:26:53.794 CEST [41] 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-06 11:26:53.946 CEST [41] LOG: received fast shutdown request
docmost-postgres | 2026-09-06 11:26:53.950 CEST [41] LOG: aborting any active transactions
docmost-postgres | 2026-09-06 11:26:53.953 CEST [41] LOG: background worker "logical replication launcher" (PID 47) exited with exit code 1
docmost-postgres | 2026-09-06 11:26:53.955 CEST [42] LOG: shutting down
docmost-postgres | 2026-09-06 11:26:53.958 CEST [42] LOG: checkpoint starting: shutdown immediate
docmost-postgres | 2026-09-06 11:26:54.083 CEST [42] LOG: checkpoint complete: wrote 926 buffers (5.7%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.023 s, sync=0.089 s, total=0.128 s; sync files=301, longest=0.006 s, average=0.001 s; distance=4283 kB, estimate=4283 kB; lsn=0/1925D58, redo lsn=0/1925D58
docmost-postgres | 2026-09-06 11:26:54.097 CEST [41] 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-06 11:26:54.181 CEST [1] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
docmost-postgres | 2026-09-06 11:26:54.181 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
docmost-postgres | 2026-09-06 11:26:54.181 CEST [1] LOG: listening on IPv6 address "::", port 5432
docmost-postgres | 2026-09-06 11:26:54.188 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
docmost-postgres | 2026-09-06 11:26:54.197 CEST [57] LOG: database system was shut down at 2026-09-06 11:26:54 CEST
docmost-postgres | 2026-09-06 11:26:54.207 CEST [1] LOG: database system is ready to accept connections
docmost-redis | 1:C 06 Sep 2026 11:26:52.375 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
docmost-redis | 1:C 06 Sep 2026 11:26:52.375 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
docmost-redis | 1:C 06 Sep 2026 11:26:52.375 * Configuration loaded
docmost-redis | 1:M 06 Sep 2026 11:26:52.376 * Increased maximum number of open files to 10032 (it was originally set to 1024).
docmost-redis | 1:M 06 Sep 2026 11:26:52.376 * monotonic clock: POSIX clock_gettime
docmost-redis | 1:M 06 Sep 2026 11:26:52.377 * Running mode=standalone, port=6379.
docmost-redis | 1:M 06 Sep 2026 11:26:52.377 * Server initialized
docmost-redis | 1:M 06 Sep 2026 11:26:52.381 * Creating AOF base file appendonly.aof.1.base.rdb on server start
docmost-redis | 1:M 06 Sep 2026 11:26:52.389 * Creating AOF incr file appendonly.aof.1.incr.aof on server start
docmost-redis | 1:M 06 Sep 2026 11:26:52.389 * Ready to accept connections tcp
@@ -0,0 +1,20 @@
{
"docmost": {
"status": "restarting",
"health": "unhealthy",
"restarts": 0,
"exit": 1
},
"docmost-postgres": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"docmost-redis": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,256 @@
docmost-redis | 1:C 06 Sep 2026 11:26:52.375 # 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 06 Sep 2026 11:26:52.375 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
docmost-redis | 1:C 06 Sep 2026 11:26:52.375 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
docmost-redis | 1:C 06 Sep 2026 11:26:52.375 * Configuration loaded
docmost-redis | 1:M 06 Sep 2026 11:26:52.376 * Increased maximum number of open files to 10032 (it was originally set to 1024).
docmost-redis | 1:M 06 Sep 2026 11:26:52.376 * monotonic clock: POSIX clock_gettime
docmost-redis | 1:M 06 Sep 2026 11:26:52.377 * Running mode=standalone, port=6379.
docmost-redis | 1:M 06 Sep 2026 11:26:52.377 * Server initialized
docmost-redis | 1:M 06 Sep 2026 11:26:52.381 * Creating AOF base file appendonly.aof.1.base.rdb on server start
docmost-redis | 1:M 06 Sep 2026 11:26:52.389 * Creating AOF incr file appendonly.aof.1.incr.aof on server start
docmost-redis | 1:M 06 Sep 2026 11:26:52.389 * Ready to accept connections tcp
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 | fixing permissions on existing directory /var/lib/postgresql/data ... 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-06 11:26:53.029 CEST [35] WARNING: no usable system locales were found
docmost-postgres | performing post-bootstrap initialization ... ok
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 | 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/data -l logfile start
docmost-postgres |
docmost-postgres | waiting for server to start....2026-09-06 11:26:53.769 CEST [41] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
docmost-postgres | 2026-09-06 11:26:53.772 CEST [41] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
docmost-postgres | 2026-09-06 11:26:53.785 CEST [44] LOG: database system was shut down at 2026-09-06 11:26:53 CEST
docmost-postgres | 2026-09-06 11:26:53.794 CEST [41] 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-06 11:26:53.946 CEST [41] LOG: received fast shutdown request
docmost-postgres | 2026-09-06 11:26:53.950 CEST [41] LOG: aborting any active transactions
docmost-postgres | 2026-09-06 11:26:53.953 CEST [41] LOG: background worker "logical replication launcher" (PID 47) exited with exit code 1
docmost-postgres | 2026-09-06 11:26:53.955 CEST [42] LOG: shutting down
docmost-postgres | 2026-09-06 11:26:53.958 CEST [42] LOG: checkpoint starting: shutdown immediate
docmost-postgres | 2026-09-06 11:26:54.083 CEST [42] LOG: checkpoint complete: wrote 926 buffers (5.7%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.023 s, sync=0.089 s, total=0.128 s; sync files=301, longest=0.006 s, average=0.001 s; distance=4283 kB, estimate=4283 kB; lsn=0/1925D58, redo lsn=0/1925D58
docmost-postgres | 2026-09-06 11:26:54.097 CEST [41] 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-06 11:26:54.181 CEST [1] LOG: starting PostgreSQL 16.15 on x86_64-pc-linux-musl, compiled by gcc (Alpine 15.2.0) 15.2.0, 64-bit
docmost-postgres | 2026-09-06 11:26:54.181 CEST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
docmost-postgres | 2026-09-06 11:26:54.181 CEST [1] LOG: listening on IPv6 address "::", port 5432
docmost-postgres | 2026-09-06 11:26:54.188 CEST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
docmost-postgres | 2026-09-06 11:26:54.197 CEST [57] LOG: database system was shut down at 2026-09-06 11:26:54 CEST
docmost-postgres | 2026-09-06 11:26:54.207 CEST [1] LOG: database system is ready to accept connections
docmost |
docmost | > docmost@0.25.3 start /app
docmost | > pnpm --filter ./apps/server run start:prod
docmost |
docmost |
docmost | > server@0.25.3 start:prod /app/apps/server
docmost | > cross-env NODE_ENV=production node dist/main
docmost |
docmost | {"level":"info","time":"2026-09-06T09:28:17.842Z","pid":43,"hostname":"136cff373e66","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-06T09:28:18.127Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-06T09:28:18.149Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"error","time":"2026-09-06T09:28:18.277Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
docmost | {"level":"error","time":"2026-09-06T09:28:18.277Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","err":{"type":"Error","message":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing","stack":"Error: corrupted migrations: previously executed migration 20260213T085259-notifications is missing\n at #ensureNoMissingMigrations (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:487:23)\n at #getState (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:439:40)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async run (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:409:31)\n at async /app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/kysely.js:569:32\n at async DefaultConnectionProvider.provideConnection (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20)\n at async #migrate (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:268:20)\n at async MigrationService.migrateToLatest (/app/apps/server/dist/database/services/migration.service.js:36:36)\n at async DatabaseModule.onApplicationBootstrap (/app/apps/server/dist/database/database.module.js:50:13)\n at async callModuleBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:51:9)\n at async NestApplication.callBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application-context.js:274:13)\n at async NestApplication.init (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:105:9)\n at async NestApplication.listen (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:175:13)\n at async bootstrap (/app/apps/server/dist/main.js:82:5)"},"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
docmost | /app/apps/server:
docmost |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.25.3 start:prod: `cross-env NODE_ENV=production node dist/main`
docmost | Exit status 1
docmost |  ELIFECYCLE  Command failed with exit code 1.
docmost |
docmost | > docmost@0.25.3 start /app
docmost | > pnpm --filter ./apps/server run start:prod
docmost |
docmost |
docmost | > server@0.25.3 start:prod /app/apps/server
docmost | > cross-env NODE_ENV=production node dist/main
docmost |
docmost | {"level":"info","time":"2026-09-06T09:28:24.334Z","pid":43,"hostname":"136cff373e66","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-06T09:28:24.581Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-06T09:28:24.613Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"error","time":"2026-09-06T09:28:24.773Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
docmost | {"level":"error","time":"2026-09-06T09:28:24.773Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","err":{"type":"Error","message":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing","stack":"Error: corrupted migrations: previously executed migration 20260213T085259-notifications is missing\n at #ensureNoMissingMigrations (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:487:23)\n at #getState (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:439:40)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async run (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:409:31)\n at async /app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/kysely.js:569:32\n at async DefaultConnectionProvider.provideConnection (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20)\n at async #migrate (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:268:20)\n at async MigrationService.migrateToLatest (/app/apps/server/dist/database/services/migration.service.js:36:36)\n at async DatabaseModule.onApplicationBootstrap (/app/apps/server/dist/database/database.module.js:50:13)\n at async callModuleBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:51:9)\n at async NestApplication.callBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application-context.js:274:13)\n at async NestApplication.init (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:105:9)\n at async NestApplication.listen (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:175:13)\n at async bootstrap (/app/apps/server/dist/main.js:82:5)"},"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
docmost | /app/apps/server:
docmost |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.25.3 start:prod: `cross-env NODE_ENV=production node dist/main`
docmost | Exit status 1
docmost |  ELIFECYCLE  Command failed with exit code 1.
docmost |
docmost | > docmost@0.25.3 start /app
docmost | > pnpm --filter ./apps/server run start:prod
docmost |
docmost |
docmost | > server@0.25.3 start:prod /app/apps/server
docmost | > cross-env NODE_ENV=production node dist/main
docmost |
docmost | {"level":"info","time":"2026-09-06T09:28:30.873Z","pid":43,"hostname":"136cff373e66","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-06T09:28:31.148Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-06T09:28:31.169Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"error","time":"2026-09-06T09:28:31.292Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
docmost | {"level":"error","time":"2026-09-06T09:28:31.292Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","err":{"type":"Error","message":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing","stack":"Error: corrupted migrations: previously executed migration 20260213T085259-notifications is missing\n at #ensureNoMissingMigrations (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:487:23)\n at #getState (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:439:40)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async run (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:409:31)\n at async /app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/kysely.js:569:32\n at async DefaultConnectionProvider.provideConnection (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20)\n at async #migrate (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:268:20)\n at async MigrationService.migrateToLatest (/app/apps/server/dist/database/services/migration.service.js:36:36)\n at async DatabaseModule.onApplicationBootstrap (/app/apps/server/dist/database/database.module.js:50:13)\n at async callModuleBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:51:9)\n at async NestApplication.callBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application-context.js:274:13)\n at async NestApplication.init (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:105:9)\n at async NestApplication.listen (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:175:13)\n at async bootstrap (/app/apps/server/dist/main.js:82:5)"},"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
docmost | /app/apps/server:
docmost |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.25.3 start:prod: `cross-env NODE_ENV=production node dist/main`
docmost | Exit status 1
docmost |  ELIFECYCLE  Command failed with exit code 1.
docmost |
docmost | > docmost@0.25.3 start /app
docmost | > pnpm --filter ./apps/server run start:prod
docmost |
docmost |
docmost | > server@0.25.3 start:prod /app/apps/server
docmost | > cross-env NODE_ENV=production node dist/main
docmost |
docmost | {"level":"info","time":"2026-09-06T09:28:37.603Z","pid":43,"hostname":"136cff373e66","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-06T09:28:37.835Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-06T09:28:37.860Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"error","time":"2026-09-06T09:28:38.032Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
docmost | {"level":"error","time":"2026-09-06T09:28:38.033Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","err":{"type":"Error","message":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing","stack":"Error: corrupted migrations: previously executed migration 20260213T085259-notifications is missing\n at #ensureNoMissingMigrations (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:487:23)\n at #getState (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:439:40)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async run (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:409:31)\n at async /app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/kysely.js:569:32\n at async DefaultConnectionProvider.provideConnection (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20)\n at async #migrate (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:268:20)\n at async MigrationService.migrateToLatest (/app/apps/server/dist/database/services/migration.service.js:36:36)\n at async DatabaseModule.onApplicationBootstrap (/app/apps/server/dist/database/database.module.js:50:13)\n at async callModuleBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:51:9)\n at async NestApplication.callBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application-context.js:274:13)\n at async NestApplication.init (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:105:9)\n at async NestApplication.listen (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:175:13)\n at async bootstrap (/app/apps/server/dist/main.js:82:5)"},"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
docmost | /app/apps/server:
docmost |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.25.3 start:prod: `cross-env NODE_ENV=production node dist/main`
docmost | Exit status 1
docmost |  ELIFECYCLE  Command failed with exit code 1.
docmost |
docmost | > docmost@0.25.3 start /app
docmost | > pnpm --filter ./apps/server run start:prod
docmost |
docmost |
docmost | > server@0.25.3 start:prod /app/apps/server
docmost | > cross-env NODE_ENV=production node dist/main
docmost |
docmost | {"level":"info","time":"2026-09-06T09:28:44.800Z","pid":43,"hostname":"136cff373e66","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-06T09:28:45.047Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-06T09:28:45.073Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"error","time":"2026-09-06T09:28:45.206Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","err":{"type":"Error","message":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing","stack":"Error: corrupted migrations: previously executed migration 20260213T085259-notifications is missing\n at #ensureNoMissingMigrations (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:487:23)\n at #getState (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:439:40)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async run (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:409:31)\n at async /app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/kysely.js:569:32\n at async DefaultConnectionProvider.provideConnection (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20)\n at async #migrate (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:268:20)\n at async MigrationService.migrateToLatest (/app/apps/server/dist/database/services/migration.service.js:36:36)\n at async DatabaseModule.onApplicationBootstrap (/app/apps/server/dist/database/database.module.js:50:13)\n at async callModuleBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:51:9)\n at async NestApplication.callBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application-context.js:274:13)\n at async NestApplication.init (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:105:9)\n at async NestApplication.listen (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:175:13)\n at async bootstrap (/app/apps/server/dist/main.js:82:5)"},"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
docmost | {"level":"error","time":"2026-09-06T09:28:45.206Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
docmost | /app/apps/server:
docmost |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.25.3 start:prod: `cross-env NODE_ENV=production node dist/main`
docmost | Exit status 1
docmost |  ELIFECYCLE  Command failed with exit code 1.
docmost |
docmost | > docmost@0.25.3 start /app
docmost | > pnpm --filter ./apps/server run start:prod
docmost |
docmost |
docmost | > server@0.25.3 start:prod /app/apps/server
docmost | > cross-env NODE_ENV=production node dist/main
docmost |
docmost | {"level":"info","time":"2026-09-06T09:28:52.665Z","pid":43,"hostname":"136cff373e66","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-06T09:28:52.895Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-06T09:28:52.922Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"error","time":"2026-09-06T09:28:53.073Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
docmost | {"level":"error","time":"2026-09-06T09:28:53.073Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","err":{"type":"Error","message":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing","stack":"Error: corrupted migrations: previously executed migration 20260213T085259-notifications is missing\n at #ensureNoMissingMigrations (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:487:23)\n at #getState (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:439:40)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async run (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:409:31)\n at async /app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/kysely.js:569:32\n at async DefaultConnectionProvider.provideConnection (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20)\n at async #migrate (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:268:20)\n at async MigrationService.migrateToLatest (/app/apps/server/dist/database/services/migration.service.js:36:36)\n at async DatabaseModule.onApplicationBootstrap (/app/apps/server/dist/database/database.module.js:50:13)\n at async callModuleBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:51:9)\n at async NestApplication.callBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application-context.js:274:13)\n at async NestApplication.init (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:105:9)\n at async NestApplication.listen (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:175:13)\n at async bootstrap (/app/apps/server/dist/main.js:82:5)"},"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
docmost | /app/apps/server:
docmost |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.25.3 start:prod: `cross-env NODE_ENV=production node dist/main`
docmost | Exit status 1
docmost |  ELIFECYCLE  Command failed with exit code 1.
docmost |
docmost | > docmost@0.25.3 start /app
docmost | > pnpm --filter ./apps/server run start:prod
docmost |
docmost |
docmost | > server@0.25.3 start:prod /app/apps/server
docmost | > cross-env NODE_ENV=production node dist/main
docmost |
docmost | {"level":"info","time":"2026-09-06T09:29:02.220Z","pid":43,"hostname":"136cff373e66","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-06T09:29:02.465Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-06T09:29:02.487Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"error","time":"2026-09-06T09:29:02.611Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
docmost | {"level":"error","time":"2026-09-06T09:29:02.611Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","err":{"type":"Error","message":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing","stack":"Error: corrupted migrations: previously executed migration 20260213T085259-notifications is missing\n at #ensureNoMissingMigrations (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:487:23)\n at #getState (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:439:40)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async run (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:409:31)\n at async /app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/kysely.js:569:32\n at async DefaultConnectionProvider.provideConnection (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20)\n at async #migrate (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:268:20)\n at async MigrationService.migrateToLatest (/app/apps/server/dist/database/services/migration.service.js:36:36)\n at async DatabaseModule.onApplicationBootstrap (/app/apps/server/dist/database/database.module.js:50:13)\n at async callModuleBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:51:9)\n at async NestApplication.callBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application-context.js:274:13)\n at async NestApplication.init (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:105:9)\n at async NestApplication.listen (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:175:13)\n at async bootstrap (/app/apps/server/dist/main.js:82:5)"},"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
docmost | /app/apps/server:
docmost |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.25.3 start:prod: `cross-env NODE_ENV=production node dist/main`
docmost | Exit status 1
docmost |  ELIFECYCLE  Command failed with exit code 1.
docmost |
docmost | > docmost@0.25.3 start /app
docmost | > pnpm --filter ./apps/server run start:prod
docmost |
docmost |
docmost | > server@0.25.3 start:prod /app/apps/server
docmost | > cross-env NODE_ENV=production node dist/main
docmost |
docmost | {"level":"info","time":"2026-09-06T09:29:15.072Z","pid":43,"hostname":"136cff373e66","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-06T09:29:15.375Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-06T09:29:15.399Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"error","time":"2026-09-06T09:29:15.538Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
docmost | {"level":"error","time":"2026-09-06T09:29:15.538Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","err":{"type":"Error","message":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing","stack":"Error: corrupted migrations: previously executed migration 20260213T085259-notifications is missing\n at #ensureNoMissingMigrations (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:487:23)\n at #getState (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:439:40)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async run (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:409:31)\n at async /app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/kysely.js:569:32\n at async DefaultConnectionProvider.provideConnection (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20)\n at async #migrate (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:268:20)\n at async MigrationService.migrateToLatest (/app/apps/server/dist/database/services/migration.service.js:36:36)\n at async DatabaseModule.onApplicationBootstrap (/app/apps/server/dist/database/database.module.js:50:13)\n at async callModuleBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:51:9)\n at async NestApplication.callBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application-context.js:274:13)\n at async NestApplication.init (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:105:9)\n at async NestApplication.listen (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:175:13)\n at async bootstrap (/app/apps/server/dist/main.js:82:5)"},"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
docmost | /app/apps/server:
docmost |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.25.3 start:prod: `cross-env NODE_ENV=production node dist/main`
docmost | Exit status 1
docmost |  ELIFECYCLE  Command failed with exit code 1.
docmost |
docmost | > docmost@0.25.3 start /app
docmost | > pnpm --filter ./apps/server run start:prod
docmost |
docmost |
docmost | > server@0.25.3 start:prod /app/apps/server
docmost | > cross-env NODE_ENV=production node dist/main
docmost |
docmost | {"level":"info","time":"2026-09-06T09:29:34.431Z","pid":43,"hostname":"136cff373e66","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-06T09:29:34.695Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-06T09:29:34.716Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"error","time":"2026-09-06T09:29:34.884Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
docmost | {"level":"error","time":"2026-09-06T09:29:34.884Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","err":{"type":"Error","message":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing","stack":"Error: corrupted migrations: previously executed migration 20260213T085259-notifications is missing\n at #ensureNoMissingMigrations (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:487:23)\n at #getState (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:439:40)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async run (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:409:31)\n at async /app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/kysely.js:569:32\n at async DefaultConnectionProvider.provideConnection (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20)\n at async #migrate (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:268:20)\n at async MigrationService.migrateToLatest (/app/apps/server/dist/database/services/migration.service.js:36:36)\n at async DatabaseModule.onApplicationBootstrap (/app/apps/server/dist/database/database.module.js:50:13)\n at async callModuleBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:51:9)\n at async NestApplication.callBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application-context.js:274:13)\n at async NestApplication.init (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:105:9)\n at async NestApplication.listen (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:175:13)\n at async bootstrap (/app/apps/server/dist/main.js:82:5)"},"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
docmost | /app/apps/server:
docmost |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.25.3 start:prod: `cross-env NODE_ENV=production node dist/main`
docmost | Exit status 1
docmost |  ELIFECYCLE  Command failed with exit code 1.
docmost |
docmost | > docmost@0.25.3 start /app
docmost | > pnpm --filter ./apps/server run start:prod
docmost |
docmost |
docmost | > server@0.25.3 start:prod /app/apps/server
docmost | > cross-env NODE_ENV=production node dist/main
docmost |
docmost | {"level":"info","time":"2026-09-06T09:30:06.457Z","pid":43,"hostname":"136cff373e66","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-06T09:30:06.689Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-06T09:30:06.711Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"error","time":"2026-09-06T09:30:06.830Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
docmost | {"level":"error","time":"2026-09-06T09:30:06.830Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","err":{"type":"Error","message":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing","stack":"Error: corrupted migrations: previously executed migration 20260213T085259-notifications is missing\n at #ensureNoMissingMigrations (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:487:23)\n at #getState (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:439:40)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async run (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:409:31)\n at async /app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/kysely.js:569:32\n at async DefaultConnectionProvider.provideConnection (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20)\n at async #migrate (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:268:20)\n at async MigrationService.migrateToLatest (/app/apps/server/dist/database/services/migration.service.js:36:36)\n at async DatabaseModule.onApplicationBootstrap (/app/apps/server/dist/database/database.module.js:50:13)\n at async callModuleBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:51:9)\n at async NestApplication.callBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application-context.js:274:13)\n at async NestApplication.init (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:105:9)\n at async NestApplication.listen (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:175:13)\n at async bootstrap (/app/apps/server/dist/main.js:82:5)"},"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
docmost | /app/apps/server:
docmost |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.25.3 start:prod: `cross-env NODE_ENV=production node dist/main`
docmost | Exit status 1
docmost |  ELIFECYCLE  Command failed with exit code 1.
docmost |
docmost | > docmost@0.25.3 start /app
docmost | > pnpm --filter ./apps/server run start:prod
docmost |
docmost |
docmost | > server@0.25.3 start:prod /app/apps/server
docmost | > cross-env NODE_ENV=production node dist/main
docmost |
docmost | {"level":"info","time":"2026-09-06T09:31:03.944Z","pid":43,"hostname":"136cff373e66","context":"RedisModule","msg":"default: the connection was successfully established"}
docmost | {"level":"info","time":"2026-09-06T09:31:04.196Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Establishing database connection"}
docmost | {"level":"info","time":"2026-09-06T09:31:04.219Z","pid":43,"hostname":"136cff373e66","context":"DatabaseModule","msg":"Database connection successful"}
docmost | {"level":"error","time":"2026-09-06T09:31:04.343Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","msg":"Failed to run database migration. Exiting program."}
docmost | {"level":"error","time":"2026-09-06T09:31:04.343Z","pid":43,"hostname":"136cff373e66","context":"DatabaseMigrationService","err":{"type":"Error","message":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing","stack":"Error: corrupted migrations: previously executed migration 20260213T085259-notifications is missing\n at #ensureNoMissingMigrations (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:487:23)\n at #getState (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:439:40)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async run (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:409:31)\n at async /app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/kysely.js:569:32\n at async DefaultConnectionProvider.provideConnection (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/driver/default-connection-provider.js:12:20)\n at async #migrate (/app/node_modules/.pnpm/kysely@0.28.2/node_modules/kysely/dist/cjs/migration/migrator.js:268:20)\n at async MigrationService.migrateToLatest (/app/apps/server/dist/database/services/migration.service.js:36:36)\n at async DatabaseModule.onApplicationBootstrap (/app/apps/server/dist/database/database.module.js:50:13)\n at async callModuleBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:51:9)\n at async NestApplication.callBootstrapHook (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application-context.js:274:13)\n at async NestApplication.init (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:105:9)\n at async NestApplication.listen (/app/node_modules/.pnpm/@nestjs+core@11.1.13_@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.1_12f3fd19d13f7701792c53839f3f8286/node_modules/@nestjs/core/nest-application.js:175:13)\n at async bootstrap (/app/apps/server/dist/main.js:82:5)"},"msg":"corrupted migrations: previously executed migration 20260213T085259-notifications is missing"}
docmost | /app/apps/server:
docmost |  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  server@0.25.3 start:prod: `cross-env NODE_ENV=production node dist/main`
docmost | Exit status 1
docmost |  ELIFECYCLE  Command failed with exit code 1.
@@ -0,0 +1,6 @@
docmost | {"level":"info","time":"2026-09-06T09:28:07.121Z","pid":45,"hostname":"a70ba98cb581","context":"DatabaseMigrationService","msg":"Migration \"20260213T085259-notifications\" executed successfully"}
docmost | {"level":"info","time":"2026-09-06T09:28:07.121Z","pid":45,"hostname":"a70ba98cb581","context":"DatabaseMigrationService","msg":"Migration \"20260213T085320-watchers\" executed successfully"}
docmost | {"level":"info","time":"2026-09-06T09:28:07.121Z","pid":45,"hostname":"a70ba98cb581","context":"DatabaseMigrationService","msg":"Migration \"20260213T085337-backfill-watchers\" executed successfully"}
docmost | {"level":"info","time":"2026-09-06T09:28:07.121Z","pid":45,"hostname":"a70ba98cb581","context":"DatabaseMigrationService","msg":"Migration \"20260224T233803-page-permissions\" executed successfully"}
docmost | {"level":"info","time":"2026-09-06T09:28:07.121Z","pid":45,"hostname":"a70ba98cb581","context":"DatabaseMigrationService","msg":"Migration \"20260228T223532-audit\" executed successfully"}
docmost | {"level":"info","time":"2026-09-06T09:28:07.121Z","pid":45,"hostname":"a70ba98cb581","context":"DatabaseMigrationService","msg":"Migration \"20260326T121350-user-sessions\" executed successfully"}
@@ -0,0 +1,13 @@
[09:26:09] E2: deploying docmost at FROM {'docmost': 'docmost/docmost:0.25.3'}
[09:27:13] FROM settled=True in 10.7s :: {"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}}
[09:27:13] docmost: /api/auth/setup http=200 rc=0
[09:27:14] docmost: login as the seeded user http=200 ok=True
[09:27:14] C1 (seed reads back BEFORE): True
[09:27:14] E2: swapping to TO {'docmost': 'docmost/docmost:0.95.0'}
[09:27:59] TO up -d rc=0
[09:28:09] TO settled=True in 10.7s :: {"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}}
[09:28:10] migration lines observed: 6
[09:28:10] docmost: login as the seeded user http=200 ok=True
[09:28:10] RESULT (seed reads back AFTER): True
[09:28:10] E2: ABORT — putting the FROM images back
[09:31:15] ABORT: the app did NOT come back (rc=0, 183.1s)
@@ -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,23 @@
{
"harness_version": 1,
"edge": "E2",
"app": "docmost",
"note": "catalog transition a2115b2; PostgreSQL constant across it",
"from": {
"docmost": "docmost/docmost:0.25.3"
},
"to": {
"docmost": "docmost/docmost:0.95.0"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "docmost | {\"level\":\"info\",\"time\":\"2026-09-06T09:28:07.121Z\",\"pid\":45,\"hostname\":\"a70ba98cb581\",\"context\":\"DatabaseMigrationService\",\"msg\":\"Migration \\\"20260213T085259-notifications\\\" executed successfully\"}",
"abort": "refuses",
"abort_detail": "oO0Oo\ndocmost-redis | 1:C 06 Sep 2026 11:26:52.375 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started\ndocmost-redis | 1:C 06 Sep 2026 11:26:52.375 * Configuration loaded\ndocmost-redis | 1:M 06 Sep 2026 11:26:52.376 * Increased maximum number of open files to 10032 (it was originally set to 1024).\ndocmost-redis | 1:M 06 Sep 2026 11:26:52.376 * monotonic clock: POSIX clock_gettime\ndocmost-redis | 1:M 06 Sep 2026 11:26:52.377 * Running mode=standalone, port=6379.\ndocmost-redis | 1:M 06 Sep 2026 11:26:52.377 * Server initialized\ndocmost-redis | 1:M 06 Sep 2026 11:26:52.381 * Creating AOF base file appendonly.aof.1.base.rdb on server start\ndocmost-redis | 1:M 06 Sep 2026 11:26:52.389 * Creating AOF incr file appendonly.aof.1.incr.aof on server start\ndocmost-redis | 1:M 06 Sep 2026 11:26:52.389 * Ready to accept connections tcp",
"duration_s": 10.7,
"measured_at": "2026-09-06T09:31:15Z",
"evidence": "evidence/E2",
"total_s": 305.1
}
@@ -0,0 +1,14 @@
{
"bookstack": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"bookstack-db": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,67 @@
bookstack-db | 2026-09-06 11:39:24+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-06 11:39:24+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
bookstack-db | 2026-09-06 11:39:24+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
bookstack-db | 2026-09-06 11:39:24+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-06 11:39:25+02:00 [Note] [Entrypoint]: MariaDB upgrade not required
bookstack-db | 2026-09-06 11:39:25 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid jIeFbcxMr8Qv1MJZcRmTuaJ7fpM= as process 1
bookstack-db | 2026-09-06 11:39:25 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-06 11:39:25 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-06 11:39:25 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-06 11:39:25 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0
bookstack-db | 2026-09-06 11:39:25 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
bookstack-db | 2026-09-06 11:39:25 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
bookstack-db | 2026-09-06 11:39:25 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-06 11:39:25 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-06 11:39:25 0 [Note] InnoDB: End of log at LSN=2242626
bookstack-db | 2026-09-06 11:39:25 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-06 11:39:25 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-06 11:39:25 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-06 11:39:25 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-06 11:39:25 0 [Note] InnoDB: log sequence number 2242626; transaction id 2917
bookstack-db | 2026-09-06 11:39:25 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-06 11:39:25 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-06 11:39:25 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-06 11:39:25 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 11:39:25
bookstack-db | 2026-09-06 11:39:26 0 [Note] Server socket created on IP: '0.0.0.0'.
bookstack-db | 2026-09-06 11:39:26 0 [Note] Server socket created on IP: '::'.
bookstack-db | 2026-09-06 11:39:26 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack-db | 2026-09-06 11:39:26 0 [Note] mariadbd: ready for connections.
bookstack | [migrations] started
bookstack | [migrations] 01-nginx-site-confs-default: skipped
bookstack | [migrations] 02-default-location: skipped
bookstack | [migrations] done
bookstack | ───────────────────────────────────────
bookstack |
bookstack | ██╗ ███████╗██╗ ██████╗
bookstack | ██║ ██╔════╝██║██╔═══██╗
bookstack | ██║ ███████╗██║██║ ██║
bookstack | ██║ ╚════██║██║██║ ██║
bookstack | ███████╗███████║██║╚██████╔╝
bookstack | ╚══════╝╚══════╝╚═╝ ╚═════╝
bookstack |
bookstack | Brought to you by linuxserver.io
bookstack | ───────────────────────────────────────
bookstack |
bookstack | To support LSIO projects visit:
bookstack | https://www.linuxserver.io/donate/
bookstack |
bookstack | ───────────────────────────────────────
bookstack | GID/UID
bookstack | ───────────────────────────────────────
bookstack |
bookstack | User UID: 1000
bookstack | User GID: 1000
bookstack | ───────────────────────────────────────
bookstack | Linuxserver.io version: v25.02.2-ls202
bookstack | Build-date: 2025-04-14T18:32:57+00:00
bookstack | ───────────────────────────────────────
bookstack |
bookstack-db | Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
bookstack-db | 2026-09-06 11:39:31 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
bookstack | using keys found in /config/keys
bookstack | Waiting for DB to be available
bookstack |
bookstack | INFO Nothing to migrate.
bookstack |
bookstack | [custom-init] No custom files found, skipping...
bookstack | [ls.io-init] done.
@@ -0,0 +1,67 @@
bookstack-db | 2026-09-06 11:36:57+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-06 11:36:58+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
bookstack-db | 2026-09-06 11:36:58+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
bookstack-db | 2026-09-06 11:36:58+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-06 11:36:58+02:00 [Note] [Entrypoint]: MariaDB upgrade not required
bookstack-db | 2026-09-06 11:36:58 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid Bp04+pP2m99zSE//d9IaM/XEj0U= as process 1
bookstack-db | 2026-09-06 11:36:58 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-06 11:36:58 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-06 11:36:58 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-06 11:36:58 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0
bookstack-db | 2026-09-06 11:36:58 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
bookstack-db | 2026-09-06 11:36:58 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
bookstack-db | 2026-09-06 11:36:58 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-06 11:36:58 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-06 11:36:58 0 [Note] InnoDB: End of log at LSN=2309232
bookstack-db | 2026-09-06 11:36:58 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-06 11:36:58 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-06 11:36:58 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-06 11:36:58 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-06 11:36:58 0 [Note] InnoDB: log sequence number 2309232; transaction id 2925
bookstack-db | 2026-09-06 11:36:58 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-06 11:36:58 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-06 11:36:58 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-06 11:36:58 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 11:36:58
bookstack-db | 2026-09-06 11:36:59 0 [Note] Server socket created on IP: '0.0.0.0'.
bookstack-db | 2026-09-06 11:36:59 0 [Note] Server socket created on IP: '::'.
bookstack-db | 2026-09-06 11:36:59 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack-db | 2026-09-06 11:36:59 0 [Note] mariadbd: ready for connections.
bookstack-db | Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
bookstack-db | 2026-09-06 11:37:05 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
bookstack | [migrations] started
bookstack | [migrations] 01-nginx-site-confs-default: skipped
bookstack | [migrations] 02-default-location: skipped
bookstack | [migrations] done
bookstack | ───────────────────────────────────────
bookstack |
bookstack | ██╗ ███████╗██╗ ██████╗
bookstack | ██║ ██╔════╝██║██╔═══██╗
bookstack | ██║ ███████╗██║██║ ██║
bookstack | ██║ ╚════██║██║██║ ██║
bookstack | ███████╗███████║██║╚██████╔╝
bookstack | ╚══════╝╚══════╝╚═╝ ╚═════╝
bookstack |
bookstack | Brought to you by linuxserver.io
bookstack | ───────────────────────────────────────
bookstack |
bookstack | To support LSIO projects visit:
bookstack | https://www.linuxserver.io/donate/
bookstack |
bookstack | ───────────────────────────────────────
bookstack | GID/UID
bookstack | ───────────────────────────────────────
bookstack |
bookstack | User UID: 1000
bookstack | User GID: 1000
bookstack | ───────────────────────────────────────
bookstack | Linuxserver.io version: v25.02.2-ls202
bookstack | Build-date: 2025-04-14T18:32:57+00:00
bookstack | ───────────────────────────────────────
bookstack |
bookstack | using keys found in /config/keys
bookstack | Waiting for DB to be available
bookstack |
bookstack | INFO Nothing to migrate.
bookstack |
bookstack | [custom-init] No custom files found, skipping...
bookstack | [ls.io-init] done.
@@ -0,0 +1,6 @@
bookstack-db | 2026-09-06 11:38:57+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
bookstack | [migrations] started
bookstack | [migrations] 01-nginx-site-confs-default: skipped
bookstack | [migrations] 02-default-location: skipped
bookstack | [migrations] done
bookstack | INFO Running migrations.
@@ -0,0 +1,14 @@
[09:38:23] E3: deploying bookstack at FROM {'bookstack': 'lscr.io/linuxserver/bookstack:25.02.2', 'bookstack-db': 'mariadb:11.6'}
[09:38:50] FROM settled=True in 15.7s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[09:38:51] bookstack: artisan create-admin rc=0 :: Admin account with email "spike-7cffb8f4@gate.invalid" successfully created!
[09:38:52] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-0505fd - Email: spike
[09:38:52] C1 (seed reads back BEFORE): True
[09:38:52] E3: swapping to TO {'bookstack': 'lscr.io/linuxserver/bookstack:26.05.2', 'bookstack-db': 'mariadb:12.3'}
[09:39:03] TO up -d rc=0
[09:39:18] TO settled=True in 15.7s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[09:39:18] migration lines observed: 6
[09:39:19] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-0505fd - Email: spike
[09:39:19] RESULT (seed reads back AFTER): True
[09:39:19] E3: ABORT — putting the FROM images back
[09:39:41] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-0505fd - Email: spike
[09:39:41] ABORT: app came back in 10.5s; data present=True
@@ -0,0 +1,95 @@
bookstack | [migrations] started
bookstack-db | 2026-09-06 11:38:57+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
bookstack | [migrations] 01-nginx-site-confs-default: skipped
bookstack | [migrations] 02-default-location: skipped
bookstack | [migrations] done
bookstack | ───────────────────────────────────────
bookstack-db | 2026-09-06 11:38:57+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
bookstack-db | 2026-09-06 11:38:57+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
bookstack-db | 2026-09-06 11:38:57+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
bookstack-db | 2026-09-06 11:38:57+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
bookstack-db | 2026-09-06 11:38:57 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid Q0SKRNuC+pTkInPJi+BZTvSvKBg= as process 1
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-06 11:38:57 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup).
bookstack-db | create_uring failed: falling back to libaio
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: Using Linux native AIO
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: End of log at LSN=1142495
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: log sequence number 1142495; transaction id 2268
bookstack-db | 2026-09-06 11:38:57 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-06 11:38:57 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-06 11:38:57 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 11:38:57
bookstack-db | 2026-09-06 11:39:00 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
bookstack-db | 2026-09-06 11:39:00 0 [Note] Server socket created on IP: '::', port: '3306'.
bookstack-db | 2026-09-06 11:39:00 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack |
bookstack | ██╗ ███████╗██╗ ██████╗
bookstack | ██║ ██╔════╝██║██╔═══██╗
bookstack | ██║ ███████╗██║██║ ██║
bookstack | ██║ ╚════██║██║██║ ██║
bookstack | ███████╗███████║██║╚██████╔╝
bookstack | ╚══════╝╚══════╝╚═╝ ╚═════╝
bookstack |
bookstack | Brought to you by linuxserver.io
bookstack | ───────────────────────────────────────
bookstack |
bookstack | To support the app dev(s) visit:
bookstack | Bookstack: https://www.bookstackapp.com/donate/
bookstack |
bookstack | To support LSIO projects visit:
bookstack-db | 2026-09-06 11:39:00 0 [Note] mariadbd: ready for connections.
bookstack | https://www.linuxserver.io/donate/
bookstack |
bookstack-db | Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
bookstack | ───────────────────────────────────────
bookstack-db | 2026-09-06 11:39:04 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
bookstack | GID/UID
bookstack | ───────────────────────────────────────
bookstack |
bookstack | User UID: 1000
bookstack | User GID: 1000
bookstack | ───────────────────────────────────────
bookstack | Linuxserver.io version: v26.05.2-ls276
bookstack | Build-date: 2026-07-27T19:41:43+00:00
bookstack | ───────────────────────────────────────
bookstack |
bookstack | using keys found in /config/keys
bookstack | **** The following active confs have different version dates than the samples that are shipped. ****
bookstack | **** This may be due to user customization or an update to the samples. ****
bookstack | **** You should compare the following files to the samples in the same folder and update them. ****
bookstack | **** Use the link at the top of the file to view the changelog. ****
bookstack | ┌────────────┬────────────┬────────────────────────────────────────────────────────────────────────┐
bookstack | │ old date │ new date │ path │
bookstack | ├────────────┼────────────┼────────────────────────────────────────────────────────────────────────┤
bookstack | │ 2024-12-06 │ 2026-06-27 │ /config/nginx/ssl.conf │
bookstack | │ 2024-12-17 │ 2025-12-26 │ /config/nginx/nginx.conf │
bookstack | │ 2024-07-16 │ 2026-06-27 │ /config/nginx/site-confs/default.conf │
bookstack | └────────────┴────────────┴────────────────────────────────────────────────────────────────────────┘
bookstack | Waiting for DB to be available
bookstack |
bookstack | INFO Running migrations.
bookstack |
bookstack | 2025_04_18_215145_add_content_refs_and_archived_to_comments ... 84.79ms DONE
bookstack | 2025_09_02_111542_remove_unused_columns ....................... 77.77ms DONE
bookstack | 2025_09_15_132850_create_entities_table ...................... 296.01ms DONE
bookstack | 2025_09_15_134701_migrate_entity_data ......................... 13.66ms DONE
bookstack | 2025_09_15_134751_update_entity_relation_columns ............. 862.86ms DONE
bookstack | 2025_09_15_134813_drop_old_entity_tables ...................... 49.37ms DONE
bookstack | 2025_10_18_163331_clean_user_id_references ................... 450.74ms DONE
bookstack | 2025_10_22_134507_update_comments_relation_field_names ........ 46.69ms DONE
bookstack | 2025_11_23_161812_create_slug_history_table .................. 128.99ms DONE
bookstack | 2025_12_15_140219_create_mention_history_table ................ 71.34ms DONE
bookstack | 2025_12_19_103417_add_views_viewable_type_index ............... 27.87ms DONE
bookstack | 2026_04_19_141616_add_revision_view_all_permission ............. 6.76ms DONE
bookstack |
bookstack | [custom-init] No custom files found, skipping...
bookstack | [ls.io-init] done.
@@ -0,0 +1,14 @@
{
"bookstack": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"bookstack-db": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,25 @@
{
"harness_version": 1,
"edge": "E3",
"app": "bookstack",
"note": "catalog transition 0b73e5e: app AND engine together",
"from": {
"bookstack": "lscr.io/linuxserver/bookstack:25.02.2",
"bookstack-db": "mariadb:11.6"
},
"to": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:12.3"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "bookstack-db | 2026-09-06 11:38:57+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting",
"abort": "starts-and-serves",
"abort_detail": null,
"duration_s": 15.7,
"measured_at": "2026-09-06T09:39:41Z",
"evidence": "evidence/E3",
"total_s": 77.5
}
@@ -0,0 +1,14 @@
{
"bookstack": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"bookstack-db": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,114 @@
bookstack | [migrations] started
bookstack | [migrations] 01-nginx-site-confs-default: skipped
bookstack | [migrations] 02-default-location: skipped
bookstack | [migrations] done
bookstack | ───────────────────────────────────────
bookstack |
bookstack | ██╗ ███████╗██╗ ██████╗
bookstack | ██║ ██╔════╝██║██╔═══██╗
bookstack | ██║ ███████╗██║██║ ██║
bookstack | ██║ ╚════██║██║██║ ██║
bookstack | ███████╗███████║██║╚██████╔╝
bookstack | ╚══════╝╚══════╝╚═╝ ╚═════╝
bookstack |
bookstack | Brought to you by linuxserver.io
bookstack | ───────────────────────────────────────
bookstack |
bookstack | To support LSIO projects visit:
bookstack | https://www.linuxserver.io/donate/
bookstack |
bookstack | ───────────────────────────────────────
bookstack-db | 2026-09-06 11:39:46+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack | GID/UID
bookstack-db | 2026-09-06 11:39:46+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
bookstack-db | 2026-09-06 11:39:46+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
bookstack-db | 2026-09-06 11:39:46+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-06 11:39:46+02:00 [Note] [Entrypoint]: Initializing database files
bookstack-db | 2026-09-06 11:39:46 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 2
bookstack-db | 2026-09-06 11:39:46 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
bookstack-db | 2026-09-06 11:39:49+02:00 [Note] [Entrypoint]: Database files initialized
bookstack-db | 2026-09-06 11:39:49+02:00 [Note] [Entrypoint]: Starting temporary server
bookstack-db | 2026-09-06 11:39:49+02:00 [Note] [Entrypoint]: Waiting for server startup
bookstack-db | 2026-09-06 11:39:49 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid 5VZbo5kSbfrs3TIzpdyzN2xzF/E= as process 98
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-06 11:39:49 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0
bookstack-db | 2026-09-06 11:39:49 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: End of log at LSN=47747
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: log sequence number 47747; transaction id 14
bookstack-db | 2026-09-06 11:39:49 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-06 11:39:49 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-06 11:39:53 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack-db | 2026-09-06 11:39:53 0 [Note] mariadbd: ready for connections.
bookstack-db | Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 0 mariadb.org binary distribution
bookstack-db | 2026-09-06 11:39:54+02:00 [Note] [Entrypoint]: Temporary server started.
bookstack-db | 2026-09-06 11:39:54+02:00 [Note] [Entrypoint]: Creating database bookstack
bookstack-db | 2026-09-06 11:39:54+02:00 [Note] [Entrypoint]: Creating user bookstack
bookstack-db | 2026-09-06 11:39:54+02:00 [Note] [Entrypoint]: Giving user bookstack access to schema bookstack
bookstack-db | 2026-09-06 11:39:54+02:00 [Note] [Entrypoint]: Securing system users (equivalent to running mysql_secure_installation)
bookstack-db |
bookstack | ───────────────────────────────────────
bookstack |
bookstack | User UID: 1000
bookstack | User GID: 1000
bookstack | ───────────────────────────────────────
bookstack | Linuxserver.io version: v25.02.2-ls202
bookstack | Build-date: 2025-04-14T18:32:57+00:00
bookstack | ───────────────────────────────────────
bookstack |
bookstack | using keys found in /config/keys
bookstack | Waiting for DB to be available
bookstack |
bookstack | INFO Nothing to migrate.
bookstack |
bookstack | [custom-init] No custom files found, skipping...
bookstack | [ls.io-init] done.
bookstack-db | 2026-09-06 11:39:55+02:00 [Note] [Entrypoint]: Stopping temporary server
bookstack-db | 2026-09-06 11:39:55 0 [Note] mariadbd (initiated by: unknown): Normal shutdown
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: FTS optimize thread exiting.
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Starting shutdown...
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Buffer pool(s) dump completed at 260906 11:39:55
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Shutdown completed; log sequence number 47747; transaction id 15
bookstack-db | 2026-09-06 11:39:55 0 [Note] mariadbd: Shutdown complete
bookstack-db |
bookstack-db | 2026-09-06 11:39:55+02:00 [Note] [Entrypoint]: Temporary server stopped
bookstack-db |
bookstack-db | 2026-09-06 11:39:55+02:00 [Note] [Entrypoint]: MariaDB init process done. Ready for start up.
bookstack-db |
bookstack-db | 2026-09-06 11:39:55 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid 5VZbo5kSbfrs3TIzpdyzN2xzF/E= as process 1
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-06 11:39:55 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0
bookstack-db | 2026-09-06 11:39:55 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: End of log at LSN=47747
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: log sequence number 47747; transaction id 14
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-06 11:39:55 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-06 11:39:55 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 11:39:55
bookstack-db | 2026-09-06 11:39:56 0 [Note] Server socket created on IP: '0.0.0.0'.
bookstack-db | 2026-09-06 11:39:56 0 [Note] Server socket created on IP: '::'.
bookstack-db | 2026-09-06 11:39:56 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack-db | 2026-09-06 11:39:56 0 [Note] mariadbd: ready for connections.
bookstack-db | Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
bookstack-db | 2026-09-06 11:40:03 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
bookstack-db | 2026-09-06 11:40:25 17 [Warning] Aborted connection 17 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
bookstack-db | 2026-09-06 11:40:47 27 [Warning] Aborted connection 27 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
@@ -0,0 +1,6 @@
bookstack | [migrations] started
bookstack | [migrations] 01-nginx-site-confs-default: skipped
bookstack | [migrations] 02-default-location: skipped
bookstack | [migrations] done
bookstack | INFO Running migrations.
bookstack | 2025_09_15_134701_migrate_entity_data ......................... 12.89ms DONE
@@ -0,0 +1,14 @@
[09:39:45] E3a: deploying bookstack at FROM {'bookstack': 'lscr.io/linuxserver/bookstack:25.02.2', 'bookstack-db': 'mariadb:11.6'}
[09:40:17] FROM settled=True in 15.7s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[09:40:18] bookstack: artisan create-admin rc=0 :: Admin account with email "spike-f5408487@gate.invalid" successfully created!
[09:40:19] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-2e6215 - Email: spike
[09:40:19] C1 (seed reads back BEFORE): True
[09:40:19] E3a: swapping to TO {'bookstack': 'lscr.io/linuxserver/bookstack:26.05.2', 'bookstack-db': 'mariadb:11.6'}
[09:40:24] TO up -d rc=0
[09:40:40] TO settled=True in 15.7s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[09:40:40] migration lines observed: 6
[09:40:41] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-2e6215 - Email: spike
[09:40:41] RESULT (seed reads back AFTER): True
[09:40:41] E3a: ABORT — putting the FROM images back
[09:40:57] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-2e6215 - Email: spike
[09:40:57] ABORT: app came back in 10.5s; data present=True
@@ -0,0 +1,140 @@
bookstack | [migrations] started
bookstack | [migrations] 01-nginx-site-confs-default: skipped
bookstack | [migrations] 02-default-location: skipped
bookstack-db | 2026-09-06 11:39:46+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-06 11:39:46+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
bookstack-db | 2026-09-06 11:39:46+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
bookstack-db | 2026-09-06 11:39:46+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-06 11:39:46+02:00 [Note] [Entrypoint]: Initializing database files
bookstack-db | 2026-09-06 11:39:46 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 2
bookstack-db | 2026-09-06 11:39:46 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
bookstack-db | 2026-09-06 11:39:49+02:00 [Note] [Entrypoint]: Database files initialized
bookstack-db | 2026-09-06 11:39:49+02:00 [Note] [Entrypoint]: Starting temporary server
bookstack-db | 2026-09-06 11:39:49+02:00 [Note] [Entrypoint]: Waiting for server startup
bookstack-db | 2026-09-06 11:39:49 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid 5VZbo5kSbfrs3TIzpdyzN2xzF/E= as process 98
bookstack | [migrations] done
bookstack | ───────────────────────────────────────
bookstack |
bookstack | ██╗ ███████╗██╗ ██████╗
bookstack | ██║ ██╔════╝██║██╔═══██╗
bookstack | ██║ ███████╗██║██║ ██║
bookstack | ██║ ╚════██║██║██║ ██║
bookstack | ███████╗███████║██║╚██████╔╝
bookstack | ╚══════╝╚══════╝╚═╝ ╚═════╝
bookstack |
bookstack | Brought to you by linuxserver.io
bookstack | ───────────────────────────────────────
bookstack |
bookstack | To support the app dev(s) visit:
bookstack | Bookstack: https://www.bookstackapp.com/donate/
bookstack |
bookstack | To support LSIO projects visit:
bookstack | https://www.linuxserver.io/donate/
bookstack |
bookstack | ───────────────────────────────────────
bookstack | GID/UID
bookstack | ───────────────────────────────────────
bookstack |
bookstack | User UID: 1000
bookstack | User GID: 1000
bookstack | ───────────────────────────────────────
bookstack | Linuxserver.io version: v26.05.2-ls276
bookstack | Build-date: 2026-07-27T19:41:43+00:00
bookstack | ───────────────────────────────────────
bookstack |
bookstack | using keys found in /config/keys
bookstack | **** The following active confs have different version dates than the samples that are shipped. ****
bookstack | **** This may be due to user customization or an update to the samples. ****
bookstack | **** You should compare the following files to the samples in the same folder and update them. ****
bookstack | **** Use the link at the top of the file to view the changelog. ****
bookstack | ┌────────────┬────────────┬────────────────────────────────────────────────────────────────────────┐
bookstack | │ old date │ new date │ path │
bookstack | ├────────────┼────────────┼────────────────────────────────────────────────────────────────────────┤
bookstack | │ 2024-12-06 │ 2026-06-27 │ /config/nginx/ssl.conf │
bookstack | │ 2024-12-17 │ 2025-12-26 │ /config/nginx/nginx.conf │
bookstack | │ 2024-07-16 │ 2026-06-27 │ /config/nginx/site-confs/default.conf │
bookstack | └────────────┴────────────┴────────────────────────────────────────────────────────────────────────┘
bookstack | Waiting for DB to be available
bookstack |
bookstack | INFO Running migrations.
bookstack |
bookstack | 2025_04_18_215145_add_content_refs_and_archived_to_comments ... 65.54ms DONE
bookstack | 2025_09_02_111542_remove_unused_columns ....................... 65.06ms DONE
bookstack | 2025_09_15_132850_create_entities_table ...................... 271.56ms DONE
bookstack | 2025_09_15_134701_migrate_entity_data ......................... 12.89ms DONE
bookstack | 2025_09_15_134751_update_entity_relation_columns ............. 797.09ms DONE
bookstack | 2025_09_15_134813_drop_old_entity_tables ...................... 47.54ms DONE
bookstack | 2025_10_18_163331_clean_user_id_references ................... 453.35ms DONE
bookstack | 2025_10_22_134507_update_comments_relation_field_names ........ 35.20ms DONE
bookstack | 2025_11_23_161812_create_slug_history_table .................. 114.64ms DONE
bookstack | 2025_12_15_140219_create_mention_history_table ................ 60.44ms DONE
bookstack | 2025_12_19_103417_add_views_viewable_type_index ............... 24.37ms DONE
bookstack | 2026_04_19_141616_add_revision_view_all_permission ............. 4.73ms DONE
bookstack |
bookstack | [custom-init] No custom files found, skipping...
bookstack | [ls.io-init] done.
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-06 11:39:49 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0
bookstack-db | 2026-09-06 11:39:49 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: End of log at LSN=47747
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-06 11:39:49 0 [Note] InnoDB: log sequence number 47747; transaction id 14
bookstack-db | 2026-09-06 11:39:49 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-06 11:39:49 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-06 11:39:53 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack-db | 2026-09-06 11:39:53 0 [Note] mariadbd: ready for connections.
bookstack-db | Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 0 mariadb.org binary distribution
bookstack-db | 2026-09-06 11:39:54+02:00 [Note] [Entrypoint]: Temporary server started.
bookstack-db | 2026-09-06 11:39:54+02:00 [Note] [Entrypoint]: Creating database bookstack
bookstack-db | 2026-09-06 11:39:54+02:00 [Note] [Entrypoint]: Creating user bookstack
bookstack-db | 2026-09-06 11:39:54+02:00 [Note] [Entrypoint]: Giving user bookstack access to schema bookstack
bookstack-db | 2026-09-06 11:39:54+02:00 [Note] [Entrypoint]: Securing system users (equivalent to running mysql_secure_installation)
bookstack-db |
bookstack-db | 2026-09-06 11:39:55+02:00 [Note] [Entrypoint]: Stopping temporary server
bookstack-db | 2026-09-06 11:39:55 0 [Note] mariadbd (initiated by: unknown): Normal shutdown
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: FTS optimize thread exiting.
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Starting shutdown...
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Buffer pool(s) dump completed at 260906 11:39:55
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Shutdown completed; log sequence number 47747; transaction id 15
bookstack-db | 2026-09-06 11:39:55 0 [Note] mariadbd: Shutdown complete
bookstack-db |
bookstack-db | 2026-09-06 11:39:55+02:00 [Note] [Entrypoint]: Temporary server stopped
bookstack-db |
bookstack-db | 2026-09-06 11:39:55+02:00 [Note] [Entrypoint]: MariaDB init process done. Ready for start up.
bookstack-db |
bookstack-db | 2026-09-06 11:39:55 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid 5VZbo5kSbfrs3TIzpdyzN2xzF/E= as process 1
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-06 11:39:55 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0
bookstack-db | 2026-09-06 11:39:55 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: End of log at LSN=47747
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: log sequence number 47747; transaction id 14
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-06 11:39:55 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-06 11:39:55 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-06 11:39:55 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 11:39:55
bookstack-db | 2026-09-06 11:39:56 0 [Note] Server socket created on IP: '0.0.0.0'.
bookstack-db | 2026-09-06 11:39:56 0 [Note] Server socket created on IP: '::'.
bookstack-db | 2026-09-06 11:39:56 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack-db | 2026-09-06 11:39:56 0 [Note] mariadbd: ready for connections.
bookstack-db | Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
bookstack-db | 2026-09-06 11:40:03 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
bookstack-db | 2026-09-06 11:40:25 17 [Warning] Aborted connection 17 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
@@ -0,0 +1,14 @@
{
"bookstack": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"bookstack-db": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,25 @@
{
"harness_version": 1,
"edge": "E3a",
"app": "bookstack",
"note": "AUTHORED step (the catalog never carried it): app half alone",
"from": {
"bookstack": "lscr.io/linuxserver/bookstack:25.02.2",
"bookstack-db": "mariadb:11.6"
},
"to": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:11.6"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "bookstack | [migrations] started",
"abort": "starts-and-serves",
"abort_detail": null,
"duration_s": 15.7,
"measured_at": "2026-09-06T09:40:57Z",
"evidence": "evidence/E3a",
"total_s": 71.8
}
@@ -0,0 +1,14 @@
{
"bookstack": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"bookstack-db": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,183 @@
bookstack-db | 2026-09-06 11:41:44+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-06 11:41:44+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
bookstack-db | 2026-09-06 11:41:44+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
bookstack-db | 2026-09-06 11:41:44+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-06 11:41:44+02:00 [Note] [Entrypoint]: MariaDB upgrade not required
bookstack-db | 2026-09-06 11:41:44 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid uxGayY7vyRLNrkVhQBGWZMg7sws= as process 1
bookstack-db | 2026-09-06 11:41:44 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-06 11:41:44 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-06 11:41:44 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-06 11:41:44 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0
bookstack | [migrations] started
bookstack-db | 2026-09-06 11:41:44 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
bookstack-db | 2026-09-06 11:41:44 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
bookstack | [migrations] 01-nginx-site-confs-default: executing...
bookstack | [migrations] 01-nginx-site-confs-default: succeeded
bookstack | [migrations] 02-default-location: executing...
bookstack | [migrations] 02-default-location: succeeded
bookstack | [migrations] done
bookstack | ───────────────────────────────────────
bookstack |
bookstack | ██╗ ███████╗██╗ ██████╗
bookstack-db | 2026-09-06 11:41:44 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack | ██║ ██╔════╝██║██╔═══██╗
bookstack-db | 2026-09-06 11:41:44 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-06 11:41:44 0 [Note] InnoDB: End of log at LSN=2003287
bookstack-db | 2026-09-06 11:41:44 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-06 11:41:44 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-06 11:41:44 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-06 11:41:44 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-06 11:41:44 0 [Note] InnoDB: log sequence number 2003287; transaction id 2873
bookstack-db | 2026-09-06 11:41:44 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-06 11:41:44 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-06 11:41:44 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-06 11:41:44 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 11:41:44
bookstack-db | 2026-09-06 11:41:48 0 [Note] Server socket created on IP: '0.0.0.0'.
bookstack-db | 2026-09-06 11:41:48 0 [Note] Server socket created on IP: '::'.
bookstack-db | 2026-09-06 11:41:48 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack-db | 2026-09-06 11:41:48 0 [Note] mariadbd: ready for connections.
bookstack-db | Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
bookstack | ██║ ███████╗██║██║ ██║
bookstack | ██║ ╚════██║██║██║ ██║
bookstack | ███████╗███████║██║╚██████╔╝
bookstack | ╚══════╝╚══════╝╚═╝ ╚═════╝
bookstack |
bookstack | Brought to you by linuxserver.io
bookstack | ───────────────────────────────────────
bookstack |
bookstack | To support the app dev(s) visit:
bookstack | Bookstack: https://www.bookstackapp.com/donate/
bookstack |
bookstack | To support LSIO projects visit:
bookstack | https://www.linuxserver.io/donate/
bookstack |
bookstack | ───────────────────────────────────────
bookstack | GID/UID
bookstack | ───────────────────────────────────────
bookstack |
bookstack | User UID: 1000
bookstack | User GID: 1000
bookstack | ───────────────────────────────────────
bookstack | Linuxserver.io version: v26.05.2-ls276
bookstack | Build-date: 2026-07-27T19:41:43+00:00
bookstack | ───────────────────────────────────────
bookstack |
bookstack | Setting resolver to 127.0.0.11
bookstack | Setting worker_processes to 4
bookstack | generating self-signed keys in /config/keys, you can replace these with your own keys if required
bookstack | .+.........+.......+.....+.+...+..............+++++++++++++++++++++++++++++++++++++++*....+++++++++++++++++++++++++++++++++++++++*.+..+.........+....+.....+....+...............+..+...+.+.....+.+......++++++
bookstack | ....+........+...+......+.+..+.+......+.....+......+....+........+.......+...+............+.....+......+...+.+.....+......+....+...........+...+.........+++++++++++++++++++++++++++++++++++++++*............+......+...+.....+......+.....................+.+........+....+.....+.......+.....+.........+.......+.....+....+..............+.+........+...+...+.+.....+.+..+.+...........+++++++++++++++++++++++++++++++++++++++*......+.+.....+.+...+..+.............+..+......+............+..................+.......+......+......+.....+....+.....+......+...+.+.....+.......+........+.+......+............+..+......+....+...+.....++++++
bookstack | -----
bookstack | Waiting for DB to be available
bookstack |
bookstack | INFO Preparing database.
bookstack |
bookstack | Creating migration table ...................................... 23.30ms DONE
bookstack |
bookstack | INFO Running migrations.
bookstack |
bookstack | 2014_10_12_000000_create_users_table ......................... 281.93ms DONE
bookstack | 2014_10_12_100000_create_password_resets_table ................ 67.95ms DONE
bookstack | 2015_07_12_114933_create_books_table .......................... 14.59ms DONE
bookstack | 2015_07_12_190027_create_pages_table .......................... 15.32ms DONE
bookstack | 2015_07_13_172121_create_images_table ......................... 13.99ms DONE
bookstack | 2015_07_27_172342_create_chapters_table ....................... 15.34ms DONE
bookstack | 2015_08_08_200447_add_users_to_entities ...................... 156.25ms DONE
bookstack | 2015_08_09_093534_create_page_revisions_table ................. 17.70ms DONE
bookstack | 2015_08_16_142133_create_activities_table ..................... 11.81ms DONE
bookstack | 2015_08_29_105422_add_roles_and_permissions .................. 325.57ms DONE
bookstack | 2015_08_30_125859_create_settings_table ....................... 12.58ms DONE
bookstack | 2015_08_31_175240_add_search_indexes ........................... 0.07ms DONE
bookstack | 2015_09_04_165821_create_social_accounts_table ................ 62.88ms DONE
bookstack | 2015_09_05_164707_add_email_confirmation_table ................ 79.14ms DONE
bookstack | 2015_11_21_145609_create_views_table .......................... 14.90ms DONE
bookstack | 2015_11_26_221857_add_entity_indexes ......................... 498.52ms DONE
bookstack | 2015_12_05_145049_fulltext_weighting ........................... 0.06ms DONE
bookstack | 2015_12_07_195238_add_image_upload_types ...................... 75.75ms DONE
bookstack | 2015_12_09_195748_add_user_avatars ............................ 19.55ms DONE
bookstack | 2016_01_11_210908_add_external_auth_to_users .................. 48.29ms DONE
bookstack | 2016_02_25_184030_add_slug_to_revisions ....................... 89.51ms DONE
bookstack | 2016_02_27_120329_update_permissions_and_roles ............... 168.57ms DONE
bookstack | 2016_02_28_084200_add_entity_access_controls ................. 268.80ms DONE
bookstack | 2016_03_09_203143_add_page_revision_types ..................... 42.57ms DONE
bookstack | 2016_03_13_082138_add_page_drafts ............................. 46.34ms DONE
bookstack | 2016_03_25_123157_add_markdown_support ........................ 37.35ms DONE
bookstack | 2016_04_09_100730_add_view_permissions_to_roles ............... 40.82ms DONE
bookstack | 2016_04_20_192649_create_joint_permissions_table ............. 302.48ms DONE
bookstack | 2016_05_06_185215_create_tags_table .......................... 112.20ms DONE
bookstack | 2016_07_07_181521_add_summary_to_page_revisions ............... 18.62ms DONE
bookstack | 2016_09_29_101449_remove_hidden_roles ......................... 74.62ms DONE
bookstack | 2016_10_09_142037_create_attachments_table .................... 66.52ms DONE
bookstack | 2017_01_21_163556_create_cache_table .......................... 41.57ms DONE
bookstack | 2017_01_21_163602_create_sessions_table ....................... 41.62ms DONE
bookstack | 2017_03_19_091553_create_search_index_table .................. 117.01ms DONE
bookstack | 2017_04_20_185112_add_revision_counts ......................... 64.95ms DONE
bookstack | 2017_07_02_152834_update_db_encoding_to_ut8mb4 ................. 0.07ms DONE
bookstack | 2017_08_01_130541_create_comments_table ....................... 86.73ms DONE
bookstack | 2017_08_29_102650_add_cover_image_display ..................... 21.13ms DONE
bookstack | 2018_07_15_173514_add_role_external_auth_id ................... 47.09ms DONE
bookstack | 2018_08_04_115700_create_bookshelves_table ................... 389.10ms DONE
bookstack | 2019_07_07_112515_add_template_support ........................ 48.36ms DONE
bookstack | 2019_08_17_140214_add_user_invites_table ...................... 60.98ms DONE
bookstack | 2019_12_29_120917_add_api_auth ................................ 90.78ms DONE
bookstack | 2020_08_04_111754_drop_joint_permissions_id .................. 109.84ms DONE
bookstack | 2020_08_04_131052_remove_role_name_field ...................... 18.62ms DONE
bookstack | 2020_09_19_094251_add_activity_indexes ........................ 49.30ms DONE
bookstack | 2020_09_27_210059_add_entity_soft_deletes ..................... 76.98ms DONE
bookstack | 2020_09_27_210528_create_deletions_table ...................... 92.18ms DONE
bookstack | 2020_11_07_232321_simplify_activities_table .................. 142.78ms DONE
bookstack | 2020_12_30_173528_add_owned_by_field_to_entities ............. 194.15ms DONE
bookstack | 2021_01_30_225441_add_settings_type_column .................... 17.75ms DONE
bookstack | 2021_03_08_215138_add_user_slug ............................... 51.19ms DONE
bookstack | 2021_05_15_173110_create_favourites_table ..................... 63.43ms DONE
bookstack | 2021_06_30_173111_create_mfa_values_table ..................... 64.09ms DONE
bookstack | 2021_07_03_085038_add_mfa_enforced_to_roles_table ............. 19.99ms DONE
bookstack | 2021_08_28_161743_add_export_role_permission ................... 4.67ms DONE
bookstack | 2021_09_26_044614_add_activities_ip_column .................... 20.63ms DONE
bookstack | 2021_11_26_070438_add_index_for_user_ip ....................... 27.19ms DONE
bookstack | 2021_12_07_111343_create_webhooks_table ...................... 126.26ms DONE
bookstack | 2021_12_13_152024_create_jobs_table ........................... 38.51ms DONE
bookstack | 2021_12_13_152120_create_failed_jobs_table .................... 38.97ms DONE
bookstack | 2022_01_03_154041_add_webhooks_timeout_error_columns .......... 73.69ms DONE
bookstack | 2022_04_17_101741_add_editor_change_field_and_permission ...... 24.94ms DONE
bookstack | 2022_04_25_140741_update_polymorphic_types .................... 15.16ms DONE
bookstack | 2022_07_16_170051_drop_joint_permission_type ................. 124.17ms DONE
bookstack | 2022_08_17_092941_create_references_table .................... 113.15ms DONE
bookstack | 2022_09_02_082910_fix_shelf_cover_image_types .................. 0.58ms DONE
bookstack | 2022_10_07_091406_flatten_entity_permissions_table ............ 88.86ms DONE
bookstack | 2022_10_08_104202_drop_entity_restricted_field ................ 93.09ms DONE
bookstack | 2023_01_24_104625_refactor_joint_permissions_storage ......... 142.44ms DONE
bookstack | 2023_01_28_141230_copy_color_settings_for_dark_mode ............ 0.99ms DONE
bookstack | 2023_02_20_093655_increase_attachments_path_length ............ 34.31ms DONE
bookstack | 2023_02_23_200227_add_updated_at_index_to_pages ............... 23.23ms DONE
bookstack | 2023_06_10_071823_remove_guest_user_secondary_roles ............ 1.81ms DONE
bookstack | 2023_06_25_181952_remove_bookshelf_create_entity_permissions ... 0.05ms DONE
bookstack | 2023_07_25_124945_add_receive_notifications_role_permissions ... 5.72ms DONE
bookstack | 2023_07_31_104430_create_watches_table ........................ 89.06ms DONE
bookstack | 2023_08_21_174248_increase_cache_size ......................... 28.33ms DONE
bookstack | 2023_12_02_104541_add_default_template_to_books ............... 23.82ms DONE
bookstack | 2023_12_17_140913_add_description_html_to_entities ............ 69.53ms DONE
bookstack | 2024_01_01_104542_add_default_template_to_chapters ............ 23.27ms DONE
bookstack | 2024_02_04_141358_add_views_updated_index ..................... 25.53ms DONE
bookstack | 2024_05_04_154409_rename_activity_relation_columns ............ 37.53ms DONE
bookstack | 2024_09_29_140340_ensure_editor_value_set ...................... 2.15ms DONE
bookstack | 2024_10_29_114420_add_import_role_permission ................... 6.62ms DONE
bookstack | 2024_11_02_160700_create_imports_table ........................ 38.10ms DONE
bookstack | 2024_11_27_171039_add_instance_id_setting ..................... 12.05ms DONE
bookstack | 2025_01_29_180933_create_sort_rules_table ..................... 15.04ms DONE
bookstack | 2025_02_05_150842_add_sort_rule_id_to_books ................... 22.84ms DONE
bookstack | 2025_04_18_215145_add_content_refs_and_archived_to_comments ... 64.90ms DONE
bookstack | 2025_09_02_111542_remove_unused_columns ....................... 65.37ms DONE
bookstack | 2025_09_15_132850_create_entities_table ...................... 264.90ms DONE
bookstack | 2025_09_15_134701_migrate_entity_data .......................... 9.04ms DONE
bookstack | 2025_09_15_134751_update_entity_relation_columns ............. 829.81ms DONE
bookstack | 2025_09_15_134813_drop_old_entity_tables ...................... 51.53ms DONE
bookstack | 2025_10_18_163331_clean_user_id_references ................... 470.16ms DONE
bookstack | 2025_10_22_134507_update_comments_relation_field_names ........ 38.65ms DONE
bookstack | 2025_11_23_161812_create_slug_history_table .................. 116.91ms DONE
bookstack | 2025_12_15_140219_create_mention_history_table ................ 65.12ms DONE
bookstack | 2025_12_19_103417_add_views_viewable_type_index ............... 23.60ms DONE
bookstack | 2026_04_19_141616_add_revision_view_all_permission ............. 7.79ms DONE
bookstack |
bookstack | [custom-init] No custom files found, skipping...
bookstack | [ls.io-init] done.
@@ -0,0 +1 @@
bookstack-db | 2026-09-06 11:41:37+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
@@ -0,0 +1,14 @@
[09:41:01] E3b: deploying bookstack at FROM {'bookstack': 'lscr.io/linuxserver/bookstack:26.05.2', 'bookstack-db': 'mariadb:11.6'}
[09:41:34] FROM settled=True in 20.8s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[09:41:35] bookstack: artisan create-admin rc=0 :: Admin account with email "spike-6b17d3aa@gate.invalid" successfully created!
[09:41:35] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-943f99 - Email: spike
[09:41:35] C1 (seed reads back BEFORE): True
[09:41:35] E3b: swapping to TO {'bookstack': 'lscr.io/linuxserver/bookstack:26.05.2', 'bookstack-db': 'mariadb:12.3'}
[09:41:42] TO up -d rc=0
[09:41:42] TO settled=True in 0.2s :: {"bookstack": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}, "bookstack-db": {"status": "running", "health": "healthy", "restarts": 0, "exit": 0}}
[09:41:42] migration lines observed: 1
[09:41:43] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-943f99 - Email: spike
[09:41:43] RESULT (seed reads back AFTER): True
[09:41:43] E3b: ABORT — putting the FROM images back
[09:41:50] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-943f99 - Email: spike
[09:41:50] ABORT: app came back in 0.2s; data present=True
@@ -0,0 +1,184 @@
bookstack | [migrations] started
bookstack | [migrations] 01-nginx-site-confs-default: executing...
bookstack | [migrations] 01-nginx-site-confs-default: succeeded
bookstack | [migrations] 02-default-location: executing...
bookstack | [migrations] 02-default-location: succeeded
bookstack | [migrations] done
bookstack | ───────────────────────────────────────
bookstack |
bookstack | ██╗ ███████╗██╗ ██████╗
bookstack | ██║ ██╔════╝██║██╔═══██╗
bookstack-db | 2026-09-06 11:41:36+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
bookstack-db | 2026-09-06 11:41:37+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
bookstack-db | 2026-09-06 11:41:37+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
bookstack-db | 2026-09-06 11:41:37+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
bookstack-db | 2026-09-06 11:41:37+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
bookstack-db | 2026-09-06 11:41:37 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid EeA58kUoZa1ZXw2cdj04/QXU0cI= as process 1
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-06 11:41:37 0 [Warning] mariadbd: io_uring_queue_init() failed with EPERM: sysctl kernel.io_uring_disabled has the value 2, or 1 and the user of the process is not a member of sysctl kernel.io_uring_group. (see man 2 io_uring_setup).
bookstack | ██║ ███████╗██║██║ ██║
bookstack-db | create_uring failed: falling back to libaio
bookstack | ██║ ╚════██║██║██║ ██║
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: Using Linux native AIO
bookstack | ███████╗███████║██║╚██████╔╝
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
bookstack | ╚══════╝╚══════╝╚═╝ ╚═════╝
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: End of log at LSN=2003287
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: log sequence number 2003287; transaction id 2873
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-06 11:41:37 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-06 11:41:37 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-06 11:41:37 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 11:41:37
bookstack-db | 2026-09-06 11:41:39 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
bookstack-db | 2026-09-06 11:41:39 0 [Note] Server socket created on IP: '::', port: '3306'.
bookstack-db | 2026-09-06 11:41:39 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack-db | 2026-09-06 11:41:39 0 [Note] mariadbd: ready for connections.
bookstack-db | Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
bookstack |
bookstack | Brought to you by linuxserver.io
bookstack | ───────────────────────────────────────
bookstack |
bookstack | To support the app dev(s) visit:
bookstack | Bookstack: https://www.bookstackapp.com/donate/
bookstack |
bookstack | To support LSIO projects visit:
bookstack | https://www.linuxserver.io/donate/
bookstack |
bookstack | ───────────────────────────────────────
bookstack | GID/UID
bookstack | ───────────────────────────────────────
bookstack |
bookstack | User UID: 1000
bookstack | User GID: 1000
bookstack | ───────────────────────────────────────
bookstack | Linuxserver.io version: v26.05.2-ls276
bookstack | Build-date: 2026-07-27T19:41:43+00:00
bookstack | ───────────────────────────────────────
bookstack |
bookstack | Setting resolver to 127.0.0.11
bookstack | Setting worker_processes to 4
bookstack | generating self-signed keys in /config/keys, you can replace these with your own keys if required
bookstack | .+.........+.......+.....+.+...+..............+++++++++++++++++++++++++++++++++++++++*....+++++++++++++++++++++++++++++++++++++++*.+..+.........+....+.....+....+...............+..+...+.+.....+.+......++++++
bookstack | ....+........+...+......+.+..+.+......+.....+......+....+........+.......+...+............+.....+......+...+.+.....+......+....+...........+...+.........+++++++++++++++++++++++++++++++++++++++*............+......+...+.....+......+.....................+.+........+....+.....+.......+.....+.........+.......+.....+....+..............+.+........+...+...+.+.....+.+..+.+...........+++++++++++++++++++++++++++++++++++++++*......+.+.....+.+...+..+.............+..+......+............+..................+.......+......+......+.....+....+.....+......+...+.+.....+.......+........+.+......+............+..+......+....+...+.....++++++
bookstack | -----
bookstack | Waiting for DB to be available
bookstack |
bookstack | INFO Preparing database.
bookstack |
bookstack | Creating migration table ...................................... 23.30ms DONE
bookstack |
bookstack | INFO Running migrations.
bookstack |
bookstack | 2014_10_12_000000_create_users_table ......................... 281.93ms DONE
bookstack | 2014_10_12_100000_create_password_resets_table ................ 67.95ms DONE
bookstack | 2015_07_12_114933_create_books_table .......................... 14.59ms DONE
bookstack | 2015_07_12_190027_create_pages_table .......................... 15.32ms DONE
bookstack | 2015_07_13_172121_create_images_table ......................... 13.99ms DONE
bookstack | 2015_07_27_172342_create_chapters_table ....................... 15.34ms DONE
bookstack | 2015_08_08_200447_add_users_to_entities ...................... 156.25ms DONE
bookstack | 2015_08_09_093534_create_page_revisions_table ................. 17.70ms DONE
bookstack | 2015_08_16_142133_create_activities_table ..................... 11.81ms DONE
bookstack | 2015_08_29_105422_add_roles_and_permissions .................. 325.57ms DONE
bookstack | 2015_08_30_125859_create_settings_table ....................... 12.58ms DONE
bookstack | 2015_08_31_175240_add_search_indexes ........................... 0.07ms DONE
bookstack | 2015_09_04_165821_create_social_accounts_table ................ 62.88ms DONE
bookstack | 2015_09_05_164707_add_email_confirmation_table ................ 79.14ms DONE
bookstack | 2015_11_21_145609_create_views_table .......................... 14.90ms DONE
bookstack | 2015_11_26_221857_add_entity_indexes ......................... 498.52ms DONE
bookstack | 2015_12_05_145049_fulltext_weighting ........................... 0.06ms DONE
bookstack | 2015_12_07_195238_add_image_upload_types ...................... 75.75ms DONE
bookstack | 2015_12_09_195748_add_user_avatars ............................ 19.55ms DONE
bookstack | 2016_01_11_210908_add_external_auth_to_users .................. 48.29ms DONE
bookstack | 2016_02_25_184030_add_slug_to_revisions ....................... 89.51ms DONE
bookstack | 2016_02_27_120329_update_permissions_and_roles ............... 168.57ms DONE
bookstack | 2016_02_28_084200_add_entity_access_controls ................. 268.80ms DONE
bookstack | 2016_03_09_203143_add_page_revision_types ..................... 42.57ms DONE
bookstack | 2016_03_13_082138_add_page_drafts ............................. 46.34ms DONE
bookstack | 2016_03_25_123157_add_markdown_support ........................ 37.35ms DONE
bookstack | 2016_04_09_100730_add_view_permissions_to_roles ............... 40.82ms DONE
bookstack | 2016_04_20_192649_create_joint_permissions_table ............. 302.48ms DONE
bookstack | 2016_05_06_185215_create_tags_table .......................... 112.20ms DONE
bookstack | 2016_07_07_181521_add_summary_to_page_revisions ............... 18.62ms DONE
bookstack | 2016_09_29_101449_remove_hidden_roles ......................... 74.62ms DONE
bookstack | 2016_10_09_142037_create_attachments_table .................... 66.52ms DONE
bookstack | 2017_01_21_163556_create_cache_table .......................... 41.57ms DONE
bookstack | 2017_01_21_163602_create_sessions_table ....................... 41.62ms DONE
bookstack | 2017_03_19_091553_create_search_index_table .................. 117.01ms DONE
bookstack | 2017_04_20_185112_add_revision_counts ......................... 64.95ms DONE
bookstack | 2017_07_02_152834_update_db_encoding_to_ut8mb4 ................. 0.07ms DONE
bookstack | 2017_08_01_130541_create_comments_table ....................... 86.73ms DONE
bookstack | 2017_08_29_102650_add_cover_image_display ..................... 21.13ms DONE
bookstack | 2018_07_15_173514_add_role_external_auth_id ................... 47.09ms DONE
bookstack | 2018_08_04_115700_create_bookshelves_table ................... 389.10ms DONE
bookstack | 2019_07_07_112515_add_template_support ........................ 48.36ms DONE
bookstack | 2019_08_17_140214_add_user_invites_table ...................... 60.98ms DONE
bookstack | 2019_12_29_120917_add_api_auth ................................ 90.78ms DONE
bookstack | 2020_08_04_111754_drop_joint_permissions_id .................. 109.84ms DONE
bookstack | 2020_08_04_131052_remove_role_name_field ...................... 18.62ms DONE
bookstack | 2020_09_19_094251_add_activity_indexes ........................ 49.30ms DONE
bookstack | 2020_09_27_210059_add_entity_soft_deletes ..................... 76.98ms DONE
bookstack | 2020_09_27_210528_create_deletions_table ...................... 92.18ms DONE
bookstack | 2020_11_07_232321_simplify_activities_table .................. 142.78ms DONE
bookstack | 2020_12_30_173528_add_owned_by_field_to_entities ............. 194.15ms DONE
bookstack | 2021_01_30_225441_add_settings_type_column .................... 17.75ms DONE
bookstack | 2021_03_08_215138_add_user_slug ............................... 51.19ms DONE
bookstack | 2021_05_15_173110_create_favourites_table ..................... 63.43ms DONE
bookstack | 2021_06_30_173111_create_mfa_values_table ..................... 64.09ms DONE
bookstack | 2021_07_03_085038_add_mfa_enforced_to_roles_table ............. 19.99ms DONE
bookstack | 2021_08_28_161743_add_export_role_permission ................... 4.67ms DONE
bookstack | 2021_09_26_044614_add_activities_ip_column .................... 20.63ms DONE
bookstack | 2021_11_26_070438_add_index_for_user_ip ....................... 27.19ms DONE
bookstack | 2021_12_07_111343_create_webhooks_table ...................... 126.26ms DONE
bookstack | 2021_12_13_152024_create_jobs_table ........................... 38.51ms DONE
bookstack | 2021_12_13_152120_create_failed_jobs_table .................... 38.97ms DONE
bookstack | 2022_01_03_154041_add_webhooks_timeout_error_columns .......... 73.69ms DONE
bookstack | 2022_04_17_101741_add_editor_change_field_and_permission ...... 24.94ms DONE
bookstack | 2022_04_25_140741_update_polymorphic_types .................... 15.16ms DONE
bookstack | 2022_07_16_170051_drop_joint_permission_type ................. 124.17ms DONE
bookstack | 2022_08_17_092941_create_references_table .................... 113.15ms DONE
bookstack | 2022_09_02_082910_fix_shelf_cover_image_types .................. 0.58ms DONE
bookstack | 2022_10_07_091406_flatten_entity_permissions_table ............ 88.86ms DONE
bookstack | 2022_10_08_104202_drop_entity_restricted_field ................ 93.09ms DONE
bookstack | 2023_01_24_104625_refactor_joint_permissions_storage ......... 142.44ms DONE
bookstack | 2023_01_28_141230_copy_color_settings_for_dark_mode ............ 0.99ms DONE
bookstack | 2023_02_20_093655_increase_attachments_path_length ............ 34.31ms DONE
bookstack | 2023_02_23_200227_add_updated_at_index_to_pages ............... 23.23ms DONE
bookstack | 2023_06_10_071823_remove_guest_user_secondary_roles ............ 1.81ms DONE
bookstack | 2023_06_25_181952_remove_bookshelf_create_entity_permissions ... 0.05ms DONE
bookstack | 2023_07_25_124945_add_receive_notifications_role_permissions ... 5.72ms DONE
bookstack | 2023_07_31_104430_create_watches_table ........................ 89.06ms DONE
bookstack | 2023_08_21_174248_increase_cache_size ......................... 28.33ms DONE
bookstack | 2023_12_02_104541_add_default_template_to_books ............... 23.82ms DONE
bookstack | 2023_12_17_140913_add_description_html_to_entities ............ 69.53ms DONE
bookstack | 2024_01_01_104542_add_default_template_to_chapters ............ 23.27ms DONE
bookstack | 2024_02_04_141358_add_views_updated_index ..................... 25.53ms DONE
bookstack | 2024_05_04_154409_rename_activity_relation_columns ............ 37.53ms DONE
bookstack | 2024_09_29_140340_ensure_editor_value_set ...................... 2.15ms DONE
bookstack | 2024_10_29_114420_add_import_role_permission ................... 6.62ms DONE
bookstack | 2024_11_02_160700_create_imports_table ........................ 38.10ms DONE
bookstack | 2024_11_27_171039_add_instance_id_setting ..................... 12.05ms DONE
bookstack | 2025_01_29_180933_create_sort_rules_table ..................... 15.04ms DONE
bookstack | 2025_02_05_150842_add_sort_rule_id_to_books ................... 22.84ms DONE
bookstack | 2025_04_18_215145_add_content_refs_and_archived_to_comments ... 64.90ms DONE
bookstack | 2025_09_02_111542_remove_unused_columns ....................... 65.37ms DONE
bookstack | 2025_09_15_132850_create_entities_table ...................... 264.90ms DONE
bookstack | 2025_09_15_134701_migrate_entity_data .......................... 9.04ms DONE
bookstack | 2025_09_15_134751_update_entity_relation_columns ............. 829.81ms DONE
bookstack | 2025_09_15_134813_drop_old_entity_tables ...................... 51.53ms DONE
bookstack | 2025_10_18_163331_clean_user_id_references ................... 470.16ms DONE
bookstack | 2025_10_22_134507_update_comments_relation_field_names ........ 38.65ms DONE
bookstack | 2025_11_23_161812_create_slug_history_table .................. 116.91ms DONE
bookstack | 2025_12_15_140219_create_mention_history_table ................ 65.12ms DONE
bookstack | 2025_12_19_103417_add_views_viewable_type_index ............... 23.60ms DONE
bookstack | 2026_04_19_141616_add_revision_view_all_permission ............. 7.79ms DONE
bookstack |
bookstack | [custom-init] No custom files found, skipping...
bookstack | [ls.io-init] done.
@@ -0,0 +1,14 @@
{
"bookstack": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"bookstack-db": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
}
@@ -0,0 +1,25 @@
{
"harness_version": 1,
"edge": "E3b",
"app": "bookstack",
"note": "AUTHORED step: engine half alone",
"from": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:11.6"
},
"to": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:12.3"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "bookstack-db | 2026-09-06 11:41:37+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting",
"abort": "starts-and-serves",
"abort_detail": null,
"duration_s": 0.2,
"measured_at": "2026-09-06T09:41:50Z",
"evidence": "evidence/E3b",
"total_s": 48.8
}
@@ -0,0 +1,77 @@
[
{
"harness_version": 1,
"edge": "E3",
"app": "bookstack",
"note": "catalog transition 0b73e5e: app AND engine together",
"from": {
"bookstack": "lscr.io/linuxserver/bookstack:25.02.2",
"bookstack-db": "mariadb:11.6"
},
"to": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:12.3"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "bookstack-db | 2026-09-06 11:38:57+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting",
"abort": "starts-and-serves",
"abort_detail": null,
"duration_s": 15.7,
"measured_at": "2026-09-06T09:39:41Z",
"evidence": "evidence/E3",
"total_s": 77.5
},
{
"harness_version": 1,
"edge": "E3a",
"app": "bookstack",
"note": "AUTHORED step (the catalog never carried it): app half alone",
"from": {
"bookstack": "lscr.io/linuxserver/bookstack:25.02.2",
"bookstack-db": "mariadb:11.6"
},
"to": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:11.6"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "bookstack | [migrations] started",
"abort": "starts-and-serves",
"abort_detail": null,
"duration_s": 15.7,
"measured_at": "2026-09-06T09:40:57Z",
"evidence": "evidence/E3a",
"total_s": 71.8
},
{
"harness_version": 1,
"edge": "E3b",
"app": "bookstack",
"note": "AUTHORED step: engine half alone",
"from": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:11.6"
},
"to": {
"bookstack": "lscr.io/linuxserver/bookstack:26.05.2",
"bookstack-db": "mariadb:12.3"
},
"verdict": "proven",
"seed_read_before": true,
"seed_read_after": true,
"healthy_after": true,
"migration_observed": "bookstack-db | 2026-09-06 11:41:37+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting",
"abort": "starts-and-serves",
"abort_detail": null,
"duration_s": 0.2,
"measured_at": "2026-09-06T09:41:50Z",
"evidence": "evidence/E3b",
"total_s": 48.8
}
]