My personal web projects gone through various stages of web hosting. Starting with a fully hosted CompuServe page to running it on my dad’s ADSL connection. Since then I’ve been moving it back and forth between a little home server underneath my TV to a virtual machine on DigitalOcean. That’s been working well for a while, but recently I’ve been eager to try out a more modern web hosting platform for my personal projects.
As much as I liked the home server, there’s only one of it; it doesn’t have the same ‘disposable’ aspect of cloud servers. If anything happened to it my sites would be down for quite a while until I get around to restoring it from a backup. That started to bother me. I want to set up something that will take care of itself, and stay running no matter what happens.
So, this is the start of a series where I modernize my web hosting and move my personal web projects back to the cloud. I’ll be moving pretty standard stuff: WordPress sites, side-projects written in Go, Ruby and Perl and my photo gallery. I’ve hosted a lot of side-projects over the years, and unfortunately quite a few no longer work because I’ve forgotten to keep them up to date. I’m hoping to revive some of those!
Requirements for Modern Web Hosting
To achieve a modern web hosting setup, I have a few requirements:
- Resilient. It must be able to recover from hardware failure.
- Portable. I want to be able to move it to another provider, or my own hardware, in future.
- Consistent. Everything should be deployed in a similar way. No snowflakes.
- Monitored. I want to see at a glance if everything’s working properly, and be alerted if it’s not.
- Simple. I should be able to come back after months/years and still know how to use it.
- Automated. I want as little manual maintenance as possible.
Given those requirements, I’ve decided to stick with DigitalOcean’s cloud as I’ve been using them for many years and they offer great value. I’ll be using their managed Kubernetes service, Spaces (S3-compatible object storage) and Databases. My previous setup used a single VM (Droplet) which is definitely cheaper and simpler to start with, but Kubernetes offers that extra scalability and resiliency that I want for a ‘modern’ setup. I’ll also be using Cloudflare’s free plans for the DNS, SSL and CDN needs – it’s crazy what you get for free there!
My goal is to move as much of my personal projects as possible, remove any remaining cloud usage that isn’t used in the new setup, and for the new cloud bill to come under $50 USD. So I’ll be making trade-offs between convenience and limiting cost where appropriate. And of course I’ll be documenting the steps here in later posts.