The End of an Era
Today marks the first time everything I host on the Internet has moved away from a dedicated Linux VPS.
This blog had moved to Cloudflare Pages in 2022, and previously it had been hosted on a dedicated server provided by Kimsufi and, before that, Dedibox.
However, half a dozen sites and applications remained on that server. It ultimately took about four years to complete the transition. 😱
Why Not a VPS?
Renting a dedicated server simply stopped making any economic sense. The underpowered machine that previously hosted this site cost €15 a month; a price point that had long ceased to be competitive.
You can host a collection of static HTML/CSS files at zero or near zero cost on either Cloudflare Pages or AWS Cloudfront/S3.
While SQL databases, PHP, docker images have their use, they always felt like an overkill for a simple blog or the kind of simple sites I was hosting. This blog, for instance, is just a collection of static files generated by the Hugo template generator.
Where Are Things Hosted Now?
It depends:
-
Simple sites like this one are hosted on either Cloudflare Pages or AWS Cloudfront.
-
For public-facing sites, I converted some simple PHP or Ruby scripts to run on Cloudflare Workers/Pages and store their data in a D1 database instead of self-hosting PostgreSQL. My usage is small enough to fit comfortably within the free tier.
-
Finally, I have run a few servers at home for over a decade. Some sites that were previously hosted on the VPS are now are served from home and put behind a Cloudflare Tunnel. A few are additionally gated behind Cloudflare Access. Faster internet connections with Gigabit upload now makes this a viable option, at a fraction of the cost of a VPS.
-
The home sites all run in Docker containers, so moving or migrating them in the future should be easier. This also helps with the security aspect, as you would need to break out of containment to compromise the host.
Why Did It Take So Long?
I made an historical mistake when I set up my first Linux servers. Initially, I set them up with little to no documentation… making migrating and rebuilding them a challenge.
Having learned from my mistakes, everything I host at home now follows the tenets of infrastructure as code religiously. The base system is installed automatically via Ansible, and every web application or site runs on top as low-privilege Docker containers. Installation, deployment, and updates are largely automated, and all changes are tracked in Git, which serves as both documentation and historical record.
In addition, recent advances in AI have made this setup even more useful: agentic LLMs do a reasonable job of maintaining the repository. They can also explain how things work when you invariably forget a decade later.
In fact, with Claude’s help I was able to move the remaining sites that had been hosted on the Kimsufi VPS. For some of these, Claude also assisted with the conversion from Ruby/PHP-FPM/PostgreSQL to Cloudflare Workers and the D1 Database. All in all, four years of procrastinated drudge work and technical debt disappeared over the course of a couple of long evenings.
I may use a VPS again someday if the free or near-free services I rely on disappear, but I will make sure to have a clear exit plan in place.