← 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.

Strapi strapi/strapi alive

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.

Directus directus/directus alive

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.

Payload CMS payloadcms/payload alive

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 →