“Self-hosted” is not one price tag. The same label covers a $6 VPS running PHP, ten Node processes for ten clients, and a managed SaaS that removes the server entirely. Total cost is software + hosting + hours—and hours dominate when installs multiply.
Why Self-Hosted CMS Cost Differs So Much
Two teams both say they self-host. One pays ~$15/month all-in; the other pays thousands a year before salaries. The gap usually comes from:
- Install count — one CMS for many projects vs one stack per site (see multisite economics).
- Runtime — PHP/Laravel vs Node.js memory profiles on the same VPS tier.
- License model — MIT “free,” one-time commercial license, or per-site proprietary fees.
- Who runs ops — you on evenings, a client retainer, or a managed vendor (NomaCMS, Strapi Cloud, etc.).
- Hidden coupling — Postgres, Redis, S3, CDN, and backup storage billed beside the CMS box.
Benchmarks that only compare sticker prices miss the shape of cost as project count grows. That is what the tables below are for.
RAM & VPS Reality: PHP vs Node on a Self-Hosted CMS VPS
When people ask about self hosted cms vps sizing, they often copy a generic “2GB RAM” recommendation. In practice:
- PHP / Laravel stacks (ElmapiCMS, Statamic, classic WordPress) — a modest VPS (512MB–1GB for CMS + database on small traffic) is common; multiple projects on one Laravel install share one process pool.
- Node.js headless CMS (Strapi, Payload, Directus) — plan ~1GB+ RAM per production instance for comfortable headroom; dev builds and plugins push higher.
- Ghost — publishing-focused Node app; similar 1GB-class expectations for production.
The expensive mistake is treating “one VPS” as one line item while running ten separate Node CMS apps. You either buy ten small servers or one large one—and either way, monitoring and updates scale linearly. For deeper numbers, read how much RAM does your headless CMS need.
The Open Source “Free” Myth
Strapi, Payload, and Directus are legitimately free to download. That is not the same as free to operate:
- Hosting — VPS, database, object storage, bandwidth.
- Maintenance — security patches, major upgrades, plugin compatibility.
- Multi-project tax — default architecture is often one app per site unless you engineer tenancy.
- Opportunity cost — evenings spent SSH-ing instead of billable client work.
Open source vs paid self-hosted CMS is a trade: $0 license vs packaged multi-project features and a vendor who ships updates. Neither side is “always cheaper”—project count decides.
Pricing Models (Before the Product List)
- Open source + DIY host — $0 software, variable VPS, full ops ownership.
- One-time license + DIY host — e.g. ElmapiCMS $149 once + hosting; unlimited projects on one install.
- Vendor-managed SaaS — NomaCMS From $15/mo, Sanity/Contentful seats and usage; no VPS, recurring bill.
- Hybrid cloud — “self-host” the frontend, pay Strapi Cloud / Payload Cloud for the CMS layer (still recurring).
1. ElmapiCMS

ElmapiCMS is a self-hosted headless CMS on Laravel with multi-project support built in. Cost shape: $149 one-time payment, then hosting on a PHP-friendly VPS. You are not buying seats, spaces, or per-client CMS instances.
Cost profile
- Software: $149 once (one install, unlimited projects).
- Typical VPS: ~$10–25/mo for CMS + DB at agency scale on one box.
- Ops: one update cycle, one backup policy, one admin surface.
Best for
Teams optimizing self hosted cms cost across many sites without N× Node hosting.
See cost per project collapse in the demo
Multi-project on one VPS—or grab the full version for $149.
2. Strapi

Strapi is the default answer to what cms can i self-host in the Node ecosystem. Software: free (MIT). Real cost: Node VPS sizing and one install per project unless you build multi-tenancy. Strapi Cloud shifts spend from VPS to subscription.
- 1 project: ~$10–20/mo VPS + your ops time.
- 10 projects: often 10× hosting or heavy custom architecture—see table below.
3. Payload CMS

Payload is MIT-licensed and TypeScript-native—excellent for a product team owning one codebase. Self-hosted cost mirrors Strapi: Node RAM, database, and deploy pipeline. Payload Cloud (~$35/mo entry tier) is the managed escape hatch if VPS labor exceeds subscription fees.
4. Directus

Directus is GPL and wraps your SQL database. License cost: $0. You still pay Node hosting, DB capacity, and file storage. Directus Cloud moves you into managed pricing (~$99/mo class tiers)—compare that to DIY VPS in headless CMS pricing.
5. Ghost

Ghost is self-hostable for blogs, newsletters, and memberships—not a general agency headless API for ten unrelated clients. Cost: Node VPS + email delivery + optional Ghost(Pro) if you abandon DIY. Narrow use case, predictable stack, but poor fit as a multi-client content hub.
6. Managed SaaS (NomaCMS, Sanity, Contentful)


Managed is the other side of self hosted vs managed cms cost. You trade VPS line items for recurring plans and limits on seats, environments, or API volume.
- NomaCMS — managed headless CMS from the Elmapi team; Plans start at $15 per month after a 7-day free trial. Good when clients expect you to “just host the CMS” without SSH.
- Sanity / Contentful — strong editorial UX; cost scales with spaces, seats, and usage—often the highest TCO at ten brands on one agency card.
Managed wins when your hourly rate × ops hours exceeds the subscription. Self-hosted wins when project count is high and one install can isolate tenants.
Self-Hosted CMS Cost: 1 Project
Directional year-one math (USD, excluding your labor). Adjust for region and traffic.
| Option | Software (Y1) | Hosting / infra | Year-one ballpark |
|---|---|---|---|
| ElmapiCMS (self-host) | $149 once | ~$10–20/mo VPS | ~$149 + $120–240 hosting |
| Strapi / Payload / Directus (DIY) | $0 license | ~$12–24/mo Node VPS + DB | ~$144–288 hosting |
| Ghost (self-host) | $0 (MIT) | ~$12–20/mo + email | ~$150–300+ hosting |
| NomaCMS (managed) | From $15/mo (tiered) | Included | ~$180–600+ depending on plan |
| Sanity / Contentful | Free–Growth tiers | Vendor-hosted | $0–$500+ as seats/usage grow |
For one small site, open-source DIY and a cheap VPS often look cheapest on spreadsheet—until you price your on-call time.
Self-Hosted CMS Cost: 10 Projects
Agency scenario: ten client sites, isolated content, separate API keys. This is where self hosted cms cost diverges violently.
| Approach | Software | Hosting shape | Annual hosting ballpark |
|---|---|---|---|
| ElmapiCMS multi-project | $149 once | 1 PHP-friendly VPS | ~$120–480 |
| Strapi × 10 installs | $0 (MIT) | 10× Node VPS or 1 large box | ~$1,200–2,400+ |
| Payload × 10 apps | $0 (MIT) | 10 deploy pipelines | Similar to Strapi |
| Directus × 10 | $0 (GPL) | 10 stacks + DB load | Hosting-heavy + DBA time |
| NomaCMS / Sanity / Contentful | Recurring SaaS | Vendor-hosted | Often $2k–10k+/yr at scale* |
*Highly variable by seats, environments, and API quotas—validate current vendor calculators.
The open-source license did not change; the install count did. That is the core of open source vs paid self hosted cms at agency scale.
ElmapiCMS vs Strapi × N vs Payload vs Managed
| Cost factor | ElmapiCMS | Strapi (×N) | Payload (×N) | Directus | Ghost | Managed SaaS |
|---|---|---|---|---|---|---|
| License / subscription | $149 once | $0 MIT | $0 MIT | $0 GPL | $0 MIT | From $15/mo+ / seats |
| Typical VPS RAM | 512MB–1GB (multi-project) | ~1GB+ per install | ~1GB+ per app | ~1GB+ + DB | ~1GB+ | N/A (vendor) |
| 10 projects default | 1 install | 10 installs* | 10 apps* | DIY schema | Not general-purpose | Spaces / plans |
| Ops cycles at 10 sites | 1× | 10× | 10× | 10× or custom | 10× | Vendor |
| Best cost fit | Many sites, one VPS | 1–2 Node products | TS product teams | DB-centric platforms | Publishing only | Zero-ops, client SaaS budget |
*Unless you design and maintain custom multi-tenancy.
Conclusion: Pick the Cost Model, Then the CMS
Optimizing dollars for many self-hosted projects? Count installs before comparing license prices. ElmapiCMS ($149 one-time + hosting) keeps one Laravel VPS and unlimited projects—see best self-hosted CMS for feature context.
One Node flagship and engineers on staff? Strapi or Payload DIY can be cheapest on paper for a single app—budget RAM honestly.
No server time at any price? NomaCMS (From $15/mo) or enterprise SaaS—compare to ten client retainers, not to a hobby VPS.
Still comparing architectures? Tie hosting to project count in multisite headless CMS and vendor list prices in headless CMS pricing.
Lower self-hosted CMS cost across projects
ElmapiCMS: one VPS, unlimited projects, $149 one-time payment. Prefer managed? NomaCMS From $15/mo.
Comparing options first? Read our best headless CMS comparison.
Full source code. No per-project CMS tax on self-host.