26 May 2026

Hosting this site

A long bank holiday weekend means I finally found the time to do a key task on my migrate-away-from-GitHub-list, host this website somewhere else! As long as GitHub has had their GitHub Pages offer I've been a user of it, not that I blog a lot but being able to rapidly spin up and deploy static sites has been immensely useful. However, with the gradual decay of GitHub as a decent product12 and an increasing personal interest in running things myself and using more UK/EU infrastructure means I've been moving repositories to Codeberg and reconsidering how I'd host pet projects.

This site has always been relatively straightforward, it's a static site generated using the Pelican static site generator that was hosted via GitHub Pages. I'd deploy it via GitHub Actions which would rebuild the site and upload new files to the GitHub Pages site. I own my domain via Namecheap (a US company) and manage all DNS records via DigitalOcean (another US company, everything is a work in progress...) which meant I could have it configured via GitHub to use my own domain.

I had a little think about how I'd do this without GitHub and decided to go down the route of leasing a virtual private server (VPS) and doing things slightly old school. I'd have a VPS, I'd install a web server and serve the static content via that. No more CI, just revert to an old-fashioned rsync after rebuilding the site locally. I could update the DNS records to point at the IP of the VPS and ta-da the website lives!

It feels reasonably straightforward when it's written down like that as someone who considers themselves technically competent but it was a journey nonetheless. Starting out I needed to decide which VPS provider I wanted to go with, I did not do extensive market research but essentially wanted to have something cheap, running in a UK data centre. There are a few options for this but I went for IONOS primarily based on price. I picked a VPS S+ which is 2 vCore CPU, 2 GB RAM, 80 GB NVMe SSD for 1 year at about £2.25/month, it's running in their UK data centre with Ubuntu 24.04 for the OS so reasonable I thought.

Once I get the proverbial keys to the manor I log in and immediate make a few changes: - Disable root and create a new user - Configure access to use SSH key pairs only - Enable the firewall These are my conventional steps when rolling a new server to try and tighten up security.

Next I installed Caddy which is the web server this site is bringing this content to you via! I picked Caddy because it handles TLS for you automatically and provides for a slightly less gnomic configuration file than NGINX (a statement that may not stand the test of time). I installed Caddy on Ubuntu as they recommend which means I get it running via systemd out the box and just need to edit the config file and upload my site to get things working.

I'd be lying if I said it didn't take me a bit of fiddling to sort out serving the site. I needed to set the right permissions on files and folders on the server so that Caddy could read them, whilst I billed it as slightly less gnomic the Caddyfile set up wasn't quite as idiot-proof as I envisaged. In the meantime I'd switched over my DNS records which did mean that configuring TLS certificates and enforcing HTTPS was straightforward thanks to Caddy. Part of my problem here was largely of my own making and overcomplicated the config to begin with. Eventually, I stripped things back to basics and gradually added in extra config, starting from something that was simple and working is a lot easier than troubleshooting something that is complex but not working. And thus by the end of the bank holiday the site was up and working, looking exactly as it did before but with less GitHub under the hood.


  1. https://github.blog/news-insights/company-news/github-availability-report-march-2026/ 

  2. https://github.blog/news-insights/company-news/an-update-on-github-availability/