Skip to content

chore(outline): update Outline to 1.12.0 - #26

Merged
huksley merged 1 commit into
mainfrom
feature/ID-911-update-outline-template-to-1-12-0
Nov 6, 2026
Merged

huksley merged 1 commit into
mainfrom
feature/ID-911-update-outline-template-to-1-12-0

Conversation

@huksley

@huksley huksley commented Nov 6, 2026

Copy link
Copy Markdown
Member

Updates the outline template so new launches get Outline 1.12.0 and a Postgres version that starts. Existing apps are unaffected on redeploy.

Images (old -> new)

Image Old New (new launches) Compose default
docker.getoutline.com/outlinewiki/outline (IMAGE_TAG) 0.86.1 (compose default 0.84.0) 1.12.0 0.84.0 (unchanged)
postgres (POSTGRES_VERSION, new) untagged (latest, now 18.x) 17.10 latest
redis untagged unchanged -

Tags checked on Docker Hub (HTTP 200 from hub.docker.com/v2/repositories/.../tags/<tag>):

  • outlinewiki/outline:1.12.0 -> 200
  • outlinewiki/outline:1.10.1 (intermediate upgrade step) -> 200
  • library/postgres:17.10 -> 200

Changes

  • outline/.dollardeploy.yml: IMAGE_TAG: "1.12.0", new POSTGRES_VERSION: "17.10".
  • outline/docker-compose.yml: image: postgres -> image: postgres:${POSTGRES_VERSION:-latest}. Nothing else changed: same service names, volumes, mount paths, DB credentials and ports.
  • outline/README.md: adds notes on versions and upgrades. Covers the 0.x -> 1.12.0 path through 1.10.1, plus the Postgres 18 mount issue.

Postgres: why pin 17.10

Since PostgreSQL 18 became latest, the official image expects data in /var/lib/postgresql/18/docker. If /var/lib/postgresql/data is a mount, its entrypoint refuses to start (docker_error_old_databases). This template mounts database-data:/var/lib/postgresql/data, so a fresh launch on postgres:latest should fail to start Postgres. See docker-library/postgres#1259.

17 is the newest major that works with the existing mount. 17.10 is the newest 17.x that is at least 7 days old (17.11 was pushed 2026-11-05). Moving to 18 needs a mount path change and a data migration, so it is out of scope.

What I observed: I could not run Docker in the agent environment (docker compose / docker run need interactive approval), so I have not reproduced the failure locally. The failure analysis comes from the upstream entrypoint source and PR above. Please confirm on the post-merge demo deploy: a launch with POSTGRES_VERSION=17.10 should start, and one with postgres:latest on this mount should fail.

Breaking changes v0.86.1 -> v1.12.0

Releases: https://github.com/outline/outline/releases

  • v1.2.0: the Docker entrypoint changed and the image no longer uses Yarn. The template does not override entrypoint/command, so it is not affected.
  • v1.2.0 (#10897): SECRET_KEY must be exactly 64 hex characters. The template uses ${GENERATED_SECRET} (randomBytes(32).toString("hex"), 64 hex), so it complies.
  • v1.5.0 (#11334): DATABASE_READ_ONLY_URL was renamed. The template does not set it.
  • v1.6.0 (#11718): ALLOWED_DOMAINS / GOOGLE_ALLOWED_DOMAINS were removed. The template does not set them.
  • v1.7.0: share links are no longer created automatically. v1.9.0: collapsible headings were replaced by toggle headings. These change behaviour only.
  • v1.12.0 (#13973): migrations before v1.3.0 were compacted into a baseline. A database older than v1.3.0 fails to migrate. It must first be upgraded to a version between v1.3.0 and v1.10.1. This is documented in outline/README.md: a user who manually bumps IMAGE_TAG from 0.x must step through 1.10.1 first.
  • v1.12.0: the image now runs on Node 26.12.1 (security fixes).

Env var changes

  • New: POSTGRES_VERSION (.dollardeploy.yml: "17.10", compose default latest, which matches the old behaviour).
  • Changed: IMAGE_TAG "0.86.1" -> "1.12.0" in .dollardeploy.yml. The compose default 0.84.0 is unchanged.
  • Upstream .env.sample diff v0.86.1 -> v1.12.0 only adds optional variables (*_FILE secrets, REDIS_COLLABORATION_URL, AWS_S3_UPLOAD_METHOD, AWS_CLOUDFRONT_*, PROXY_IP_HEADER, PROXY_HEADERS_TRUSTED, RATE_LIMITER_MULTIPLIER, GITLAB_*, FIGMA_*). Nothing new is required and nothing the template sets was removed.
  • Migrations: Outline runs its DB migrations automatically on start. New launches need no manual steps.

Existing apps on redeploy

They keep their launch env: IMAGE_TAG stays at 0.86.1 (or earlier), so Outline is not upgraded. POSTGRES_VERSION is unset, so Postgres resolves to postgres:latest exactly as before. Nothing changes for them.

Validation

  • npm ci and node index.js > /tmp/templates-check.json succeed. templates.json is not edited.
  • Both YAML files parse (js-yaml).

Follow-ups (not changed here)

  • The outline port mapping is "${PORT:-3000}:${PORT:-3000}", which binds all interfaces instead of 127.0.0.1. It was left unchanged under the redeploy rules and is worth a separate ticket.
  • postgres 17 -> 18 would need a mount path change (/var/lib/postgresql) and a pg_upgrade data migration. This is a proposal only.
  • Existing apps launched while latest was 17.x or older will break on redeploy once their host pulls postgres:18. Setting POSTGRES_VERSION to their data major fixes it (see README). Consider backfilling POSTGRES_VERSION for existing apps.

Linear: https://linear.app/wizecore/issue/ID-911/update-outline-template-to-1120

🤖 Generated with Claude Code

- New launches get IMAGE_TAG=1.12.0 (compose default stays 0.84.0).
- Postgres image now uses ${POSTGRES_VERSION:-latest}; new launches
  pin 17.10 because postgres:latest (18.x) refuses to start with the
  /var/lib/postgresql/data mount.
- README: document the 0.x -> 1.12.0 upgrade path via 1.10.1.

Linear: https://linear.app/wizecore/issue/ID-911/update-outline-template-to-1120

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@huksley
huksley marked this pull request as ready for review November 6, 2026 06:05
@huksley
huksley merged commit 9f79bae into main Nov 6, 2026
@huksley
huksley deleted the feature/ID-911-update-outline-template-to-1-12-0 branch November 6, 2026 06:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant