Homelab

I wanted to take some time to talk about my homelab, which still feels like an unusual term to me. I’ve been running Linux on a spare-PC/server since the mid 90’s: first as a PPP dial-up gateway running IP masquerading, then over to a NFS-based homebrew NAS shortly after broadband was available.


I wanted to take some time to talk about my homelab, which still feels like an unusual term to me. I’ve been running Linux on a spare-PC/server since the mid 90’s: first as a PPP dial-up gateway running IP masquerading, then over to a NFS-based homebrew NAS shortly after broadband was available. So to me, I’ve always considered it part of my infrastructure or “my server”, but if that’s the popular phrase these days then who am I to question?

Obviously my homelab has grown quite dramatically, and especially so in the past decade or so. I took more of an interest in Kubernetes as it became the standard container orchestration solution. This naturally included a lot of additional applications to help facilitate the management of everything. Building out a “proper” network architecture became important as everything grew, so I designed a new VLAN segmented network and implemented far too many firewall rules to enforce this. I also got into home automation and dove in to Home Assistant, which has been an absolute joy.

The hardware I used to run all of this also has shifted around quite significantly. Living through east-coast summers in upstairs apartments while running servers taught me a quick lesson on the importance of efficiency and low-power usage. I migrated away from a full-depth 4U rack-mount NAS server to a more efficient and compact Synology. Nowadays, with the exception of my desktop, everything else I run is a single-board computer or mini PC of some sort… seriously, without asset management, I would easily lose track of how many Raspberry Pi’s I have floating around. I could likely consolidate some of these, but I prefer having separation for both duties and any potential security issues if things are crossing networks.

Here’s a list of some of the applications core to my infrastructure I run, with a few details here and there:

  • microk8s: Runs my Kubernetes stack. It was an easy way to get started, but I’ve been debating switching this at some point.
  • ArgoCD: Declarative, GitOps CD solution for Kubernetes
  • Gitea: Self-hosted software development service. Mostly serves as an internal git remote for my litany of repos and a Helm chart registry. I should set up CI pipelines for a few of my projects, but most of them don’t get regular development.
  • Sealed Secrets: Facilitates proper secret management via a Kubernetes controller and one-way encrypted secrets
  • Grafana: Data visualization and monitoring solution. Pretty much the defacto solution for Kubernetes metrics.
  • Prometheus & VictoriaMetrics: Time-series metrics scraping and long-term storage. Scrapes my Kubernetes cluster, but many other things including physical hosts (node-exporter) and Home Assistant.
  • Various exporters: node, blackbox, ping, smokeping, snmp, etc
  • GLPI: Asset management tool. Something I first stood up in a job over a decade ago and decided to revisit it.
  • unifi-controller (via docker): Manages my Ubiquiti access points & switches
  • Zeek & ELK: Network analysis framework. Keeps a close eye on my network traffic, seeing if anything is amiss (are you behaving yourself, my suspicious little IOT device?)
  • Terraform: Use of this is rather light, since I run mostly on bare-metal (isn’t that the point of homelab?). It configures DNS records in my Pi-hole and a few in Route53 for ACME DNS challenges. Primarily used so I have a proper source-of-truth for my DNS configuration.
  • Ansible: A popular IaC tool, I use it to configure all my bare-metal hosts with various OS configs, packages, users, dotfiles and more. I’d eventually like to extend this to configure my desktop as it’s definitely treated as a pet, rather then cattle; however there would be a lot of effort and it’s rare that I rebuild my desktop OS from scratch. I also still need to configure automatic background execution, preferably through a UI interface to view the status; this is yet another item in my backlog 🙂

I also wanted to mention regarding Ansible that it is my third bare-metal infra-as-code tool (not counting Terraform), after Puppet and Salt. The former two were useful, but I was less fond of them. I initially used Puppet back in the early 2010’s, and found execution a bit frustrating at times due to the extreme declarative nature and occasional issues with non-deterministic order of execution. But some of this may have been due to the relatively early nature of the project.

Salt I enjoyed more, and definitely appreciated the Python-based nature of it. I cannot recall specific reasons why I didn’t go forward with this in my homelab, it may have been due to a difficult nature for the initial deployment, or perhaps it was too resource-heavy for my small devices. Either way I’ve used both of these tools each at 2 previous employers, so I figured it would be a good time to check out Ansible since it is rather popular and seemed like a good fit for my needs. So far I’m pretty happy with it.

Now, back to other software tools. Here are some productivity apps, but these change from time-to-time:

Then some other applications related to home automation:

  • Home Assistant: One of my favorite pieces of software, immensely powerful and incredibly useful
  • Frigate: NVR software
  • smartgirder: My custom smart dashboard/display!
  • octoprint: Runs my Prusa mk4
  • iotawatt: Tracks power usage on most circuits in my home
  • mycodo: Automation software for my greenhouse project

This serves me (and my family) quite well overall. It seems like a lot, but it pretty much all fits in a small 12U rack mounted in my basement. I’ve seen some homelabbers with one, if not several, full-height racks completely populated with servers… that seems nice, but at this point in my life, I want something that I will spend my time using rather then fixing. I also can’t imagine the power bills for running all of that!

I’ll probably make a post about Home Assistant and my home automation setup, as there is quite a lot to talk about. Most of these other applications are relatively straight-forward and not worthy of a separate post. However, I do plan on discussing mycodo and my greenhouse project as I’m designing some custom PCBs to help manage and automate everything. Part of me wishes this project isn’t necessary, but since I live in a heavily wooded area in the PNW, I cannot grow much of anything in my yard. My blueberries and strawberries are very sad! 🙁

Leave a Reply

Your email address will not be published. Required fields are marked *