Projects

Homelab

Self-hosting

My self-hosting journey started in January of 2018, when I bought a 2012 Mac Mini as a low-powered server. I installed Ubuntu on it and dove headfirst into Linux.

  • Ubuntu
  • Docker
  • Docker Compose
  • Proxmox
  • Nginx Proxy Manager
  • Cloudflare Tunnel

A bad server and a good teacher

The Mac Mini was a terrible server. Two cores, a spinning disk and no remote management, so every mistake meant walking over to it with a keyboard and a monitor. It taught me the things you only learn by breaking them: permissions, systemd units, SSH keys, how to read a log properly, and how to get back into a machine I had locked myself out of.

Everything on it was something I actually wanted, which is the only reason it stuck. Nobody sets up a media server twice out of discipline.

Containers changed the pace

Before Docker, installing anything meant reading its dependency list and hoping. A bad install left traces on the host that were hard to find and harder to undo, and the only record of how a service had been set up was whatever I remembered doing.

Compose files fixed that. The setup became something I could version, diff and rebuild somewhere else, and rolling back stopped meaning a reinstall. That is the habit that carried furthest. Everything I run now is written down in a repository first and applied second.

What runs now

The Mac Mini is long retired. What replaced it is Proxmox hosts I specced and built, and two Kubernetes clusters, but a good part of what runs on them is still there for the house rather than for work. Jellyfin for media, Paperless for documents, Heimdall as the front door, and Nginx Proxy Manager holding the certificates together.

Running things other people depend on changes how you build. An outage is not a ticket in a queue. It is someone asking why the television has stopped working.

Why it was worth the time

None of this was a plan to build a trading platform. The platform exists because the hardware, the networking and the deployment pipeline were already there, so adding one more service to a system I understood was a small step rather than a project.

It also covers ground that never comes up if you only ever rent compute. DNS and certificates, reverse proxies, backups you have actually restored from, monitoring that tells you something before a person does, and the discipline of keeping the configuration in Git so that a rebuild is boring.

The hardware is still the part I enjoy most.