SOLFIND
Web Lens
Portal home

Hosting Ghost - Ghost Developer Docs

https://docs.ghost.org/hosting • 291 KB fetched
Open original page


Hosting Ghost - Ghost Developer Docs
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.

Skip to main content
Ghost Developer Docs home page

Search...

⌘ K

* Sign in

* Get Started

* Get Started

Search...

Navigation
Getting Started
Hosting Ghost

Home
Documentation
Migration Guides

*
Tutorials

*
Developer Forum
Getting Started

* Introduction

* Installation

* Hosting Guide

* Updates & Versions

Core Concepts

* Overview

* Architecture

* Configuration

* Staff Users

* Publishing

* Memberships

* Recommendations

* Newsletters

* Security

Themes

* Overview

* Structure

* Contexts

* Assets

* Helpers

* Content

* Search

* Share

* Members

* Routing

* Custom Settings

* GScan

Advanced Tools

* Ghost CLI

* Content API

* Admin API

* JAMstack

* Webhooks

Resources

* FAQ

* Breaking Changes

* Contributing

* LLM

* License

* Logos

* Trademark

On this page

* Ghost(Pro) vs self-hosting
* Which option is best for me?

* Self-hosting details & configuration
* Social Web (ActivityPub) and Web Analytics (Tinybird)

* Hosted ActivityPub Usage Limits

* Server hardening

* Optimizing for scale

* Staying up to date

Getting Started

Hosting Ghost

A short guide to running Ghost in a production environment and setting up an independent publication to serve traffic at scale.

Ghost is open source software, and can be installed and maintained relatively easily on just about any VPS hosting provider. Additionally, we run an official PaaS for Ghost called Ghost(Pro) , where you can have a fully managed instance set up in a couple of clicks. All revenue from Ghost(Pro) goes toward funding the future development of Ghost itself, so by using our official hosting you’ll also be funding developers to continue to improve the core product for you.
​

Ghost(Pro) vs self-hosting

A common question we get from developers is whether they should use our official platform, or host the codebase on their own server independently. Deciding which option is best for you comes with some nuance, so below is a breakdown of the differences to help you decide what will fit your needs best.
Ghost(Pro) official hosting Self-hosting on your own server
Product features Identical Identical
Base hosting cost From $15 /mo From $10 /mo
Global CDN & WAF Included From $20 /mo
Email newsletter delivery Included From $15 /mo
Analytics platform Included From $10 /mo
Full site backups Included From $5 /mo
Image editor Included From $12 /mo
Payment processing fees 0% 0%
Install & setup ✅ Manual
Weekly updates ✅ Manual
Server maintenance & updates ✅ Manual
SSL certificate ✅ Manual
24/7 on-call team ✅ ❌
Enterprise-grade security ✅ ❌
Ghost product support Email Forum
Custom edge routing policies ❌ ✅
Direct SSH & DB access ❌ ✅
Ability to modify core ❌ ✅
Where the money goes New features
in Ghost Third-party
companies

​

Which option is best for me?

Self-hosting
Best for teams who are comfortable managing servers, and want full control over their environment. There’s more complexity involved, and you’ll have to pay for your own email delivery, analytics and CDN — but ultimately there’s more flexibility around exactly how the software runs. For heavy users of Ghost, self-hosting generally works out to be more expensive vs Ghost(Pro), but for lightweight blogs it can be cheaper.
Self-hosting guide

Ghost(Pro)
Best for most people who are focused on using the Ghost software, and don’t want to spend time managing servers. Setting up a new Ghost site takes around 20 seconds. After that, all weekly updates, backups, security and performance are managed for you. If your site ever goes down, our team gets woken up while you sleep peacefully. In most cases Ghost(Pro) ends up being lower cost than self-hosting once you add up the cost of the different service providers.
See plans & pricing

TLDR: If you’re unsure: Ghost(Pro) is probably your best bet. If you have a technical team and you want maximum control and flexibility, you may get more out of self-hosting.

​

Self-hosting details & configuration

Ghost has a small team , so we optimize the software for a single, narrow, well-defined stack which is heavily tested. This is the same stack that we use on Ghost(Pro), so we can generally guarantee that it’s going to work well.
To date, we’ve achieved this with our custom Ghost-CLI install tool and the following officially supported and recommended stack:

* Ubuntu 22.04, 24.04 or 26.04 (LTS)

* Node.js 22 LTS

* MySQL 8.0 or 8.4

* NGINX

* Systemd

* A server with at least 1GB memory

* A non-root user for running ghost commands

Ghost can also run successfully with different operating systems, databases and web servers, but these are not officially supported or widely adopted, so your mileage may (will) vary.
​

Social Web (ActivityPub) and Web Analytics (Tinybird)

In Ghost 6.0 we’ve launched two significant new features. To achieve this whilst keeping Ghost’s core architecture maintainable, we’ve built them as separate services. These services are Open Source and can be self-hosted, however we are moving towards modern docker compose based tooling instead of updating Ghost CLI.
Anyone can use our Ghost(Pro) hosted ActivityPub service (up to the limits below), regardless of how you host Ghost. If you want to fully self-host the social web features or you want to self-host Ghost with the web analytics features you’ll need to try out the docker compose based install method. This method is brand new and so we’re calling it a preview.
See self-hosting guides & instructions →
​

Hosted ActivityPub Usage Limits

Self-hosters are free to use the hosted ActivityPub service, up to the following limits:

* 2000 max. followers

* 2000 max. following

* max. 100 interactions per day (interactions include: create a post/note, reply, like, repost)

If your usage exceeds this, you’ll need to switch to self-hosting ActivityPub using docker compose .
​

Server hardening

After setting up a fresh Ubuntu install in production, it’s worth considering the following steps to make your new environment extra secure and resilient:

* Use SSL - Ghost should be configured to run over HTTPS. Ghost admin must be run over HTTPS.

* Separate admin domain - Configuring a separate admin URL can help to guard against privilege escalation and reduces available attack vectors.

* Secure MySQL - We strongly recommend running mysql_secure_installation after successful setup to significantly improve the security of your database.

* Set up a firewall - Ubuntu servers can use the UFW firewall to make sure only connections to certain services are allowed. We recommend setting up UFW rules for ssh , nginx , http , and https . If you do use UFW, make sure you don’t use any other firewalls.

* Disable SSH Root & password logins - It’s a very good idea to disable SSH password based login and only connect to your server via proper SSH keys. It’s also a good idea to disable the root user.

​

Optimizing for scale

The correct way to scale Ghost is by adding a CDN and caching layer in front of your Ghost instance. Clustering or sharding is not supported. Ghost easily scales to billions of requests per month as long as it has a solid cache.
​

Staying up to date

Whenever running a public-facing production web server it’s critically important to keep all software up to date. If you don’t keep everything up to date, you place your site and your server at risk of numerous potential exploits and hacks.
If you can’t manage these things yourself, ensure that a systems administrator on your team is able to keep everything updated on your behalf.
Suggest edits Raise issue

Installation
Updates & Versions

github twitter bluesky reddit
Powered by This documentation is built and hosted on Mintlify, a developer documentation platform

Links found on this page

  1. /llms.txt [direct]
  2. Skip to main content [direct]
  3. Ghost Developer Docs home page [direct]
  4. Sign in [direct]
  5. Get Started [direct]
  6. Home [direct]
  7. Documentation [direct]
  8. Migration Guides [direct]
  9. Tutorials [direct]
  10. Developer Forum [direct]
  11. Installation [direct]
  12. Updates & Versions [direct]
  13. Overview [direct]
  14. Architecture [direct]
  15. Configuration [direct]
  16. Staff Users [direct]
  17. Publishing [direct]
  18. Memberships [direct]
  19. Recommendations [direct]
  20. Newsletters [direct]
  21. Security [direct]
  22. Overview [direct]
  23. Structure [direct]
  24. Assets [direct]
  25. Content [direct]
  26. Search [direct]
  27. Share [direct]
  28. Members [direct]
  29. Routing [direct]
  30. Custom Settings [direct]
  31. GScan [direct]
  32. Ghost CLI [direct]
  33. Webhooks [direct]
  34. FAQ [direct]
  35. Breaking Changes [direct]
  36. Contributing [direct]
  37. LLM [direct]
  38. License [direct]
  39. Logos [direct]
  40. Trademark [direct]
  41. Ghost(Pro) [direct]
  42. Ghost-CLI [direct]
  43. docker compose [direct]
  44. Suggest edits [direct]
  45. Raise issue [direct]
  46. github [direct]
  47. twitter [direct]
  48. bluesky [direct]
  49. reddit [direct]
  50. Powered by This documentation is built and hosted on Mintlify, a developer documentation platform [direct]