Ghost Self-Hosted

BeginnerWebsite

Self-hosted Ghost: publishing, memberships, and newsletters with your content and members on your own server.

Published 27 September 2026

Core Tools
MySQL
MySQL
Docker
Docker
Ghost
Ghost
Hosting
Hetzner
DigitalOcean
Railway
Hostinger
Reverse Proxy
Traefik
Caddy
NGINX
Self-Hosted PaaS
Coolify
Dokploy

About Ghost Self-Hosted

Ghost is an open-source publishing platform for blogs, newsletters, and paid publications. The editor, themes, member sign-ups, paid subscriptions through Stripe, and newsletter sending are all built in, and Ghost takes no cut of subscription revenue. A Content API also lets a custom frontend use Ghost as a headless CMS.

Self-hosting keeps content and members on your server. MySQL 8 is Ghost's only production database, and it holds posts, members, and settings; images and themes live in Ghost's content folder beside it. Ghost's own guidance is at least 1 GB of memory, and its Docker guide's example is a 2 GB server.

Newsletters need Mailgun, the only bulk email service Ghost supports, billed separately by volume. Two Ghost 6 features also reach outside your server: the social web (ActivityPub) runs on Ghost's hosted service, free for self-hosters up to 2,000 followers, and Traffic Analytics needs a Tinybird account. Everything else runs locally.

It suits independent writers, newsletters, and small media companies that want a purpose-built publishing platform while owning their member list, especially once Ghost(Pro)'s audience-based pricing starts to climb.

Key Features

  • ✓Editor with cards for images, embeds, and paid-content paywalls
  • ✓Member sign-ups with free and paid tiers, billed through Stripe with no revenue cut
  • ✓Built-in newsletter sending through Mailgun
  • ✓Content API for headless use with any frontend framework
  • ✓Handlebars themes from Ghost's marketplace or built in-house
  • ✓MySQL storing posts and members on your own server

When to Use Ghost Self-Hosted

  • →Independent writers building a subscription newsletter or paid publication
  • →Media companies running publications without audience-based hosting fees
  • →Developers using Ghost as a headless CMS behind a custom frontend
  • →Company blogs with built-in member sign-up and email updates
  • →Creators moving off a hosted newsletter platform who want to own their member list

Pros

  • Purpose-built for publishing, with the editor, memberships, and newsletters in one tool
  • No per-member hosting cost; the server price doesn't change with audience size
  • Stripe payments with no platform cut on subscriptions
  • Content API supports headless use alongside the native theme system

Cons

  • Newsletters need a Mailgun account, billed by volume on top of the server
  • Production runs on MySQL 8 only, with no PostgreSQL option
  • Traffic Analytics and a larger social-web following depend on outside services
  • Theme development means learning Handlebars

Hosting Options for Ghost Self-Hosted

Hetzner

Deploy Ghost Self-Hosted on Hetzner

A flat-rate root VPS from around €4-5/mo, whose entry instance already has 4 GB of memory, well above Ghost's 1 GB floor and the 2 GB its Docker guide uses. That headroom lets one server hold several Ghost sites or a busy publication, with MySQL backups and updates left to you.

DigitalOcean

Deploy Ghost Self-Hosted on DigitalOcean

Ghost's own Docker guide uses a 2 GB / 1 CPU Droplet as its example, about $12/mo, with snapshots and a cloud firewall in the panel. Managed MySQL (from about $15/mo) can take the database off the Droplet with automated backups, which protects the member list.

Railway

Deploy Ghost Self-Hosted on Railway

Deploys Ghost from its Docker image with a MySQL database and a volume for the content folder, redeploying on each new release. The volume is not optional: without it, uploaded images disappear on the next deploy. Railway terminates TLS itself, so the reverse proxy or PaaS choice doesn't apply. Expect roughly $10/mo with the database attached.

Hostinger

Deploy Ghost Self-Hosted on Hostinger

The budget VPS in the list: the entry KVM plan (about $6.50/mo on a two-year term) has 4 GB of memory, far more than one Ghost site needs. It suits a writer who wants the lowest bill, with fewer regions than the larger providers and backups left to you.

These are highlighted picks. To see all the tools, check the Hosting & Cloud category.

Reverse Proxy Options for Ghost Self-Hosted

Traefik

Ghost Self-Hosted with Traefik

Routes to the Ghost container from Docker labels and renews Let's Encrypt certificates, in place of the Caddy container in Ghost's Docker install. Forward X-Forwarded-Proto and set Ghost's url to the https address; if Ghost thinks requests arrive over plain HTTP, it redirects them in a loop.

Caddy

Ghost Self-Hosted with Caddy

What Ghost's official Docker install ships: a Caddy container that obtains certificates and terminates TLS in front of Ghost. Choosing it keeps you on the official Compose file and its update command, the least work to maintain.

NGINX

Ghost Self-Hosted with NGINX

What Ghost-CLI sets up on Ubuntu, the long-standing production install: the CLI writes the NGINX config and requests a Let's Encrypt certificate for your domain. Choose it when Ghost runs directly on the server rather than in Docker.

Self-Hosted PaaS Options for Ghost Self-Hosted

Coolify

Ghost Self-Hosted with Coolify

Free and self-hosted, with a one-click Ghost template that provisions MySQL beside it and HTTPS through Coolify's bundled proxy. Check that the content folder is on a persistent volume and included in backups, since images and themes live there, not in the database.

Dokploy

Ghost Self-Hosted with Dokploy

Free and self-hosted, with Ghost in its template catalog, deployed behind its bundled Traefik with HTTPS from the dashboard. Its scheduled backups cover the MySQL database; add the content folder's volume too, or a restore brings back posts without their images.

Ghost Self-Hosted Add-ons

Each addition below extends this stack with a capability the base stack works fine without. None are required: include the ones your product actually needs when building this stack, and skip the rest.

Tunnel Add-ons

Add a tunnel when you're self-hosting without a static IP or can't open inbound ports — a home server, a VPS behind restrictive network policies, or anywhere a reverse proxy alone can't reach the internet.

Cloudflare Tunnel

Ghost Self-Hosted with Cloudflare Tunnel

Makes Ghost reachable over HTTPS through an outbound-only connection, with no inbound ports or static IP, for a server on a home network. Set Ghost's url to the tunnel's public hostname, since member sign-in links and newsletter links are built from it.

ngrok

Ghost Self-Hosted with ngrok

The quicker-start tunnel for previewing a theme or testing member sign-up and Stripe webhooks against Ghost on your own machine. Its free-tier limits suit development rather than a live publication.

Frequently Asked Questions about Ghost Self-Hosted

Why self-host Ghost instead of using Ghost(Pro)?

Audience-based pricing. Ghost(Pro) starts at $15/mo billed yearly ($18 month-to-month) for 1,000 members, paid subscriptions need Publisher from $29/mo, and every plan's price rises with member count. A self-hosted Ghost has every feature, including paid memberships, for the cost of a server and Mailgun, whatever the audience size. Ghost(Pro) bundles what you'd otherwise run: updates, backups, email sending, analytics, and a CDN, and its revenue funds Ghost's development. Small publications with no interest in operations often do better there.

What does the server need to run?

Ghost's production guide asks for at least 1 GB of memory, and its Docker guide uses a 2 GB, 1 CPU server as the example; 2 GB is the comfortable size once MySQL, Ghost, and the proxy share the box. The database must be MySQL 8, since Ghost supports no other engine in production. Disk depends mostly on images: the content folder grows with every upload, while the database stays small.

What does sending newsletters cost on top of the server?

Ghost sends newsletters only through Mailgun, so budget for it separately. Mailgun's free plan allows 100 emails a day, which covers testing but not a real list. Paid plans start at $15/mo for 10,000 emails a month and $35/mo for 50,000, so a weekly newsletter to 2,000 subscribers fits the first tier. Sign-in links and other transactional emails go through ordinary SMTP, which can be a different provider.

What needs backing up, and how do upgrades work?

Two things: the MySQL database (posts, members, settings) and Ghost's content folder (images, themes, and files). Ghost's JSON export covers posts and settings but not images, so it doesn't replace a real backup. With the Docker install, upgrading is git pull, docker compose pull, and docker compose up -d; with Ghost-CLI it's ghost update. Back up first, and read the notes for major versions, which can change themes' requirements.

Should I install Ghost with Ghost-CLI or Docker?

Ghost-CLI on Ubuntu is the long-standing production path: it installs Ghost directly, sets up NGINX with a Let's Encrypt certificate, and upgrades with one command. The Docker Compose install arrived with Ghost 6 as a preview of Ghost's new self-hosting tools; it bundles Caddy for HTTPS and can add the self-hosted ActivityPub and analytics services. Either way you don't need a separate reverse proxy. Choose Docker when the server already runs containers, and Ghost-CLI when Ghost has the server to itself.

Scores

Popularity4/5

Ghost is one of the best-known open-source publishing platforms and a standard fixture in any best-blogging-platform conversation among developers.

Learning Curve2/5

Ghost is famously easy to run, one container and one database, and the admin UI is one non-technical publishers can drive.

Flexibility3/5

Publishing, memberships, newsletters, and paid subscriptions, done extremely well and nothing else: a purpose-built platform rather than a general one.

Performance4/5

A small instance serves a blog at serious traffic, and Ghost(Pro) runs this same software for its hosted customers at scale.

Portability4/5

Content exports to JSON, the MySQL database is yours, and Ghost(Pro) accepts the same export as a supported import path.

Tools in the Ghost Self-Hosted Stack

Databases

DevOps & CI/CD

Hosting (choose one)

Reverse Proxy or PaaS (choose one)

Reverse Proxy

Self-Hosted PaaS

Add-ons (optional — add any, or none)

Tunnel

Ghost Self-Hosted Pricing

From ~$6/mo Free to start

Self-hosted Ghost is free with every feature, including memberships and paid subscriptions, and MySQL and Docker cost nothing either. The recurring costs are the server and Mailgun for newsletters, which is free up to 100 emails a day and $15/mo for 10,000 a month. Ghost(Pro) starts at $15/mo billed yearly for 1,000 members and rises with audience size, with email sending included.

Server (any provider)$5-20/mo

1 GB of RAM is Ghost's floor and 2 GB the comfortable size with MySQL on the same server; images drive disk growth.

Ghost + MySQLFree (open source)

Members, paid subscriptions via Stripe, and newsletters are all in the free self-hosted edition.

Newsletter email deliveryFree to $35+/mo

Mailgun is the only bulk email service Ghost supports: 100 emails a day free, then $15/mo for 10,000 and $35/mo for 50,000.

Ghost Self-Hosted System Requirements

source
RAM
At least 1 GB
OS
Ubuntu 22.04, 24.04, or 26.04 (the recommended production setup)
Database
MySQL 8.0 or 8.4 (the stack uses MySQL)
Web server
NGINX 1.9.5 or higher for SSL

Every value comes from Ghost's official production prerequisites; beyond them the vendor publishes no CPU or disk floor.