Updating to Ghost 5 and what I learned along the way

It's been a while since I had a look under the hood of this blog. Since Ghost released version 5 I figured it's a good time to update.

Updating to Ghost 5 and what I learned along the way
Photo by Markus Winkler / Unsplash

Having previously used  WordPress and eleventy, I didn't know Ghost that well 🙂. I had to tinker around for 2 caffeinated nights and managed to do the following.

  • Took a snapshot of the database and filesystem to my local machine
  • Setup a new server on Digital Ocean (DO) to host the new instance
  • Copied the files up to the DO server and imported the database
  • I tried switching over the IP using Cloudflare but it didn't seem to work as expected
  • Copied over the DNS entries to DO and switched the name servers there
  • Switching over to the new server worked and I managed to generate a new SSL certificate
  • Had a play around with the ghost command line tool and got things working
  • Switched to the new Headline theme

Linode is super locked down but annoying to work with. I picked Linode since it had denial of service protections. That also meant I had to ask support to open basic ports like 25 for SMTP.  It was simple enough when I asked them, but I struggled a lot in the beginning to configure Mailgun because of this. They should really mentioned these things more obvious and make the request process simpler than contacting support.

I would still recommend Linode if you need the DDos protection.

Digital Ocean is a super nice hosting company. I've been using them for years and they keep improving. Why I point my domains to DO is because they have a very nice DNS management panel plus I can get API access if I need it. Most domain registrars don't provide API access to their DNS management.

dnsimple is the only API first domain registrar I've seen but I'm not that the scale to need it yet.

Digital Ocean does provide a Ghost template server but I didn't use that. I have my own Ansible template that I use to make any Linux server Ghost compatible.

Cloudflare has been great for DDos prevention, caching and analytics. I did notice the images loading slower without it, but I can find another CDN or optimise the images another way. Since I'm using Plausible Analytics I don't need the Cloudflare analytics so I'm not missing much.

The main reason I've dropped Cloudflare is to minimise complexity. I will probably keep my DNS settings in-sync on there in case someone decides to take me down. 🤞🏼

The Ghost CLI is super useful. It has a doctor mode that checked and let me know exactly what was missing in my setup after copying the files and database server. Basically I was missing the SSL certificate. I just needed to run ghost setup ssl on the new server.

With Ghost CLI you can create a certificate even without installing the Let's Encrypt bot. So that was super useful.

If you are having nightmares keeping your WordPress site up to date without getting hacked, I would recommend Ghost. It's simpler. It doesn't have the WordPress eco system so your mileage may vary.

For my requirements it works great. I just want a low maintenance way to get the word out. Ghost enables me to monetise my words without ads and build an audience with newsletters to boot.

Subscribe to Dils Blog

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.