Owen Hollingsworth

All projects

Mini-lab

My home lab: a 12U, 10-inch rack holding UniFi networking, a Mac mini server, 3U of Pearity storage and a UPS, with most of the shelves printed to my own designs. Its day job is Plex, streaming my movie and TV library to every screen in the house.

Rack
GeeekPi 12U 10-inch cabinet
Router
UniFi Cloud Gateway Max
Switch
UniFi Lite 8 PoE
Server
Mac mini
Storage
Pearity, 7 drives
Remote access
Tailscale, plus a GL.iNet Comet Pro KVM
Power
UPS, 3U
Skills
UniFi networking, PoE, Tailscale, macOS server administration, RAID storage, self-hosted services, monitoring (Uptime Kuma, SMART, leak and temperature sensors), ESP32, SMB file sharing, Home Assistant, hardware repair, power protection (UPS), CAD and rack design

The goal

My media server started in college as a USB drive plugged into my laptop. When I broke my MacBook's screen, I took the whole display off, swapped the DVD drive for that hard drive, installed Plex and ran it headless as a server for years.

As the library grew, a second USB drive joined in. But USB isn't a reliable connection for a server's storage, so I went looking for something cleaner. I'd owned Mac Pros and loved the design, but they're huge. I wanted a server and storage that could sit quietly under my desk, draw little power and not take over the room. Cost mattered, but looks mattered just as much: I don't care how cheap something is, if it's ugly I don't want it.

How it works

The rack, top to bottom

  • 1U: UniFi Cloud Gateway Max router, on a printed shelf
  • 1U: UniFi Lite 8 PoE switch, on a printed shelf
  • 1U: printed 16-port patch panel
  • 1U: a shelf I designed for a Raspberry Pi and a GL.iNet Comet Pro KVM
  • 2U: two Mac mini shelves I designed, with fronts styled after the cheese-grater Mac Pro. The top one is a spare.
  • 3U: Pearity, my 8-bay drive enclosure
  • 3U: UPS
A black 12U 10-inch rack cabinet on a wood floor, filled top to bottom with networking gear, two cheese-grater panels, an eight-bay drive enclosure and blank panels.
The whole rack, front on.
The same rack seen from a front corner, showing its enclosed black side panel.
From the side, the enclosed GeeekPi cabinet.

Around the back are a printed 8-port patch panel and a power strip with outlets facing both into and out of the rack, plus USB-A and USB-C ports on the outside. It's made to flush-mount in a desk, but printed ears let it sit almost flush with the back of the rack instead.

Also on the back, attached to one of the rear rack posts, is an environment monitor I designed: an ESP32-C3 Super Mini with an AHT10 temperature and humidity sensor and a rain sensor board, in a printed enclosure powered over USB-C. It reports to Home Assistant, which notifies me if it detects a leak or high temperatures. The design is free on MakerWorld.

The back of the rack: a carbon-look printed patch panel with blue keystone jacks above a black power strip with outlets and USB ports, held to the rack post by a gray printed ear.
Around the back: the printed 8-port patch panel, and the power strip on its printed ears.
A small black printed box with vent slots and a USB-C cable, mounted on a rack post below the power strip.
The rack monitor, in its printed case on a rack post.

Network

The Lite 8 PoE switch powers two UniFi access points and a UniFi doorbell, and its last PoE port runs the Raspberry Pi. For now, everything shares one flat network.

For remote access, every device is on Tailscale, so I can reach the lab from anywhere without opening a single port to the internet. The friends and family who stream Plex from two other locations connect through Tailscale too. When I need the Mac mini's actual screen, the Comet Pro KVM gives me full keyboard, video and mouse control through GL.iNet's app, from my laptop or iPad, anywhere in the world.

What it runs

  • Plex, the one I use every day, streams my movie and TV library to every screen in the house. Emby runs alongside it.
  • Radarr, Sonarr and Lidarr keep the movie, TV and music libraries organized and up to date, with Prowlarr managing their sources and qBittorrent handling downloads.
  • Immich backs up and organizes my photos, a self-hosted stand-in for Google Photos or iCloud Photos.
  • calibre manages my e-book library.
  • RomM organizes my retro game collection.
  • FileBrowser Quantum lets me browse and manage the server's files from any web browser.
  • Homebridge brings devices that don't support Apple Home into it.
  • The Raspberry Pi runs Home Assistant. Before that, it was a Pi-hole.
  • Uptime Kuma watches the lab's services, with its dashboard built into Home Assistant.

Storage

Seven drives sit in a Pearity enclosure: two in a RAID 1 mirror and five for backups and bulk storage. The Mac mini shares them over SMB, so any computer on the network can open them like a local folder. Every drive gets recurring SMART health checks, and the results show up on my Home Assistant dashboard, so a failing drive gets noticed before it dies. I'm moving the array to 20 TB drives, buying them as good prices come up. All told, the array has about 50 TB of usable space, with about 31.6 TB still free.

Key decisions

  • A Mac mini instead of a NAS. I'm already deep in the Apple ecosystem, and my i7 Mac mini with 32 GB of RAM cost $200. That's less than most NAS boxes and about what a comparable thin client goes for.
  • UniFi, tested at home first. I bought the Cloud Gateway Max to trial UniFi's ecosystem in my own rack before rolling it out at work. The switch came from work too (see Problems and fixes).
  • An enclosed cabinet. I chose the enclosed GeeekPi cabinet over an open frame to keep everything neat and the cables out of sight.
  • Apple design cues throughout. Pearity's front borrows from Apple's Xserve RAID, so when I designed the Mac mini shelves afterward, I gave them the front of the cheese-grater Mac Pro to match. The whole rack looks like it came from the same family.

Problems and fixes

  • A switch someone else gave up on. After lightning struck the building it was in, the UniFi Lite 8 PoE had dead ports, and the previous MSP at work wrote it off as a loss. I got every port working again, PoE included, and it's been running in my rack ever since.
  • Power blips broke services. About once a month, the power would cut out for a few seconds. When the Mac mini booted back up, some services didn't always load correctly. A UPS fixed that in January, and the lab hasn't gone down from a power loss since.
  • A server that kept crashing. The lab's first server was a 2012 Mac mini, and it kept hitting kernel panics. Swapping macOS for Ubuntu didn't fix it either, so I retired it and moved everything to the current Mac mini. Its shelf is now the spare.

Results

  • The library: 1,611 movies, 151 series with about 9,300 episodes, and over 100 books.
  • Who uses it: 7 people across 3 locations.
  • Uptime: since the UPS went in, its only crash was in early August, after six straight months without an issue.

What's next

  • Split the network into VLANs. Everything shares one network today. Next, the doorbell, access points and Home Assistant devices go on their own segments, with firewall rules that keep them away from the server.
  • Local AI on a Mac Studio. I want to run models like Qwen3.8-27B locally. Intel Macs are losing support from Apple, so the Mac Studio could take over server duties too, and the Mac mini would get a second life on Linux.
  • More 20 TB drives. I'm filling Pearity's empty bays as deals come up, with no rush. Once there are enough drives, I'll change the RAID layout to match.
  • A smarter home. I keep adding devices to Home Assistant, and setting up routines and automations is next.
  • Uptime alerts. The August crash happened while I was out of town, and I never found the cause. Uptime Kuma is now running, with its dashboard in Home Assistant. Next is setting up notifications, so the next outage reaches my phone as it happens and leaves a trail to troubleshoot from.
  • Off-site backups. RAID 1 protects against a dead drive, not a fire or a theft. I'm setting up remote backups of the important data, starting with my photos, so a copy lives outside the house.

Links