25cb3eb9c1
gates / gates (push) Successful in 29s
- 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
12 KiB
12 KiB
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
- https://raw.githubusercontent.com/outline/outline/v1.9.1/docker-compose.yml and .../v1.10.1/docker-compose.yml
— this is the LOCAL-DEV compose (ports on 127.0.0.1, no app service). Both tags:
postgres:/image: postgres(unpinned = latest). - https://raw.githubusercontent.com/outline/outline/v1.9.1/.github/workflows/ci.yml line 94 and
.../v1.10.1/.github/workflows/ci.yml line 115:
image: postgres:14.2(CI test DB). - Official self-host compose = docs page https://docs.getoutline.com/s/hosting/doc/docker-7pfeLP5a8t
(unversioned, read 2026-09-30):
image: postgres:18, volumedatabase-data:/var/lib/postgresql. - Requirements https://docs.getoutline.com/s/hosting/doc/requirements-ULdYnwi4wG: "PostgreSQL (v14+)".
- What the docs compose said at v1.9.1: NOT FOUND (docs are not versioned; the Wayback Machine returned 429 / "Temporarily Offline").
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}-alpinewith 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
- https://raw.githubusercontent.com/diced/zipline/v4.6.1/docker-compose.yml and .../v4.8.0/docker-compose.yml:
image: postgres:16,- pgdata:/var/lib/postgresql/data. Dev compose same (image: postgres:16) at both. File history has no postgres bump since651efbc0 2024-12-28 feat: prisma migrations. - https://zipline.diced.sh/docs/get-started/docker: "This guide uses PostgreSQL"; no version sentence.
- https://raw.githubusercontent.com/diced/zipline-docs/trunk/docs/guides/migrate-pg-14-15.md: "PostgreSQL 14 is still supported until November 12th, 2026."
- Documented upper bound / PG17/18 statement: NOT FOUND (GitHub issue search "postgres 17 OR postgres 18" returned nothing relevant; #1054 is a collation-version mismatch report, not a major-version one).
sparkyfitness
- https://raw.githubusercontent.com/CodeWithCJ/SparkyFitness/v0.17.3/docker/docker-compose.prod.yml:
image: postgres:18.3-alpine,- ${DB_PATH:-./postgresql}:/var/lib/postgresql. - https://raw.githubusercontent.com/CodeWithCJ/SparkyFitness/v1.7.3/docker/docker-compose.prod.yml: same two lines.
- Commit
57536c4a 2026-03-20 Postgres 18.3 upgrade(touches docker-compose.prod.yml + docs/content/1.install/8.postgres-upgrade.md). - Stale doc at the pinned tag: https://raw.githubusercontent.com/CodeWithCJ/SparkyFitness/v0.17.3/docs/content/1.install/1.docker-compose.md
line 44
* **Image**: \postgres:15-alpine`(contradicts the compose in the same tag). At v1.7.3 docs/src/install/docker-compose.md line 51:- Image: `postgres:18.3-alpine``. - https://raw.githubusercontent.com/CodeWithCJ/SparkyFitness/v1.7.3/docs/src/install/postgres-upgrade.md:
"# PostgreSQL Upgrade (15 to 18.3)" … "upgrading your SparkyFitness PostgreSQL database from version 15-alpine to 18.3-alpine"
… method
pg_dumpall -U sparky > ./full_backup.sql, fresh dir, remount at/var/lib/postgresql. - .../v1.7.3/docs/src/install/external-database.md: "No extensions required. As of v0.17.0 release, SparkyFitness no
longer depends on
uuid-ossp,pgcrypto, orpg_stat_statements." and "UUID generation uses the built-ingen_random_uuid()(PostgreSQL 13+)"; "PostgreSQL 15+ only: the default public schema permissions changed in PG 15." - Version gap: pinned v0.17.3 (2026-07-06) vs newest v1.7.3 (2026-09-28) — crosses 0.x -> 1.x.
adventurelog
- https://raw.githubusercontent.com/seanmorley15/AdventureLog/v0.13.0/docker-compose.yml:
image: postgis/postgis:16-3.5,- postgres_data:/var/lib/postgresql/data/. Same in docker/docker-compose.database.yml, .dev.yml, .advanced.yml at v0.13.0 and in main/docker-compose.yml (2026-09-30). v0.13.0 is the newest release. - https://raw.githubusercontent.com/seanmorley15/AdventureLog/v0.13.0/documentation/docs/install/docker.md line 29:
"It is recommended to use the
imresamu/postgis:16-3.5-alpineimage" (ARM note). - backend/server/requirements.txt at v0.13.0:
Django==5.2.13,psycopg2-binary==2.9.10. - Documented supported PG range: NOT FOUND in AdventureLog docs.
- Docker Hub https://hub.docker.com/v2/repositories/postgis/postgis/tags?page_size=100&name=alpine (count 81, all read): 16-3.5-alpine (updated 2026-08-31), 16-3.4-alpine; NO 16-3.6-alpine. 17-3.5-alpine and 17-3.6-alpine (2026-08-31). 18-3.6-alpine (2026-08-31); NO 18-3.5-alpine. 19beta1-3.6-alpine.
- PostGIS https://postgis.net/docs/manual-3.6/postgis_administration.html ("Upgrading spatial databases"):
"By HARD UPGRADE we mean full dump/reload of postgis-enabled databases."; "If you are running PostGIS 3 or above,
then you should use the PostGIS_Extensions_Upgrade function to upgrade to the latest version you have installed."
(in-place/soft path); "If you installed PostGIS originally without a version specified, you can often skip the
reinstallation of postgis extension before restoring since the backup just has
CREATE EXTENSION postgisand thus picks up the newest latest version during restore."
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:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23and- ${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 atReindexing clip_indexandReindexing 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=onon 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]);… andif (dbName !== extension && installedVersion && !isDepended) { await this.dropExtension(dbName); }(drops any installed non-active vector extension, i.e. pgvecto.rsvectors, keeping pgvectorvectorbecause vchord depends on it). - server/src/repositories/database.repository.ts
updateVectorExtension: drops clip_index/face_index,ALTER EXTENSION … UPDATE TO, thenreindexVectorsboth.reindexVectorsIfNeededrebuilds an index that is missing, notusing vchordrq, or whoselistsno longer matches the row count.
- server/src/constants.ts:
- 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.