Sign inSign up

readystack/ghost

By readystack

•Updated 1 day ago

Ghost: publishing for websites, newsletters, memberships. Signed; SBOM and SLSA v1 provenance.

Image
Content management system
0

7.8K

readystack/ghost repository overview

⁠Ghost

Signed: cosign SBOM: SPDX attached Provenance: SLSA v1

readystack/ghost:v6.72.0-CE-ubuntu24.04-r5

Source, recipe and records

A cosign-signed build of github.com/TryGhost/Ghost v6.72.0 (MIT), packaged from the [email protected] npm release tarball (sha256 pinned, checked against npm's published sha512 integrity), built clean-room from upstream's published release artifact by ReadyStack⁠.

⁠Who uses it and why

Who: Writers, independent publishers and media teams who run a publication with a newsletter and paid memberships.

Why: Ghost is an open-source publishing platform for running a website, email newsletters, memberships and paid subscriptions from one place.

Use case: A journalist leaves a newspaper to publish independently. On Ghost each article appears on the website and goes out as a newsletter, readers sign up as free or paying members, and the publication and its audience stay on a site the writer controls.

About the upstream project, written from its own description: https://github.com/TryGhost/Ghost⁠ · https://ghost.org/docs/introduction/⁠

⁠What you get

Signature, user and attestations below were measured on the published digest sha256:6798929b47a8b732204560a59fe488b479d40eb9f1fe32779c01000854c8427f on 2026-10-29.

  • Scan scores — we scan every image we publish every day (an SBOM made with syft, vulnerabilities matched with grype, scored with cerodeo-v1, the rubric ce.rodeo published until 2026-10-26) and record each scan with how its score was derived. This release's first and latest scan: https://readystack.dev/products/ghost⁠
  • ReadyStack release check — passed at release on 2026-10-29: no fixable critical or high vulnerability (Docker Scout and OSV), a non-root user, SBOM and provenance attached. This is ReadyStack's own test, not a Docker grade; vulnerabilities published since then are in today's result at https://readystack.dev/queue⁠.
  • Signed — cosign signature by the ReadyStack release key (fingerprint 04daa92344a52dbc) on this release's index digest sha256:6798929b47a8b732204560a59fe488b479d40eb9f1fe32779c01000854c8427f; verify with cosign verify --key https://readystack.dev/keys/cosign.pub readystack/ghost:v6.72.0-CE-ubuntu24.04-r5.
  • Attestations — An SPDX SBOM and SLSA v1 build provenance are attached to this digest.
  • Runs as a non-root user (node).
  • Built from upstream's published release artifact (https://registry.npmjs.org/ghost/-/ghost-6.72.0.tgz⁠) by ReadyStack.

⁠Which tag should I pull?

This image follows the ReadyStack release-tag convention:

  • The current release is v6.72.0-CE-ubuntu24.04-r5 — the release listed at readystack.dev. Release tags use the pattern <upstream-version>-CE-<base-os>-r<N>; the current one is signed, attested (SBOM + provenance), and is provided under the ReadyStack Agreement⁠.

  • Earlier release tags (an older version or revision in the same pattern) are superseded. They stay pullable so existing deployments can pin them, but they are no longer re-graded, and fixes appear only in newer releases: move to the current release. For a superseded release's build kit, ask support.

  • Release tags never move, so pulling the same tag again never changes the image. To be offered each new release automatically (a new revision r<N+1>, or a new upstream version), use the ReadyStack Renovate preset: https://readystack.dev/updates.html⁠

  • Any tag beginning with internal- is an engineering-pipeline artifact published for build observability. It is unsupported, may change or disappear without notice, and must not be used in production.

# ✓ current release
docker pull readystack/ghost:v6.72.0-CE-ubuntu24.04-r5

# ✗ unsupported (do not pull)
docker pull readystack/ghost:internal-...

This release is signed; verify it with cosign verify --key https://readystack.dev/keys/cosign.pub readystack/ghost:v6.72.0-CE-ubuntu24.04-r5 (the signature is recorded in the public Sigstore transparency log). Support: [email protected]⁠, as set out in the ReadyStack Agreement⁠.

⁠Deployment

Single container (Node.js, node index.js, one foreground process) running Ghost. It REQUIRES an EXTERNAL MySQL 8 database the operator provisions and points the container at via database__connection__host/port/user/password/database env vars — there is NO embedded/SQLite database in production (SQLite is dev-only and unsupported in production; Ghost starts on it without any warning, so configure MySQL 8). On first start Ghost auto-runs knex-migrator to create its schema. NOT a multi-service cluster, but NOT self-contained: a MySQL 8 server is a hard external dependency; the content/ dir + DB must persist.

Secrets go in an env file that only you can read, not on the command line, and passwords that only set up the first start come out of it after setup. Create ghost.env with install -m 600 /dev/null ghost.env, then write these lines into it with an editor, with your own values (a value typed into a shell stays in its history). Docker reads each line as written: no quotes around a value, no spaces around =.

# Your MySQL user's password; needed at every start.
database__connection__password=YOUR_DB_PW
docker run -d --name ghost -p 2368:2368 -e url=https://blog.example.com -e database__client=mysql2 -e database__connection__host=YOUR_DB_HOST -e database__connection__port=3306 -e database__connection__user=ghost --env-file ./ghost.env -e database__connection__database=ghost -v ghost-content:/var/lib/ghost/content readystack/ghost:v6.72.0-CE-ubuntu24.04-r5

Create the empty 'ghost' database first; first boot creates the schema, then open /ghost on your site to create the owner account. Ghost does not serve HTTPS itself: with an https:// url like the one above, put a TLS-terminating reverse proxy in front of port 2368 that sends X-Forwarded-Proto: https, because Ghost answers plain-HTTP requests on port 2368 for the site, /ghost, /ghost/api/admin/site/ and every authenticated Admin or Content API request with a 301 redirect to the https URL; to use port 2368 directly, set an http:// url instead, for example -e 'url=http://<host>:2368'. If the database password contains spaces or shell characters, single-quote the whole argument: -e 'database__connection__password=my new pass $x!'. Ghost emails a sign-in code whenever a staff user signs in from a new browser: if the server has no mail settings, add -e security__staffDeviceVerification=false, or those sign-ins fail (see "Sign-in codes for new devices" in the admin handbook in the release archive).

⁠The full ReadyStack Hermetic Build Kit

The complete --network=none build kit for this image — plus admin/DB/API handbooks, the build's validation records, and its build provenance records — is a free download for any registered account at readystack.dev/products/ghost⁠. A clean-room rebuild from this release's archive on an egress-blocked host reproduced its linux/amd64 digest sha256:b422fae270bccd74981a0f440947f379ad365b01ba7eae4e11fa95ca53a3489f on 2026-10-29.

— ReadyStack · readystack.dev

Tag summary

Content type

Image

Digest

sha256:6798929b4…

Size

178.4 MB

Last updated

1 day ago

docker pull readystack/ghost:v6.72.0-CE-ubuntu24.04-r5