Guide: Ghost CMS — The Complete Guide to Modern Publishing
The Bottom Line: Ghost CMS is a purpose-built, open-source publishing platform that combines a fast headless CMS, native newsletter capabilities, and built-in membership monetisation — all without the bloat of WordPress or the platform lock-in of Substack. If your primary goal is publishing content and building a paid subscriber base, Ghost is the cleanest, fastest, and most owner-controlled option in 2025.
What Is Ghost CMS & Why It Matters
Ghost started as a Kickstarter project in 2013 and has since evolved into the leading open-source headless CMS for professional publishing. Unlike WordPress (which began as a blogging tool and became a general-purpose CMS), Ghost was designed from the ground up for one thing: publishing. Every feature — the editor, the membership system, the newsletter engine, the analytics — exists to help creators and businesses get content in front of an audience and convert readers into paying subscribers.
Key architectural advantages over alternatives:
- Node.js runtime — Ghost feels noticeably faster than PHP-based systems like WordPress. Pages render in milliseconds, not seconds.
- Headless by design — Content API (REST + GraphQL) is first-class, meaning you can use Ghost as a backend for any frontend (React, Vue, mobile apps).
- Membership-first database — Subscribers, tiers, and payments aren't bolted on via plugins; they're baked into the core schema. This means cleaner data, fewer moving parts, and no plugin conflicts.
- No plugin market — This is a feature, not a bug. Ghost's integration strategy relies on native integrations and Zapier/API hooks instead of an ecosystem of third-party plugins that can slow down your site and create security holes.
Getting Started: Self-Hosted vs Ghost(Pro)
Before writing a single post, you need to decide where Ghost lives. There are two paths:
| Factor | Ghost(Pro) | Self-Hosted |
|---|---|---|
| Monthly cost | $9–$99/month (scales with traffic) | ~$5–$20/month (VPS cost) |
| Maintenance | Zero — automatic updates, backups, scaling | You handle Node.js, MySQL, Nginx, SSL renewals, backups |
| Control | Limited to theme customisation | Full server-level access |
| Best for | Solo creators, small teams who want to just publish | Devs, agencies, high-traffic sites needing custom infrastructure |
For self-hosting, the minimal stack is:
# Minimal self-hosted Ghost stack
Ubuntu 22.04 / 24.04 LTS
Node.js 20.x LTS (Ghost v6 requires Node 20+)
MySQL 8.0+
Nginx (reverse proxy)
Systemd (process manager for Ghost CLI)
SMTP (Mailgun, SendGrid, or SES for transactional emails)
The fastest way to self-host is via the official Ghost CLI: ghost install handles everything — MySQL setup, Nginx config, SSL via Let's Encrypt, and systemd service files — in a single interactive session.
The Ghost Editor: Koenig & Cards
Ghost's editor is called Koenig (German for "king"). Instead of the classic block editor you see in Medium or WordPress, Koenig uses a card-based system. Every piece of content — a paragraph, an image, a gallery, a button, an email signup form, a product listing — is a draggable, rearrangeable card.
Built-in card types include:
Cards available in Ghost's native editor (no plugins needed):
├── Text (rich formatting, markdown shortcuts)
├── Image / Gallery
├── Video (YouTube, Vimeo, or direct MP4)
├── Audio (Spotify embed, SoundCloud, or direct MP3)
├── Bookmark (rich link previews generated automatically)
├── Call to Action (email signup form, inline)
├── Button (styled CTA button)
├── Toggle (expandable FAQ/content sections)
├── Header (customisable heading designs)
├── Email-only content (blocks visible only in newsletters)
├── Product (Ghost native — no Stripe product linking required)
└── HTML (raw embed for custom code)
Cards are portable — Ghost converts them into clean HTML for the web and into email-compatible markup for newsletters from the same source. This dual-output capability is one of Ghost's most underrated features: write once, publish to web + email + RSS automatically.
Memberships, Tiers & Monetisation
Ghost's membership system is what sets it apart from every other CMS. It's not a plugin or an integration — it's the core business model of the platform.
How it works:
- Free members — Anyone can subscribe via email. Ghost handles the double-opt-in confirmation and serves email newsletters natively (no Mailchimp needed for basic sending).
- Paid tiers — Stripe is built in. Create as many tiers as you want (e.g., "Monthly $10", "Annual $100", "Premium $50"). Each tier can have its own set of accessible posts.
- Offers & coupons — Ghost has native Offers engine. Create discount codes, trial periods, or promotional pricing without third-party tools.
- Portal — Ghost's pre-built membership UI (signup, login, account management) ship with every theme. No additional frontend work needed for subscriptions.
Revenue features bundled into core:
- Stripe Connect for payouts
- Native analytics (MRR, churn, member counts — real-time)
- Email newsletter delivery (send via Ghost's own mail API or your SMTP provider)
- Commenting system (native, no Disqus required)
- Open-rate tracking per newsletter send
This means a creator can go from zero to a paid newsletter business without ever leaving Ghost. No Stripe API set-up, no Mailchimp sync, no separate analytics tool.
Custom Themes & Handlebars Templating
Ghost themes are built with Handlebars, a logic-less templating language, plus standard CSS and JavaScript. The official Starter theme on GitHub provides a complete development environment with Gulp, PostCSS, and live reload.
Key files in any Ghost theme:
my-ghost-theme/
├── default.hbs # Main layout wrapper
├── index.hbs # Homepage / blog listing
├── post.hbs # Single post view
├── page.hbs # Static pages (About, Contact)
├── tag.hbs # Tag archive pages
├── author.hbs # Author profile pages
├── assets/ # CSS, JS, fonts, images
│ ├── css/
│ ├── js/
│ └── fonts/
├── partials/ # Reusable template fragments
│ ├── header.hbs
│ ├── footer.hbs
│ └── navigation.hbs
└── package.json # Theme metadata (name, version, ghost-compatibility)
Templating tips:
- Use
{{#foreach posts}}to iterate over content — it's the Handlebars equivalent of a for loop, optimised for Ghost's data layer. - Access membership-tier data via
{{#is "paid-members-only"}}to conditionally render content. - Customise the Portal membership UI by overriding the
portalcolour settings inpackage.json— no JavaScript editing needed. - Optimise images with Ghost's built-in image transform API: append
?width=600&format=webpto any content image URL.
SEO, Performance & Analytics
Ghost ships with best-in-class SEO defaults out of the box:
- Automatic canonical URLs, meta descriptions, and Open Graph tags
- Structured data (JSON-LD) for articles — Google picks this up for rich results
- XML sitemap auto-generated and submitted on each publish
- Server-side rendering (SSR) — every page is full HTML on first load, no client-side JS required for content visibility
- Sub-100ms server response times on typical hardware due to Node.js's event loop and MySQL's query caching
- Built-in analytics (dashboard): page views, members, MRR, email open rates, referrer sources. No GDPR cookie banner needed for first-party analytics.
For deeper analytics, Ghost integrates natively with Plausible, Fathom, ChartMogul, and Google Analytics via the integrations panel.
Ghost v6 & The Social Web
Ghost v6 (released late 2024, stable through 2025) introduced a major shift: ActivityPub support. This means your Ghost blog can federate with Mastodon, Pixelfed, and other ActivityPub-compatible platforms. Your posts automatically appear as toots/notes on the fediverse without any manual cross-posting. For creators who want to own their content while reaching audiences on decentralised social platforms, this is a game-changer — you get the reach of social media without surrendering control of your content or your audience data.
API-First Architecture
Ghost's Content API is RESTful and returns clean JSON. You can use it to build any frontend — a React SPA, a mobile app, a custom newsletter archive, or a static site with Eleventy/Gatsby fetching Ghost content at build time. The Admin API supports CRUD operations for automation: programmatic post creation, member imports, tier management, and bulk tag operations are all available via token-authenticated HTTP calls. Many creators pair Ghost with Zapier or n8n to automate cross-posting, Slack notifications, or CRM syncs.
Final Verdict: Who Should Use Ghost?
Ghost is the right choice if:
- Your primary output is written content (articles, newsletters, documentation).
- You want built-in membership monetisation without platform fees (Stripe's 2.9% + $0.30 is the only cut).
- You value speed — both page load times and publishing workflow speed.
- You want ownership: your content, your subscriber list, your domain. No platform can delete your account or change your revenue share overnight.
Ghost is not the right choice if you need a full-fledged application CMS (events calendar, forums, e-commerce product catalogue with variants, user-generated content) — WordPress or a custom framework would serve you better there. But for publishing-first use cases in 2025, Ghost is the gold standard.
Published on toolbrain.net — your source for practical, no-fluff tech guides and publishing workflows.
📖 Related Reads
- ToolBrain — tool reviews, LLM comparisons, and AI workflow guides
- NoCode Insider — AI workflow automation with no-code tools, agents, and APIs
Cross-links automatically generated from ToolBrain.
← Back to all posts