Best Self-Hosted Headless CMS in 2026: 5 Honest Picks

July 24, 2026 · 10 min read
Best Self-Hosted Headless CMS in 2026: 5 Honest Picks

Every "best headless CMS" list starts the same way: Contentful, Sanity, Storyblok — three platforms you can't self-host at all. If you searched for a self-hosted headless CMS, you already know why that list is useless: you want the content API without the SaaS bill, the seat pricing, or the vendor deciding your API quota.

TL;DR: Five platforms are worth your shortlist in 2026. Strapi if you want the biggest community and plugin ecosystem. Payload if your team lives in TypeScript and Next.js. Directus if the CMS must sit on top of an existing database. Ghost if the project is a publication with memberships. UnfoldCMS if you want a PHP/Laravel stack that runs on $5/month hosting with one-time pricing and a built-in REST API. Sanity and Contentful are not on the list because you cannot self-host them — full stop.

This is a picker, not a ranking. Each option wins for a specific team shape, and each has a real cost most listicles skip: the ops work of keeping a Node process alive versus dropping PHP files on shared hosting.


What Counts as a Self-Hosted Headless CMS?

A self-hosted headless CMS is software you install on your own server that stores content and serves it over an API — REST or GraphQL — to any frontend you build: Next.js, Astro, SvelteKit, a mobile app. You control the database, the uptime, and the costs. No per-seat pricing, no API-call quotas, no vendor deciding when to raise prices.

Two platforms people constantly ask about don't qualify:

  • Sanity — the Studio (editor) is open source, but the Content Lake (the actual data store and API) runs only on Sanity's infrastructure. You cannot self-host your content.
  • Contentful — fully SaaS. No self-hosted option at any price.

If either of those surprised you, that's most of the reason this list exists. For the broader decision between running your own CMS and paying for managed, see our self-hosted CMS guide.


Comparison Table: The Five Options

Platform Backend License Database API Realistic minimum hosting
Strapi Node.js MIT (core) + paid EE features PostgreSQL, MySQL, SQLite REST + GraphQL VPS with 2 GB RAM
Payload Node.js / Next.js MIT PostgreSQL, MongoDB, SQLite REST + GraphQL VPS with 2 GB RAM
Directus Node.js BSL 1.1 (free under $5M revenue) Sits on any SQL DB REST + GraphQL VPS with 1–2 GB RAM
Ghost Node.js MIT MySQL 8 REST (Content + Admin APIs) VPS with 1–2 GB RAM
UnfoldCMS PHP 8.3 / Laravel Source-available, one-time license MySQL, SQLite REST (/api/v1) $5/month shared hosting or any VPS

Two things stand out. First, four of the five require Node.js — which means a process manager, restarts on crash, and a VPS you administer. Second, the licensing column matters more than people think: Directus moved from GPL to Business Source License in 2023, which means it's free only until your organization crosses $5M in annual revenue — then you need a commercial license.


Strapi — the Default Choice, With Caveats

Strapi is the most-adopted open-source headless CMS, and for good reason: the admin panel is polished, the content-type builder is visual, and the plugin ecosystem is the largest in this space. REST and GraphQL both work out of the box.

Where it wins: community size. Whatever integration you need, someone has built or documented it. Hiring is easier too — "Strapi experience" shows up on real CVs.

The honest costs:

  • Major version upgrades are work. The v4 → v5 migration broke custom fields and plugins for many teams, and major versions land roughly every 18–24 months.
  • Self-hosting Strapi means running a Node process with a real database. Budget a 2 GB RAM VPS (~$10–15/month) — it's unhappy on less.
  • Some features (SSO, advanced RBAC, audit logs) sit behind paid Enterprise licensing even when self-hosted.

If you're currently on Strapi and tired of the ops surface, we wrote an honest migration guide from Strapi — including when you should stay.


Payload — Best for TypeScript and Next.js Teams

Payload is the developer favorite of this list. Config lives in TypeScript code (not a GUI), the types flow end to end, and since v3 it installs directly into a Next.js app — CMS and frontend in one deployment.

Where it wins: code-first teams. If your idea of configuring a CMS is writing a schema file with autocomplete, nothing else comes close. MIT-licensed with no feature-gated enterprise tier on the core.

The honest costs:

  • Editors get a solid admin UI, but everything about the project assumes a developer is in the loop. Non-technical teams will need you often.
  • Deployment is a Node/Next.js app: build step, server process, memory headroom. Fine on Vercel or a 2 GB VPS; not a drop-on-shared-hosting situation.
  • Younger ecosystem than Strapi — fewer plugins, fewer Stack Overflow answers.

Directus — When the Database Already Exists

Directus takes a different approach: instead of defining content types inside the CMS, it introspects an existing SQL database and generates an admin UI plus REST and GraphQL APIs on top of it. If your content already lives in PostgreSQL or MySQL, Directus turns it into a headless CMS without migration.

Where it wins: data-platform projects. Existing schemas, reporting dashboards, internal tools, anything where "the database is the source of truth" is already policy.

The honest costs:

  • The BSL 1.1 license is the big one: free for organizations under $5M total revenue, commercial license required above it. For agencies building client sites, whose client counts as the "organization" is a conversation with a lawyer, not a README.
  • It's a generalist data tool, not an editorial CMS. Writers get a database-flavored UI, not a publishing workflow.
  • Node.js process to run and monitor, same as Strapi and Payload.

We compared the two head-to-head in UnfoldCMS vs Directus if you're weighing a marketing-site use case.


Ghost — for Publications, Not General Sites

Ghost is technically a headless CMS — its Content API is clean, versioned, and fast — but it's built for one job: publishing. Posts, newsletters, memberships, and paid subscriptions ship in the box, and the editor is the best writing experience of anything on this list.

Where it wins: blogs, newsletters, and media properties. If the project is "a publication with a paywall," Ghost self-hosted is free (MIT) and excellent.

The honest costs:

  • Content modeling is posts and pages. Custom content types — products, docs, listings — don't exist. If your project isn't a publication, you'll fight the tool.
  • Self-hosting needs Node.js, MySQL 8, and a working mail service (newsletters mean bulk email — budget ~$35/month for Mailgun at volume).
  • The managed alternative (Ghost Pro) starts at $28/month, which is where most people give up on self-hosting it. See our UnfoldCMS vs Ghost breakdown for that math.

UnfoldCMS — the PHP Option on $5 Hosting

Full disclosure: this is our product, so judge this section accordingly. UnfoldCMS is a Laravel-based CMS with a built-in headless REST API (/api/v1) covering posts, pages, categories, menus, settings, search, and Sanctum token auth — plus HMAC-signed outgoing webhooks for triggering frontend rebuilds (Next.js ISR, Astro deploys).

Where it wins: cost and ops simplicity. PHP means it runs on $5/month shared cPanel hosting — no Node process, no PM2, no Docker, no build step on the server. Pricing is one-time: Community is $0, Core is $39, Pro is $99. No per-seat fees, no API quotas, ever.

The honest costs:

  • REST only — there's no GraphQL API. If your frontend queries demand GraphQL, pick Payload or Strapi.
  • The plugin ecosystem is small compared to Strapi's. What ships in core (SEO tools, media library, webhooks, forms) is what you get.
  • Source-available, not OSI open source. You can read and modify all the code, but it's a licensed product, not MIT.

For the API-first workflow specifics, see how the REST API compares to GraphQL setups and the headless CMS for Next.js guide.


The Hosting Reality Check

The part listicles skip: what "self-hosted" actually costs to run per month.

  1. Node-based options (Strapi, Payload, Directus, Ghost) — you need a VPS you administer: 2 GB RAM realistically ($10–15/month on Hetzner or DigitalOcean), a process manager, and someone who reacts when the process dies at 2 a.m.
  2. PHP-based (UnfoldCMS) — shared hosting works: $5/month cPanel, no process to babysit. The web server runs PHP on request; there's nothing to keep alive.
  3. Either way, add backups — a database dump to object storage costs nearly nothing but is the difference between an incident and a catastrophe.

Over three years, the hosting gap alone is roughly $360–540 (Node VPS) versus $180 (shared PHP hosting) — before you count the hours spent on server maintenance. Plug your own numbers into our CMS pricing calculator to see the full picture including license costs.


Which One Should You Pick?

  1. Team lives in TypeScript, frontend is Next.js → Payload. Code-first config will feel native.
  2. You want the biggest ecosystem and hiring pool → Strapi. Accept the upgrade churn and the 2 GB VPS.
  3. The data already exists in SQL and multiple tools read it → Directus. Check the BSL license against your revenue first.
  4. The project is a publication — posts, newsletter, memberships → Ghost. Nothing else on this list writes as well.
  5. You want the lowest running cost, no Node ops, and one-time pricing → UnfoldCMS. Accept REST-only and a smaller ecosystem.

If you're still deciding whether headless is even the right architecture, start with headless vs traditional CMS — plenty of marketing sites don't need the decoupled complexity at all.


FAQ

Can I self-host Sanity or Contentful?

No. Sanity's editing Studio is open source, but your content lives only in Sanity's hosted Content Lake. Contentful has no self-hosted option at all. If self-hosting is a requirement, both are disqualified — that's not a quality judgment, just an architecture fact.

What is the cheapest self-hosted headless CMS to run?

UnfoldCMS on shared hosting costs about $5/month to run (plus a $0–39 one-time license). Node-based options (Strapi, Payload, Directus, Ghost) are free or MIT-licensed software but realistically need a $10–15/month VPS with 2 GB RAM plus your time administering it.

Do all of these support GraphQL?

No. Strapi, Payload, and Directus ship GraphQL alongside REST. Ghost and UnfoldCMS are REST-only. If GraphQL is a hard requirement, your shortlist is three platforms, not five.

Is Directus still open source?

Directus uses the Business Source License (BSL 1.1) since 2023 — source-available, free for organizations under $5M total annual revenue, commercial license required above that. It is not OSI-approved open source anymore, which matters for some compliance policies.

Can a self-hosted headless CMS handle high traffic?

Yes — usually better than SaaS free tiers. Your API has no artificial call quota; the ceiling is your server plus whatever CDN caching you put in front (Cloudflare's free tier covers most content APIs). A $10 VPS behind a CDN outlasts Contentful's free-tier quota by orders of magnitude.


Methodology

Platform capabilities were checked against official documentation and repositories in July 2026: Strapi (strapi.io/docs), Payload (payloadcms.com/docs), Directus (directus.io — BSL license terms in their repo), Ghost (ghost.org/docs). UnfoldCMS claims reflect the live product at unfoldcms.com. Hosting estimates use Hetzner and DigitalOcean published VPS prices and typical RAM guidance from each project's deployment docs. We build UnfoldCMS, and this page includes it — the trade-offs listed for it are real, and the other four are genuinely good tools for the teams described.

Free & Open Source

Own your CMS. No subscriptions.

Unfold CMS is free to download and self-host. Built on Laravel + React, full source code included.

Share this post:

Discussion

Comments (0)

Leave a Comment

Please log in to leave a comment.

Don't have an account? Register here

No comments yet. Be the first to share your thoughts!

Keep Reading

Related Posts

Back to all posts