Self-Hosted / Projects / Ghost

Ghost
StableSpecs verified September 1, 2026 · against vv6.61.0
Overview
Self-hosted publishing platform for blogs, newsletters, memberships, and paid subscriptions.
Ghost is a self-hosted publishing platform for creators, newsletters, and media brands that want one system for a website, content publishing, email newsletters, memberships, and paid subscriptions.
The real search intent is usually broader than “what is Ghost.” People are often deciding whether Ghost is a better fit than WordPress, Substack, or Beehiiv when they want more ownership of brand, audience, and revenue.
Why people choose Ghost
The official product site positions Ghost around professional publishing: custom websites, a modern editor, email newsletters, native memberships, subscriptions, and audience growth tools in one stack. That is a different job from a general-purpose site builder or a hosted newsletter silo.
Ghost also has unusually clear self-hosting tradeoff documentation. The official hosting guide explains that self-hosting gives you full control, SSH and database access, and the ability to modify the stack, while Ghost(Pro) removes the work of backups, updates, security, CDN, and email operations.
What you get in the stack
Official pages highlight publishing, themes, newsletters, sign-up flows, paid memberships, native analytics, offers, and integrations. The repository README also calls out Ghost as a headless Node.js CMS with APIs and theme tooling for developers who want to extend it.
For self-hosters, the documentation now matters just as much as the feature list. Ghost 6 adds a Docker-based self-hosting preview for web analytics and ActivityPub-related services, while the classic supported stack still centers on Ubuntu, Node.js, MySQL, NGINX, and systemd.
What to know before you deploy
Ghost is not a zero-ops static blog. The hosting docs recommend Ubuntu LTS, Node.js 22 LTS, MySQL 8, NGINX, systemd, and at least 1 GB memory for the supported self-hosted stack. The new Docker guide for Ghost 6 lists a Linux server, Docker, a real domain, and SMTP as prerequisites, with a 2 GB and 1 vCPU server example for the preview tooling path.
The operational tradeoff is the point of the product decision. Self-hosting means you handle updates, backups, SSL, email delivery, and usually some CDN or caching strategy yourself. The docs explicitly say Ghost(Pro) is the easier fit for most people, while self-hosting is best for teams that want maximum control and are comfortable managing servers.
Community signal supports that reality: the Ghost forum stays active around memberships, themes, integrations, self-hosting bugs, and missing media-library or checkout pain points. That is a healthy sign for support, but it also shows that running Ghost well involves more than writing blog posts.
Best fit
Choose Ghost when you want a publisher-first platform with newsletters and memberships built in, and you are comfortable owning the infrastructure or deliberately choosing Ghost(Pro) instead.
Compare WordPress, Substack, or Beehiiv more closely if your main priority is plugin breadth, a fully hosted writing business, or a simpler managed newsletter workflow with fewer infrastructure decisions.
Quick deploy
Paste into docker-compose.yml and rundocker compose up -d1services:2 ghost:3 image: ghost:latest4 restart: unless-stopped5 ports:6 - '2368:2368'7 environment:8 url: https://example.com9 database__client: mysql10 database__connection__host: db11 database__connection__user: ghost12 database__connection__password: change-me13 database__connection__database: ghost14 depends_on:15 - db1617 db:18 image: mysql:819 restart: unless-stopped20 environment:21 MYSQL_ROOT_PASSWORD: root-change-me22 MYSQL_DATABASE: ghost23 MYSQL_USER: ghost24 MYSQL_PASSWORD: change-me25 volumes:26 - ghost-db:/var/lib/mysql2728volumes:29 ghost-db:
Configuration
Environment variables
| Variable | What it does | Example |
|---|---|---|
urlrequired | Canonical public URL of the Ghost publication. | https://example.com |
database__connection__passwordrequired | MySQL password for the Ghost application user. | change-me |
mail__transport | Mail transport used for transactional email delivery. | SMTP |
mail__options__host | SMTP host for Ghost email delivery. | smtp.example.com |
Ports
2368/tcp— Default Ghost web service port before reverse-proxy termination.
Volumes to back up
/var/lib/mysql— Persistent MySQL storage for the Ghost database.
Interface previews
Screenshots of the Ghost interface.
Feature support
| Feature | Support |
|---|---|
| Website publishing with a modern editorThe official product site presents Ghost as a professional publishing platform with a purpose-built editor. | Supported |
| Email newsletters built inNewsletters are a core Ghost feature, not a bolt-on plugin. | Supported |
| Free and paid membershipsOfficial pages highlight native members, subscriptions, and premium tiers. | Supported |
| Custom themes and design controlTheme marketplace and custom design workflows are part of the main product story. | Supported |
| Developer APIs and headless CMS usageThe repository README and docs both point to APIs and developer tooling. | Supported |
| Native analyticsGhost highlights analytics, but self-hosting the newer analytics stack requires the Docker-based preview tooling and Tinybird integration. | Partial support |
| ActivityPub / social web supportSupported in Ghost 6, but the docs treat full self-hosting of the social-web services as an extra Docker-based path. | Partial support |
| Automatic SSL and server bootstrap via Ghost CLIThe recommended Ghost CLI path configures production installs and automatic Let’s Encrypt SSL. | Supported |
| Forum-based community support for self-hostersThe Ghost forum remains active across hosting, themes, memberships, and integration questions. | Supported |
Community signals
- Stars
- 55.5k
- Forks
- 12k
- Open issues
- 207
- Last commit
- 18h ago
- Latest release
- v6.71.0
- Repo created
- May 2013
Includes open pull requests
1d ago
Refreshed nightly from the GitHub API.
Alternatives
Questions
What is Ghost used for?
Ghost is used to run a self-hosted publishing site with blog posts, newsletters, member signups, and paid subscriptions from one platform.
Is Ghost a self-hosted alternative to Substack?
Yes, for many creators. Ghost includes newsletters, memberships, and paid subscriptions, while giving you more control over branding, audience data, and the underlying software.
Is Ghost a replacement for WordPress?
Sometimes. Ghost is narrower and more publisher-focused than WordPress, which can make it cleaner for newsletter and membership businesses. WordPress still has a much broader plugin ecosystem for sites that need many non-publishing extensions.
What server requirements does Ghost have?
The official hosting guide recommends Ubuntu LTS, Node.js 22 LTS, MySQL 8, NGINX, systemd, and at least 1 GB memory for the supported stack. The newer Docker preview docs also show a Linux server, domain, Docker, and SMTP as core prerequisites.
Does self-hosted Ghost need MySQL and SMTP?
Yes for the standard supported paths. The official docs center the stack on MySQL, and both the classic and Docker-based install guides call out email setup because transactional mail is part of real-world Ghost operation.
Is self-hosting Ghost cheaper than Ghost(Pro)?
It depends. Ghost’s own hosting guide says very light blogs can be cheaper to self-host, but once you add backups, email delivery, analytics, CDN, and operational time, Ghost(Pro) is often the better value for many users.
Who should choose self-hosted Ghost?
The official guidance says self-hosting is best for teams who are comfortable managing servers and want full control. If you mainly want the software without infrastructure work, Ghost(Pro) is usually the simpler fit.
support // the lab
Found this write-up useful?
If it saved you time or a rebuild, you can support more practical homelab guides.