Self-Hosted Rambling
I took a few months break this year to work on some fun silly projects and enjoy a bit of non-work life. It also gave me a chance to try a couple of new sports, some of which have stuck and I feel like the Kidsan of 5 years ago wouldn't recognise the Kidsan of today.
One of the things I spent an awful amount of time contemplating was the state of "Big Tech" this year. Every service we use is updating their ToS to as subtly as possible give themselves the OK to use your data in AI contexts (or worse, sell it to their partner so that they can feed it to their AI). I'm also just generally sick of monopolised fields and have been making an effort to diversify my choice of tooling, be it development, communication, or fun. I have been self-hosting stuff for a long time, but this line of thinking made me want to step it up a bit.
NixOS
What I find super satisfying is that my entire homelab configuration is publicly available. Because I use nixos on all
my machines, my nixos-config repository contains everything I run. I used to run a couple of things
on a raspberry pi 4 (hostname monster
in that repository) but as always happens, the SD card recently gave up on me.
And I took the opporrtunity to step things up a little.
Enter Intel N100
These n100 machines have become everyones favourite self-hosting solution because they sip power, but are super capable. Mine is a Beelink s12 of some specification, with 16GB RAM and came with a no-name 256GB nvme drive. I upgraded mine after a few weeks of running it with a better nvme drive (the no-name it came with was awful). Thanks to nixos, migrating to the new drive took about 30 minutes (mostly me being tired) before I had my services up and running again.
Currently, the device is running:
- Forgejo
- Home Assistant
- ZNC
- A Zwave gateway
- SponsorblockTV
- Unbound DNS server
- Adguard Home
- Tailscale
- Caddy
- Tiny Tiny RSS
And its doing all that with absolute ease.
Forgejo
A large part of why I am writing this is because I wanted to talk about Forgejo. Along with my rapidly descending opinion of MS / GitHub I was really motivated to try out alternatives like Gitea and Forgejo. Feature-wise, it has everything I could ever need in a Git solution, and it works so smoothly. A minor annoyance I've had for a while with github is when you manually trigger an actions workflow it either takes a while to show up in the list or you have to refresh the page for it to show. It's a small thing, but I get so happy when I trigger a workflow on Forgejo and the execution appears immediately in the list. Forgejo actions work great, they almost directly match github workflows, and Forgejo will even look for a .github directory in your repository if it doesn't find a .forgejo one. I have set up my n100 device as a workflow runner, but also my much more powerful desktop PC is a runner when its powered on.
For now, I've moved my active repositories to my private forgejo instance and set up GitHub and Codeberg mirrors for them, which works great. I obviously don't need copies of stuff on each git forge so will likely migrate fully to Codeberg only in the near future.
Future
I have a bunch of ideas to take my homelab further. An immediate goal being setting up dynamic DNS with mutual tls and exposing my homelab over the internet. This could mean I can get home assistant notifications when I'm not home (I currently use discord for a lot of that kind of stuff, and discord is the worst).