HomeMathContactBlogGitHub

Homelabbing Adventures

2026-03-13

Recently I started homelabbing and set up my own homeserver to self-host some internet services.

Inspiration

Self-hosting has generally appealed to me for a while. I've always had a pull towards true ownership and FOSS, but hadn't ever really fleshed out or implemented anything in that direction for my own life. Then, on an offhand trip to Microcenter, my brother decided to buy an old cheap ThinkCentre to do his own self-hosting. He ended up hosting a bunch of things: Private Messaging with Matrix, Media Streaming with JellyFin, and more. Given an opportunity to join the bandwagon, I ended up getting a Raspberry Pi Zero to save money and test some things out.

Pi Trial

I obviously couldn't do anything too heavy-duty with the Pi Zero. I set up Pi-Hole, a Discord bot, as well as a git repo that I could access from inside my home network to store notes. This was a fun experiment, but I had some issues with the Pi Zero randomly turning off. My hunch is still that it was some problem with power fluctuation. This is why I was excited when I got my hands on a Mac Mini that I had no other use for.

The Real Deal

This Mac Mini had a good CPU, Disk, and 16 Gigabytes of RAM, so I took the opportunity to go a lot deeper.

The first thing I did was set up a custom DNS server. I had to do this because I wanted my homelab to be accessible outside of my network and my public IP changes often so I needed to update the DNS frequently. I opted against a CloudFlare tunnel because I wanted to keep my independence, had privacy doubts, and thought it would be cool to figure out DNS on my own. I didn't use a VPN because I wanted everything to be easily accessible by my friends and family. I host the DNS server on a DigitalOcean VPS for $4/month and it's my only real cost.

Next I installed Certbot and Nginx and hosted this static site that you're reading from now. Previously, I was using GitHub sites to automatically publish this site when I push, so I wanted similar functionality. It wasn't too hard, and the code for the flow is actually in the repo for this site. It just ssh's into my remote server, builds the static site, and replaces the old site data.

The last few things that I did was add some miscellaneous personal services. For example, I added telemetry services with Grafana and Prometheus and added my own cloud file storage with NextCloud. I also host some gaming servers for my friends.

Hiccups

Even though MacOS is Unix, there were some hiccups along the way because I was used to Linux servers. Firstly, MacOS doesn't use anything familiar for service management (e.g. systemd), it uses launchd. This wasn't too crazy of a difference, but it was unexpected. I also got too caught up in using launchd that I didn't think to put everything in Docker containers, so managing services and setting up per-process telemetry was more annoying.