How to choose and setup A VPS with Docker and Docker Compose for a Ghost Blog

Work out how to select a relatively inexpensive VPS to host your own blog like mine by learning how to install and leverage Docker and Docker Compose

· 3 min read
How to choose and setup A VPS with Docker and Docker Compose for a Ghost Blog


With relatively little spend ~6$ USD a month (The price of about two coffees a month) you can build your own Ghost blog like my own that can serve tens of thousands of people a month without breaking a sweat using Docker, Docker-compose and a few tricks I've found out along the way.

Previous part in the how-to series: How to setup and run your blog like mine with Ghost, Nginx, LetsEncrypt using Docker & Docker Compose
Next Part in the how-to series: How to setup NGINX reverse proxy with automatic Lets Encrypt SSL Certificate Generation on Docker for a Ghost blog

Decide on a VPS Provider

In order to install Docker, we first need a VPS or Virtual Private Server, i'm going to go with Vultr (Affiliate - Get $100 credit for 30 days) as they have some high quality ones here in Australia and across the globe.

Essentially you're looking for a VPS with specs above this:

  • Fast, Single CPU
  • >1 GB Ram
  • SSD/NVME SSD Storage device with 20GB or more of space.
  • Latest Linux kernel that'll support Docker such as Ubuntu 18.04.

Deploy a VPS

As we're going to deploy Cloudflare over the top of the NGINX server to serve our blog requests to the end user, the location of your server (the origin) is less of an issue nowadays. I would however deploy your server wherever you believe your audience for your blog will sit. For me this is in Australia.

Under the product Section of Vultr, click the Plus button and deploy a new server.

On the Vultr product dashboard Deploy a New Server

For my alexgallacher blog i'm going to use a High Frequency Instance, based out of Sydney, using Ubuntu 18.04 x64 which comes out to $6 USD a month - Just over the price of two coffee's a month (at least here in Australia).

Setting up SSH keys to connect to your VPS is not covered in my guide but can be found in this link on Vultr's website: here

Connect to the VPS and Install Docker for a subuser

Unfortunately the Docker installation package that's typically available in the official Ubuntu repository is likely not to be the latest version. To ensure we use the latest version for Ubuntu 18.04 lets grab it from the official Docker Repo..

Lets update our Ubuntu Packages:

sudo apt update

Next, Install a few pre-requisite packages which let APT use packages over HTTPS:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

Add the GPG key for the Docker repository:

curl -fsSL | sudo apt-key add -

Add docker repository to the apt sources:

sudo add-apt-repository "deb [arch=amd64] bionic stable"

Lets now update the package database with the new added Docker Package:

sudo apt update

Install Docker's community edition from the new repository we added:

sudo apt install docker-ce

Confirm that Docker is running

sudo systemctl status docker

If Docker is running lets create a subuser that's allowed to use Docker via the docker group (Replace akg with whatever username you want to create) You will need to fill out a new password for this user. I typically enter blank info for the users full name, room number, work phone, home phone and other and type Y once complete.

adduser akg
Terminal output via SSH for Creating a new user
Fill out all the details and select Y to create the user

Next, lets add that user to the docker group to allow it to run Docker commands.

sudo usermod -aG docker akg

Install Docker-Compose

Run apt-get to get docker-compose. The tool is used to define and create multiple docker applications through the use of YAML. The neat bit about this is we can create, spin up and delete apps on the fly.

apt-get install docker-compose

Confirm docker compose is installed by running the following command

docker-compose --version

Disclosure: I am in affiliation with companies on this page as i use their products and support them)