Self-hosting a Ghost blog

A summary of how to set up the digital blog system Ghost on Digital Ocean and maximize it using Cloudflare.

Self-hosting a Ghost blog
Ghost like shapes.

I have done some exploring on static sites. I was looking for an optimal set-up to post articles and create pages. Here is a summary of how I arrived at the technology set up for this site: Ghost, Digital Ocean and Cloudflare.

Ghost on Digital Ocean and fronted by Cloudflare
Ghost on Digital Ocean and fronted by Cloudflare

Using Ghost

This blog is set up and managed with Ghost. This is an open source publishing technology, and it is a joy to use. The management interface is clear, speedy and stable. Setting it up and finding a template was really easy, and you can connect the template with GitHub. So if you make changes to the layout, you can easily stage it on your own computer and keep track of the changes.

Laying out a blog post or page is easy. The features to use images, video, links, tweets etc. I found of very high quality. You sense that a lot of attention have gone into them without showing off.

Ghost has a CMS built into it and is very much optimized for Search Engines. It has all the proper fields for managing an optimal display on social media like Facebook and Twitter.

My blog (back then)
My blog (back then)

Hosting Ghost on Digital Ocean

I started with the hosted trial service and that was a great way to get to learn how it works. For the purpose I use Ghost for, I found it too expensive, and so I went for hosting it myself.

I explored Digital Ocean for this purpose. That service was new for me, but once I was familiar with the concept, it took me less time than expected. I created a so-called Droplet (virtual server with networking) and then installed and configured Ghost. I was impatient and did not wait for the domain to point to the proper address, and that caused a bit of extra work. But once that was corrected, I was able to request SSL and set up the working site.

Moving over the content from the trial version was a bit of a puzzle. The texts can be migrated easily, the assets like images are much harder to do. So once you have invested time and effort in the hosted version it will not be easy to move everything over, so you need to make the decision on hosting as early as possible.

Droplet
Droplet

Costs for hosting Ghost

On Digital Ocean you basically get two months for free and then there is a variable pricing model. At the time of writing I am not sure how much the hosting will cost but will add it once I see the costs.

Cloudflare CDN

To increase loading speed even further, I fronted Ghost and Digital Ocean with the CDN from Cloudflare. This offers distribution over multiple locations in the world, but also minification of files (compression of texts) and the option to use HTTP-3. Next to this, it gives you insight on how well the site is performing in loading the pages. Cloudflare reports on the key values defined by Google called the Core Web Vitals.

Speed on Cloudflare
Speed on Cloudflare

Using Ghost

To produce articles, I use Ulysses for writing in Markdown. The pages are rendered by a GitHub hosted template designed and coded by Eduardo Gómez. The template is called Liebling. Both the workflow and the code quality of the pages are amazing.

🛠️
Update: I have switched to the hosted version of Ghost and wrote an article about this option: Publish your blog with Ghost

Read more about content and blogging, stay tuned and subscribe for free.