
Ghost review
Publishing platform for blogs, newsletters and paid memberships
Chandan Kumar is a founder of Geekflare. He is a technology enthusiast and entrepreneur who loves to help businesses and people around the world. Chandan has worked at BNP Paribas, Citibank, Deutsche Bank, Motorola, and HP. He’s got an in-depth understanding of business software and IT infrastructure.
Verdict
The best open source choice for publishing business. It includes posts, email newsletters and paid memberships in one app, with Stripe payments built in. It's deliberately focused, so it isn't a fit for general websites or custom content types.
Best for
Media companies, creators and B2B teams running a blog with a newsletter and paid memberships
Not for
General-purpose websites or apps that need custom content types
Pros
- Stripe payments built in, with no extra plugin
- Fast, clean editor
- All MIT, with nothing locked to a paid edition
- Official Docker image
Cons
- MySQL only in production
- No custom content types beyond posts and pages
- No SSO for staff accounts
Is Ghost right for your project?
Describe what you're building and AI will check the fit against this review.
At a glance
- Type
- Publishing
- Stack
- Node.js 22 or 24 / MySQL 8
- Databases
- MySQL
- Licence terms
- The whole platform is MIT. Ghost(Pro) plans restrict the hosted service, not the software.
- SSO
- No
- Roles and permissions
- Free edition
- Audit logs
- Not documented
Free vs paid editions
What you get when you self-host, and what needs a paid plan.
Self-hosted Ghost is fully MIT, with memberships, paid subscriptions, newsletters and the Admin API included. Ghost(Pro), the hosted service run by the non-profit Ghost Foundation, starts at $18 a month billed yearly. Its Starter plan leaves out custom themes, paid subscriptions and integrations, and SSO is only on the Custom plan. Self-hosted Ghost has no built-in SSO.
Self-hosting Ghost
Ghost recommends Ubuntu 22.04 or 24.04 with at least 1 GB of RAM, Node.js 22 or 24, MySQL 8 and NGINX. Its own Docker Compose setup is still labelled preview, so we tested Docker's official ghost image with MySQL 8.4.
New cloud server to first screen
1 min 10 s
Memory in use at idle
636 MB of 4 GB
Version tested
6.71.0 · Oct 16, 2026
- On the first try Ghost started before MySQL was ready, failed to connect and shut down. Adding a MySQL health check and
restart: alwaysfixed it, and the compose file below includes both. - With that fix, Ghost was ready in 70 seconds on a cloud Ubuntu 24.04 server (2 vCPU, 4 GB RAM), image downloads included.
- At idle, Ghost used about 160 MB of RAM and MySQL about 475 MB.
services:
ghost:
image: ghost:6-alpine
restart: always
depends_on:
db:
condition: service_healthy
ports: ["2368:2368"]
environment:
url: https://blog.example.com
database__client: mysql
database__connection__host: db
database__connection__user: root
database__connection__password: change-me
database__connection__database: ghost
volumes: [content:/var/lib/ghost/content]
db:
image: mysql:8.4
restart: always
environment:
MYSQL_ROOT_PASSWORD: change-me
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-pchange-me"]
interval: 5s
retries: 30
volumes: [db:/var/lib/mysql]
volumes: { content: {}, db: {} }What you can build with Ghost
Paid newsletter
Free and paid tiers, Stripe checkout and email delivery in one app. Self-hosted Ghost sends bulk email through Mailgun.
Company blog with an email list
Any post can go out as an email, and readers sign up through the built-in Portal.
Independent publication
Staff roles for contributors, authors, editors and admins, with tags and more than one author per post.
Members-only content
Make each post public, members-only or paid-only, so you choose what sits behind the paywall.
Headless blog
Use the Content API to bring posts into a Next.js or Astro site.
Moving off Substack
Ghost imports posts and subscribers from Substack, so you keep your list when you move.