---
date: 2023-11-29
title: Planning a Homelab Upgrade
tags: 
  - homelab
  - hardware
  - networking
  - unraid
  - proxmox
  - pfsense
---

I am just starting to plan a major overhaul of my homelab and decided where better to start than by documenting the process.
This is about how my setup has reached its current state and why this setup is starting to feel limiting.

## A Brief History
The first home server I used was a Sunfire X4150 that I got for something like $50. Windows Home Server 2011 seemed
like a logical choice of OS (this is where I started; I didn't know what I was doing) so I grabbed a copy from my local Fry's (RIP).

After some adventures in data recovery from a dead drive (read: data loss), I built an [unRaid](https://unraid.net/) box.
One of the main motivations here was that I could add drives over time and increase capacity easily without having to match
drive models or even sizes; this meant I could use all the random drives I had lying around and save some money.

My current server is basically unchanged since then, with a few upgrades, namely a 3900X and some 8TB HDDs shucked out of
WD external drives when they went on sale.

## Taking Inventory
The bulk of my setup lives in a 15U rack that I built into the wall of my office. I also have some other networking equipment,
a tower for work, and a personal machine I built into my desk but those aren't relevant to this project. 
I'll work through my current setup from the top of the rack down.

### Networking
- (2U) 48 port patch panel: This is where networking infrastructure like switches and access points, IP cameras, and other 
  rack equipment terminates
- (1U) 48 port Ubiquiti POE switch: This handles switching for most of the devices terminating at the patch panel
- (1U) 8 port Ubiquiti 10GbE switch: This connects other switches and provides a 10gig connection to my Unraid server
- (2U) pfSense router: This is just an old PC in a 2U case with an Intel Gigabit NIC

### Compute
- (3U) Unraid server: This is where all of my storage and compute is
- (1U) X4150 server: I spin this up manually every month or so to manually back up data from my Unraid server. Its loud and power 
  hungry so I leave it shutdown as much as possible

### Power
- (2U) TrippLite UPS: This provides enough power to run things for about 15 minutes, long enough to safely shutdown and even keep 
  networking up through a brief outage

For anyone keeping score at home, that leaves 3U empty which does factor into my plan.

## Current Shortcomings
Now that I've laid out what I have and how I got there, let's look at some pain points.

### Power Consumption
Much of my setup has been built from surplus or repurposed systems. The pfSense router in particular is overbuilt for the minimal 
compute that routing requires. The backup X4150 server is mostly powered off, but when running for a backup it takes a lot of power 
and turns it into a lot of heat and noise in my office.

### Availability and Maintenance
I have a pfSense VM defined on my Unraid server, so I can at least take the pfSense router down for maintenance without network 
downtime but the same cannot be said about the Unraid server. If the Unraid server is down, Plex, HomeAssistant, NextCloud, this blog, 
and a lot of other things go down. I also have some issues with my pfSense box resuming after a power outage with is particularly 
annoying if I'm not home to turn it back on.

### Compute
My 12-Core 3900X is generally more than enough compute for me now, but it is occasionally limiting and will not support all of the
services I want to deploy. I also need more than 32GB of RAM, but that's an easy upgrade.

## The Plan
There are two main upgrades I want to make to address the current shortcomings.

### pfSense Router Appliance
This one's easy, I just want to get a low-power box to run pfSense since it needs to run 24/7; 
I'll likely pick up a used network appliance on eBay for this.

### Clustered Compute
This still requires a bit more research. I've been becoming more acquanted with Kubernetes as 
[part of my day job](https://github.com/NeonGeckoCom/neon-diana-utils) and am settled on setting up a cluster at home.
I will likely use [Proxmox](https://www.proxmox.com/en/) since it checks the boxes for being open source, having a web UI
for management, and being popular enough to find support online.

I'll use my current pfSense router and Unraid server as nodes, possibly adding another new node with a GPU to play with some LLMs.

### Storage
I am as of yet undecided on what to do here; I need to do some more reading up on GlusterFS, Ceph, iSCSI, 
and probably some technologies I know even less about.

## What Comes Next
This post is already getting a lot longer than I anticipated, so I'll wrap it up here. My next steps are to (1) find an appropriate 
upgrade for my pfSense router and (2) decide on a storage solution.
