Files
felhom.eu/documentation/audits/pg-last-six-2026-09-30/A1/upstream-notes.md
T
admin 25cb3eb9c1
gates / gates (push) Successful in 29s
The last six PostgreSQL apps decided; the gate's wait seen live by day; catalog currency; stale rows
- R-463 CLOSED: rallly, outline, sparkyfitness -> PostgreSQL 18 (catalog 25ffd89 / aeb0cd6 / 1666572),
  each proven on the bench and on 9202 through the guarded Update with one undo case; zipline,
  adventurelog, immich stay on 16 by 09 decision 42's rule (upstream runs 16 / 16 / 14).
- Part F: bookstack, kimai, audiobookshelf, n8n, navidrome, grafana, komga moved on both venues;
  immich not (R-732: its first start OOM-killed its database on the bench).
- R-687 item 4 PROVEN LIVE on demo-hp: two deferrals while the leg stepped two apps, the whole-guest
  backup on the first poll after, success; config + window put back and read back.
- Catalog currency audit (Part D): 25/53 behind inside a major, 19 across; night-updatable 28 -> 31 (+1).
- R-446 and R-440 narrowed (measured on demo-hp); R-624 corrected (outline, rallly, zipline have routes);
  R-548 note (demo-hp's local tier refused for space since 09-27).
- New rows: R-730 (the ISO 1.29.0 build commit cannot be proven -> no tag; installer-v* is the script's
  line), R-731 (tag-shape switches), R-732. Register 361 -> 364.
- 09 §3: the 2026-09-30 operator notes (by day; Tester-2 pre-checks done; decision 52 not needed, not
  recorded); §6.4 dated currency note. STATUS, CONTEXT, REPORT-pg-last-six-2026-09-30.md.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-09-30 14:47:12 +02:00

12 KiB
Raw Blame History

A1 — upstream PostgreSQL notes for the last six apps (2026-09-30)

Read-only research. Fetched 2026-09-30 with curl (GitHub raw / API, ghcr, Docker Hub) and WebFetch (docs sites). Nothing on any Felhom host was touched. Rule applied: Felhom decision 42.

Catalog pins (app-catalog-felhom.eu/templates//docker-compose.yml, working tree)

app app image db image data mount
outline outlinewiki/outline:1.9.1 postgres:16-alpine /var/lib/postgresql/data
rallly lukevella/rallly:4.11.1 postgres:16-alpine /var/lib/postgresql/data
zipline ghcr.io/diced/zipline:4.6.1 postgres:16-alpine /var/lib/postgresql/data
sparkyfitness codewithcj/sparkyfitness(_server):v0.17.3 postgres:15-alpine /var/lib/postgresql/data, PGDATA=/var/lib/postgresql/data/pgdata
adventurelog ghcr.io/seanmorley15/adventurelog-backend/-frontend:v0.13.0 postgis/postgis:16-3.5-alpine /var/lib/postgresql/data
immich ghcr.io/immich-app/immich-server:v3.2.2 ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0 /var/lib/postgresql/data

Newest upstream releases (GitHub API /releases, 2026-09-30)

  • outline/outline: v1.10.1 (2026-09-09)
  • lukevella/rallly: v4.15.3 (2026-09-29); pinned v4.11.1 published 2026-06-20
  • diced/zipline: v4.8.0 (2026-09-27)
  • CodeWithCJ/SparkyFitness: v1.7.3 (2026-09-28); pinned v0.17.3 published 2026-07-06
  • seanmorley15/AdventureLog: v0.13.0 (2026-08-12) = pinned
  • immich-app/immich: v3.2.4 (2026-09-28) latest stable; v3.3.0-rc.0 (2026-09-29) prerelease

PostgreSQL EOL (https://www.postgresql.org/support/versioning/, fetched 2026-09-30)

18: 18.6, first 2025-09-25, final November 14, 2030 · 17: 17.11, final November 8, 2029 · 16: 16.15, final November 9, 2028 · 15: 15.19, final November 11, 2027 · 14: 14.24, final November 12, 2026. PG 19 is in beta (19 Beta 4), not yet in the table.

outline

rallly

  • https://raw.githubusercontent.com/lukevella/rallly/v4.11.1/docker-compose.yml and .../v4.15.3/docker-compose.yml (repo-root compose, builds from source): image: postgres:18-alpine, - db-data:/var/lib/postgresql. Commit history of that file: 3407ebeb 2026-05-07 ⬆️ Upgrade postgres to 18-alpine (before v4.11.1).
  • Official self-host repo https://raw.githubusercontent.com/lukevella/rallly-selfhosted/main/docker-compose.yml (not tagged per app version): image: postgres:${POSTGRES_VERSION:-14}-alpine with comment "(… fresh installs get 18). The defaults below match the original postgres 14 deployment … They are a compatibility fallback, not a version choice"; and "postgres images ≥18 moved PGDATA and expect the volume mounted at /var/lib/postgresql instead of /var/lib/postgresql/data." History: 75c23d09 2026-07-08 Provision Postgres 18 on fresh installs, pin existing volumes to their major, 3e8fe380 2026-07-14 Add upgrade-db command and Postgres EOL warning.
  • https://raw.githubusercontent.com/lukevella/rallly-selfhosted/main/README.md: "POSTGRES_VERSION | Bundled Postgres major version — pinned automatically on first start (18 for fresh installs, …)"; "To move to the current version (18):" … "./rallly.sh upgrade-db" "dumps the database …, restores it into a fresh PostgreSQL 18 volume".
  • Documented lower bound: not found.

zipline

sparkyfitness

adventurelog

immich

  • https://raw.githubusercontent.com/immich-app/immich/v3.2.2/docker/docker-compose.yml line 59, identical at v3.2.4 and v3.3.0-rc.0: image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23 and - ${DB_DATA_LOCATION}:/var/lib/postgresql/data.
  • https://raw.githubusercontent.com/immich-app/immich/v3.2.4/docs/docs/administration/postgres-standalone.md (same at v3.2.2): "Immich is known to work with Postgres versions >= 14, < 20." / "The current accepted range for VectorChord is >= 0.3, < 2.0." / "Support for pgvecto.rs has been dropped as of 3.0" / "When installing a new version of VectorChord, you will need to manually update the extension and reindex … ALTER EXTENSION vchord UPDATE; REINDEX INDEX face_index; REINDEX INDEX clip_index;"
  • .../docs/docs/install/upgrading.md: "The new DB image includes pgvector and pgvecto.rs in addition to VectorChord, so you can use this image to restore from existing backups that used either of these extensions. However, backups made after switching to VectorChord require an image containing VectorChord to restore successfully." / "you can optionally switch to an image variant that doesn’t have pgvecto.rs installed after you’ve performed the migration and started Immich: ghcr.io/immich-app/postgres:14-vectorchord0.4.3, changing the PostgreSQL version as appropriate." / "it’s normal for the server logs to be seemingly stuck at Reindexing clip_index and Reindexing face_index".
  • .../docs/docs/administration/backup-and-restore.md: manual backup = pg_dump --clean --if-exists --dbname=…; restore = pipe into psql with --single-transaction --set ON_ERROR_STOP=on on a fresh DB; "requires a completely fresh install". Whether vector indexes are carried or rebuilt by a dump/restore: NOT STATED in the docs.
  • Server source v3.2.4:
    • server/src/constants.ts: export const POSTGRES_VERSION_RANGE = '>=14.0.0';, export const VECTORCHORD_VERSION_RANGE = '>=0.3 <2';
    • server/src/services/database.service.ts (startup, under the migrations lock): if (installedVersion && semver.gt(availableVersion, installedVersion)) { await this.updateExtension(extension, availableVersion); } … await this.databaseRepository.reindexVectorsIfNeeded([VectorIndex.Clip, VectorIndex.Face]); … and if (dbName !== extension && installedVersion && !isDepended) { await this.dropExtension(dbName); } (drops any installed non-active vector extension, i.e. pgvecto.rs vectors, keeping pgvector vector because vchord depends on it).
    • server/src/repositories/database.repository.ts updateVectorExtension: drops clip_index/face_index, ALTER EXTENSION … UPDATE TO, then reindexVectors both. reindexVectorsIfNeeded rebuilds an index that is missing, not using vchordrq, or whose lists no longer matches the row count.
  • ghcr tags (anonymous token, https://ghcr.io/v2/immich-app/postgres/tags/list, 174 tags, all of form <pg>-vectorchord…):
    • 16: 16-vectorchord0.4.3, 16-vectorchord0.4.3-pgvectors0.2.0/0.2.1/0.3.0, …-pgvector0.8.1…, 16-vectorchord0.5.3, 16-vectorchord0.5.3-pgvector0.8.1, 16-vectorchord1.1.1
    • 17: pgvecto.rs only as -pgvectors0.3.0 (no 0.2.x); 17-vectorchord0.4.3, 17-vectorchord0.5.3, 17-vectorchord1.1.1
    • 18: ONLY 18-vectorchord0.5.3, 18-vectorchord0.5.3-pgvector0.8.1, 18-vectorchord1.1.1 — no pgvecto.rs variant, no vchord 0.4.x
    • no PG19 tag.