Sign inSign up

readystack/frappecrm

By readystack

•Updated about 4 hours ago

Frappe CRM: tracks leads and deals, with a Kanban pipeline. Signed; SBOM and SLSA v1 provenance.

Image
Content management system
0

4.6K

readystack/frappecrm repository overview

⁠Frappe CRM

Signed: cosign SBOM: SPDX attached Provenance: SLSA v1

readystack/frappecrm:v1.90.0-CE-ubuntu24.04-r1

Source, recipe and records

A cosign-signed build of github.com/frappe/crm v1.90.0 (AGPL-3.0) on the Frappe framework v16.53.0 (MIT), built clean-room from official upstream source by ReadyStack⁠.

⁠Who uses it and why

Who: Sales teams that want a simple, customisable CRM they can host themselves.

Why: Frappe CRM tracks leads and deals. Each one has a single page with its activities, comments, notes and tasks, and a Kanban board shows every deal's stage.

Use case: A small sales team tracks prospects in spreadsheets and email threads. In Frappe CRM each lead has one page with its notes, tasks and activity, and the team drags its leads and deals across its own stages on a Kanban board, so anyone can see where every deal stands.

About the upstream project, written from its own description: https://github.com/frappe/crm⁠

⁠What you get

Signature, user and attestations below were measured on the published digest sha256:681b4abd31e406d67d884b04af7589aa376b82a82f494de0cb26d72ade7b684f on 2026-10-30.

  • 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/frappecrm⁠
  • 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:681b4abd31e406d67d884b04af7589aa376b82a82f494de0cb26d72ade7b684f; verify with cosign verify --key https://readystack.dev/keys/cosign.pub readystack/frappecrm:v1.90.0-CE-ubuntu24.04-r1.
  • Attestations — An SPDX SBOM and SLSA v1 build provenance are attached to this digest.
  • Runs as a non-root user (frappe).
  • Built from source by ReadyStack.

⁠Which tag should I pull?

This image follows the ReadyStack release-tag convention:

  • The current release is v1.90.0-CE-ubuntu24.04-r1 — 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/frappecrm:v1.90.0-CE-ubuntu24.04-r1

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

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

⁠Deployment

ONE product container (supervisord runs the Frappe web backend [gunicorn], the Socket.IO realtime node process, one RQ worker process for the long, default and short queues, the scheduler, and the nginx frontend on :8080) PLUS two required datastore sidecars the customer provides: a MariaDB 11.x server and Redis (a cache instance + a queue instance; the queue instance also backs Socket.IO). NOT a single self-contained image — Frappe is fundamentally multi-service. The image has neither wkhtmltopdf nor Chromium: PDFs of the Standard and classic print formats fail, while Print Format Builder formats whose PDF Renderer is Typst, or WeasyPrint for a format already stored on it, render to PDF inside the image.

Secrets go in env files that only you can read, not on the command line, and passwords that only set up the first start come out of them after setup. Create each file with install -m 600 /dev/null <file>, then write its 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 =.

frappecrm-db.env:

# First start only: the mariadb image sets the root password from MARIADB_ROOT_PASSWORD only when it initialises its empty data volume. Remove this line after setup and recreate the db container; root keeps the password.
MARIADB_ROOT_PASSWORD=YOUR_DB_ROOT_PW

frappecrm.env:

# First start only: the first start creates the site with DB_ROOT_PASSWORD (the same value as MARIADB_ROOT_PASSWORD). Remove this line after setup and recreate the container; the site keeps its own database login.
DB_ROOT_PASSWORD=YOUR_DB_ROOT_PW
# First start only: the first start gives Administrator the ADMIN_PASSWORD. Remove this line after setup and recreate the container; Administrator keeps the password.
ADMIN_PASSWORD=YOUR_ADMIN_PW
docker network create frappecrm-net
docker run -d --name db --network frappecrm-net --env-file ./frappecrm-db.env -v frappecrm-db:/var/lib/mysql mariadb:11.8 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --skip-character-set-client-handshake
docker run -d --name redis-cache --network frappecrm-net redis:8-alpine
docker run -d --name redis-queue --network frappecrm-net -v frappecrm-redis-queue:/data redis:8-alpine
docker run -d --name frappecrm --network frappecrm-net -p 8080:8080 --env-file ./frappecrm.env -v frappecrm-sites:/home/frappe/frappe-bench/sites readystack/frappecrm:v1.90.0-CE-ubuntu24.04-r1

The four containers share the frappecrm-net network, and the names db, redis-cache and redis-queue are the image's defaults for DB_HOST, REDIS_CACHE and REDIS_QUEUE (set those variables to use your own servers instead). Use the same MariaDB root password for MARIADB_ROOT_PASSWORD in frappecrm-db.env and DB_ROOT_PASSWORD in frappecrm.env, and keep it in your password manager: after setup it lives only in the database. The first start creates the site 'frontend' (SITE_NAME; keep that default, because the image's web server serves only the site named frontend) and installs Frappe CRM, which takes a few minutes; http://localhost:8080⁠ answers when GET /api/method/ping returns 200. Sign in as Administrator with ADMIN_PASSWORD. Once that first start has created the site, remove the DB_ROOT_PASSWORD and ADMIN_PASSWORD lines from frappecrm.env and recreate the container on the same volume (docker stop frappecrm, docker rm frappecrm, then its docker run line again), and remove the MARIADB_ROOT_PASSWORD line from frappecrm-db.env and recreate the db container the same way (docker stop db, docker rm db, then its docker run line again, so MariaDB shuts down cleanly): the site keeps its own database login, Administrator and root keep their passwords, and neither password is in a container's environment any more (tested). The archive ships no Compose file.

⁠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/frappecrm⁠. A clean-room rebuild from this release's archive on an egress-blocked host reproduced its linux/amd64 digest sha256:11d2a5b98caf2fd0d1796c9e22722b9749115e7bd182f5a5bdcb41edc53c001f on 2026-10-30.

— ReadyStack · readystack.dev

Tag summary

Content type

Image

Digest

sha256:681b4abd3…

Size

470.9 MB

Last updated

about 4 hours ago

docker pull readystack/frappecrm:v1.90.0-CE-ubuntu24.04-r1