You picked a headless CMS. Strapi, Directus, or Payload. The local setup took an afternoon, the content model is done, and the admin panel looks great on localhost:1337.

Then you hit the wall everyone hits: where does the backend actually live?

This is the part the tutorials skip. A headless CMS is not a static site you can drop on a CDN. It is a long-running Node process that needs a database, persistent storage for uploads, and an admin panel that has to stay awake. Host it wrong and you get cold starts on your editor login, lost media files after a redeploy, or a surprise database bill that costs more than the server.

I have run all three of these CMSes on half a dozen platforms. Here is what a headless CMS needs to stay online, where each hosting option falls short, and the real monthly cost in 2026.

What a headless CMS actually needs to run

Before comparing hosts, it helps to know what you are hosting. A headless CMS backend has four hard requirements:

  • A Node.js runtime that stays on. Strapi, Directus, and Payload are persistent servers, not serverless functions. The admin panel and API have to be reachable 24/7, so anything that sleeps on idle is a problem.
  • A real database. Postgres, MySQL, or SQLite. This is where every piece of content lives. It has to persist across restarts and deploys.
  • Persistent file storage. Uploaded images, PDFs, and media. If your host wipes the filesystem on every deploy, your media library disappears unless you wire up external object storage.
  • Enough memory. Strapi rebuilds its admin panel and wants 1 GB of RAM minimum in production. Directus and Payload are lighter but still unhappy on 256 MB.

Miss any one of these and the CMS technically “runs” but breaks the moment a real editor uses it. Now the options.

The hosting options compared

Platform Type Database included Persistent uploads SSH access Starting price
Vercel / Netlify Frontend only No No (serverless) No Free / $20/mo
Railway Managed PaaS Add-on (extra cost) Volume (paid) No Usage-based, ~$5+/mo
Render Managed PaaS Add-on (~$7/mo extra) Disk (paid) No From $7/mo + database
Fly.io Container platform Self-managed Volume ($0.15/GB/mo) Limited ~$3.32/mo (512 MB)
DigitalOcean App Platform Managed PaaS Add-on (~$15/mo dev DB) Spaces (paid) No From $5/mo + database
Raw VPS (Hetzner, DO Droplet) Self-managed server You install it Yes (it is your disk) Yes $4-6/mo + your time
InstaPods Managed server Yes (on the same pod) Yes Yes From $3/mo flat

The pattern is clear once you line them up. The frontend hosts cannot run the backend at all. The PaaS options can, but the database is almost always a separate paid line item, which means your $7/mo plan is really $14-20/mo once the Postgres add-on lands. The raw VPS gives you everything for cheap, as long as you enjoy configuring nginx, SSL, a process manager, and firewall rules before you ship a single piece of content.

Where each option falls short

Vercel and Netlify are where most people start because that is where the frontend lives. But they only host the frontend. Strapi or Directus running there means serverless functions, which means cold starts on the admin login and a filesystem that resets on every invocation. Your uploads vanish. These are great for the Next.js or Astro site that consumes your CMS, not for the CMS itself.

Railway is smooth for deploying a Node process, and it supports volumes for persistent data. The catch is the billing model. Usage-based pricing on an always-on CMS means you pay for every hour it runs, and the database is a separate service that adds to the meter. It is hard to predict the monthly total, which is exactly the thing you do not want on a side project.

Render has a polished dashboard and proper persistent disks. But the database is a separate paid service, so a single Strapi instance is the web service price plus a Postgres instance on top. Render also restructured its pricing in April 2026, so older “Render is $7/mo” articles undercount the real number.

Fly.io is the cheapest on paper. A 512 MB machine is about $3.32/mo and volumes are $0.15/GB/mo. It is genuinely capable. But you manage your own database, the root filesystem is ephemeral so persistence lives entirely on volumes you configure, and the learning curve is closer to infrastructure than to “deploy and forget.” Fine if you like that. A lot of CMS work for a content site.

DigitalOcean App Platform works, but the managed database add-on starts around $15/mo for a dev-tier Postgres, which dwarfs the $5/mo app cost. You are paying enterprise-shaped pricing for a blog backend.

A raw VPS is the cheapest real server you can get, and you get full control. The cost is not the $4-6/mo. It is the 2-4 hours installing Node, configuring nginx as a reverse proxy, setting up SSL with Certbot, adding a process manager so the CMS restarts on reboot, and locking down the firewall. Then you own all of that maintenance forever.

The hidden cost nobody adds up

The starting price is never the real price. For a headless CMS, the line item that gets buried is the database.

Setup Compute Database Real monthly total
Render + managed Postgres $7/mo ~$7/mo ~$14/mo
DigitalOcean App Platform + dev DB $5/mo ~$15/mo ~$20/mo
Railway (always-on + DB service) usage usage ~$10-20/mo, variable
Single server with the DB on it $7/mo included $7/mo flat

For a content site that gets a few thousand visits a month, a managed Postgres add-on is overkill. Strapi, Directus, and Payload all run perfectly well with the database on the same server as the CMS, whether that is SQLite for a small project or Postgres you install once. One server, one bill, no add-on math.

Hosting all three on one flat-price server

This is where putting the CMS and its database on a single real server wins. If you want the managed-server route without the raw-VPS config grind, you can deploy a headless CMS on InstaPods for $3/mo flat, with the $7/mo plan (1 GB RAM, 10 GB storage) being the realistic pick for Strapi’s memory appetite.

You get a real Linux server with SSH access, the Node runtime ready to go, persistent disk for uploads, and the database living on the same pod. No separate database bill, no bandwidth charges, no usage meter. Pick the Node.js stack, push your CMS, and you get a live URL with automatic SSL. The nginx and certificate setup that eats an afternoon on a raw VPS is already handled.

Per CMS, here is what to expect:

  • Strapi wants the most memory of the three. Start on the 1 GB plan, give it Postgres or SQLite on the same server, and point your uploads at the persistent disk. No external object storage needed for a small-to-mid content library.
  • Directus is lighter and happy on a smaller footprint. It pairs well with Postgres and serves both the admin app and the API from one process.
  • Payload is Node-native and integrates tightly with a Next.js frontend. Run the Payload backend on the server, keep MongoDB or Postgres local, and connect your frontend over the API.

Frequently asked questions

Can I host a headless CMS on Vercel or Netlify?
You can host the frontend that consumes the CMS there, but not the CMS backend itself. Strapi, Directus, and Payload are persistent Node servers that need a database and always-on uptime, which serverless platforms do not provide. Host the backend on a real server and point your Vercel frontend at its API.

Do I need a separate database for Strapi or Directus?
No. Both run fine with the database on the same server as the CMS. SQLite works for small projects, and Postgres or MySQL installed on the same server handles production traffic. A separate managed database is optional, not required, and it is the line item that doubles most hosting bills.

What is the cheapest way to host a headless CMS in 2026?
A single server that runs both the CMS and its database, on flat pricing, is the cheapest predictable option. Expect $3-7/mo for a small-to-mid content site, versus $14-20/mo once a managed-database add-on is stacked on a PaaS plan.

How much RAM does Strapi need?

1 GB of RAM is the practical minimum for Strapi in production because it rebuilds the admin panel and runs a Node process. Directus and Payload are lighter and run on less, but 1 GB is a safe baseline for all three.

The verdict

For a headless CMS, the right host is the one that runs a Node process, keeps a database alive next to it, persists your uploads, and bills you a flat predictable number. The frontend hosts cannot do it. The big PaaS options can, but the managed-database add-on quietly doubles the price. The raw VPS is cheap but trades dollars for hours of config.

If you want full control and do not mind the setup, a Hetzner box is hard to beat on raw price. If you want the same single-server simplicity without configuring nginx and SSL by hand, a managed server with the database included is the flat-price middle ground. Either way, keep the CMS and its database on one server and stop paying twice.

For more on picking the CMS itself, see our guide to the best headless CMS in 2026 and the broader look at the best CMS for developers beyond WordPress.