Skip to content
Ghost CMS Guide — Modern Publishing Platform for Creators

Ghost CMS Guide — Modern Publishing Platform for Creators

DodaTech Updated Jun 7, 2026 7 min read

Ghost is an open-source publishing platform designed specifically for creators, publishers, and bloggers — combining a powerful editor, membership management, newsletters, and a fast frontend into one focused product.

What You’ll Learn

  • How Ghost differs from WordPress and when to choose each
  • Installing and configuring Ghost with the Ghost CLI
  • Building custom themes with Handlebars templates
  • Setting up memberships and paid subscriptions
  • Sending newsletters and managing email delivery
  • Using the Ghost API for headless CMS integration

Why Ghost Matters

WordPress powers 40% of the web but carries decades of legacy — plugins for everything, slow performance, and constant security updates. Ghost was built from scratch for online publishing with a modern tech stack (Node.js, Ember.js). It’s faster out of the box, has a cleaner editor, and includes built-in membership and newsletter features that WordPress needs plugins for. DodaTech’s blog runs on Ghost because the markdown editor and membership system let the team publish content and monetize it without plugin overload.

    flowchart LR
    A[Node.js & Web Basics] --> B[Ghost CMS]
    B --> C[Ghost CLI Setup]
    B --> D[Themes & Templates]
    B --> E[Memberships]
    B --> F[Newsletters]
    B --> G[Ghost API]
    C --> H[Production Deployment]
    D --> I[Custom Design]
    E --> J[Paid Subscriptions]
    style B.fill:#151719,color:#fff
  
Prerequisites: Basic JavaScript and Node.js knowledge. Familiarity with HTML and CSS for theme development.

Core Concepts

Ghost vs WordPress

FeatureGhostWordPress
EditorMarkdown + cardsBlock editor (Gutenberg)
PerformanceFast by defaultNeeds caching plugins
MembershipBuilt-inRequires plugins
NewsletterBuilt-inRequires plugins
Tech stackNode.jsPHP
Theme engineHandlebarsPHP templates

Installation with Ghost CLI

# Install Ghost CLI
npm install ghost-cli -g

# Create a directory and install Ghost
mkdir my-ghost-site && cd my-ghost-site
ghost install

# Output:
# ✔ Checking system requirements
# ✔ Setting up database
# ✔ Running migrations
# ✔ Configuring URL
# ✔ Setting up email (optional)
# ✔ Starting Ghost
# Ghost is running in production at https://my-ghost-site.com

Output: Ghost CLI sets up a full Ghost instance — Node.js process, SQLite database, Nginx reverse proxy, SSL certificate via Let’s Encrypt, and background process management. For local development, use ghost install local.

Custom Themes

Ghost uses Handlebars templates:

{{! default.hbs — main layout }}
<!DOCTYPE html>
<html>
<head>
  <title>{{meta_title}}</title>
  <link rel="stylesheet" href="{{asset "css/style.css"}}">
</head>
<body>
  <header>
    <h1><a href="{{@site.url}}">{{@site.title}}</a></h1>
    {{navigation}}
  </header>

  <main>
    {{{body}}}  {{! Page content injected here }}
  </main>

  <footer>
    &copy; {{date format="YYYY"}} {{@site.title}}
  </footer>
</body>
</html>
{{! post.hbs — single post template }}
{{!< default }}

<article class="post">
  <h1>{{title}}</h1>
  <div class="meta">
    By {{primary_author.name}} on {{date format="MMM DD, YYYY"}}
  </div>
  <div class="content">
    {{content}}  {{! Full post HTML }}
  </div>

  {{#if tags}}
    <div class="tags">
      {{tags separator=" | "}}
    </div>
  {{/if}}
</article>

Output: Ghost renders the default.hbs layout for every page, wrapping the specific page content in {{{body}}}. The post.hbs template controls how individual articles look. Ghost themes are simple — no database queries, just context variables.

Memberships and Paid Subscriptions

// Configure tiers from Ghost Admin
// Settings > Memberships > Add tier
// "Premium" — $9/month — Access to exclusive content

// In your templates, gate content:
{{#is "post"}}
  {{#if access}}
    {{! Full post content for members }}
    {{content}}
  {{else}}
    {{! Teaser for non-members }}
    <p>Subscribe to read the full article.</p>
    <a href="/membership/">Join Premium </a>
  {{/if}}
{{/is}}

Output: Ghost handles the entire paid subscription flow — Stripe integration for payments, member management, content gating, and email newsletters to subscribers. You define which tiers can access which content.

Newsletters

Ghost sends newsletters to your members:

# Configure email in Ghost Admin
# Settings > Email newsletter
# Connect Mailgun (free tier: 5,000 emails/month for Ghost owners)

Every post you publish can be sent as a newsletter automatically. Ghost tracks open rates, click rates, and subscriber growth. Members can choose daily, weekly, or free-form digest options.

Ghost API (Headless Mode)

// Ghost Content API — read-only, public
const GhostContentAPI = require("@tryghost/content-api");

const api = new GhostContentAPI({
  url: "https://my-ghost-site.com",
  key: "your-content-api-key",
  version: "v5.0",
});

// Fetch posts
async function getPosts() {
  const posts = await api.posts.browse({
    limit: 10,
    include: ["tags", "authors"],
    filter: "tag:tech",
  });

  posts.forEach(post => {
    console.log(post.title);
    console.log(post.url);
    console.log(post.primary_author.name);
  });
}

// Fetch a single post by slug
const post = await api.posts.read({ slug: "hello-world" });
console.log(post.html); // Full HTML content

Output: The Content API returns JSON with posts, pages, tags, authors, and settings. You can use this to build a custom frontend (React, Vue, Astro) with Ghost as a headless CMS — getting Ghost’s editor and your choice of frontend framework.

Common Mistakes

  1. Running Ghost on shared hosting: Ghost needs a Node.js server. Shared PHP hosting won’t work. Use a VPS (DigitalOcean, Linode) or Ghost’s managed hosting (Ghost Pro).

  2. Not configuring email delivery: Ghost needs email for member signups, password resets, and newsletters. Without Mailgun or another email service, these features silently fail.

  3. Treating Ghost like WordPress with plugins: Ghost’s philosophy is “less is more.” There are no plugins — features are built into the core or not available. Don’t expect a plugin ecosystem.

  4. Modifying core Ghost files: Ghost is updated frequently. Edits to core/ or node_modules/ are overwritten on upgrade. Extend via themes, custom integrations, or the API.

  5. Not using the membership system’s full potential: Many creators just publish posts. Ghost’s built-in paid memberships, subscription tiers, and email newsletters can monetize content without third-party tools.

Practice Questions

  1. What makes Ghost different from WordPress? Answer: Ghost is built specifically for publishing with a Node.js backend, markdown editor, and built-in memberships/newsletters. WordPress is a general CMS with plugins for everything.

  2. How do you install Ghost on a server? Answer: Use ghost install after installing Ghost CLI. It sets up Node.js, SQLite, Nginx, SSL, and process management automatically.

  3. What template engine does Ghost use? Answer: Handlebars. Themes consist of .hbs files with access to Ghost’s context variables.

  4. How can you use Ghost as a headless CMS? Answer: Use the Content API to fetch posts and pages as JSON, then build a custom frontend with any framework. The Admin API handles writes.

Challenge

Build a membership site: install Ghost locally, create a premium tier ($5/month), write 3 posts with content gating (free vs premium), set up Mailgun for newsletters, create a custom theme with a members-only section, and test the full subscriber flow from signup to paid access.

FAQ

Is Ghost completely free?
: Ghost CMS is open-source and free to self-host. Ghost Pro (managed hosting) starts at $9/month. There are no feature limitations on the self-hosted version.
Does Ghost support multiple authors?
: Yes. Ghost has author profiles, multiple author support per post, and role-based permissions for contributors, editors, and administrators.
Can I migrate from WordPress to Ghost?
: Yes. Ghost provides an import tool that converts WordPress XML exports to Ghost format. URLs, content, and author data are preserved.
How does Ghost handle SEO?
: Ghost has built-in SEO features — meta titles, descriptions, canonical URLs, structured data, sitemaps, and fast page load speeds by default.
Does Ghost have a mobile app?
: Ghost has a web-based mobile interface but no native mobile app. The editor works on mobile browsers.

Try It Yourself

# Install Ghost locally
npm install ghost-cli -g
mkdir ghost-test && cd ghost-test
ghost install local

# Visit http://localhost:2368/ghost to set up
# Create a post, explore the editor, customize the theme

# Test the Content API
curl http://localhost:2368/ghost/api/v5/content/posts/?key=your-content-api-key

What’s Next

TopicDescription
WordPress
Compare Ghost with the CMS giant
React
Build a headless frontend for Ghost

Related topics: JavaScript, Node.js, HTML, CSS, REST API

What’s Next

Congratulations on completing this Ghost tutorial! Here’s where to go from here:

  • Practice daily — Consistency is more important than long study sessions
  • Build a project — Apply what you learned by building something real
  • Explore related topics — Check out other tutorials in the same category
  • Join the community — Discuss with other learners and share your progress

Remember: every expert was once a beginner. Keep coding!

Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro