Projects / active

The homelab

A NAS, a Proxmox host with a GPU split between VMs, and two networks tying it all together.

  • Proxmox
  • Unraid
  • Intel Arc Pro B50
  • Ansible
  • k3s

The homelab is where I try things before I’d ever try them at work, and where I break things so they don’t break at work. It’s also where most of the stuff on this blog comes from.

The machines

Most things have Norse-ish names. Once you start doing that you can’t really stop.

  • Magnus is the NAS. It runs Unraid, holds the storage array and SMB shares, and hosts my Gitea server, which is local only: it’s private to the homelab network and people on my VPN.
  • fenrir is the Proxmox host, and most of the lab is actually VMs on it:
    • freyja, a Fedora Server VM, is the main Docker host. Reverse proxy, Jellyfin, Kavita, the AirPrint bridge, a Gitea runner, and monitoring all live here.
    • astrid is my NixOS VM. I wrote about it in Why my servers run NixOS.
    • mimir is a Fedora 44 VM I use as a remote dev box.
    • A shelf of VM templates for the distros I use, so a new VM is a clone instead of an install.

fenrir also has an Intel Arc Pro B50 in it, a small low power Intel workstation card, and it’s my favorite part of the whole lab. Instead of passing the whole GPU to one VM, the host keeps the card and splits it with SR-IOV into two virtual GPUs, and each of those is passed through to a VM like it’s its own card. Right now freyja has the first one and uses it for Jellyfin transcoding. astrid is set up for the same slot, so whichever of the two is running gets it. The second one goes to a different VM. The full setup is in Splitting an Arc Pro B50 between VMs on Proxmox.

Magnus from the front: a Jonsbo N5 with four hard drives in the hot swap bays

Magnus, the NAS. Getting those drives connected took three tries, which is its own post: Three tries at plugging in hard drives.

On top of that there’s a small VPS for anything that needs to be on the public internet without exposing my house, like a Minecraft server for friends.

The network

Everything sits on two separate networks: one for servers, and one for my workstation and the k3s nodes.

And it’s all 10 gig. Every machine in the homelab and every workstation has a 10GbE card, so moving big files around the house is actually fast. Magnus and fenrir sit right next to each other, so they also get their own dedicated 10GbE DAC cable, a direct link between just the two of them.

A dual-port SFP+ network card on a desk with its two brackets

A dual-port 10GbE SFP+ card. Every machine in the lab has a 10GbE card.

Homelab network The homelab is split into a server network and a workstation network. The server network holds Magnus, the NAS, and fenrir, a Proxmox host with an Intel Arc Pro B50 split in two, running the freyja, astrid and mimir VMs. The workstation network holds jormungandr and the k3s cluster. The internet reaches freyja through the reverse proxy, and a VPS sits outside the lab. INTERNET VPS PUBLIC GAME SERVER // HOMELAB SERVER NETWORK / 10GBE WORKSTATION NETWORK / 10GBE Magnus UNRAID · NAS Storage · SMB · private Gitea · backups fenrir PROXMOX · ARC PRO B50, SPLIT IN TWO freyja FEDORA SERVER VM · B50 SLICE 1 Docker · NPM · Jellyfin · Kavita astrid NIXOS VM · SHARES SLICE 1 Jellyfin · Gitea runner · one flake mimir FEDORA 44 VM · DEV BOX 10GBE DAC SMB REVERSE PROXY jormungandr FEDORA 44 · HYPRLAND Daily driver workstation Three monitors · RX 9070 XT k3s cluster KUBERNETES · ANSIBLE PROVISIONED Traefik ingress Prometheus, scraping exporters on freyja and Magnus
Two networks, one lab. Servers on one side, my desk and the cluster on the other.

What I’ve learned

The hardest part of a homelab isn’t any one service. It’s keeping what’s running and what’s written down the same. Every time I fix something live and don’t write it down, future me pays for it. So a lot of the work here has slowly moved toward automation deploying things for me, so nothing drifts because nothing else is allowed to change the servers.