Ghost Pricing: Managed vs Self-Hosted

The cheapest managed Ghost starts at about $18/month. Self-hosted, this stack measures 2 GiB across 2 services, which fits a $13/month flat plan with room left over.

#the numbers

Managed prices as of June 2026, each linked to its source. The self-hosted row is not an estimate: the RAM figure is what this stack allocates in its compose file, and the plan is the smallest one that holds it.

OptionPlanMonthlyWhat you get
Self-hosted on Miget 2 GiB, 1 vCPU $13 the whole stack, flat - no per-user or per-request metering, and the plan holds your other apps too
Ghost(Pro) Starter ~$18 1,000 members, 1 staff user; Publisher tier (custom themes) $29/mo
Substack free + cut usage-based 10% of paid-subscription revenue + Stripe fees, forever

Self-hosted Ghost keeps 100% of subscription revenue and has no member or staff caps - the same software Ghost(Pro) runs.

#the difference, plainly

$5/month, or about 28%, against the cheapest managed tier - $60 over a year. Worth stating what that money buys and what it costs, because the honest answer is not "it is just cheaper".

  • You gain a bill that does not move with usage, no execution or seat metering, and root on your own data.
  • You gain spare capacity: the plan is sized for this stack, and anything else you deploy inside it is free.
  • You take on upgrades, backups and the pager. Managed services charge for exactly that, and for some teams it is worth every dollar.
  • You should not switch for the saving alone if your team has nobody who wants to own it.

#on usage-based pricing

Substack bills by usage rather than a fixed monthly price, so a table cannot compare it honestly. The structural difference is the one that matters: a flat plan has a known worst case, and a meter does not.

#what it costs on other platforms

Same stack, published rates elsewhere - estimates from each platform's own pricing page, not quotes. Per-service platforms are the expensive case here, because every container in this stack is its own paid service.

PlatformEstimated monthlyWhy
Miget $13 flat plan, 2 GiB - databases included, no meters
Heroku ~$100 no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown
DO App Platform ~$29 no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here)
Render ~$28 per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service
Railway ~$22 usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top
Fly.io ~$13 cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra

#sizing, if you outgrow the small plan

The $13 plan is the smallest that fits. For production traffic you generally want the next tier up, and dedicated vCPU if the workload is CPU-bound rather than idle-waiting.

Use casePlanMonthly
Fits the stack2 GiB, 1 vCPU shared$13
Comfortable, room for your own apps2 GiB, 2 vCPU shared$19
Dedicated vCPU (production)2 GiB, 1 vCPU dedicated$22

1 GiB for Ghost is the realistic floor (Node + image processing); the MySQL container rides alongside. Email sending needs SMTP config; bulk newsletters additionally use Mailgun, set in the admin UI.

Run Ghost yourself

The compose file is open source and runs locally with docker compose up. One step to deploy it to Miget on the $13/month plan, databases included.