The Keycloak Upgrade Ledger

Every upgrade we have rehearsed, with the environment stated and the clock running.

2026-08-25 · run 2026-08-25-26.0.0-to-26.7.1-1

26.0.0 → 26.7.1

Upgrade
26.0.0 → 26.7.1
Scale
unchanged: 1000 users, carried through the previous upgrade
Database
PostgreSQL 16.15 (Debian pgdg13), single node, container
Topology
single container, single replica
Host
Hetzner CCX33 (fsn1) — 8 vCPU dedicated, 30GB usable RAM, 226GB local NVMe, Debian 13, kernel 6.12.101+deb13-cloud-amd64
Rehearsal
attempt 1 of 3 — this lab holds a path to three clean runs, one exercising rollback
Condition
routine — no adverse condition applied
Elapsed
not captured | operator error — the elapsed line was filtered out of the captured output. Re-run required for a clean total.

Environment

Identical to 2026-08-25-25.0.6-to-26.0.0-1 (same box, same fixture, same container) except:

FieldValue
Keycloak from → to26.0.0 → 26.7.1
Distributionquay.io/keycloak/keycloak 691MB → 766MB
Dataset scaleunchanged: 1000 users, carried through the previous upgrade
Prior staterealm had already been migrated 25.0.6 → 26.0.0 in the run above

Caveat on comparability: this realm reached 26.0.0 by migration, not by a clean 26.0.0 install. A realm that was born at 26.0.0 may migrate differently. Stated because our fixture-comparability rule makes differently-shaped fixtures non-aggregatable, and this is a shape difference.

Procedure

./bin/snapshot.sh baseline-26.0.0-typical-1k
./bin/upgrade.sh 26.7.1

Timings

PhaseDurationNotes
Container start → server "started"3.029sQuarkus self-report, 15:32:28,510
Liquibase / schema migration~3.3s15:32:29,111 "Updating database" → 15:32:32,414 reaching 26.7.0
Model migration chainwithin the abovestepped internally through 26.3.0 → 26.4.0 → 26.4.3 → 26.6.1 → 26.6.2 → 26.7.0, each migrating both lab and master
Total to readynot capturedoperator error — the elapsed line was filtered out of the captured output. Re-run required for a clean total.

Outcome

Breakage observed

Schema migration ran AFTER the server reported "started"

Hostname v1 warning changed emission path between 26.0.0 and 26.7.1

Rollback

Verification

ClaimPrimary sourceChecked
26.7.x defers schema migration out of the startup pathUNRESOLVED — see NEXT ACTION above
Hostname v1 message moved from logger to CLI outputKeycloak release notes 26.1–26.7 — not checked

Publishable extract

Withheld — the headline observation is explicitly unconfirmed.

← All runs