This is my blog now

Server Infra Update

I have been self-hosting for a while but mostly I have used one machine to put everything on. This makes maintenance straightforward as there's not a lot to do to install updates and the like. Recently I started hosting my own VPN mesh as well as my own recursive DNS resolver, coupled with Pi-hole as ad blocker, each of which reside on a separate VPS. Add to that that I migrated my Home Assistant instance to a dedicated device to separate concerns there, the presence of my digital picture frame and suddenly I have to maintain five servers. Oops. Suddenly it's a heck of a lot less convenient to apply OS updates for all of them. A quick overview over what I have at the moment:

Home Assistant

This runs on a Dell Wyse 5040 thin client that does nothing else. Initially I intended to install Home Assistant OS as it's the recommended way to run it but for the life of me, it just wouldn't work. So I went for a Docker install instead, it worked previously, it still works. I'm hoping it'll prove to be reliable because otherwise half of the lights in my apartment won't turn on or off...

I mean, there's always a way to do that manually but it'd be pain.

Hetzner VPS

This is an instance of the smallest VPS with 2 CPUs and 4 GB of RAM. It's still quite capable of running stuff and currently it hosts the following:

Pretty decent mileage out of such a cheap machine, if you ask me.

IONOS VPS

This is a 1 CPU, 1 GB Ram instance that costs me 1 € a month, that was the sole reason for choosing this provider. That and the fact that it's EU-based. This runs Headscale and Headplane and nothing else. Probably for the best, if this breaks, things get pretty annoying.

Mirror

This is a Raspberry 3 that runs MagicMirror and a bunch of plugins. It's slow as hell but it also has to run a complete desktop stack including Chromium. Not great, if you ask me, but MagicMirror depends on it and I've come to depend on MagicMirror so what can you do.

Application Server

This is and always has been the center piece of my private infrastructure. It currently runs:

As you can see, most of the services are concerned with consuming media. Originally, I ran a Nextcloud instance and thought that would be all I'd ever need because it can do so much. As it turns out, that's technically true. Nextcloud can do a lot but nothing of it well, not even file encryption. That's why I migrated all the things I used to use it for to a dedicated services that's actually good. Nowadays, I rent a managed Nextcloud instance at hetzner that is used for backing up stuff and to sync my contacts, nothing more.

Automation

As I said, managing everything manually is getting out of hand by now. So I spent quite some time porting my existing setup to Ansible code. If you're not aware, Ansible is a configuration-as-code tool that can be used to set up and manage a large number of hosts. It's quite comprehensive but also quite complex and it feels like there are 13 ways to accomplish any given task. This means that there's always a better way than what you thought of, or at least that's what it feels like to me.

I wrote a bunch of playbooks to handle the various tasks I usually have to do:

I stuffed all of that into a justfile to avoid having to type the whole Ansible command every time. All of that now lives in my private Forgejo instance so I can access it everywhere, code, configs, secrets (encrypted) and all. That gives me some peace of mind that I could be up and running reasonably quickly again, should things go south.

Conclusion

A lot has happened recently and as I said previously: self-hosting is not a state but a journey. I'm sure there will be a lot happening in the future as well, not because it's necessary but because I enjoy it. Also, I've learned quite a bit, that's a nice bonus effect.

Cheers!

Self-hosting, Linux, Software

⬅ Previous post
The latest in VPN land

Next post ➡
How To: Remove Adobe DRM from ebooks — again