Continuing on my homelab series, I wanted to write about the compute server build I did to take the pressure off my poor QNAP NAS, which was shouldering 100% of the compute across all of my scenarios. I'll cover the services and how I am managing them in detail in another post, but there is a list of them below. Here I will focus on the compute server's specs and build.
Services
The first set of services are interactive things I use on a daily basis in my digital life:
- Home Assistant
- Immich + Postgres + Redis
- OpenClaw
- LocalAI
- AdGuard Home
- Caddy
- Frigate
- Plex
- Borgmatic
The second set of services help me monitor my infrastructure:
- Prometheus
- Grafana
- Loki
- Alloy
- Portainer
- Apprise
- Homepage
The third set of services are about self-hosted coding infrastructure to increase my agentic coding entirely locally:
- Forgejo
- Dolt
- 1Password Connect
There are some other minor services, but this is the bulk of it. Frigate by far takes up the most CPU, essentialy a full core of the Celeron in the QNAP. After frigate and home assistant running on the QNAP, there were no resources left for everything else. Additionally, running overnight backups would essentially saturate the QNAP and starve user-interactive tasks in Home Assistant.
Target
My target was to have a 1U or 2U server that could service all the services I had in mind, keeping Frigate on the QNAP so that camera recording would stay close to storage. I also wanted this server to be able to handle home-scale AI inference: small speech-to-text and text-to-speech models, as well as the ability to play around with offline coding models.
For CPU, I wanted headroom for later expansion, especially as agents start to do more for me. I also wanted a reasonable amount of memory with room to spare, but memory is of course insanely expensive right now. Home Assistant sits on about 1GB of memory, and Immich spikes up to several GBs when running transcoding tasks on long videos. The other services are not super lean, either, so having a board that could at least expand to larger amounts of memory in the future. The GPU had to be serviceable for small models. This meant a full height/full length card. Storage wasn't very important, but I wanted something fast and reliable for steady workloads like Loki and Prometheus constantly writing to disk. Cooling was a very important consideration for me because the server is mounted in my rack cabinet in my basement, which has reasonable air flow, but I can't allow it to sound like a datacenter. Finally, power: I didn't want to be burning money every month on steady power consumption, so I wanted something that could sit idle at less than 100W.
Build
After many months of searching for a 1U form factor that could accommodate a full height/full length prior-generation graphics card along with all my other requirements, I gave up and went to 2U. I finally found the Sliger CX2151a which can fit a MicroATX board and could accommodate the full size GPU.
I wanted a CPU that would not burn too much power while sitting largely idle, which I expect this server to do for the most part, and not require too much power when running at full blast while keeping workload latency reasonable. I found the Core i5-14500 to be a good balance.
For cooling, the sliger case can accommodate 4x 80mm case fans, so I decided to go with Noctua NF-A8 fans. It was difficult finding a CPU cooling solution that would fit in the case and for sure provide good cooling under load. I've taken a gamble on the Dynatron Q7 which has so far worked out. Finally, even the M.2 SSD gets a heatsink since it's going to be under constant load as well. I got a be quiet! MC1.
Finally, the GPU. Again, I was looking for a solution that wouldn't break the bank and wasn't a power hungry beast, especially when idle. It was also a tight fit and so I had to be sure that the card did not extend beyond full height. The RTX A4500 felt like a reasonable balance between cost and performance.
The full build list is:
- Sliger CX2151a ($287)
- ASRock W680D4U-2L2T/G5 ($642)
- Intel Core i5-14500 ($481)
- Crucial 64GB (32GB x 2) DDR5-5600 ($630)
- Samsung 990 Pro 2TB ($300)
- Dynatron Q7 ($56)
- Noctua NF-A8 (x4) ($106)
- Corsair SF750 ($160)
- NVIDIA RTX A4500 ($1125)
- be quiet! MC1 Pro ($20)
Total: $3,807