feat(discourse): switch to official discourse/discourse image (experimental) #4

Closed
autonomic-bot wants to merge 0 commits from discourse-official-image into main
Owner

Switch the discourse app from the paywalled bitnamilegacy image to the official discourse/discourse (experimental upstream). Behind Traefik via an install-ssl override (HTTP-only on :80, no built-in Let's Encrypt); sidekiq is internal so its service is dropped; DB reused as-is; uploads migrate from the legacy bitnami volume via an idempotent, non-destructive runit hook. Verified on cctest: fresh install + upgrade-from-bitnami-pg17 + upgrade-from-bitnami-pg13 (incl. 13→17) all serve with data intact. Hold prod until upstream drops the experimental label.

Switch the discourse app from the paywalled `bitnamilegacy` image to the official `discourse/discourse` (experimental upstream). Behind Traefik via an `install-ssl` override (HTTP-only on :80, no built-in Let's Encrypt); sidekiq is internal so its service is dropped; DB reused as-is; uploads migrate from the legacy bitnami volume via an idempotent, non-destructive runit hook. Verified on cctest: fresh install + upgrade-from-bitnami-pg17 + upgrade-from-bitnami-pg13 (incl. 13→17) all serve with data intact. Hold prod until upstream drops the experimental label.
autonomic-bot added 1 commit 2026-06-16 22:34:01 +00:00
Replaces the paywalled bitnamilegacy app with the official discourse/discourse
image behind Traefik (HTTP-only via an install-ssl override; sidekiq is internal
so its service is dropped). DB is reused as-is; uploads migrate from a legacy
bitnami volume via an idempotent, non-destructive runit hook. db keeps
pgvector/pgvector:pg17 with the install-user-aware pg_upgrade entrypoint.

Verified on cctest: fresh install, upgrade-from-bitnami-pg17, and
upgrade-from-bitnami-pg13 (incl. 13->17) all serve with data intact.
Upstream marks discourse/discourse experimental; hold prod cutover.

Recipe 0.8.1+3.5.0 -> 1.0.0+3.5.3 (major: new image, env/volume/port changes).
Author
Owner

!testme

!testme
Author
Owner

🌻 cc-cidiscourse @ ae5a8180 failure

cc-ci result card

level

full logs · dashboard

<!-- cc-ci:testme --> 🌻 **cc-ci** — `discourse` @ `ae5a8180` ❌ **failure** [![cc-ci result card](https://ci.commoninternet.net/runs/700/summary.png)](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/700) [![level](https://ci.commoninternet.net/runs/700/badge.svg)](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/700) [full logs](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/700) · [dashboard](https://ci.commoninternet.net/)
Author
Owner

!testme

!testme
Author
Owner

🌻 cc-cidiscourse @ ae5a8180 passed

cc-ci result card

level

full logs · dashboard

<!-- cc-ci:testme --> 🌻 **cc-ci** — `discourse` @ `ae5a8180` ✅ **passed** [![cc-ci result card](https://ci.commoninternet.net/runs/717/summary.png)](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/717) [![level](https://ci.commoninternet.net/runs/717/badge.svg)](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/717) [full logs](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/717) · [dashboard](https://ci.commoninternet.net/)
autonomic-bot force-pushed discourse-official-image from ae5a81802b to 53ba0910a6 2026-06-17 16:36:28 +00:00 Compare
Author
Owner

!testme

!testme
Author
Owner

🌻 cc-cidiscourse @ 53ba0910 passed

cc-ci result card

level

full logs · dashboard

<!-- cc-ci:testme --> 🌻 **cc-ci** — `discourse` @ `53ba0910` ✅ **passed** [![cc-ci result card](https://ci.commoninternet.net/runs/849/summary.png)](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/849) [![level](https://ci.commoninternet.net/runs/849/badge.svg)](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/849) [full logs](https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/849) · [dashboard](https://ci.commoninternet.net/)
autonomic-bot added 1 commit 2026-06-18 06:47:12 +00:00
The official-image migration removed the separate sidekiq service from
compose.yml (sidekiq now runs inside the official discourse app image). The
compose.smtpauth.yml overlay still declared a sidekiq: block (smtp env +
smtp_password secret, no image), leaving a dangling image-less service in the
smtpauth-merged compose -> abra recipe lint R011 fail (invalid reference
format) and a broken SMTP-auth deploy. The app: override already carries the
DISCOURSE_SMTP_PASSWORD_FILE env + smtp_password secret (and compose.yml app
has all DISCOURSE_SMTP_* vars), so the sidekiq override is redundant. Drop it.
autonomic-bot added 1 commit 2026-06-18 21:44:15 +00:00
autonomic-bot added 1 commit 2026-06-18 21:50:14 +00:00
The official discourse/discourse image has no *_FILE support, so
DISCOURSE_SMTP_PASSWORD_FILE was silently ignored and SMTP auth booted
without a password. Read the secret in the wrapper entrypoint and export
DISCOURSE_SMTP_PASSWORD, mirroring the DB password handling. Bump
APP_ENTRYPOINT_VERSION so the new entrypoint config redeploys.

Add release notes for the bitnami->official SMTP env var renames.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
autonomic-bot added 1 commit 2026-06-18 21:53:32 +00:00
autonomic-bot force-pushed discourse-official-image from a96ec03ddf to a09477f40d 2026-06-18 21:58:21 +00:00 Compare
autonomic-bot force-pushed discourse-official-image from a09477f40d to 0c4539b7ad 2026-06-18 21:59:36 +00:00 Compare
autonomic-bot added 1 commit 2026-06-18 22:13:00 +00:00
discourse core does not use the vector extension, so the pgvector image is
unnecessary. Switch db to pgautoupgrade/pgautoupgrade:17-trixie, which handles
major-version upgrades (old binaries, initdb, pg_upgrade) itself.

pgautoupgrade assumes the old cluster's install user (oid 10) equals
POSTGRES_USER and fails pg_upgrade otherwise (issue #115). A thin wrapper
entrypoint detects the old install user when an upgrade is pending and exports
POSTGRES_USER so pgautoupgrade matches it. Replaces the 64-line hand-rolled
pg_upgrade entrypoint.
autonomic-bot added 1 commit 2026-06-18 22:38:11 +00:00
Overriding entrypoint in compose clears the image default CMD, leaving
pgautoupgrade with no $1=postgres, so its version logic ran with unset
PGTARGET_MAJOR and aborted. Restore command: postgres.
autonomic-bot force-pushed discourse-official-image from 36a88fe5d2 to 0c4539b7ad 2026-06-19 00:36:49 +00:00 Compare
autonomic-bot closed this pull request 2026-06-19 00:38:47 +00:00
Author
Owner

Closing and recreating as a clean PR (this branch went through a pgautoupgrade detour that was reverted; see new PR). Final state mirrors coop-cloud/discourse#16 at 0c4539b.

Closing and recreating as a clean PR (this branch went through a pgautoupgrade detour that was reverted; see new PR). Final state mirrors coop-cloud/discourse#16 at 0c4539b.

Pull request closed

Please reopen this pull request to perform a merge.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: recipe-maintainers/discourse#4