← all SaaS
Self-host Contentful
Headless CMS ·
Category: CMS & site builders
Contentful is the dominant headless-CMS SaaS — define content models, edit entries in a polished web UI, fetch via REST/GraphQL, with localization and rich-text. The self-hostable replacements all do the schema + entries + API triangle; localization depth and editorial UX are the main differentiators.
Contentful pricing anchor: Free tier (5 users, limited entries); Basic $300/mo; Premium custom pricing.
- GitHub
- ★ 72.1k · last commit 1d ago · 756 open issues
- License
-
MIT Core is MIT; Strapi Enterprise (SSO, audit, RBAC) is a paid add-on.
- Setup time
- 10min `npx create-strapi-app` + Postgres
- Monthly cost
- $10/mo VPS for the app; Postgres on the same box for small projects.
Migration sketch. Run `npx create-strapi-app@latest my-cms --quickstart` for a SQLite dev install; switch to Postgres for production. Contentful migration: use the community `contentful-to-strapi` script (reads Contentful's CMA exports — entries, content types, assets — and POSTs to Strapi via its admin API). Rebuild content types in Strapi's content-type builder; field types map cleanly (text → string, references → relations).
Good fit forMost teams — Strapi has the largest ecosystem, plugin marketplace, and deepest localization support among OSS headless CMSs.
Weak atSchema migrations between dev/prod environments need discipline — Strapi's content-type-builder writes to disk; in production you ship a deploy.
- GitHub
- ★ 35.4k · last commit 1d ago · 395 open issues
- License
-
BSL-1.1 BSL converts to GPL-3.0 after 4 years; self-host of unmodified source is permitted today.
- Setup time
- 15min docker-compose (Node + Postgres or MySQL)
- Monthly cost
- $10/mo VPS.
Migration sketch. Pull `directus/directus:latest` and a Postgres backend. Directus wraps any SQL database — point it at an existing Postgres and it generates a CMS UI from the schema. Contentful migration via `directus-import` plugin or community Contentful-to-Directus scripts. GraphQL and REST APIs are auto-generated.
Good fit forTeams that want SQL-first content (BI tools can query the same Postgres) and need the CMS UI to match the existing schema.
Weak atLocalization workflow is functional but not as polished as Strapi's; rich-text editor is lighter.
- GitHub
- ★ 42.3k · last commit 1d ago · 699 open issues
- License
-
MIT - Setup time
- 10min `npx create-payload-app` + Postgres or MongoDB
- Monthly cost
- $10/mo VPS.
Migration sketch. Run `npx create-payload-app@latest my-cms`. Payload defines content collections in TypeScript files (config-as-code) — much closer to a developer-first model than Strapi's UI builder. Contentful migration: write a one-shot script using Contentful's CMA SDK + Payload's local API to import entries. Versioning, drafts, and access control are first-class.
Good fit forTeams that want config-as-code (collections in TypeScript live in git) and full Next.js native integration — Payload runs as a Next.js plugin.
Weak atSmaller plugin marketplace than Strapi; less out-of-the-box polish for non-developer editors.
In a terminal? npx os-alt contentful prints this table —
how the CLI works →