A guide to self hosting

Hosting Ghost is a little different to other open source software you may be accustomed to. Ghost is written in Node.js and requires command line access to be installed. It is therefore best suited to VPS style hosts.

Recommended Stack

We only support the official recommended installation.

All other installations are not supported and won't get support soon!

For installing on production, we officially recommend the following stack & server setup:

  • Ubuntu 16.04 or Ubuntu 18.04
  • MySQL
  • Systemd
  • Recommended Node version installed via NodeSource
  • At least 1GB memory (swap can be used)
  • A non-root user for running ghost commands


We recommend a server with minimum 1GB memory. If you use something smaller, you must configure swap in order to run the install process successfully.

Our install guide will walk you through how to get a server setup this way, step by step.

This is the setup that Ghost CLI is intended for & tested against, and is the only setup that we guarantee will work out of the box. Ghost CLI is designed to be extensible in the near future, however if you choose to use alternatives to our recommended stack you should expect to have to debug & fix problems yourself.

Ubuntu 16.04 and Ubuntu 18.04 are the only officially supported OSes. Other operating systems may work, but we are unable to assist with debugging or optimising for them. PRs are welcome though 😊

Why this stack?

We've selected what we've found to be the most common setup used for running Ghost, and used this to base our CLI tool around. All testing was done against this stack, with the aim to create a robust, smooth experience installing Ghost with a single command and, which results in a setup that is ready for production use.

We've kept the stack to a single recommended setup to ease our maintenance and documentation overhead. We want to spend as much of our time as possible building publishing tools, and as little time as possible on debugging, testing and documenting various environments.

What if I want to use something different?

The are two main differences between using our recommended stack and something else. The first is that to use other technologies, you'll need to do some work yourself. The second is that if you find issues with the recommended stack you can expect us to address them with the tools we provide. If you find issues with alternative technologies you will likely need to resolve the problem yourself.

Ghost-CLI, our tool for installing Ghost, is still very new but has been built with the idea of extensibility in mind. In future we're hoping to make it relatively straightforward for the community to build extensions for alternatives, e.g. apache. These will not be officially supported, but the hooks for creating extensions will be.

In the meantime, it is possible to skip each stage of the automatic configuration, and provide your own configuration instead. Therefore, even if you're using a slightly different stack, Ghost CLI will make your life easier than it was prior to Ghost 1.0.

Choose a hosting provider

These providers offer SSH (terminal) access and will allow you to install Ghost's requirements. There are plenty around and they can be very cheap.


Auto-installers such as Softaculous are not supported. They generally set Ghost up incorrectly and make it impossible to upgrade later. We don't recommend using them.

Ghost will not run on shared/cPanel hosting designed for PHP applications.

We recommend DigitalOcean because as well as providing a very simple way to provision a VPS on which Ghost can be installed, their documentation and community are an endless resource of useful information.

Pretty much any other VPS provider offer servers that are suitable for installing Ghost.

Adding swap memory

If your system has less than 1GB memory, you may run into errors. To overcome this, configure a larger amount of swap memory:

dd if=/dev/zero of=/var/swap bs=1k count=1024k
mkswap /var/swap
swapon /var/swap
echo '/var/swap swap swap defaults 0 0' >> /etc/fstab

If the last command fails with "Permission denied" (e.g. on a fresh Amazon EC2 instance), try this instead:

echo '/var/swap swap swap defaults 0 0' | sudo tee -a /etc/fstab


A guide to self hosting