"Headless CMS hosting" is really three questions
When people search for headless CMS hosting, they mean one of three things, and conflating them leads to bad architecture decisions:
- 1Where does the CMS itself run? SaaS (Contentful, Sanity, Hygraph) vs self-hosted (Strapi, Directus, Payload, Keystone).
- 2Where does the content-consuming frontend run? A static site or SSR app that fetches content.
- 3Where does any custom backend / webhook handler run? For ISR triggers, preview modes, search indexing.
Getting these right separately is the whole game. Let's break it down.
SaaS vs self-hosted CMS
| Approach | Examples | You host the CMS? | Best for |
|---|---|---|---|
| SaaS CMS | Contentful, Sanity, Hygraph, Storyblok | No | Teams wanting zero ops |
| Self-hosted CMS | Strapi, Directus, Payload, Keystone | Yes | Control, data ownership, cost |
| Git-based CMS | Decap, TinaCMS | Partly | Content-in-repo workflows |
SaaS CMS removes hosting entirely for the CMS — you just consume an API. Self-hosted CMS gives you control and avoids per-seat/per-API-call pricing, but you have to run a Node server and a database. Git-based CMS stores content in your repo, great for docs-style sites.
Hosting the self-hosted CMS
All the popular self-hosted options (Strapi, Directus, Payload, Keystone) share the same hosting profile: a persistent Node server, a managed Postgres/MySQL/MongoDB, and durable object storage for media. This is exactly the shape PandaStack handles well.
Where PandaStack fits for the CMS
Deploy Directus, Payload, Keystone, or Strapi as a container; PandaStack injects DATABASE_URL from a managed Postgres/MySQL/MongoDB and serves it with automatic SSL and a custom domain.
# Directus example
FROM directus/directus:latest
ENV PORT=8055
# DATABASE_URL injected by PandaStack; configure storage to S3 for mediaThree honest rules for any self-hosted CMS on PandaStack:
- Run it warm (paid tier), not on free-tier scale-to-zero — the admin and content API need to be always-on.
- Use object storage for media uploads, not the container filesystem.
- Pick enough memory (a memory-optimized tier for heavier CMSes).
Hosting the frontend that consumes the CMS
This is where PandaStack's all-in-one model shines. Your Next/Nuxt/Astro/SvelteKit frontend can be a static site or a container on the same platform as the CMS:
- Static frontend (Astro, Hugo, Eleventy, VitePress, prerendered Next/Nuxt) → deploy as a PandaStack static site; rebuild on content change via a webhook.
- SSR/ISR frontend → deploy as a container that fetches from the CMS at request time.
Free tier includes 5 static sites and 5 web services, 100GB bandwidth/month, and 300 build minutes; Pro/Premium make static unlimited — enough to host both the CMS and several frontends.
A reference architecture
A common, clean setup entirely on one platform:
Directus/Strapi (container, warm) ──> Managed Postgres (auto-wired)
│ content API
▼
Astro/Next static or SSR (PandaStack) ──> custom domain + auto SSL
▲
│ rebuild webhook on publish
Cronjob (PandaStack) ──> reindex search / warm cachesYou can even add a cronjob on PandaStack to reindex search or refresh caches on a schedule, and edge functions for lightweight content transforms.
Honest trade-offs
- If you want zero CMS ops, a SaaS CMS (Contentful/Sanity) beats self-hosting — PandaStack then just hosts your frontend.
- PandaStack does not provide a built-in CMS; you bring Strapi/Directus/Payload/etc. Its value is running them plus the database plus the frontend together.
- For pure static frontends with massive traffic, dedicated static CDNs have larger edge footprints; PandaStack's edge is consolidation and an auto-wired database.
Decision guide
- No CMS ops → SaaS CMS + frontend on any host (incl. PandaStack static).
- Self-host CMS + frontend + DB on one platform → PandaStack (CMS warm, media to S3).
- Content in Git → Decap/Tina + static frontend.
References
- Directus docs: https://docs.directus.io/
- Payload CMS: https://payloadcms.com/docs
- Strapi: https://docs.strapi.io/
- Sanity: https://www.sanity.io/docs
- Jamstack architecture: https://jamstack.org/
---
Building a headless setup? Run your self-hosted CMS, its managed database, and your frontend together on PandaStack — with cronjobs for reindexing built in. Start free at https://dashboard.pandastack.io