SPIKE R-459: the skipped MariaDB conversion is stable, and the trade it implied does not exist
gates / gates (push) Successful in 20s

Outcome A, qualified. Not B and not C.

It does not degrade: 5 of 5 restarts of 12.3 on an 11.6 datadir, readback passed
every time, mariadb_upgrade_info unchanged, the entrypoint line never escalated
past [Note]. It also never heals - the engine answers 'Major version upgrade
detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!' on every start
and will forever.

The trade R-459 was expected to produce is not real. Converting properly SUCCEEDS
across the multi-major jump, takes 7 seconds, backs up the system database
unasked - and putting 11.6 back afterwards STILL starts and serves the data. So
the operator is being handed a cheap correction, not a choice between a correct
engine and a reversible one.

The exit-code polarity was measured rather than read: 0 means the upgrade IS
needed, 1 means it is not. Assuming either the flag name or the polarity would
have inverted the headline. And run without credentials the same command returns
a confident-looking FATAL ERROR that is an auth failure.

R-464: after converting and going back, the entrypoint prints 'MariaDB upgrade
not required' on a state the same engine calls an unsupported downgrade. The
obvious cheap instrument for R-459 would have been to grep for that line, and it
would have reported fine for the broken case.

R-463: the PostgreSQL analogue, deliberately NOT measured here. 11 templates, 8
on postgres:16-alpine, register grep for pg_upgrade returns zero. The two engines
fail in OPPOSITE directions - MariaDB skips quietly, Postgres refuses to start -
so that one cannot hide; it presents as eight apps down at once.

No template changed. Teardown all three layers, hub checked rather than asserted,
local-lvm 30.53 percent before and after.
This commit is contained in:
2026-09-06 17:42:19 +02:00
parent a1a6c73fe1
commit d6837d98ee
26 changed files with 1551 additions and 129 deletions
@@ -299,6 +299,36 @@ measure it" and "it does not work" are different facts, and only one of them is
**`migration_observed` is a quoted line, never an inference from timing** — the value of both the
Nextcloud and the docmost findings was the exact sentence the app printed.
### Database engines under an upgrade — MEASURED 2026-09-06
**The arc's standing rule that an engine change gets its OWN edge now has measured evidence behind
it**, and the evidence is stronger than the rule's original argument. The rule was justified by
*"two migrations behind one edge is an unreadable failure when it breaks"* — a readability argument.
What was measured is that **an engine change can be applied and silently NOT happen**, which the
app-half edge cannot produce and which no amount of readability would have surfaced:
- `SPIKE-upgrade-test-2026-09-06.md` §4 — MariaDB 12.3 starts on an 11.6 datadir, logs that the
conversion it requires was **skipped**, and serves. **Assigned to the engine half by decomposition:**
the app half alone produces no such line.
- `SPIKE-r459-mariadb-upgrade-2026-09-06.md` — it is **stable but never self-resolving** (5 of 5
restarts, no degradation, and the engine says `Check required!` every time, forever). Converting
properly **succeeds**, costs **7 s**, takes its own system-database backup, and **does not** cost the
ability to abort. **The trade that was expected here does not exist.**
**Two rules for anything this arc builds around a database engine:**
1. **Ask the engine, not the log.** MariaDB's entrypoint prints `MariaDB upgrade not required` on an
unsupported **downgrade**; `mariadb-upgrade --check-if-upgrade-is-needed` names it exactly
(**R-464**). A cheap instrument built on the log line would report "fine" for the broken case.
2. **The two engines fail in opposite directions, so one check will not do.** MariaDB starts anyway
and skips quietly; **PostgreSQL refuses to start** on a datadir from an older major, and the image
performs no `pg_upgrade`. Eleven templates carry PostgreSQL and **eight sit on `postgres:16-alpine`**
(**R-463**).
**And an engine-state field belongs BESIDE a verdict, never inside it.** `upgrade-test.py` reports
`engine_state_after` next to `verdict`, because an unconverted datadir is not *known* to be a failure
and a verdict that said so would encode an unproven judgement.
**The rule slice 6 inherits, recorded now while it is cheap:** an engine change gets its own edge,
never bundled with an app version bump. `bookstack` moved the application *and* MariaDB 11.6 → 12.3 in
one commit (`0b73e5e`); that is two migrations behind one edge, and an unreadable failure when it
@@ -0,0 +1,213 @@
# SPIKE — is a skipped MariaDB upgrade harmless, and what does fixing it cost? (2026-09-06)
> **THE ANSWER IN ONE SENTENCE: the skipped conversion is STABLE but never self-resolving — the engine
> says a check is required every single time it starts and will go on saying it forever — and fixing
> it costs SEVEN SECONDS and does NOT cost the ability to go back, which is the trade this task was
> commissioned to price and which turns out not to exist.**
>
> **OUTCOME A, qualified.** Not **B**: converting did **not** kill the abort. Not **C**: the conversion
> **succeeded** across the multi-major jump.
>
> **AND ONE NEW INSTANCE OF THIS PROJECT'S MOST-REPEATED CLASS.** After converting and going back,
> MariaDB's entrypoint prints **`MariaDB upgrade not required`** — reassuring, and it is *not* a
> statement that the state is sound. Asked properly, the same engine answers **`FATAL ERROR: Version
> mismatch (12.3.3-MariaDB -> 11.6.2-MariaDB): Trying to downgrade from a higher to lower version is
> not supported!`** **R-464.**
**Class: spike.** No template changed, no controller code, no customer box. A throwaway LXC (9402 on
`demo-hp`), destroyed at the end. **Four apps carry MariaDB — bookstack, kimai, nextcloud, romm — and
none of them was touched.**
---
## 1. What was already established, and is not re-derived here
R-459 (2026-09-06): on the catalog's own transition `0b73e5e`, MariaDB 12.3 starting on an 11.6
datadir logs that the conversion it requires is **skipped**, because
`templates/bookstack/docker-compose.yml` sets no `MARIADB_*` env. The cause was assigned by
decomposition — the app half alone produces no such line. **R-459 explicitly did not establish whether
that ever breaks.** That is this document.
## 2. Observable 1 — `mariadb_upgrade_info`, at all four moments, verbatim
The file in the datadir recording the version that last completed `mariadb-upgrade`.
| moment | state | file contents, **verbatim** |
|---|---|---|
| **1** | fresh 11.6 datadir | `11.6.2-MariaDB` (14 bytes) |
| **2** | 12.3 has started on it and logged the skip | **`11.6.2-MariaDB` — unchanged** |
| **3** | after **5** restarts of 12.3 on it | **`11.6.2-MariaDB` — still unchanged** |
| **4** | comparison arm, after a conversion actually ran | **`12.3.3-MariaDB`** |
**The engine serving at moment 2 and 3 was `12.3.3-MariaDB`** (`mariadb --version`), so the mismatch
is between what is running and what the datadir records — not an artefact of the wrong container.
## 3. Observable 2 — the engine's own verdict, and its exit-code semantics MEASURED not assumed
The check mode was found in the image rather than guessed: `--check-if-upgrade-is-needed`.
**On the unconverted datadir:**
```
$ mariadb-upgrade --check-if-upgrade-is-needed --user=root --password=$MYSQL_ROOT_PASSWORD
Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!
[exit=0]
```
**After the conversion (comparison arm):**
```
This installation of MariaDB is already upgraded to 12.3.3-MariaDB.
There is no need to run mariadb-upgrade again.
[exit=1]
```
**Those two runs establish the exit-code semantics between them — 0 means the upgrade IS needed, 1
means it is not.** That is a measured control rather than a reading of the documentation, and it
matters because the polarity is the opposite of the usual convention.
**A false start worth recording:** run without credentials the command answers
`ERROR 1045 (28000): Access denied … FATAL ERROR: Upgrade failed` with exit 1 — which looks exactly
like a verdict and is an authentication failure. **Taken at face value it would have produced the
wrong answer with the right-looking exit code.**
## 4. Observable 3 — it does not degrade. 5 of 5.
R-459 suggested watching for the Note to become a Warning or an Error. **It never did.**
| restart | settled | readback | `mariadb_upgrade_info` | engine check | entrypoint line |
|---|---|---|---|---|---|
| 1 / 5 | yes | **pass** | `11.6.2-MariaDB` | `Check required!` | `[Note]` unchanged |
| 2 / 5 | yes | **pass** | `11.6.2-MariaDB` | `Check required!` | `[Note]` unchanged |
| 3 / 5 | yes | **pass** | `11.6.2-MariaDB` | `Check required!` | `[Note]` unchanged |
| 4 / 5 | yes | **pass** | `11.6.2-MariaDB` | `Check required!` | `[Note]` unchanged |
| 5 / 5 | yes | **pass** | `11.6.2-MariaDB` | `Check required!` | `[Note]` unchanged |
**5 of 5 restarts, readback passed each time.** The severity never escalated and the record never
moved.
**So the state is STABLE — and permanently incomplete.** It does not decay, and it does not heal.
**"It has not broken" and "it is fine" remain different claims**, and §8 says exactly which one this
run supports.
## 5. Observable 4 — the comparison arm, and the trade that turned out not to exist
Same edge, in a **scratch copy of the template inside the guest** with `MARIADB_AUTO_UPGRADE=1`.
**Nothing with `MARIADB_` in it was committed.**
### 5.1 The conversion SUCCEEDS — so this is not Outcome C
MariaDB's own guidance is one major at a time and our jump crosses several, so failure was a live
possibility. It did not fail. The entrypoint, verbatim and in order:
```
[Note] [Entrypoint]: Starting temporary server
[Note] [Entrypoint]: Temporary server started.
[Note] [Entrypoint]: Backing up system database to system_mysql_backup_11.6.2-MariaDB.sql.zst
[Note] [Entrypoint]: Backing up complete
[Note] [Entrypoint]: Starting mariadb-upgrade
[Note] [Entrypoint]: Finished mariadb-upgrade
[Note] [Entrypoint]: Stopping temporary server
```
**It takes its own backup first**, unasked: `system_mysql_backup_11.6.2-MariaDB.sql.zst`, 622 437
bytes, left in the datadir.
### 5.2 What it costs — 7 seconds
| | |
|---|---|
| `Starting mariadb-upgrade` → `Finished mariadb-upgrade` | **17:33:24 → 17:33:31 = 7 s** |
| whole TO step, wall clock, **with** conversion | **35.9 s** |
| whole TO step **without** it (arm 1) | ~10.5 s settle |
| net cost | **≈ 25 s of extra startup, once** |
**MEASURED ON A NEARLY EMPTY DATABASE, and that qualification is load-bearing.** `mariadb-upgrade`
works over system tables and table metadata rather than row data, so it should scale with the number
of tables rather than their size — **but this run did not measure that**, and 7 s must not be quoted
as a fleet figure.
### 5.3 THE DECISION-RELEVANT FACT: converting does NOT kill the abort
This is what the arm existed for. R-459's sharpest observation was that E3's abort "worked" only
because nothing had been converted — so the expectation was that a real conversion would end it.
**It did not.** With the datadir converted to `12.3.3-MariaDB`, putting MariaDB **11.6** back:
```
abort: starts-and-serves settled in 10.5 s readback: PASS
```
and it survived a further restart (`Up 25 seconds (healthy)`, `mariadb_upgrade_info: 12.3.3-MariaDB`).
**So the trade the operator was to be asked to rule on — a correct engine you cannot go back from,
versus a possibly-incorrect one you can — DOES NOT EXIST as stated.** You can have both.
### 5.4 …but the engine says that going back is unsupported, and the entrypoint hides it
**R-464, and it is the same class this whole arc keeps meeting.** After the abort:
| who is asked | what it says |
|---|---|
| **the entrypoint**, on every start | `[Note] [Entrypoint]: MariaDB upgrade not required` |
| **`mariadb-upgrade --check-if-upgrade-is-needed`** | `FATAL ERROR: Version mismatch (12.3.3-MariaDB -> 11.6.2-MariaDB): Trying to downgrade from a higher to lower version is not supported!` |
The entrypoint compares the datadir's recorded version against its own and concludes there is nothing
to *do*. **That is true, and it is not a statement that the state is sound.** Anyone building a health
signal on that line would build it on a sentence that is emitted just as cheerfully for an unsupported
downgrade.
**So "the abort works" is an OBSERVATION that it started and served, not a claim that the resulting
datadir is sound.** It was exercised for one restart cycle with one seeded record. Saying more than
that would repeat the mistake this document exists to correct.
## 6. Which outcome the evidence assigns
| | | |
|---|---|---|
| **A** | the unconverted datadir is benign | **THIS ONE, qualified.** Nothing degraded over 5 of 5 restarts. **But the engine says a check is required every time**, so "benign" holds only in the sense measured: no degradation over restarts, with one seeded record, over minutes. |
| **B** | converting works and the abort dies with it | **NO.** Converting works; the abort still starts and serves (§5.3). The trade does not exist. |
| **C** | converting fails, the jump is too big | **NO.** It succeeded, in 7 s, taking its own backup first. |
**What is still NOT established, and must not be read past:** whether any specific MariaDB *feature*
misbehaves on unconverted system tables. This run exercised BookStack's normal read/write path only.
Establishing that is a different piece of work and is not smuggled in here.
## 7. The four apps, and why three of them were left alone
| app | engine pin | has it moved a major? |
|---|---|---|
| **bookstack** | `mariadb:12.3` | **yes** — `11.6 → 12.3`, the edge measured here |
| kimai | `mariadb:11.6` | no |
| nextcloud | `mariadb:11.6` | no |
| romm | `mariadb:11.4` | no |
**Only bookstack has an edge to measure.** The other three carry the same engine and the same absent
`MARIADB_*` env, so **they will land in exactly this state the day their pin moves a major** — which
is the reason this is a fleet decision and not one template's problem. Naming them is the right
treatment; measuring them today would measure nothing.
## 8. Cost of the run, and teardown — three layers
Guest **9402 `r459-spike`**, Debian 13, disk on the NVMe dir storage **at its root**, deliberately off
`local-lvm`.
| layer | result |
|---|---|
| **1 — machine** | guest **destroyed**; `pct list` shows only 9201. `scratch-r459` storage **removed**. Downloaded LXC template deleted. |
| **2 — host** | **`local-lvm` 30.53 % before and after — never touched.** `local` 19 630 088 → 19 631 740 KiB (+1.6 MB). `pct fstrim 9402` before destroy: **35.9 GiB trimmed**. Guest peak: 3.2 GB, of which 2.10 GB images. |
| **3 — hub** | **Checked, not asserted:** `/hosts` lists exactly `demo-felhom-8363b5` and `demo-hp-bb76ea`; **0 customers.** This run created no customer, no appliance and no host record. |
Evidence was copied off **after each arm**, before any teardown:
`documentation/audits/r459-spike-2026-09-06/`.
## 9. Observations — noticed, documented, not acted on
1. **`mariadb-upgrade` without credentials returns a confident-looking failure that is an auth error.**
Recorded in §3 because it nearly produced the wrong answer with a plausible exit code.
2. **The conversion leaves its own backup in the datadir** (`system_mysql_backup_*.sql.zst`, 622 KB
here). Harmless, and it will be picked up by any backup that copies the volume — worth knowing
before someone reports an unexplained file.
3. **Three shells deep (`ssh` → `pct exec` → `bash` → heredoc), Python heredocs are not survivable.**
Two scripts had to be written locally and pushed as files. Not a finding about the product; a
working note that will save the next session ten minutes.
@@ -0,0 +1,6 @@
2026-09-06 17:28:52+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
2026-09-06 17:30:23+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
2026-09-06 17:30:39+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
2026-09-06 17:30:55+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
2026-09-06 17:31:10+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
2026-09-06 17:31:26+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
@@ -0,0 +1,228 @@
2026-09-06 17:28:52+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
2026-09-06 17:28:52+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
2026-09-06 17:28:52+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-09-06 17:28:52+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
2026-09-06 17:28:52+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
2026-09-06 17:28:52 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid YU5V3o/do3XNBiwYeImQupAmW7Q= as process 1
2026-09-06 17:28:52 0 [Note] InnoDB: Compressed tables use zlib 1.3
2026-09-06 17:28:52 0 [Note] InnoDB: Number of transaction pools: 1
2026-09-06 17:28:52 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2026-09-06 17:28:52 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).
create_uring failed: falling back to libaio
2026-09-06 17:28:52 0 [Note] InnoDB: Using Linux native AIO
2026-09-06 17:28:52 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
2026-09-06 17:28:52 0 [Note] InnoDB: Completed initialization of buffer pool
2026-09-06 17:28:52 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2026-09-06 17:28:52 0 [Note] InnoDB: End of log at LSN=1160730
2026-09-06 17:28:52 0 [Note] InnoDB: Opened 3 undo tablespaces
2026-09-06 17:28:52 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
2026-09-06 17:28:52 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2026-09-06 17:28:52 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2026-09-06 17:28:52 0 [Note] InnoDB: log sequence number 1160730; transaction id 2278
2026-09-06 17:28:52 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2026-09-06 17:28:52 0 [Note] Plugin 'FEEDBACK' is disabled.
2026-09-06 17:28:52 0 [Note] Plugin 'wsrep-provider' is disabled.
2026-09-06 17:28:52 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:28:52
2026-09-06 17:28:53 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
2026-09-06 17:28:53 0 [Note] Server socket created on IP: '::', port: '3306'.
2026-09-06 17:28:53 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
2026-09-06 17:28:53 0 [Note] mariadbd: ready for connections.
Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
2026-09-06 17:28:59 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
2026-09-06 17:29:26 12 [Warning] Access denied for user 'root'@'localhost' (using password: NO)
2026-09-06 17:29:27 13 [Warning] Access denied for user 'root'@'localhost' (using password: NO)
2026-09-06 17:30:22 0 [Note] mariadbd (initiated by: unknown): Normal shutdown
2026-09-06 17:30:22 0 [Note] InnoDB: FTS optimize thread exiting.
2026-09-06 17:30:22 0 [Note] InnoDB: Starting shutdown...
2026-09-06 17:30:22 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
2026-09-06 17:30:22 0 [Note] InnoDB: Buffer pool(s) dump completed at 260906 17:30:22
2026-09-06 17:30:22 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
2026-09-06 17:30:22 0 [Note] Shutdown completed; log sequence number 2305390; transaction id 2925
2026-09-06 17:30:22 0 [Note] mariadbd: Shutdown complete
2026-09-06 17:30:22+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
2026-09-06 17:30:23+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
2026-09-06 17:30:23+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-09-06 17:30:23+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
2026-09-06 17:30:23+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
2026-09-06 17:30:23 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid jXEYCniDCNP3oAFD2yLxNlKUdsc= as process 1
2026-09-06 17:30:23 0 [Note] InnoDB: Compressed tables use zlib 1.3
2026-09-06 17:30:23 0 [Note] InnoDB: Number of transaction pools: 1
2026-09-06 17:30:23 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2026-09-06 17:30:23 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).
create_uring failed: falling back to libaio
2026-09-06 17:30:23 0 [Note] InnoDB: Using Linux native AIO
2026-09-06 17:30:23 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
2026-09-06 17:30:23 0 [Note] InnoDB: Completed initialization of buffer pool
2026-09-06 17:30:23 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2026-09-06 17:30:23 0 [Note] InnoDB: End of log at LSN=2305390
2026-09-06 17:30:23 0 [Note] InnoDB: Opened 3 undo tablespaces
2026-09-06 17:30:23 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
2026-09-06 17:30:23 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2026-09-06 17:30:23 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2026-09-06 17:30:23 0 [Note] InnoDB: log sequence number 2305390; transaction id 2925
2026-09-06 17:30:23 0 [Note] Plugin 'FEEDBACK' is disabled.
2026-09-06 17:30:23 0 [Note] Plugin 'wsrep-provider' is disabled.
2026-09-06 17:30:23 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2026-09-06 17:30:23 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:30:23
2026-09-06 17:30:25 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
2026-09-06 17:30:25 0 [Note] Server socket created on IP: '::', port: '3306'.
2026-09-06 17:30:25 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
2026-09-06 17:30:25 0 [Note] mariadbd: ready for connections.
Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
2026-09-06 17:30:27 3 [Warning] Aborted connection 3 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
2026-09-06 17:30:38 0 [Note] mariadbd (initiated by: unknown): Normal shutdown
2026-09-06 17:30:38 0 [Note] InnoDB: FTS optimize thread exiting.
2026-09-06 17:30:38 0 [Note] InnoDB: Starting shutdown...
2026-09-06 17:30:38 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
2026-09-06 17:30:38 0 [Note] InnoDB: Buffer pool(s) dump completed at 260906 17:30:38
2026-09-06 17:30:38 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
2026-09-06 17:30:38 0 [Note] Shutdown completed; log sequence number 2305390; transaction id 2929
2026-09-06 17:30:38 0 [Note] mariadbd: Shutdown complete
2026-09-06 17:30:38+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
2026-09-06 17:30:38+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
2026-09-06 17:30:38+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-09-06 17:30:38+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
2026-09-06 17:30:39+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
2026-09-06 17:30:39 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid E8rI65F86gWbsjfetxKxWEIBksE= as process 1
2026-09-06 17:30:39 0 [Note] InnoDB: Compressed tables use zlib 1.3
2026-09-06 17:30:39 0 [Note] InnoDB: Number of transaction pools: 1
2026-09-06 17:30:39 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2026-09-06 17:30:39 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).
create_uring failed: falling back to libaio
2026-09-06 17:30:39 0 [Note] InnoDB: Using Linux native AIO
2026-09-06 17:30:39 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
2026-09-06 17:30:39 0 [Note] InnoDB: Completed initialization of buffer pool
2026-09-06 17:30:39 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2026-09-06 17:30:39 0 [Note] InnoDB: End of log at LSN=2305390
2026-09-06 17:30:39 0 [Note] InnoDB: Opened 3 undo tablespaces
2026-09-06 17:30:39 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
2026-09-06 17:30:39 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2026-09-06 17:30:39 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2026-09-06 17:30:39 0 [Note] InnoDB: log sequence number 2305390; transaction id 2925
2026-09-06 17:30:39 0 [Note] Plugin 'FEEDBACK' is disabled.
2026-09-06 17:30:39 0 [Note] Plugin 'wsrep-provider' is disabled.
2026-09-06 17:30:39 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2026-09-06 17:30:39 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:30:39
2026-09-06 17:30:40 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
2026-09-06 17:30:40 0 [Note] Server socket created on IP: '::', port: '3306'.
2026-09-06 17:30:40 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
2026-09-06 17:30:40 0 [Note] mariadbd: ready for connections.
Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
2026-09-06 17:30:43 3 [Warning] Aborted connection 3 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
2026-09-06 17:30:54 0 [Note] mariadbd (initiated by: unknown): Normal shutdown
2026-09-06 17:30:54 0 [Note] InnoDB: FTS optimize thread exiting.
2026-09-06 17:30:54 0 [Note] InnoDB: Starting shutdown...
2026-09-06 17:30:54 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
2026-09-06 17:30:54 0 [Note] InnoDB: Buffer pool(s) dump completed at 260906 17:30:54
2026-09-06 17:30:54 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
2026-09-06 17:30:54 0 [Note] Shutdown completed; log sequence number 2305390; transaction id 2929
2026-09-06 17:30:54 0 [Note] mariadbd: Shutdown complete
2026-09-06 17:30:54+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
2026-09-06 17:30:54+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
2026-09-06 17:30:54+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-09-06 17:30:54+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
2026-09-06 17:30:55+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
2026-09-06 17:30:55 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid Ip5h6v1FfE1Peq4G2pRipFcn+u4= as process 1
2026-09-06 17:30:55 0 [Note] InnoDB: Compressed tables use zlib 1.3
2026-09-06 17:30:55 0 [Note] InnoDB: Number of transaction pools: 1
2026-09-06 17:30:55 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2026-09-06 17:30:55 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).
create_uring failed: falling back to libaio
2026-09-06 17:30:55 0 [Note] InnoDB: Using Linux native AIO
2026-09-06 17:30:55 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
2026-09-06 17:30:55 0 [Note] InnoDB: Completed initialization of buffer pool
2026-09-06 17:30:55 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2026-09-06 17:30:55 0 [Note] InnoDB: End of log at LSN=2305390
2026-09-06 17:30:55 0 [Note] InnoDB: Opened 3 undo tablespaces
2026-09-06 17:30:55 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
2026-09-06 17:30:55 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2026-09-06 17:30:55 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2026-09-06 17:30:55 0 [Note] InnoDB: log sequence number 2305390; transaction id 2925
2026-09-06 17:30:55 0 [Note] Plugin 'FEEDBACK' is disabled.
2026-09-06 17:30:55 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2026-09-06 17:30:55 0 [Note] Plugin 'wsrep-provider' is disabled.
2026-09-06 17:30:55 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:30:55
2026-09-06 17:30:56 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
2026-09-06 17:30:56 0 [Note] Server socket created on IP: '::', port: '3306'.
2026-09-06 17:30:56 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
2026-09-06 17:30:56 0 [Note] mariadbd: ready for connections.
Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
2026-09-06 17:30:59 3 [Warning] Aborted connection 3 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
2026-09-06 17:31:09 0 [Note] mariadbd (initiated by: unknown): Normal shutdown
2026-09-06 17:31:09 0 [Note] InnoDB: FTS optimize thread exiting.
2026-09-06 17:31:09 0 [Note] InnoDB: Starting shutdown...
2026-09-06 17:31:09 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
2026-09-06 17:31:09 0 [Note] InnoDB: Buffer pool(s) dump completed at 260906 17:31:09
2026-09-06 17:31:09 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
2026-09-06 17:31:09 0 [Note] Shutdown completed; log sequence number 2305390; transaction id 2929
2026-09-06 17:31:09 0 [Note] mariadbd: Shutdown complete
2026-09-06 17:31:09+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
2026-09-06 17:31:10+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
2026-09-06 17:31:10+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-09-06 17:31:10+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
2026-09-06 17:31:10+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
2026-09-06 17:31:10 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid QrjPYeTVSHDGv0li4qe75MTQW2M= as process 1
2026-09-06 17:31:10 0 [Note] InnoDB: Compressed tables use zlib 1.3
2026-09-06 17:31:10 0 [Note] InnoDB: Number of transaction pools: 1
2026-09-06 17:31:10 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2026-09-06 17:31:10 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).
create_uring failed: falling back to libaio
2026-09-06 17:31:10 0 [Note] InnoDB: Using Linux native AIO
2026-09-06 17:31:10 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
2026-09-06 17:31:10 0 [Note] InnoDB: Completed initialization of buffer pool
2026-09-06 17:31:10 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2026-09-06 17:31:10 0 [Note] InnoDB: End of log at LSN=2305390
2026-09-06 17:31:10 0 [Note] InnoDB: Opened 3 undo tablespaces
2026-09-06 17:31:10 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
2026-09-06 17:31:10 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2026-09-06 17:31:10 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2026-09-06 17:31:10 0 [Note] InnoDB: log sequence number 2305390; transaction id 2925
2026-09-06 17:31:10 0 [Note] Plugin 'FEEDBACK' is disabled.
2026-09-06 17:31:10 0 [Note] Plugin 'wsrep-provider' is disabled.
2026-09-06 17:31:10 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2026-09-06 17:31:10 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:31:10
2026-09-06 17:31:11 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
2026-09-06 17:31:11 0 [Note] Server socket created on IP: '::', port: '3306'.
2026-09-06 17:31:11 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
2026-09-06 17:31:11 0 [Note] mariadbd: ready for connections.
Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
2026-09-06 17:31:15 3 [Warning] Aborted connection 3 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
2026-09-06 17:31:25 0 [Note] mariadbd (initiated by: unknown): Normal shutdown
2026-09-06 17:31:25 0 [Note] InnoDB: FTS optimize thread exiting.
2026-09-06 17:31:25 0 [Note] InnoDB: Starting shutdown...
2026-09-06 17:31:25 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
2026-09-06 17:31:25 0 [Note] InnoDB: Buffer pool(s) dump completed at 260906 17:31:25
2026-09-06 17:31:25 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
2026-09-06 17:31:25 0 [Note] Shutdown completed; log sequence number 2305390; transaction id 2929
2026-09-06 17:31:25 0 [Note] mariadbd: Shutdown complete
2026-09-06 17:31:26+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
2026-09-06 17:31:26+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
2026-09-06 17:31:26+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-09-06 17:31:26+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
2026-09-06 17:31:26+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
2026-09-06 17:31:26 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid XHeO0rVqyaJY851XG3yp+p/UGuw= as process 1
2026-09-06 17:31:26 0 [Note] InnoDB: Compressed tables use zlib 1.3
2026-09-06 17:31:26 0 [Note] InnoDB: Number of transaction pools: 1
2026-09-06 17:31:26 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2026-09-06 17:31:26 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).
create_uring failed: falling back to libaio
2026-09-06 17:31:26 0 [Note] InnoDB: Using Linux native AIO
2026-09-06 17:31:26 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
2026-09-06 17:31:26 0 [Note] InnoDB: Completed initialization of buffer pool
2026-09-06 17:31:26 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2026-09-06 17:31:26 0 [Note] InnoDB: End of log at LSN=2305390
2026-09-06 17:31:26 0 [Note] InnoDB: Opened 3 undo tablespaces
2026-09-06 17:31:26 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
2026-09-06 17:31:26 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2026-09-06 17:31:26 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2026-09-06 17:31:26 0 [Note] InnoDB: log sequence number 2305390; transaction id 2925
2026-09-06 17:31:26 0 [Note] Plugin 'FEEDBACK' is disabled.
2026-09-06 17:31:26 0 [Note] Plugin 'wsrep-provider' is disabled.
2026-09-06 17:31:26 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2026-09-06 17:31:26 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:31:26
2026-09-06 17:31:28 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
2026-09-06 17:31:28 0 [Note] Server socket created on IP: '::', port: '3306'.
2026-09-06 17:31:28 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
2026-09-06 17:31:28 0 [Note] mariadbd: ready for connections.
Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
2026-09-06 17:31:30 3 [Warning] Aborted connection 3 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
@@ -0,0 +1 @@
11.6.2-MariaDB-rw-r--r-- 1 mysql mysql 14 Sep 6 17:27 /var/lib/mysql/mariadb_upgrade_info
@@ -0,0 +1,2 @@
Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!
[exit=0]
@@ -0,0 +1,52 @@
[
{
"restart": 1,
"settled": true,
"secs": 10.6,
"upgrade_info": "11.6.2-MariaDB",
"check": "Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!",
"check_rc": 0,
"readback": true,
"entrypoint_line": "2026-09-06 17:30:23+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting"
},
{
"restart": 2,
"settled": true,
"secs": 10.5,
"upgrade_info": "11.6.2-MariaDB",
"check": "Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!",
"check_rc": 0,
"readback": true,
"entrypoint_line": "2026-09-06 17:30:39+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting"
},
{
"restart": 3,
"settled": true,
"secs": 10.5,
"upgrade_info": "11.6.2-MariaDB",
"check": "Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!",
"check_rc": 0,
"readback": true,
"entrypoint_line": "2026-09-06 17:30:55+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting"
},
{
"restart": 4,
"settled": true,
"secs": 10.5,
"upgrade_info": "11.6.2-MariaDB",
"check": "Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!",
"check_rc": 0,
"readback": true,
"entrypoint_line": "2026-09-06 17:31:10+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting"
},
{
"restart": 5,
"settled": true,
"secs": 10.5,
"upgrade_info": "11.6.2-MariaDB",
"check": "Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!",
"check_rc": 0,
"readback": true,
"entrypoint_line": "2026-09-06 17:31:26+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting"
}
]
@@ -0,0 +1,30 @@
2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: MariaDB upgrade not required
2026-09-06 17:33:58+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
2026-09-06 17:33:58 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid laV+yaNPJmTO9humaFUYyS3wa24= as process 1
2026-09-06 17:33:58 0 [Note] InnoDB: Compressed tables use zlib 1.3
2026-09-06 17:33:58 0 [Note] InnoDB: Number of transaction pools: 1
2026-09-06 17:33:58 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2026-09-06 17:33:58 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0
2026-09-06 17:33:58 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
2026-09-06 17:33:58 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
2026-09-06 17:33:58 0 [Note] InnoDB: Completed initialization of buffer pool
2026-09-06 17:33:58 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2026-09-06 17:33:58 0 [Note] InnoDB: End of log at LSN=2293273
2026-09-06 17:33:58 0 [Note] InnoDB: Opened 3 undo tablespaces
2026-09-06 17:33:58 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
2026-09-06 17:33:58 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2026-09-06 17:33:58 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2026-09-06 17:33:58 0 [Note] InnoDB: log sequence number 2293273; transaction id 2917
2026-09-06 17:33:58 0 [Note] Plugin 'FEEDBACK' is disabled.
2026-09-06 17:33:58 0 [Note] Plugin 'wsrep-provider' is disabled.
2026-09-06 17:33:58 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2026-09-06 17:33:58 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:33:58
2026-09-06 17:34:00 0 [Note] Server socket created on IP: '0.0.0.0'.
2026-09-06 17:34:00 0 [Note] Server socket created on IP: '::'.
2026-09-06 17:34:00 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
2026-09-06 17:34:00 0 [Note] mariadbd: ready for connections.
Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
2026-09-06 17:34:05 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
@@ -0,0 +1,47 @@
{
"c1": true,
"moment1_info": "11.6.2-MariaDB",
"to_settled": true,
"to_settle_s": 15.7,
"conversion_wall_s": 35.9,
"entrypoint_lines": [
"2026-09-06 17:33:20+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.",
"2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'",
"2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.",
"2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Starting temporary server",
"2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Waiting for server startup",
"2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Temporary server started.",
"2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Backing up system database to system_mysql_backup_11.6.2-MariaDB.sql.zst",
"2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Backing up complete",
"2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Starting mariadb-upgrade",
"2026-09-06 17:33:31+02:00 [Note] [Entrypoint]: Finished mariadb-upgrade",
"2026-09-06 17:33:31+02:00 [Note] [Entrypoint]: Stopping temporary server",
"2026-09-06 17:33:31+02:00 [Note] [Entrypoint]: Temporary server stopped",
"2026-09-06 17:33:21+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB"
],
"moment4_info": "12.3.3-MariaDB",
"check_after": "This installation of MariaDB is already upgraded to 12.3.3-MariaDB.\nThere is no need to run mariadb-upgrade again.",
"check_after_rc": 1,
"readback_after": true,
"abort_settled": true,
"abort_states": {
"bookstack": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
},
"bookstack-db": {
"status": "running",
"health": "healthy",
"restarts": 0,
"exit": 0
}
},
"abort_lines": [
"2026-09-06 17:33:58 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0",
"2026-09-06 17:33:58 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF",
"2026-09-06 17:34:05 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)"
],
"abort": "starts-and-serves"
}
@@ -0,0 +1,68 @@
2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
2026-09-06 17:33:58+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: MariaDB upgrade not required
2026-09-06 17:33:58 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid laV+yaNPJmTO9humaFUYyS3wa24= as process 1
2026-09-06 17:33:58 0 [Note] InnoDB: Compressed tables use zlib 1.3
2026-09-06 17:33:58 0 [Note] InnoDB: Number of transaction pools: 1
2026-09-06 17:33:58 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2026-09-06 17:33:58 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0
2026-09-06 17:33:58 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
2026-09-06 17:33:58 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
2026-09-06 17:33:58 0 [Note] InnoDB: Completed initialization of buffer pool
2026-09-06 17:33:58 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2026-09-06 17:33:58 0 [Note] InnoDB: End of log at LSN=2293273
2026-09-06 17:33:58 0 [Note] InnoDB: Opened 3 undo tablespaces
2026-09-06 17:33:58 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
2026-09-06 17:33:58 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2026-09-06 17:33:58 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2026-09-06 17:33:58 0 [Note] InnoDB: log sequence number 2293273; transaction id 2917
2026-09-06 17:33:58 0 [Note] Plugin 'FEEDBACK' is disabled.
2026-09-06 17:33:58 0 [Note] Plugin 'wsrep-provider' is disabled.
2026-09-06 17:33:58 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2026-09-06 17:33:58 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:33:58
2026-09-06 17:34:00 0 [Note] Server socket created on IP: '0.0.0.0'.
2026-09-06 17:34:00 0 [Note] Server socket created on IP: '::'.
2026-09-06 17:34:00 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
2026-09-06 17:34:00 0 [Note] mariadbd: ready for connections.
Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
2026-09-06 17:34:05 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
2026-09-06 17:35:11 0 [Note] mariadbd (initiated by: unknown): Normal shutdown
2026-09-06 17:35:11 0 [Note] InnoDB: FTS optimize thread exiting.
2026-09-06 17:35:11 0 [Note] InnoDB: Starting shutdown...
2026-09-06 17:35:11 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
2026-09-06 17:35:11 0 [Note] InnoDB: Buffer pool(s) dump completed at 260906 17:35:11
2026-09-06 17:35:11 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
2026-09-06 17:35:11 0 [Note] InnoDB: Shutdown completed; log sequence number 2293273; transaction id 2921
2026-09-06 17:35:11 0 [Note] mariadbd: Shutdown complete
2026-09-06 17:35:11+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
2026-09-06 17:35:12+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
2026-09-06 17:35:12+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-09-06 17:35:12+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
2026-09-06 17:35:12+02:00 [Note] [Entrypoint]: MariaDB upgrade not required
2026-09-06 17:35:12 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid FaKgO08TpscPZcBgdBVul64Ukis= as process 1
2026-09-06 17:35:12 0 [Note] InnoDB: Compressed tables use zlib 1.3
2026-09-06 17:35:12 0 [Note] InnoDB: Number of transaction pools: 1
2026-09-06 17:35:12 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2026-09-06 17:35:12 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0
2026-09-06 17:35:12 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
2026-09-06 17:35:12 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
2026-09-06 17:35:12 0 [Note] InnoDB: Completed initialization of buffer pool
2026-09-06 17:35:12 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2026-09-06 17:35:12 0 [Note] InnoDB: End of log at LSN=2293273
2026-09-06 17:35:12 0 [Note] InnoDB: Opened 3 undo tablespaces
2026-09-06 17:35:12 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
2026-09-06 17:35:12 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2026-09-06 17:35:12 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2026-09-06 17:35:12 0 [Note] InnoDB: log sequence number 2293273; transaction id 2917
2026-09-06 17:35:12 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2026-09-06 17:35:12 0 [Note] Plugin 'FEEDBACK' is disabled.
2026-09-06 17:35:12 0 [Note] Plugin 'wsrep-provider' is disabled.
2026-09-06 17:35:12 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:35:12
2026-09-06 17:35:13 0 [Note] Server socket created on IP: '0.0.0.0'.
2026-09-06 17:35:13 0 [Note] Server socket created on IP: '::'.
2026-09-06 17:35:13 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
2026-09-06 17:35:13 0 [Note] mariadbd: ready for connections.
Version: '11.6.2-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
@@ -0,0 +1,107 @@
2026-09-06 17:33:20+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Starting temporary server
2026-09-06 17:33:21+02:00 [Note] [Entrypoint]: Waiting for server startup
2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Temporary server started.
2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Backing up system database to system_mysql_backup_11.6.2-MariaDB.sql.zst
2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Backing up complete
2026-09-06 17:33:24+02:00 [Note] [Entrypoint]: Starting mariadb-upgrade
The --upgrade-system-tables option was used, user tables won't be touched.
Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!
Phase 1/8: Checking and upgrading mysql database
Processing databases
mysql
mysql.column_stats OK
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.global_priv OK
mysql.gtid_slave_pos OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.index_stats OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.roles_mapping OK
mysql.servers OK
mysql.table_stats OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.transaction_registry OK
Phase 2/8: Installing used storage engines... Skipped
Phase 3/8: Running 'mysql_fix_privilege_tables'
Phase 4/8: Fixing views... Skipped
Phase 5/8: Fixing table and database names ... Skipped
Phase 6/8: Checking and upgrading tables... Skipped
Phase 7/8: uninstalling plugins
Phase 8/8: Running 'FLUSH PRIVILEGES'
OK
2026-09-06 17:33:31+02:00 [Note] [Entrypoint]: Finished mariadb-upgrade
2026-09-06 17:33:31+02:00 [Note] [Entrypoint]: Stopping temporary server
2026-09-06 17:33:31+02:00 [Note] [Entrypoint]: Temporary server stopped
2026-09-06 17:33:21+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
2026-09-06 17:33:21 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid 6gQVvpukP9zpgDKjDkctYqi29K8= as process 56
2026-09-06 17:33:21 0 [Note] InnoDB: Compressed tables use zlib 1.3
2026-09-06 17:33:21 0 [Note] InnoDB: Number of transaction pools: 1
2026-09-06 17:33:21 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2026-09-06 17:33:21 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).
create_uring failed: falling back to libaio
2026-09-06 17:33:21 0 [Note] InnoDB: Using Linux native AIO
2026-09-06 17:33:21 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
2026-09-06 17:33:21 0 [Note] InnoDB: Completed initialization of buffer pool
2026-09-06 17:33:21 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2026-09-06 17:33:21 0 [Note] InnoDB: End of log at LSN=1148747
2026-09-06 17:33:21 0 [Note] InnoDB: Opened 3 undo tablespaces
2026-09-06 17:33:21 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
2026-09-06 17:33:21 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2026-09-06 17:33:21 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2026-09-06 17:33:21 0 [Note] InnoDB: log sequence number 1148747; transaction id 2268
2026-09-06 17:33:21 0 [Note] Plugin 'FEEDBACK' is disabled.
2026-09-06 17:33:21 0 [Note] Plugin 'wsrep-provider' is disabled.
2026-09-06 17:33:24 0 [Note] Replication not automatically started: --skip-slave-start was specified
2026-09-06 17:33:24 0 [Note] mariadbd: ready for connections.
Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 0 mariadb.org binary distribution
2026-09-06 17:33:31 0 [Note] mariadbd (initiated by: unknown): Normal shutdown
2026-09-06 17:33:31 0 [Note] InnoDB: FTS optimize thread exiting.
2026-09-06 17:33:31 0 [Note] InnoDB: Starting shutdown...
2026-09-06 17:33:31 0 [Note] InnoDB: Removed temporary tablespace data file: "./ibtmp1"
2026-09-06 17:33:31 0 [Note] Shutdown completed; log sequence number 1148747; transaction id 2272
2026-09-06 17:33:31 0 [Note] mariadbd: Shutdown complete
2026-09-06 17:33:31 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid 6gQVvpukP9zpgDKjDkctYqi29K8= as process 1
2026-09-06 17:33:31 0 [Note] InnoDB: Compressed tables use zlib 1.3
2026-09-06 17:33:31 0 [Note] InnoDB: Number of transaction pools: 1
2026-09-06 17:33:31 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2026-09-06 17:33:31 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).
create_uring failed: falling back to libaio
2026-09-06 17:33:31 0 [Note] InnoDB: Using Linux native AIO
2026-09-06 17:33:31 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
2026-09-06 17:33:31 0 [Note] InnoDB: Completed initialization of buffer pool
2026-09-06 17:33:31 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
2026-09-06 17:33:31 0 [Note] InnoDB: End of log at LSN=1148747
2026-09-06 17:33:31 0 [Note] InnoDB: Opened 3 undo tablespaces
2026-09-06 17:33:31 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
2026-09-06 17:33:31 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
2026-09-06 17:33:31 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
2026-09-06 17:33:31 0 [Note] InnoDB: log sequence number 1148747; transaction id 2268
2026-09-06 17:33:31 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2026-09-06 17:33:31 0 [Note] Plugin 'FEEDBACK' is disabled.
2026-09-06 17:33:31 0 [Note] Plugin 'wsrep-provider' is disabled.
2026-09-06 17:33:31 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:33:31
2026-09-06 17:33:32 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
2026-09-06 17:33:32 0 [Note] Server socket created on IP: '::', port: '3306'.
2026-09-06 17:33:32 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
2026-09-06 17:33:32 0 [Note] mariadbd: ready for connections.
Version: '12.3.3-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
2026-09-06 17:33:38 5 [Warning] Aborted connection 5 to db: 'unconnected' user: 'unauthenticated' host: '172.19.0.3' (This connection closed normally without authentication)
@@ -0,0 +1,16 @@
# POST-ABORT: MariaDB 11.6 running on a datadir converted to 12.3
## engine serving:
mariadb from 11.6.2-MariaDB, client 15.2 for debian-linux-gnu (x86_64) using EditLine wrapper
## mariadb_upgrade_info:
12.3.3-MariaDB
## the ENTRYPOINT says (reassuring, and it is not a soundness statement):
2026-09-06 17:33:58+02:00 [Note] [Entrypoint]: MariaDB upgrade not required
2026-09-06 17:35:12+02:00 [Note] [Entrypoint]: MariaDB upgrade not required
## mariadb-upgrade --check-if-upgrade-is-needed says:
FATAL ERROR: Version mismatch (12.3.3-MariaDB -> 11.6.2-MariaDB): Trying to downgrade from a higher to lower version is not supported!
[exit=1]
## system-database backup taken automatically by the conversion:
-rw-r--r-- 1 mysql mysql 622437 Sep 6 17:33 /var/lib/mysql/system_mysql_backup_11.6.2-MariaDB.sql.zst
@@ -0,0 +1,86 @@
# BookStack - Egyszerű, könyv-szerű wiki és dokumentáció platform
# Domain: ${SUBDOMAIN}.${DOMAIN}
# Database: mariadb
# RAM: ~150M (mem_limit: 512M) | Pi-compatible: Yes
#
# Environment variables:
# DOMAIN - Your domain (e.g., demo-felhom.eu)
# DB_PASSWORD - Adatbázis jelszó (auto-generated)
# APP_KEY - Laravel application key (auto-generated)
services:
bookstack:
image: lscr.io/linuxserver/bookstack:25.02.2
container_name: bookstack
restart: unless-stopped
depends_on:
bookstack-db:
condition: service_healthy
environment:
- TZ=Europe/Budapest
- PUID=1000
- PGID=1000
- DB_HOST=bookstack-db
- DB_PORT=3306
- DB_USERNAME=bookstack
- DB_PASSWORD=${DB_PASSWORD}
- DB_DATABASE=bookstack
- APP_KEY=${APP_KEY}
- APP_URL=https://${SUBDOMAIN}.${DOMAIN}
volumes:
- bookstack_config:/config
networks:
- traefik-public
- bookstack-internal
deploy:
resources:
limits:
memory: 512M
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:80"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
labels:
- "traefik.enable=true"
- "traefik.http.routers.bookstack.rule=Host(`${SUBDOMAIN}.${DOMAIN}`)"
- "traefik.http.routers.bookstack.entrypoints=websecure"
- "traefik.http.routers.bookstack.tls=true"
- "traefik.http.routers.bookstack.tls.certresolver=letsencrypt"
- "traefik.http.services.bookstack.loadbalancer.server.port=80"
bookstack-db:
image: mariadb:11.6
container_name: bookstack-db
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
- MARIADB_AUTO_UPGRADE=1
- MYSQL_DATABASE=bookstack
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=${DB_PASSWORD}
- TZ=Europe/Budapest
volumes:
- bookstack_db_data:/var/lib/mysql
networks:
- bookstack-internal
deploy:
resources:
limits:
memory: 256M
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
start_period: 20s
volumes:
bookstack_config:
bookstack_db_data:
networks:
traefik-public:
external: true
bookstack-internal:
@@ -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 17:37:16+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-06 17:37:16+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
bookstack-db | 2026-09-06 17:37:16+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
bookstack-db | 2026-09-06 17:37:16+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.6.2+maria~ubu2404 started.
bookstack-db | 2026-09-06 17:37:16+02:00 [Note] [Entrypoint]: MariaDB upgrade not required
bookstack-db | 2026-09-06 17:37:16 0 [Note] Starting MariaDB 11.6.2-MariaDB-ubu2404 source revision d8dad8c3b54cd09fefce7bc3b9749f427eed9709 server_uid FyHOQ8V7FXEQJqVEM22Wze9eRrU= as process 1
bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-06 17:37:16 0 [Warning] mariadbd: io_uring_queue_init() failed with errno 0
bookstack-db | 2026-09-06 17:37:16 0 [Warning] InnoDB: liburing disabled: falling back to innodb_use_native_aio=OFF
bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB
bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: End of log at LSN=1982099
bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: log sequence number 1982099; transaction id 2873
bookstack-db | 2026-09-06 17:37:16 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-06 17:37:16 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-06 17:37:16 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:37:16
bookstack-db | 2026-09-06 17:37:18 0 [Note] Server socket created on IP: '0.0.0.0'.
bookstack-db | 2026-09-06 17:37:18 0 [Note] Server socket created on IP: '::'.
bookstack-db | 2026-09-06 17:37:18 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack-db | 2026-09-06 17:37:18 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 | [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 | ██║ ███████╗██║██║ ██║
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 ...................................... 25.42ms DONE
bookstack |
bookstack | INFO Running migrations.
bookstack |
bookstack | 2014_10_12_000000_create_users_table ......................... 280.39ms DONE
bookstack | 2014_10_12_100000_create_password_resets_table ................ 64.19ms DONE
bookstack | 2015_07_12_114933_create_books_table .......................... 12.71ms DONE
bookstack | 2015_07_12_190027_create_pages_table .......................... 17.69ms DONE
bookstack | 2015_07_13_172121_create_images_table ......................... 11.70ms DONE
bookstack | 2015_07_27_172342_create_chapters_table ....................... 13.83ms DONE
bookstack | 2015_08_08_200447_add_users_to_entities ...................... 153.83ms DONE
bookstack | 2015_08_09_093534_create_page_revisions_table ................. 11.95ms DONE
bookstack | 2015_08_16_142133_create_activities_table ..................... 15.73ms DONE
bookstack | 2015_08_29_105422_add_roles_and_permissions .................. 323.96ms DONE
bookstack | 2015_08_30_125859_create_settings_table ....................... 13.48ms DONE
bookstack | 2015_08_31_175240_add_search_indexes ........................... 0.06ms DONE
bookstack | 2015_09_04_165821_create_social_accounts_table ................ 64.04ms DONE
bookstack | 2015_09_05_164707_add_email_confirmation_table ................ 82.50ms DONE
bookstack | 2015_11_21_145609_create_views_table .......................... 13.13ms DONE
bookstack | 2015_11_26_221857_add_entity_indexes ......................... 491.19ms DONE
bookstack | 2015_12_05_145049_fulltext_weighting ........................... 0.06ms DONE
bookstack | 2015_12_07_195238_add_image_upload_types ...................... 75.31ms DONE
bookstack | 2015_12_09_195748_add_user_avatars ............................ 18.17ms DONE
bookstack | 2016_01_11_210908_add_external_auth_to_users .................. 47.72ms DONE
bookstack | 2016_02_25_184030_add_slug_to_revisions ....................... 85.17ms DONE
bookstack | 2016_02_27_120329_update_permissions_and_roles ............... 148.77ms DONE
bookstack | 2016_02_28_084200_add_entity_access_controls ................. 255.74ms DONE
bookstack | 2016_03_09_203143_add_page_revision_types ..................... 47.57ms DONE
bookstack | 2016_03_13_082138_add_page_drafts ............................. 45.80ms DONE
bookstack | 2016_03_25_123157_add_markdown_support ........................ 39.14ms DONE
bookstack | 2016_04_09_100730_add_view_permissions_to_roles ............... 50.37ms DONE
bookstack | 2016_04_20_192649_create_joint_permissions_table ............. 320.85ms DONE
bookstack | 2016_05_06_185215_create_tags_table .......................... 113.47ms DONE
bookstack | 2016_07_07_181521_add_summary_to_page_revisions ............... 17.12ms DONE
bookstack | 2016_09_29_101449_remove_hidden_roles ......................... 72.95ms DONE
bookstack | 2016_10_09_142037_create_attachments_table .................... 63.02ms DONE
bookstack | 2017_01_21_163556_create_cache_table .......................... 40.20ms DONE
bookstack | 2017_01_21_163602_create_sessions_table ....................... 38.07ms DONE
bookstack | 2017_03_19_091553_create_search_index_table .................. 117.69ms DONE
bookstack | 2017_04_20_185112_add_revision_counts ......................... 66.06ms DONE
bookstack | 2017_07_02_152834_update_db_encoding_to_ut8mb4 ................. 0.06ms DONE
bookstack | 2017_08_01_130541_create_comments_table ....................... 86.12ms DONE
bookstack | 2017_08_29_102650_add_cover_image_display ..................... 17.54ms DONE
bookstack | 2018_07_15_173514_add_role_external_auth_id ................... 47.20ms DONE
bookstack | 2018_08_04_115700_create_bookshelves_table ................... 379.44ms DONE
bookstack | 2019_07_07_112515_add_template_support ........................ 47.05ms DONE
bookstack | 2019_08_17_140214_add_user_invites_table ...................... 63.85ms DONE
bookstack | 2019_12_29_120917_add_api_auth ................................ 91.08ms DONE
bookstack | 2020_08_04_111754_drop_joint_permissions_id .................. 104.12ms DONE
bookstack | 2020_08_04_131052_remove_role_name_field ...................... 20.76ms DONE
bookstack | 2020_09_19_094251_add_activity_indexes ........................ 49.10ms DONE
bookstack | 2020_09_27_210059_add_entity_soft_deletes ..................... 73.95ms DONE
bookstack | 2020_09_27_210528_create_deletions_table ...................... 92.77ms DONE
bookstack | 2020_11_07_232321_simplify_activities_table .................. 146.96ms DONE
bookstack | 2020_12_30_173528_add_owned_by_field_to_entities ............. 200.03ms DONE
bookstack | 2021_01_30_225441_add_settings_type_column .................... 19.24ms DONE
bookstack | 2021_03_08_215138_add_user_slug ............................... 51.30ms DONE
bookstack | 2021_05_15_173110_create_favourites_table ..................... 59.92ms DONE
bookstack | 2021_06_30_173111_create_mfa_values_table ..................... 62.17ms DONE
bookstack | 2021_07_03_085038_add_mfa_enforced_to_roles_table ............. 17.63ms DONE
bookstack | 2021_08_28_161743_add_export_role_permission ................... 4.86ms DONE
bookstack | 2021_09_26_044614_add_activities_ip_column .................... 21.38ms DONE
bookstack | 2021_11_26_070438_add_index_for_user_ip ....................... 21.51ms DONE
bookstack | 2021_12_07_111343_create_webhooks_table ...................... 127.35ms DONE
bookstack | 2021_12_13_152024_create_jobs_table ........................... 36.78ms DONE
bookstack | 2021_12_13_152120_create_failed_jobs_table .................... 34.12ms DONE
bookstack | 2022_01_03_154041_add_webhooks_timeout_error_columns .......... 76.41ms DONE
bookstack | 2022_04_17_101741_add_editor_change_field_and_permission ...... 23.15ms DONE
bookstack | 2022_04_25_140741_update_polymorphic_types .................... 16.51ms DONE
bookstack | 2022_07_16_170051_drop_joint_permission_type ................. 126.61ms DONE
bookstack | 2022_08_17_092941_create_references_table .................... 114.98ms DONE
bookstack | 2022_09_02_082910_fix_shelf_cover_image_types .................. 0.70ms DONE
bookstack | 2022_10_07_091406_flatten_entity_permissions_table ............ 90.15ms DONE
bookstack | 2022_10_08_104202_drop_entity_restricted_field ................ 96.76ms DONE
bookstack | 2023_01_24_104625_refactor_joint_permissions_storage ......... 145.33ms DONE
bookstack | 2023_01_28_141230_copy_color_settings_for_dark_mode ............ 1.22ms DONE
bookstack | 2023_02_20_093655_increase_attachments_path_length ............ 37.29ms DONE
bookstack | 2023_02_23_200227_add_updated_at_index_to_pages ............... 27.58ms DONE
bookstack | 2023_06_10_071823_remove_guest_user_secondary_roles ............ 2.17ms DONE
bookstack | 2023_06_25_181952_remove_bookshelf_create_entity_permissions ... 0.05ms DONE
bookstack | 2023_07_25_124945_add_receive_notifications_role_permissions ... 4.51ms DONE
bookstack | 2023_07_31_104430_create_watches_table ........................ 86.52ms DONE
bookstack | 2023_08_21_174248_increase_cache_size ......................... 29.32ms DONE
bookstack | 2023_12_02_104541_add_default_template_to_books ............... 20.96ms DONE
bookstack | 2023_12_17_140913_add_description_html_to_entities ............ 69.67ms DONE
bookstack | 2024_01_01_104542_add_default_template_to_chapters ............ 21.06ms DONE
bookstack | 2024_02_04_141358_add_views_updated_index ..................... 28.41ms DONE
bookstack | 2024_05_04_154409_rename_activity_relation_columns ............ 35.58ms DONE
bookstack | 2024_09_29_140340_ensure_editor_value_set ...................... 2.62ms DONE
bookstack | 2024_10_29_114420_add_import_role_permission ................... 5.04ms DONE
bookstack | 2024_11_02_160700_create_imports_table ........................ 38.06ms DONE
bookstack | 2024_11_27_171039_add_instance_id_setting ..................... 10.79ms DONE
bookstack | 2025_01_29_180933_create_sort_rules_table ..................... 17.14ms DONE
bookstack | 2025_02_05_150842_add_sort_rule_id_to_books ................... 19.84ms DONE
bookstack | 2025_04_18_215145_add_content_refs_and_archived_to_comments ... 61.97ms DONE
bookstack | 2025_09_02_111542_remove_unused_columns ....................... 68.23ms DONE
bookstack | 2025_09_15_132850_create_entities_table ...................... 261.38ms DONE
bookstack | 2025_09_15_134701_migrate_entity_data ......................... 10.32ms DONE
bookstack | 2025_09_15_134751_update_entity_relation_columns ............. 823.66ms DONE
bookstack | 2025_09_15_134813_drop_old_entity_tables ...................... 47.79ms DONE
bookstack | 2025_10_18_163331_clean_user_id_references ................... 444.39ms DONE
bookstack | 2025_10_22_134507_update_comments_relation_field_names ........ 34.40ms DONE
bookstack | 2025_11_23_161812_create_slug_history_table .................. 117.46ms DONE
bookstack | 2025_12_15_140219_create_mention_history_table ................ 62.55ms DONE
bookstack | 2025_12_19_103417_add_views_viewable_type_index ............... 22.64ms DONE
bookstack | 2026_04_19_141616_add_revision_view_all_permission ............ 10.97ms DONE
bookstack |
bookstack | [custom-init] No custom files found, skipping...
bookstack | [ls.io-init] done.
@@ -0,0 +1,8 @@
{
"bookstack-db": {
"image": "mariadb:12.3",
"probe": "datadir version | the engine's own upgrade verdict",
"answer": "11.6.2-MariaDB| Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required! [exit=0]",
"probe_rc": 0
}
}
@@ -0,0 +1 @@
bookstack-db | 2026-09-06 17:37:09+02:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting
@@ -0,0 +1,15 @@
[15:36:33] E3b: deploying bookstack at FROM {'bookstack': 'lscr.io/linuxserver/bookstack:26.05.2', 'bookstack-db': 'mariadb:11.6'}
[15:37:05] 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}}
[15:37:06] bookstack: artisan create-admin rc=0 :: Admin account with email "spike-3982fd6f@gate.invalid" successfully created!
[15:37:07] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-916be2 - Email: spike
[15:37:07] C1 (seed reads back BEFORE): True
[15:37:07] E3b: swapping to TO {'bookstack': 'lscr.io/linuxserver/bookstack:26.05.2', 'bookstack-db': 'mariadb:12.3'}
[15:37:14] TO up -d rc=0
[15:37:14] 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}}
[15:37:14] engine state bookstack-db: 11.6.2-MariaDB| Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required! [exit=0]
[15:37:14] migration lines observed: 1
[15:37:15] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-916be2 - Email: spike
[15:37:15] RESULT (seed reads back AFTER): True
[15:37:15] E3b: ABORT — putting the FROM images back
[15:37:22] bookstack: readback of the seeded account found=True :: This will delete any configure multi-factor authentication methods for user: - ID: 3 - Name: spike-916be2 - Email: spike
[15:37:22] ABORT: app came back in 0.2s; data present=True
@@ -0,0 +1,184 @@
bookstack-db | 2026-09-06 17:37:08+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
bookstack-db | 2026-09-06 17:37:08+02:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB
bookstack-db | 2026-09-06 17:37:08+02:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
bookstack-db | 2026-09-06 17:37:08+02:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:12.3.3+maria~ubu2404 started.
bookstack-db | 2026-09-06 17:37:09+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 17:37:09 0 [Note] Starting MariaDB 12.3.3-MariaDB-ubu2404 source revision 83e909fc2a0dbc394b4b683fb3fa2d7dcf26cc5e server_uid jWwYUw+ySlp93OF2YbaUIC/MCcI= as process 1
bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Compressed tables use zlib 1.3
bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Number of transaction pools: 1
bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
bookstack-db | 2026-09-06 17:37:09 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 17:37:09 0 [Note] InnoDB: Using Linux native AIO
bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: innodb_buffer_pool_size_max=8388608m, innodb_buffer_pool_size=128m
bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Completed initialization of buffer pool
bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)
bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: End of log at LSN=1982099
bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Opened 3 undo tablespaces
bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.
bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...
bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.
bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: log sequence number 1982099; transaction id 2873
bookstack-db | 2026-09-06 17:37:09 0 [Note] Plugin 'FEEDBACK' is disabled.
bookstack-db | 2026-09-06 17:37:09 0 [Note] Plugin 'wsrep-provider' is disabled.
bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
bookstack-db | 2026-09-06 17:37:09 0 [Note] InnoDB: Buffer pool(s) load completed at 260906 17:37:09
bookstack-db | 2026-09-06 17:37:11 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
bookstack-db | 2026-09-06 17:37:11 0 [Note] Server socket created on IP: '::', port: '3306'.
bookstack-db | 2026-09-06 17:37:11 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
bookstack-db | 2026-09-06 17:37:11 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 | [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 | ██║ ███████╗██║██║ ██║
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 ...................................... 25.42ms DONE
bookstack |
bookstack | INFO Running migrations.
bookstack |
bookstack | 2014_10_12_000000_create_users_table ......................... 280.39ms DONE
bookstack | 2014_10_12_100000_create_password_resets_table ................ 64.19ms DONE
bookstack | 2015_07_12_114933_create_books_table .......................... 12.71ms DONE
bookstack | 2015_07_12_190027_create_pages_table .......................... 17.69ms DONE
bookstack | 2015_07_13_172121_create_images_table ......................... 11.70ms DONE
bookstack | 2015_07_27_172342_create_chapters_table ....................... 13.83ms DONE
bookstack | 2015_08_08_200447_add_users_to_entities ...................... 153.83ms DONE
bookstack | 2015_08_09_093534_create_page_revisions_table ................. 11.95ms DONE
bookstack | 2015_08_16_142133_create_activities_table ..................... 15.73ms DONE
bookstack | 2015_08_29_105422_add_roles_and_permissions .................. 323.96ms DONE
bookstack | 2015_08_30_125859_create_settings_table ....................... 13.48ms DONE
bookstack | 2015_08_31_175240_add_search_indexes ........................... 0.06ms DONE
bookstack | 2015_09_04_165821_create_social_accounts_table ................ 64.04ms DONE
bookstack | 2015_09_05_164707_add_email_confirmation_table ................ 82.50ms DONE
bookstack | 2015_11_21_145609_create_views_table .......................... 13.13ms DONE
bookstack | 2015_11_26_221857_add_entity_indexes ......................... 491.19ms DONE
bookstack | 2015_12_05_145049_fulltext_weighting ........................... 0.06ms DONE
bookstack | 2015_12_07_195238_add_image_upload_types ...................... 75.31ms DONE
bookstack | 2015_12_09_195748_add_user_avatars ............................ 18.17ms DONE
bookstack | 2016_01_11_210908_add_external_auth_to_users .................. 47.72ms DONE
bookstack | 2016_02_25_184030_add_slug_to_revisions ....................... 85.17ms DONE
bookstack | 2016_02_27_120329_update_permissions_and_roles ............... 148.77ms DONE
bookstack | 2016_02_28_084200_add_entity_access_controls ................. 255.74ms DONE
bookstack | 2016_03_09_203143_add_page_revision_types ..................... 47.57ms DONE
bookstack | 2016_03_13_082138_add_page_drafts ............................. 45.80ms DONE
bookstack | 2016_03_25_123157_add_markdown_support ........................ 39.14ms DONE
bookstack | 2016_04_09_100730_add_view_permissions_to_roles ............... 50.37ms DONE
bookstack | 2016_04_20_192649_create_joint_permissions_table ............. 320.85ms DONE
bookstack | 2016_05_06_185215_create_tags_table .......................... 113.47ms DONE
bookstack | 2016_07_07_181521_add_summary_to_page_revisions ............... 17.12ms DONE
bookstack | 2016_09_29_101449_remove_hidden_roles ......................... 72.95ms DONE
bookstack | 2016_10_09_142037_create_attachments_table .................... 63.02ms DONE
bookstack | 2017_01_21_163556_create_cache_table .......................... 40.20ms DONE
bookstack | 2017_01_21_163602_create_sessions_table ....................... 38.07ms DONE
bookstack | 2017_03_19_091553_create_search_index_table .................. 117.69ms DONE
bookstack | 2017_04_20_185112_add_revision_counts ......................... 66.06ms DONE
bookstack | 2017_07_02_152834_update_db_encoding_to_ut8mb4 ................. 0.06ms DONE
bookstack | 2017_08_01_130541_create_comments_table ....................... 86.12ms DONE
bookstack | 2017_08_29_102650_add_cover_image_display ..................... 17.54ms DONE
bookstack | 2018_07_15_173514_add_role_external_auth_id ................... 47.20ms DONE
bookstack | 2018_08_04_115700_create_bookshelves_table ................... 379.44ms DONE
bookstack | 2019_07_07_112515_add_template_support ........................ 47.05ms DONE
bookstack | 2019_08_17_140214_add_user_invites_table ...................... 63.85ms DONE
bookstack | 2019_12_29_120917_add_api_auth ................................ 91.08ms DONE
bookstack | 2020_08_04_111754_drop_joint_permissions_id .................. 104.12ms DONE
bookstack | 2020_08_04_131052_remove_role_name_field ...................... 20.76ms DONE
bookstack | 2020_09_19_094251_add_activity_indexes ........................ 49.10ms DONE
bookstack | 2020_09_27_210059_add_entity_soft_deletes ..................... 73.95ms DONE
bookstack | 2020_09_27_210528_create_deletions_table ...................... 92.77ms DONE
bookstack | 2020_11_07_232321_simplify_activities_table .................. 146.96ms DONE
bookstack | 2020_12_30_173528_add_owned_by_field_to_entities ............. 200.03ms DONE
bookstack | 2021_01_30_225441_add_settings_type_column .................... 19.24ms DONE
bookstack | 2021_03_08_215138_add_user_slug ............................... 51.30ms DONE
bookstack | 2021_05_15_173110_create_favourites_table ..................... 59.92ms DONE
bookstack | 2021_06_30_173111_create_mfa_values_table ..................... 62.17ms DONE
bookstack | 2021_07_03_085038_add_mfa_enforced_to_roles_table ............. 17.63ms DONE
bookstack | 2021_08_28_161743_add_export_role_permission ................... 4.86ms DONE
bookstack | 2021_09_26_044614_add_activities_ip_column .................... 21.38ms DONE
bookstack | 2021_11_26_070438_add_index_for_user_ip ....................... 21.51ms DONE
bookstack | 2021_12_07_111343_create_webhooks_table ...................... 127.35ms DONE
bookstack | 2021_12_13_152024_create_jobs_table ........................... 36.78ms DONE
bookstack | 2021_12_13_152120_create_failed_jobs_table .................... 34.12ms DONE
bookstack | 2022_01_03_154041_add_webhooks_timeout_error_columns .......... 76.41ms DONE
bookstack | 2022_04_17_101741_add_editor_change_field_and_permission ...... 23.15ms DONE
bookstack | 2022_04_25_140741_update_polymorphic_types .................... 16.51ms DONE
bookstack | 2022_07_16_170051_drop_joint_permission_type ................. 126.61ms DONE
bookstack | 2022_08_17_092941_create_references_table .................... 114.98ms DONE
bookstack | 2022_09_02_082910_fix_shelf_cover_image_types .................. 0.70ms DONE
bookstack | 2022_10_07_091406_flatten_entity_permissions_table ............ 90.15ms DONE
bookstack | 2022_10_08_104202_drop_entity_restricted_field ................ 96.76ms DONE
bookstack | 2023_01_24_104625_refactor_joint_permissions_storage ......... 145.33ms DONE
bookstack | 2023_01_28_141230_copy_color_settings_for_dark_mode ............ 1.22ms DONE
bookstack | 2023_02_20_093655_increase_attachments_path_length ............ 37.29ms DONE
bookstack | 2023_02_23_200227_add_updated_at_index_to_pages ............... 27.58ms DONE
bookstack | 2023_06_10_071823_remove_guest_user_secondary_roles ............ 2.17ms DONE
bookstack | 2023_06_25_181952_remove_bookshelf_create_entity_permissions ... 0.05ms DONE
bookstack | 2023_07_25_124945_add_receive_notifications_role_permissions ... 4.51ms DONE
bookstack | 2023_07_31_104430_create_watches_table ........................ 86.52ms DONE
bookstack | 2023_08_21_174248_increase_cache_size ......................... 29.32ms DONE
bookstack | 2023_12_02_104541_add_default_template_to_books ............... 20.96ms DONE
bookstack | 2023_12_17_140913_add_description_html_to_entities ............ 69.67ms DONE
bookstack | 2024_01_01_104542_add_default_template_to_chapters ............ 21.06ms DONE
bookstack | 2024_02_04_141358_add_views_updated_index ..................... 28.41ms DONE
bookstack | 2024_05_04_154409_rename_activity_relation_columns ............ 35.58ms DONE
bookstack | 2024_09_29_140340_ensure_editor_value_set ...................... 2.62ms DONE
bookstack | 2024_10_29_114420_add_import_role_permission ................... 5.04ms DONE
bookstack | 2024_11_02_160700_create_imports_table ........................ 38.06ms DONE
bookstack | 2024_11_27_171039_add_instance_id_setting ..................... 10.79ms DONE
bookstack | 2025_01_29_180933_create_sort_rules_table ..................... 17.14ms DONE
bookstack | 2025_02_05_150842_add_sort_rule_id_to_books ................... 19.84ms DONE
bookstack | 2025_04_18_215145_add_content_refs_and_archived_to_comments ... 61.97ms DONE
bookstack | 2025_09_02_111542_remove_unused_columns ....................... 68.23ms DONE
bookstack | 2025_09_15_132850_create_entities_table ...................... 261.38ms DONE
bookstack | 2025_09_15_134701_migrate_entity_data ......................... 10.32ms DONE
bookstack | 2025_09_15_134751_update_entity_relation_columns ............. 823.66ms DONE
bookstack | 2025_09_15_134813_drop_old_entity_tables ...................... 47.79ms DONE
bookstack | 2025_10_18_163331_clean_user_id_references ................... 444.39ms DONE
bookstack | 2025_10_22_134507_update_comments_relation_field_names ........ 34.40ms DONE
bookstack | 2025_11_23_161812_create_slug_history_table .................. 117.46ms DONE
bookstack | 2025_12_15_140219_create_mention_history_table ................ 62.55ms DONE
bookstack | 2025_12_19_103417_add_views_viewable_type_index ............... 22.64ms DONE
bookstack | 2026_04_19_141616_add_revision_view_all_permission ............ 10.97ms 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,33 @@
{
"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 17:37:09+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,
"engine_state_after": {
"bookstack-db": {
"image": "mariadb:12.3",
"probe": "datadir version | the engine's own upgrade verdict",
"answer": "11.6.2-MariaDB| Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required! [exit=0]",
"probe_rc": 0
}
},
"duration_s": 0.2,
"measured_at": "2026-09-06T15:37:22Z",
"evidence": "evidence/E3b",
"total_s": 49.0
}
@@ -0,0 +1,35 @@
[
{
"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 17:37:09+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,
"engine_state_after": {
"bookstack-db": {
"image": "mariadb:12.3",
"probe": "datadir version | the engine's own upgrade verdict",
"answer": "11.6.2-MariaDB| Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required! [exit=0]",
"probe_rc": 0
}
},
"duration_s": 0.2,
"measured_at": "2026-09-06T15:37:22Z",
"evidence": "evidence/E3b",
"total_s": 49.0
}
]
+3 -1
View File
@@ -691,10 +691,12 @@ class (an image `VOLUME` at an unmounted path) is still live — `immich-server`
| **R-456** | **[P3-LOW] A partly-dead stack is not a boot orphan, and that is written down nowhere.** MEASURED 2026-09-02 on demo-hp while validating v0.233.0: `docker rm -f bookstack` (leaving `bookstack-db` running) then a controller restart produced `Boot reconciliation: 1 boot-orphaned app(s) found: [bentopdf]` — **bookstack was NOT selected**, although the app container was gone and `desired_state: running` was recorded. Removing `bookstack-db` as well made the whole stack orphaned and the very next pass repaired it in 6.3 s. **So `bootrecon.isBootOrphan` requires the stack as a WHOLE to be down; one live member is enough to make it invisible to the reconciler.** **NOT called a defect, and the reason is part of the row:** `StateDegraded` IS in `IsDownState`, and the crash-loop/dead-app alarm path (`classifyRunStates`) does count a degraded stack as down — so the customer IS told; it is the automatic REPAIR that does not fire, and there may be a good reason (repairing half a stack while its DB is live is not obviously safe). **What is certain is that nobody has written the rule down**, so the next session re-derives it the same way this one did — by watching a reconciliation not happen, which is an absent observable and the weakest possible evidence. Either state the rule in `02-controller-module-map.md` with a test pinning it, or change it. Owner: **CC.** `tests/VALIDATION-update-slice12-2026-09-02.md` §2.2 | **READY — rank P3-LOW; owner: CC** |
| **R-457** | **[P3-LOW] A test that hardcodes a date AND asserts an age derived from it is green on the day it is written and red the next morning — one instance PROVEN, six candidate files named.** MEASURED 2026-09-03: `TestGroupD_BadgeRendersOnBothSurfaces` (shipped the previous day in v0.233.0) pinned a fixture `catalog_since: "2026-07-18"` and asserted the rendered string `"Frissítés elérhető — 46 napja"`. **The pure badge tests inject a clock; the RENDER test does not and cannot** — it goes through the production templates, which call the funcmap entry `updateBadge`, which reads `time.Now()`. The suite was green on 2026-09-02 and **FAILED on 2026-09-03** with *"the behind badge is missing"* on both surfaces, because the true answer had become 47. **Fixed by DERIVING the fixture** — `catalog_since` is computed as *today minus 46 days*, so the test asserts the real number through the real clock and cannot rot. **THE CLASS, which is why this is a row and not just a fix:** a clock-reading test that also carries a date LITERAL is a bomb with a fuse of unknown length, and the suite being green is not evidence it is defused — it is evidence the fuse has not burned down yet. **NAMED AS UNCHECKED CANDIDATES, NOT ACCUSED** — six other test files contain both a `20xx-xx-xx` literal and `time.Now()`: `internal/backup/offbox_test.go`, `internal/web/handler_export_upload_test.go`, `internal/web/r103_tier2_action_test.go`, `internal/web/dashboard_backup_card_test.go`, `internal/web/async_restore_test.go`, `internal/stacks/installed_test.go`. Mixing the two is not itself a defect — it is one only where a literal feeds an assertion evaluated against the real clock — so each needs reading, which is a sweep and not this session. **The instrument that would end the class:** run the suite once under a faked future date in CI and see what turns red. Owner: **CC.** `felhom-controller` v0.234.0 CHANGELOG | **READY — rank P3-LOW; owner: CC** |
| **R-458** | **[P3-LOW] `.felhom.yml` keeps flowing to an app whose compose file is FROZEN, so a frozen app can receive a health check written for a version it is not running.** The v0.235.0 render freezes `docker-compose.yml` for a pinned app once the catalog moves past its version, but copies `.felhom.yml` **verbatim in every case** (`Syncer.copyTemplates`). **The asymmetry is deliberate and both directions were considered:** `.felhom.yml` carries no image, and it carries `catalog_since` — the single input the update badge uses to say *„Frissítés elérhető — N napja"* — so freezing it would silently withhold the one number that tells a customer they are behind, i.e. it would break slice 2 to protect slice 3. **What it costs:** the file also carries the controller-side `healthcheck:` block and resource hints, so a template updated for a newer version can hand a frozen app a probe written for software it is not running. **THE FAILURE DIRECTION IS A FALSE ALARM, NEVER DATA LOSS** — the app keeps running; at worst it renders as degraded and, if it persisted, could reach the dead-app alarm path. That is the same class as R-330's false e-mails, which is why this is a row and not a footnote. **Not fixed now, and the reason is that the cheap fix is wrong:** freezing the whole file breaks the badge, and freezing only the `healthcheck:` key means the syncer would have to parse and re-assemble a customer-facing metadata file — new surface on the one path that touches every app on every box every 15 minutes. **What would settle it:** whether any catalog `healthcheck:` has ever been changed in the same commit as an `image:` line (measurable from the catalog's own history, no box needed). If the answer is "never", the exposure is theoretical and the row can be closed by measurement instead of by code. Owner: **CC.** `architecture/09-update-architecture.md` §5.4, §8.5 | **READY — rank P3-LOW; owner: CC** |
| **R-459** | **[P2-MEDIUM] Our own bookstack template moves MariaDB across a MAJOR while the image tells us, in its own words, that the datadir upgrade it needs is being SKIPPED.** MEASURED 2026-09-06 in a throwaway guest, on the catalog's own transition `0b73e5e` (mariadb `11.6` → `12.3`): the moment 12.3 starts on the 11.6 datadir it logs **`[Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting`** — and then serves normally. `templates/bookstack/docker-compose.yml` sets **no `MARIADB_*` environment at all**, so `MARIADB_AUTO_UPGRADE` is unset and the entrypoint declines to run `mariadb-upgrade`. **THE CAUSE IS ASSIGNED, NOT GUESSED:** the edge was decomposed, and the app half alone (`E3a`, engine held at 11.6) produces **no** upgrade line while both edges that move the engine (`E3`, `E3b`) produce it. A bundled edge could never have said which half. **AND IT EXPLAINS A RESULT THAT LOOKED LIKE GOOD NEWS:** the abort of E3 "worked" — 11.6 came back and served the data, logging `MariaDB upgrade not required` — **because the datadir was never converted.** The reversibility is a side-effect of an upgrade that did not fully happen. **WHAT IS NOT ESTABLISHED, and this row must not be read past: whether running 12.3 on an unconverted 11.6 datadir ever actually breaks.** It did not break here. MariaDB calls the upgrade required; we measured that it is skipped and did **not** measure a consequence. **What would settle it, cheaply:** run the E3 edge, then restart the stack several times and exercise the app, watching for the entrypoint's own complaint to become an error — one guest, no new mechanism. **The fix, if the consequence is real, is one line of template env**, but setting `MARIADB_AUTO_UPGRADE` fleet-wide is a change to how every MariaDB app upgrades and is the operator's call, not a quiet edit. Owner: **CC measures, VIKTOR rules on the fleet-wide env.** `audits/SPIKE-upgrade-test-2026-09-06.md` §4 | **READY — rank P2-MEDIUM; owner: CC measures, VIKTOR rules** |
| **R-459** | **[P3-LOW, was P2] MEASURED 2026-09-06 — the skipped MariaDB conversion is STABLE but never self-resolving, and fixing it costs 7 SECONDS and does NOT cost the ability to go back.** The consequence R-459 deliberately left unmeasured is now measured: `audits/SPIKE-r459-mariadb-upgrade-2026-09-06.md`. **(1) It does not degrade: 5 of 5 restarts of 12.3 on the 11.6 datadir, readback passed every time, `mariadb_upgrade_info` unchanged at `11.6.2-MariaDB`, and the entrypoint's line never escalated past `[Note]`.** **(2) It never heals either** — the engine answers `Major version upgrade detected from 11.6.2-MariaDB to 12.3.3-MariaDB. Check required!` on every start, and will forever. **(3) THE TRADE THIS ROW WAS EXPECTED TO PRODUCE DOES NOT EXIST.** The fear was that converting properly would end the ability to abort. Measured: with `MARIADB_AUTO_UPGRADE=1` the conversion **succeeds** across the multi-major jump (so it is not a stepping problem either), takes **7 s**, takes its own system-database backup first (`system_mysql_backup_11.6.2-MariaDB.sql.zst`), and **putting 11.6 back afterwards still starts and serves the data**. **So the choice is no longer a trade; it is a cheap correction.** **WHAT REMAINS OPEN IS THE DECISION, NOT THE MEASUREMENT:** setting `MARIADB_AUTO_UPGRADE` changes how **four** apps upgrade — bookstack (the only one that has moved a major), kimai, nextcloud, romm — and R-459's original owner line reserves a fleet-wide env change for the operator. **Nothing was committed to any template**; the comparison arm used a scratch copy inside a throwaway guest. **NOT ESTABLISHED, and not smuggled in: whether any specific MariaDB FEATURE misbehaves on unconverted system tables.** This run exercised BookStack's normal read/write path only, over minutes, with one seeded record. **Rank dropped P2 → P3** because the failure mode is now bounded by measurement rather than unknown. Raised in `STATUS.md`. | **WAITING-ON-OPERATOR — rank P3-LOW; owner: VIKTOR rules on the fleet-wide env, CC implements** |
| **R-460** | **[P3-LOW] BookStack's FILE half cannot be seeded or verified without a browser, so its upgrades can only ever be auto-proven for the DATABASE.** MEASURED 2026-09-06 while building the R-449 harness. BookStack's API needs a token that is only mintable through its web UI, and its HTTP login is unusable headlessly for a second, independent reason: `APP_URL` comes from the template as `https://${SUBDOMAIN}.${DOMAIN}`, so the app marks its session and XSRF cookies **`secure`**; curl over plain http stores neither and **every login POST returns 419 Page Expired**, which looks exactly like a wrong password. The container serves no TLS. **The database half IS provable** — the harness seeds with `php artisan bookstack:create-admin` and reads back with a DIFFERENT artisan command that must find the record, carrying its own negative control on every call. **What is unprovable is an uploaded image or attachment**, i.e. exactly the half a customer would notice. **THIS IS A FACT ABOUT THE APP, NOT A DEFECT IN THE HARNESS**, and it is recorded because Slice 6 needs to know which apps can be auto-verified and which can only be partly verified — nobody had that list before. **Deliberately NOT worked around:** planting a file in the volume would make the test pass while proving nothing, which is R-156's exact failure. **What would remove it:** a headless token route (upstream), or accepting a browser-driven step for this app alone, which DooPlex cannot run. Owner: **CC.** `audits/SPIKE-upgrade-test-2026-09-06.md` §6 | **READY — rank P3-LOW; owner: CC** |
| **R-461** | **[P3-LOW] `runbooks/target-selection.md` names a venue that does not exist and fences a fixture that is gone.** MEASURED 2026-09-06 on demo-hp while siting the R-449 guest. (a) The runbook says to put VM disks on a dir storage at **`/mnt/nvme-1tb`, at its root**. **There is no `/mnt/nvme-1tb`** — the 1 TB NVMe is mounted at **`/mnt/hdd_1`**, which is the enrolled user-data drive and the `felhom-backup` target, i.e. the same disk under a different path. The instruction's REASON is still exactly right (`local-lvm` is an over-subscribed thin pool backing the live guest 9201, and this run kept off it — `local-lvm` read **30.50 % before and after**), so the fence held; only its address is stale. (b) The runbook forbids destroying **`drill-r50` (VM 300)**, "the only drift fixture (R-93)". **`qm list` returns nothing on demo-hp** — there are no VMs at all. **The fence currently protects nothing, and R-93's premise that a drift fixture exists is false.** **Why it is a row and not a quiet edit:** a runbook that names a path nobody can find is one a session works around, and working around a safety instruction is how the instruction stops being followed. Both halves need checking against the box before the text is changed — (b) in particular may mean R-93 should be closed or reopened as "the drift fixture is gone", which is a different fact from "do not destroy it". Owner: **CC.** `audits/SPIKE-upgrade-test-2026-09-06.md` §7 | **READY — rank P3-LOW; owner: CC** |
| **R-462** | **[P2-MEDIUM] Widen the upgrade harness beyond three apps — and the cost is dominated by FIXTURES, not by machine time.** The R-449 harness works and is proven by a red negative control (`audits/SPIKE-upgrade-test-2026-09-06.md` §1). **Costed with this run's REAL numbers rather than an estimate:** a successful edge takes **6.4 s – 305.1 s, median 71.8 s**; a FAILING edge takes **556 s**, roughly **8×**, because a negative is only honest if it waits out the full settle window; 3 apps / 11 images cost **5.07 GB**, so 53 apps naively extrapolate to **~90 GB** and, at the median, about an hour of harness time for one edge each. **THAT EXTRAPOLATION UNDERSTATES THE REAL COST BY AN ORDER OF MAGNITUDE, and that is the point of this row.** Two of the three apps needed a bespoke non-browser seed route; one needed two attempts and a discarded approach; one (bookstack) can only ever be half-proven (R-460). **Fixture time scales with apps and does not amortise.** **The decision this row is really asking for is scope, not schedule:** all 53, or only the apps a customer would lose data from, or only apps whose catalog transition is a MAJOR. **Recommended shape, NOT a design — the operator picks:** start with the apps that carry a database, because §3 measured that the abort question only ever bites there. Owner: **VIKTOR rules on scope, CC implements.** `audits/SPIKE-upgrade-test-2026-09-06.md` §5 | **READY — rank P2-MEDIUM; owner: VIKTOR rules on scope, CC implements** |
| **R-463** | **[P2-MEDIUM] The day the catalog moves `postgres:16` to `17`, ELEVEN apps are affected and the container image will NOT perform the conversion — and nothing anywhere records that.** MEASURED 2026-09-06: 11 of the 53 templates carry PostgreSQL — **8 on `postgres:16-alpine`**, 1 on `postgres:15-alpine`, plus `postgis/postgis:16-3.5-alpine` and Immich's own `postgres:16-vectorchord…` build. **A grep of the whole register for `pg_upgrade`, "postgres major" or "postgresql major" returns ZERO** (confirmed this session, and confirmed again before filing). **WHY IT IS NOT THE SAME PROBLEM AS R-459, and this is the point of the row: the two engines fail in OPPOSITE directions.** MariaDB starts anyway and skips the conversion quietly, which is why R-459 went unnoticed until a harness looked. **PostgreSQL REFUSES TO START on a datadir from an older major** — the official image performs no `pg_upgrade` and exits with a message naming both versions. So the Postgres case cannot hide; it will present as eight apps down at once, on the sync after the catalog moves. **DELIBERATELY NOT MEASURED HERE, and saying so is the scope discipline:** R-459's task was scoped to MariaDB, and measuring the Postgres analogue is its own piece of work with its own venue. **This row exists so the gap is a record rather than a sentence in an audit nobody greps.** What would settle it: one edge on the existing harness (`postgres:16-alpine` → `17-alpine`) on a scratch host, which would also exercise the `engine_state_after` field's Postgres probe end to end — it is written but has never run against a real Postgres major. Owner: **CC.** `audits/SPIKE-r459-mariadb-upgrade-2026-09-06.md` §7 | **READY — rank P2-MEDIUM; owner: CC** |
| **R-464** | **[P3-LOW] MariaDB's entrypoint prints `MariaDB upgrade not required` on an UNSUPPORTED DOWNGRADE, so that line cannot be used as a soundness signal.** MEASURED 2026-09-06. After converting a datadir to `12.3.3-MariaDB` and then starting **11.6** on it, the entrypoint logs, on every start: **`[Note] [Entrypoint]: MariaDB upgrade not required`**. Asked properly, the same engine answers **`FATAL ERROR: Version mismatch (12.3.3-MariaDB -> 11.6.2-MariaDB): Trying to downgrade from a higher to lower version is not supported!`** **The entrypoint compares the datadir's recorded version against its own and concludes there is nothing to DO. That is true, and it is not a statement that the state is sound.** **THIS IS THIS PROJECT'S MOST-REPEATED CLASS, in a new costume** — the same shape as `CLAUDE.md`'s "presence is not success" and as R-443's HTTP 200 over a crash-looping app: a reassuring sentence that answers a narrower question than the one a reader will take it for. **Why it is worth a row rather than a footnote: the obvious cheap instrument for R-459 is to grep container logs for that exact line**, and such an instrument would report "fine" for an unsupported downgrade. **The correct probe is `mariadb-upgrade --check-if-upgrade-is-needed`**, which is what `upgrade-test.py`'s `engine_state_after` now uses. **Also recorded, because it nearly produced a wrong answer here: run without credentials that command returns `ERROR 1045 … FATAL ERROR: Upgrade failed` with exit 1** — an authentication failure wearing the shape of a verdict. Owner: **CC.** `audits/SPIKE-r459-mariadb-upgrade-2026-09-06.md` §5.4 | **READY — rank P3-LOW; owner: CC** |
<!-- DUE-CHECKS-BEGIN — machine-readable. Parsed by scripts/due_checks_gate.py.
One row per dated check. The R-number must have a row above. Dates are UTC.
+1 -1
View File
@@ -52,7 +52,7 @@
| ID | Item | Size | Status | Notes |
|----|------|------|--------|-------|
| **UPDATE-ARC** | **The app-update arc — seven slices, from "nobody knows what any box runs" to "an update is a decision the box can take safely."** Opened after `audits/SPIKE-app-update-2026-09-01.md` measured what an update actually does. | L | **slices 1, 1b, 2, 3 & 5 SHIPPED (controller v0.233.0 / v0.234.0 / v0.235.0; harness `app-catalog/scripts/upgrade-test.py`); slices 4, 6, 7 open** | **The reasoning has a home and it is the point of the exercise: `architecture/09-update-architecture.md`** — a LIVING document, updated by every slice in the same session, created because its ABSENCE was a finding (R-438: the mechanism was chosen deliberately and written down nowhere). **Capability-map rows this flips:** the App-lifecycle row (`00-capability-map.md`, "start/stop/restart/update/logs/remove/redeploy") and its 2026-09-01 sibling ("what restart and update do to a deployed app whose compose file the catalog already moved") — both recorded that the ACTIONS work and said nothing about VERSIONS. Slices 1 and 2 add the version half. **The findings live in the register, per the ONE REGISTER ruling:** R-438, R-440, R-441, R-443 (existing) and R-446..R-452 (this session) — one row per remaining slice, each with a rank and an owner, so the arc is visible in the register and not only in a task file. **Slice 3 SHIPPED 2026-09-06 (controller v0.235.0) on the operator's ruling — Option 1, *freeze the version, keep the fixes flowing*.** It was BLOCKED until then, deliberately: changing what the syncer does to a deployed app reverses a decision, not a bug. R-447, R-441 and R-438 are CLOSED by it; **Slice 5 SHIPPED 2026-09-06 as a spike** — `scripts/upgrade-test.py`, 7 edges over 3 apps, proven by a RED negative control, closing R-449 and opening R-459/R-460/R-462. **Its headline changes an assumption this arc was carrying: whether an update can be undone is a property of the individual APP, not of updates** — docmost refuses, privatebin does not — so any design assuming one answer for all 53 is designing against a checked-and-false fact. **R-448 (slice 4, the guarded update) is now the head of the arc** and is where the backup precondition goes — slice 3 did NOT make the Update button safer and must not be read as having done so. |
| **UPDATE-ARC** | **The app-update arc — seven slices, from "nobody knows what any box runs" to "an update is a decision the box can take safely."** Opened after `audits/SPIKE-app-update-2026-09-01.md` measured what an update actually does. | L | **slices 1, 1b, 2, 3 & 5 SHIPPED (controller v0.233.0 / v0.234.0 / v0.235.0; harness `app-catalog/scripts/upgrade-test.py`); slices 4, 6, 7 open** | **The reasoning has a home and it is the point of the exercise: `architecture/09-update-architecture.md`** — a LIVING document, updated by every slice in the same session, created because its ABSENCE was a finding (R-438: the mechanism was chosen deliberately and written down nowhere). **Capability-map rows this flips:** the App-lifecycle row (`00-capability-map.md`, "start/stop/restart/update/logs/remove/redeploy") and its 2026-09-01 sibling ("what restart and update do to a deployed app whose compose file the catalog already moved") — both recorded that the ACTIONS work and said nothing about VERSIONS. Slices 1 and 2 add the version half. **The findings live in the register, per the ONE REGISTER ruling:** R-438, R-440, R-441, R-443 (existing) and R-446..R-452 (this session) — one row per remaining slice, each with a rank and an owner, so the arc is visible in the register and not only in a task file. **Slice 3 SHIPPED 2026-09-06 (controller v0.235.0) on the operator's ruling — Option 1, *freeze the version, keep the fixes flowing*.** It was BLOCKED until then, deliberately: changing what the syncer does to a deployed app reverses a decision, not a bug. R-447, R-441 and R-438 are CLOSED by it; **Slice 5 SHIPPED 2026-09-06 as a spike** — `scripts/upgrade-test.py`, 7 edges over 3 apps, proven by a RED negative control, closing R-449 and opening R-459/R-460/R-462. **Its headline changes an assumption this arc was carrying: whether an update can be undone is a property of the individual APP, not of updates** — docmost refuses, privatebin does not — so any design assuming one answer for all 53 is designing against a checked-and-false fact. **R-459 was measured 2026-09-06 and narrowed to a decision, not a defect:** the skipped MariaDB conversion is stable but never self-resolving, and correcting it costs 7 s and does **not** cost the ability to abort — so the trade that row was expected to produce does not exist. Opened R-463 (the PostgreSQL analogue, which fails in the OPPOSITE direction — it refuses to start, and 8 templates sit on `postgres:16-alpine`) and R-464 (an entrypoint line that says `upgrade not required` on an unsupported downgrade). **R-448 (slice 4, the guarded update) is now the head of the arc** and is where the backup precondition goes — slice 3 did NOT make the Update button safer and must not be read as having done so. |
| R-6 | **Spike: LAN service discovery from the guest** — SSDP multicast (UDP 1900, DLNA), WSD (Windows discovery), mDNS; host-network vs macvlan; is the customer LXC LAN-bridged in appliance deployments? | M | **spiked (2026-07-18)** | **VERDICT: appliance guest IS LAN-bridged (own DHCP lease on the household /24); multicast discovery works ONLY in the guest netns — guest-direct or Docker `--network host` (SSDP/mDNS/WSD all PASS both ways); the default docker bridge is categorically DEAF to LAN multicast (WSD/mDNS RX FAIL, unicast-publish PASS). Real samba+wsdd on host-net → Windows 11 ProbeMatch + FELHOM-SPIKE renders in Explorer + 445 + authenticated SMB round-trip all PASS; real SSDP `MediaServer:1` advert reaches both LAN clients. → R-7 SMB stack MUST be host-network LAN-bound; R-8 Jellyfin-DLNA plausible if host-network. Caveat: `vmbr0 multicast_snooping=1` worked only because the household router is a live querier — customer LANs w/ snooping+no-querier, and Peti's BYO bridge, are UNTESTED gaps.** **S4b (human leg, the sharpest finding): wsdd makes the box VISIBLE but the Explorer double-click FAILS `0x80070035` — WSD gives no name resolution; the flat `\\FELHOM-SPIKE` resolved by no path. Adding `nmbd` (NetBIOS) fixed it live (flat name resolves + mounts). → R-7 needs smbd+wsdd+nmbd (+avahi/.local for modern clients), not wsdd alone.** Doc: `audits/SPIKE-lan-discovery-2026-07-18.md`. |
| R-7b | **Share backup EXECUTION** — put share data into the live tier-2 + offsite runs (the design fork reported by R-7 slice 1) | M | **SHIPPED (controller v0.145.0, 2026-07-18)** | **Viktor's ruling: Model B′ — a SIBLING shares source.** New, additive job/leg code reusing the proven primitives (tier-2 mirror seam, restic wrappers, soft-quota/enlargement gate, status recorders) while leaving **every per-app engine path byte-identical** — NOT a synthetic recovery unit (breaks on multi-drive shares, wraps 1 KB of JSON in dump machinery) and NOT engine-loop surgery. The B′ invariant is enforced by test in both tiers, red-proofed. Tier 2 → `RunSharesTier2` (legs grouped by SOURCE drive → `backups/secondary/_shares/<driveKey>/<share>`, payload at `_payload/`, layout marker LAST). Tier 3 → `runOffboxSharesLeg`: ONE extra `restic backup --tag felhom-offbox --tag _shares` placed after the app loop and BEFORE retention, so `forget --group-by host,tags` covers the new group with no flag change; a quota-blocked push degrades to the **manifest only, never to nothing**. Restore → „Megosztások" on `/backups/restore`: scratch, then a missing-only merge whose every destination is PREFIX-ASSERTED against live storage roots, definitions merged existing-wins, then `ReconcileSamba`, then the credential. The **payload** (`_shares-manifest.json` + a best-effort secret-bearing `passdb.tar`) is what makes DR return files + configuration + password rather than loose bytes. **Fold-in: samba joins the liveness set** — `EffectiveProtected` adds the CONTAINER `felhom-samba` exactly while sharing is on. **FULLY PROVEN-LIVE on demo (2026-07-18), all four legs.** (1) tier-2: real `/api/backup/tier2` trigger → `_shares` tree + marker + payload on the cross-drive target, mirrored file md5-identical, payload 0600 preserved. (2) offsite: Viktor's manual run 12:18:16Z → snapshot **`e0b9d723`** (tags `felhom-offbox,_shares`) with the payload dir + both share folders; a second run via the „Távoli mentés" button → **`4e2b15ec`**, containing `_shares-manifest.json` (418 B) AND `passdb.tar` (855 040 B), both 0600, share files with uid 1000 preserved. (3) restore round-trip: probe file + the `dokumentumok` DEFINITION deleted via the real endpoints, then „Megosztások" restore + place → `1 file(s), 1 definition(s) re-added, 1 kept, 0 refused, credential=true`; probe back md5-identical, the two pre-existing files NOT overwritten (missing-only proven on live data), definition back with its ORIGINAL flags and created_at, `smb.conf` re-rendered, `filmek` untouched. (4) liveness: samba stopped → `health_critical` pushed and hub-accepted (200) → self-healed. Remaining human leg: SMB positive auth with the real household password (never persisted by design). **Correction:** an earlier revision of this row and of the ship REPORT wrongly claimed the demo box had no offsite target — the verification read a guessed settings key (`offbox_target`) instead of the real one (`offbox`); root cause dissected in REPORT §7b. Findings: the reserved-name assumption was FALSE (`nbNameRe` accepted „_shares" as a share name — now refused); the alert/e-mail pipeline needed NO change and adds no new event type. Docs: `controller/sharing.md`; ship report `felhom-controller/REPORT.md`. |
| R-8 | DLNA (**gate input now exists — R-6 spiked 2026-07-18: SSDP reaches LAN clients from host-net**): validate Jellyfin's built-in DLNA server first; only add minidlna to the catalog if Jellyfin-DLNA fails | S | idea (unblocked) | Don't add catalog weight before proving the cheap path. **R-6 confirmed the cheap path is physically viable — Jellyfin DLNA must run host-network (same multicast constraint as R-7)** |