My blog now runs on a Raspberry Pi at home

I discovered that my new house had OFNL internet, which is one of a handful competing fibre providers in England (others: BT OpenReach, VirginMedia, Hyperoptic, etc). Some of the infra providers are also the sole ISP, like VirginMedia and Hyperoptic, whereas BT OpenReach and OFNL just provide the infra and then companies can offer consumer ISP services on top of it.

I picked one (Merula) who, like a few others, provide a gigabit connection, and for about £3 per month, a static IPv4 address.

Some ISPs in the world–even in rich countries–put people behind a CGNAT, as a way to get more mileage out of the few IPv4 addresses they have. This means that you can’t listen on a port and have someone directly connect to you, because the NAT wouldn’t know who to pick. A very sad state of affairs. I’ve also heard about a German ISP that provides IPv6-only and then handles all IPv4 connections via a proxy!

In that context, it’s a pretty fortunate situation to be able to get a static IP at my home address. As a programmer it’s more joyful to have this.

I grabbed a Raspberry Pi 5 (highly overpowered for a blog), connected it to my router via gigabit Ethernet, and got it running with a simple SD card for the root file-system. All logs (journald) are moved to tmpfs (‘volatile’ storage mode). The blog itself is sync’d via a webhook from GitHub, and is stored in tmpfs, too. Like this, it should run for a couple years without the SD card wearing out.

The server is Caddy and the webhook service is webhook, both come as systemd services, so the effort was very minimal.

There’s no particular technical advantage of you reading this page from my home, over the Digital Ocean server I’ve had for years, which only cost me about $10/mo. But it was a fun little project!