Skip to content
Rebuilding my website

Rebuilding my website

Rebuilding my website
April 17, 2025

As of late October 2024, I decided to take a leap of faith and invest in building a website using Ghost hosted on Digital Ocean.

Prior to this, I was utilizing GitHub Pages as a “basic” option for hosting static content. For the cost of a domain name, you are able to host a website with a large amount of flexibility. That flexibility comes at the cost of either relying upon Jekyll templates or building from scratch.

My impetus for shifting away from my prior implementation was largely driven by a desire for a professional-looking website; however, not having the time to dedicate towards building a boutique solution from scratch. Ghost caught my eye as a viable path forward after seeing several websites from people posting homelab-related content. In addition, the software is freely available for self-hosting locally, which was easy to setup, and allowed me to preview its features before considering cloud hosting options for a production site.

When it comes to hosting a production website, there are numerous options available. Self-hosting a website at home might seem like a viable solution for saving money; however, that idea falls short of considering your ISP’s policies (which often forbid and attempt to block hosting from residential accounts), site reliability considerations, and security implications. Cloud hosting was the obvious next step. Ghost has an official managed service that offers, which might be a viable solution for many users. In my case, I was already familiar with Digital Ocean, which is an official hosting partner. The $200 credit sign-up incentive was a nice cherry on top as well!

The official documentation for setting up Ghost on Digital Ocean is very straightforward and easy to follow. The only exception worth mentioning is the instructions for domain management. Digital Ocean offers a free reserved IPv4 address for VPS droplets, which is definitely worth setting up and adding into an A record. Just be mindful of Digital Ocean’s reserved IP limits. In addition, Digital Ocean offers its own domain name management; however, as I was using Cloudflare, I needed to take a few extra steps to properly setup the domain.

One of Cloudflare’s services is caching web content. The use of their CDN service reduces the impact of web traffic for origin web servers, especially when most of the content is static. The transition from a previous GitHub Pages website meant that previous domain records, cached content, and certificates needed to be purged prior to establishing records and linking the new origin server. In addition, Cloudflare’s origin certificates would need to be added to the web server to enable caching of content. In addition, Cloudflare offers their Zero Trust web gateway service, which is a great option for helping to secure the administration portion of the Ghost application. This is just one of several other security measures that are recommended for anything that’s publicly exposed to the Internet.

When it comes to setting up Ghost itself, I have found that there’s a wide number of options available and I will be undoubtedly making a number of changes over the short-term. There is a robust ecosystem of developers and publishers providing third-party documentation for this application; however, it is robust enough that I have been able to put together a great starting point without the need for manually working with the underlying code. Seeing as how I’m now off to the races, keep an eye out for future posts and articles! Thanks for reading!