Ghost

indie hackercms

Open-source publishing platform for newsletters, paid memberships, and blogs. Built-in Stripe payments, email delivery, and a clean editor. Self-hosting removes the per-member revenue cut that hosted platforms take

#publishing#newsletter#blogging#membership#cms#substack-alternative#stripe

Quick Start

docker run -d -p 2368:2368 -e url=http://localhost:2368 ghost:latest

Overview

Ghost is an open-source publishing platform built specifically for newsletters and paid content. It handles posts, pages, email newsletters, and Stripe-powered memberships from a single clean interface. The editor stays out of the way — no blocks, no sidebars, just writing — and the subscriber management, open rate tracking, and email delivery are built in rather than bolted on via plugins.

The case for self-hosting comes down to revenue share. Substack takes 10% of paid subscriptions. Beehiiv and similar platforms have their own fees. On a self-hosted Ghost instance, Stripe’s standard processing fee is the only cut taken. For a newsletter with meaningful revenue, the difference adds up quickly.

Deployment requires Node.js and a MySQL-compatible database, which makes it more involved than a PHP-based CMS. The Ghost CLI handles most of the setup on a VPS, but you also need to configure an email delivery service — Mailgun or Postmark are the common choices — before memberships work correctly.

The theme ecosystem is smaller than WordPress, and Ghost does not have an equivalent plugin marketplace. Extending beyond what ships with Ghost requires writing Handlebars templates or using the REST API and webhooks to connect external tools. For straightforward publishing — a newsletter, a blog, a membership site — the built-in feature set covers the common cases without needing to evaluate and maintain third-party extensions.

Ghost Pro, the hosted version, starts at $23/month and handles infrastructure and updates for you.

Ghost: Pros & Cons

Pros (The Wins)Cons (The Friction)
No revenue share:
Self-hosted keeps 100% of
Stripe subscription revenue.
Node.js stack:
More complex than PHP CMSes;
needs Node + MySQL to run.
Built-in email:
Newsletter delivery, subscriber
management, and analytics included.
Small theme ecosystem:
Far fewer themes than WordPress;
customisation needs Handlebars.
Clean editor:
Writing-focused interface;
no plugin clutter.
Email setup required:
Mailgun or Postmark needed
before memberships work.
53.7k stars, MIT:
Actively developed;
strong documentation.
No plugin marketplace:
Extend via API/webhooks;
no one-click add-ons.

Use Cases

Specific ways to use Ghost for your workflow.

01
Run a paid newsletter with Stripe memberships without giving Substack a cut of revenue
02
Build a blog with a custom domain, theme, and email list on your own infrastructure
03
Publish a content site for a SaaS product with built-in subscription management
04
Replace a WordPress site that has grown slow and plugin-dependent

Deployment Strategy

Recommended ways to host Ghost in your own environment.

docker
self-hosted