I’ve been looking for alternative WordPress blogging options for a while and the one that keeps on coming up is Ghost. Now, Ghost has been around for a long time, in fact is was founded in 2013 after a Kickstarter campaign to create a new platform focused on professional publishing. Fast forward to to today and Ghost powers a range of websites from individual bloggers to large teams of writers and editors at some of the largest organisations in the world. Ghost has looked to build momentum around a free core application that is funded by a premium hosted platform as a service to run it on. Ghost also has strong integrations with other platforms and have a number of different install opinions across a number of platforms.

Ghost is an open source, professional publishing platform built on a modern Node.js technology stack

As is still the way for me, I like to have end to end control of my web sites meaning self hosting and management. I’m not against running a VM instance in a public cloud these days with my current platform of choice being Amazon LightsailGhost has a number of install options, but my desire was to install and configure Ghost the “old fashioned” way. That said there is a still a brilliant cli from Ghost that does almost all the work for you.

That said, I have an idea for a series based on using Ghost as an example application for a Kubernetes deployment that I will work on over the next week or so, but for the moment… .

Installation on Ubuntu on Amazon Lightsail

For my first test using Ghost I decided to install it from the Amazon Lightsail image, but found that a little limited in terms of me being able to get an appreciation for how Ghost ticked. From there, I deployed a fresh Ubuntu 20.04 image on Lightsail and got to work installing Ghost from scratch.


Officially recommended stack:

  • Ubuntu 16.04, Ubuntu 18.04 or Ubuntu 20.04
  • NGINX (minimum of 1.9.5 for SSL)
  • A supported version of Node.js
  • MySQL 5.7 or 8.0
  • Systemd
  • A server with at least 1GB memory
  • A registered domain name

Once the pre-requisites are installed, Host has a Ghost-CLI that is used as a command-line tool to help get Ghost installed and configured for use, quickly and easily. The npm module can be installed with sudo npm install ghost-cli -g

Once installed, ghost can be called to run a set of available commands.

Install Ghost

Before getting started I did configure up a working DNS record for the domain, pointing to the Amazon Lightsail Public IP address. As part of the install below, I opted to configure a Let’s Encrypt SSL cert as part of the process so the DNS record need to be done in advance so that the SSL can be configured during setup.

All the fine grained controls options for the CLI can be found here:  Flags and Options

Full End to end Video Walkthrough with Raw Commands