My Home Network

Like just about everyone else in the world, I have a home network. Being more than a bit of a nerd, I thought I’d write a little about what is on it, some decisions I made, and some decisions I might regret.

First, let’s start with a top-level view.

a network diagram showing 14 devices connected across 4 different   networks

Home network diagram

To start with, the network is largely built on top of Ubiquiti networking gear, including:

  • Switch 8 PoE (150W)
  • Switch Lite 16 PoE
  • 2 x Nano HD access points
  • Dream Machine Pro

The only thing particularly interesting with my setup is that, while I live in a 1,000sq’ house, I need multiple access points. This is for 2 reasons. First, the house is 110 years old and constructed of plaster and lathing, which is hell on 5Ghz signals. Second, because of that construction, there’s no easy way to get network cable (even fiber) from the main floor to my office in the attic. Instead, I use WiFi uplink between the two APs. While this adds a couple milliseconds in latency, I normally get 800Mbps+ between the two floors.

For years, my Internet provider was Wave Communications. Like most cities, Seattle has been divided up between a couple providers, and nobody gets a choice once they buy a house. If I moved 1 block over, I could get Comcast (N.B. I do not want Comcast). Wave provided 250/10 in a reliable way for a non totally unreasonable cost. Then CenturyLink came into my neighborhood with more than 1Mbps DSL. A couple months ago, I got CenturyLink’s symmetrical gigabit service. That has been a breath of fresh air. It’s not that I have more downlink speed, but that I have a lot more uplink speed, which, being a huge nerd, I use.

There is also a dedicated guest network that I share with anyone who needs it.

So, what’s on that network?

Well, my main (personal) laptop is an Apple Macbook Air M1. This replaced one of the Macbook Pro Intel machines, and is mind-bogglingly better. I still occasionally run into architecture issues of ARM v Intel, but that’s largely manageable at this point. My partner has a Macbook Pro, and between us we have 3 iPads of various generations, a couple iPhones, and a couple of Apple Watches.

In addition to that there is:

  • Intel NUC with 16GB and an i5-5250U running a Zeek sensor tapped in using a gigabit tap . Not shown on the diagram because I couldn’t figure out how to make PlantUML do it easily.
  • Kubernetes (microk8s v1.25) cluster composed of 3 Minisforum HX90 each with AMD’s 5900HX CPU, 64GB, 2 TB NVMe SSD, and 2x500GB SATA SSD. That’s 24 cores, 48 threads, 192GB RAM, all to run some stupid things. I wrote about these before.
  • Minisforum GK41 with 8GB RAM and 256GB SSD that services both as my Vault and the Salt Master 1. The Vault instance is unsealed using a combination of Yubikeys and Age encryption .
  • Synology NAS w/4x8GB WD Red HDD. This is shared via NFS, SMB, and iSCSI.
  • Piaware. This is a Raspberry Pi Nano W-based ADS-B receiver provided from FlightAware . Since I’m not far from Boeing Field, and on the flight path into SeaTac, I figured it’d be fun to collect data.
  • Lenovo Thinkpad X1 Yoga Gen 2 with 16GB and 2TB SSD.
  • Okidata MB471 that I have had for eons. I’ve easily had it for a decade, and I have, just recently, replaced the toner cartridge for the first time. You simply can’t beat a mono laser for cheap, durable printing.

I will say there is absolutely no reason to run a Kubernetes cluster at home. Except I do crazy things with mine, and use it to explain some ideas which I can hopefully use at work and elsewhere. Also, it’s just “neat”.

One thing I do have in addition is some amount of IoT devices. Like any sane person, they are stuffed onto another wireless network with lots of filters in place. Currently, that’s mostly made up of:

  • 2 Apple TV (4th generation with the attrocious remote) that we use for streaming. No way in hell am I putting my Samsung TV on the Internet. Ever.
  • A Lutron Caseta system. If you can replace switches, this is an amazing system for lighting control. It’s not as fancy as some, although it integrates with everything you might want, but it’s bulletproof, fast, responsive, and reliable.
  • A collection of Meross plugs that control basic switching functions for a bunch of random things around the house.
  • An eufyCam 2 Pro system for video monitoring. I like this because the batteries last a long time (as long as you’re not feeding video to HomeKit), and they have limited dependency on any cloud offering. I just wish the storage was expandable (which they’ve been promising forever).
  • A collection of Eve Weather sensors in every room of the house.
  • 4 different Raspberry Pi of various generations running random projects.

All the servers run Linux in some form, primarily Ubuntu 22.04 LTS.

In addition to that network, there is an extensive overlay Tailscale tailnet 2 that ties just about everything UNIXy together. That tailnet also includes some cloud-based resources, primarily hosted in Linode , but also a little in Vultr .

Wherever possible, I try to manage everything using infrastructure as code (IaC). This is done with a combination of Terraform and Salt Stack. Both are setup to use Github -based repositories and trigger on changes. The Kubernetes layer is primarily managed through Helm and ArgoCD . I should probably write more about this part at some point.

  1. Holy mother of Zeus people, can we please rename this shit? It’s 2022, and this is not acceptable terminology. ↩︎

  2. I cannot say nearly enough good things about Tailscale. Their product is the closest thing to magic in this world, and it truly is absurdly easy to use. I’ve written about it before↩︎