
I needed to host my CRDT notes app somewhere. Real storage, not just compute, so the usual serverless route was out for me - I didn't want to bolt a separate managed database onto what's fundamentally a small, stateful app, so I went looking for the cheapest VPS I could find. Saw one that was IPv6-only, and thought: "why not".
Well... Mistakes is how you learn.
Tried SSHing into the VPS. No dice. Tried a bunch of stuff and couldn't even ping it.
As it turns out, many ISP providers (mine included, oh joy) don't even bother with IPv6 routing because nobody uses it anyway, right?
Did I just waste my hard earned cash (a crisp $2) on a box I can't even get to?
Not gonna happen.
The initial plan included hosting via a cloudflare tunnel - hence I didn't bother with paying for a dedicated IPv4. This made me look for other ways cloudflare could help.
And help it very much could.
Cloudflare offers a free VPN client called "Cloudflare One", with a little something they call "WARP". That makes it so that I can be on an IPv4 only ISP and get anywhere I damn well like.
Point goes to IPv6.
Next casualty was apt-get, timing out trying to resolve archive.ubuntu.com. I narrowed it down to DNS - the usual suspect. The box couldn't get to resolved IPv4 addresses, as the NIC was IPv6 only... duh.
I popped in an IPv6 DNS server address and bob's your uncle. VPS can now resolve AAAA records for ubuntu, apt-get update succeeds.
Point goes to IPv6, that's 2-0.
Then git pull failed the same way, and this one didn't have an easy answer. Turns out GitHub doesn't publish an AAAA record - no IPv6 address at all, for any of it.
That's a checkmate by IPv4. I was counting points, but it was not that kind of game in the end. The very assumption that "IPv6 is old enough to be just fine" crumbles.
The box was cheap, partially due to the laughable 10GB of storage I got. So I was hesitant to install a bunch of extra stuff on it. But convenience trumps storage.
I rebuilt the VPS, popped the cloudflare warp client on it, and as it let me circumvent my ISP to SSH to the box, it now made it so that I can be on a IPv6 only VPS and get anywhere I damn well like from it, no extra configuration.
I'd also wanted a self-hosted GitHub Actions runner on the same box, but 2GB of RAM had no room for it once the app and OS took their share. Ended up just SSHing in with VS Code's Remote-SSH plugin instead - genuinely pleasant to use, and it solved the actual problem, which was getting code onto the box, not running a pipeline for its own sake.
As with many problems, the one I had was easiest solved by just side-stepping it. Rather than making incompatible routing protocols somehow compatible, tunneling was the correct choice for this.
In the end, I was able to run what I needed with a tiny sprinkle of free Cloudflare offering.
For about 2 months.
As could have been predicted, 2GB of RAM/10GB storage is not enough for a tunnel + docker + app. Just to build the app on the container, I had to sacrifice some storage for swap space, so it barely had enough storage to keep a couple of docker image revisions in the cache, and so after some uptime, the CPU just shoots to 100% and stays there, making the whole box unresponsive, and reboots don't resolve that. Never did figure out what the exact problem there was, as I couldn't even connect at that point.
Cheapest option was fine until it wasn't, and a low entry gets you on the hook for storage/memory expansions, which end up being a bit more expensive than the equivalent baseline box from the competition. And the next VPS I get will probably come with a dedicated IPv4 just by the virtue of not being the "cheapest possible listing out there".
Probably just allowing myself some budget for hobbies is a good idea going forward...
But also, having constraints is still the best way to learn something new.