Home Project · Build Sheet · Rev 1
A joint project, between Kev and Jack.

AmeriBrit 20U Rack
Media / Game / Cloud

Everything confirmed for the build, keyed to rack position. Prices are from the wishlist; items marked for checking need a look before ordering.

On the list$564
Still needed$168
Build total$733
Game server$389
UPS upgrade$360
Panel VPS$5/mo
Day-one U8 / 20
Parts to print5

Rack & power 9 items

Shared infrastructure — the frame and everything that feeds or connects the machines in it. Per-machine parts live under their own server below.

ItemQtyPrice
VEVOR 20U Open Frame Server Rack23″–40″ adjustable depth, 4-post, casters · B0C64YY7G7
Set post-to-post depth to 24″ before mounting anything.
1125.99
CyberPower CP1500PFCRM2U Planned1500 VA / 1000 W pure sine, AVR, 8 outlets, 2U rackmount, 10.5″ deep · B0B354X985
Pure sine is the right call for the PSU's active PFC. The target unit, not a day-one buy — the APC below carries the load meanwhile, so this price sits outside the build total.
Takes the media and cloud servers — about 475 W, under half its rating, roughly ten minutes. The game server goes on the BR1000MS instead. A 2000 VA version is $449.95 if the NAS is a certainty — see UPS headroom.
1359.95
Second CyberPower CP1500PFCRM2U Later1500 VA / 1000 W pure sine, 2U · $359.95 · conditional, outside every total
Buy it to replace the BR1000MS, not to sit beside it. Two matched 2U units want 4U against the current 2U-plus-a-tower-on-a-shelf, so it gives a rack unit back. One battery SKU, one NUT config, and either unit can take any server.
Not worth it yet — media server runtime is already ~10 min, which is a shutdown window rather than a reserve. Two triggers change that: the NAS landing (pushes the first unit to ~60% and runtime back to 6–7 min), or the BR1000MS battery failing, when you are spending money regardless.
It buys blast radius, not redundancy. Every server here is single-PSU, so a second unit splits load and cannot fail over — real A+B needs dual-PSU servers or a transfer switch per box, which costs more than the UPS.
1
APC Back-UPS Pro BR1000MS Have1000 VA / 600 W pure sine, AVR, tower 14.5″×3.9″×10.2″ · B0779KYKLB
Carries the media server and the office eero today. Once the CyberPower lands this takes the game server plus the office eero and three switches — about 190 W, a third of its rating, roughly 20 minutes. Not interim; it has a permanent job.
One of only two pure-sine units in the house, so it and the CyberPower are the only ones that may ever carry a server. See the power topology.
Tower, not rackmount: it needs a shelf, and lying on its side it eats about 3U against the CyberPower's 2U.
1
Vented rack shelf Add1U or 2U, depth to suit a 14.5″ tower
Nothing on the list holds the APC. Not costed yet — no model chosen, so it isn't in the still-needed figure. Stays for good — the APC keeps the network gear after the CyberPower arrives, so this is not a temporary fixture.
1
NETGEAR ProSafe GS116 Have16-port gigabit, unmanaged, 11.22″ desktop form factor
Serves the whole rack, not one machine. Internet and management only. Needs printed rack ears — no official kit exists.
1
NETGEAR GS108 Have8-port gigabit, unmanaged, metal, fanless · B00MPVR50A
Sits between the eero and the rack: one port to the gaming tower, one down to the GS116. The spare that was going to be a cold spare.
1
2.5 Gb switch, 5-port HaveCarries the isolated storage island — see the network design
Never uplinked to the GS116. Needs a printed tray; desktop form factor like the GS116.
1
Monoprice SlimRun Cat6A, 10-pack Add5 ft, snagless RJ45, 550 MHz, 10G rated, UTP, pure bare copper, 30 AWG, ten colours · B07958D19L
Patching for the whole rack. Pure bare copper rather than copper-clad aluminium is the thing worth paying for — CCA is what fails intermittently under PoE and tight bends.
30 AWG SlimRun is roughly half the diameter of standard 24 AWG patch cable: less bulk behind the posts and better airflow, at the cost of being easier to damage. Fine at 5 ft, wrong choice for long runs.
Ten colours suits the cable discipline in the build order — power down one side, data down the other, and a colour per role.
126.33
Day-one spend · both planned units excluded$152.32

Media server 20 items · 6 owned

A transplant, not a new build. The first six rows are already on hand and set the constraints everything below works around; the rest mounts, cools, powers or connects them.

ItemQtyPrice
AMD Ryzen 5 3600 Have6-core, 65 W TDP, no integrated graphics
65 W settles the cooling question. No iGPU means the GPU is also display output.
1
ASUS Prime B450M-A II HavemATX, AM4, 6× SATA, 1× M.2, one PCIe 3.0 x16 + x1 slots
The binding constraint. Only one x16 slot, and the M.2 socket disables SATA 5/6 when populated.
1
16 GB DDR4 HaveBoard takes up to 128 GB across four slots
Fine for Jellyfin plus containers. Thin if you add VMs — cheap upgrade later.
1
ZOTAC RTX 3050 Twin Edge OC 8 GB Have~130 W, dual-slot, axial fans
NVENC handles Jellyfin transcodes. Axial cooler recirculates heat, so front intake matters.
1
SK Hynix NVMe M.2 2280, 256 GB HaveBoot drive — OS and containers · capacity confirmed
Sits in the board's M.2 socket, so it costs no SATA port and no bay. It does disable SATA 5/6, which is the trade the storage math below is built on.
Trickplay deliberately lives on its own SATA SSD, not here — so this drive only carries the OS and containers. At 256 GB that is comfortable: roughly 40–50 GB for Debian plus Jellyfin, Immich and their images, leaving ample headroom.
1
Hard drives — 5 on hand HaveJellyfin_M2 8 TB · Jellyfin_M5 8 TB · Jellyfin_M1 1 TB · Jellyfin_M3 1 TB · Jellyfin_M4 1 TB
19 TB raw across five drives. They fit with room to spare: six of the seven bays used once the trickplay SSD takes one, and six of the eight SATA ports.
The two 8 TB drives carry the library. The three 1 TB drives are earmarked for replacement with 8, 10 or 14 TB — see the upgrade path in the math.
5
GPERHUAN 4U Server Chassis7× 3.5″ bays, ATX/mATX/ITX, front panel lock · B0D4764WSF
One 120 mm front position, two 80 mm rear.
189.99
MSI MAG A750GL PCIE5750 W, 80+ Gold, fully modular, ATX 3.1 · B0CC3QBGDL
Good price. Modular matters in a 4U — every uninstalled cable is airflow.
189.99
Thermalright Peerless Assassin 120 Mini135 mm tall, dual tower, 6 heat pipes, AM4 · B0CQQYJC5M
~15 mm clearance in a 4U. Mount blowing front-to-back.
133.90
ARCTIC P12 Pro120 mm PWM, 600–3000 RPM, static-pressure optimised · B0DJDC74BP
Front intake. Put this in hub slot 1 so its RPM is the one reported.
16.39
ARCTIC P8 Max80 mm PWM, 500–5000 RPM, 0 dB mode · B09VDNGW8K
Rear exhaust. Cap the curve — 5000 RPM on 80 mm is unpleasant.
217.98
ARCTIC Case Fan Hub Add10× 4-pin PWM out, SATA power, magnetic · B0887VG14J
Dumb splitter, so Debian keeps control via the motherboard header.
112.00
ARCTIC MX-7 thermal paste4 g with MX-Cleaner19.59
SinLoon PCIe x1 90° riser, 10 cm Test earlyRoutes x1 cards around the dual-slot GPUCheap risers cause intermittent link failures. Verify both cards before closing the lid.229.98
ELECNEXUS 4-Port SATA CardPCIe 3.0 x1 to 4× 6 Gbps SATA
Runs at PCIe 2.0 x1 (~500 MB/s shared) in your board. HDDs on this card, SSD on a board port.
121.99
XikeStor 2.5 Gb PCIe NIC Good pickIntel I226-V, low-profile bracket included
Intel over Realtek — better Linux driver support. This is the media server's port on the storage island, static 10.10.10.10, no gateway.
118.99
Thermalright M.2 2280 heatsink Good pickFor the SK Hynix boot drive — confirmed 2280, so the heatsink fits
Worth having: the M.2 socket sits under the GPU's downdraft in a 4U, and NVMe throttles hot.
15.79
ADCAUDX SATA III cables, 6-packSlim, 1 m, locking latch112.68
TEAMGROUP AX2 256 GB SATA SSD Price2.5″, SATA III, 3D NAND TLC, 520 MB/s read · B08CJX8M4D
Trickplay images only — deliberately off the boot drive, so the OS can be rebuilt without regenerating thumbnails. Goes on a board SATA port; the HDDs get the expansion card.
Sized well past need — trickplay for a large library lands near 20 GB — but 256 GB is the smallest AX2 and the headroom costs $77 less than the 1 TB it replaces.
Still roughly double market for the capacity: a Crucial BX500 or Kingston A400 at this size runs $20–30. Trickplay is small random reads, so any SATA SSD performs the same here.
152.99
2.5″ to 3.5″ drive adapter AddSeven 3.5″ bays and no stated 2.5″ mount
The game server needs its own — counted separately in that section.
18.00
Media server, parts to buy$410.26

Mounting hardware 2 items · both missing

Nothing on the wishlist carries the weight of anything. This is the single biggest gap in the build.

ItemQtyPrice
Tecmojo 1U Universal Rack Rails, 2-pack Add20.9″–32″ adjustable, 14-gauge steel, 110 lb · B0DXTVRY6G
One set each for the 4U, both 2U boxes, and the UPS. Front ears alone will bend on a 40 lb chassis.
2110.00
M6 cage nuts + screws, 50-pack AddThe rack includes ten. Four rail sets plus chassis ears exhausts that immediately.112.00
Still needed · every Add row in the day-one build, game server excluded$168.33

Monitoring 4 items · 1 recurring

Three sensors and the box that reads them. Bluetooth thermometer in the rack, USB adapter so the headless box can reach it, smart plug for real draw numbers — and an off-site VPS running the management panel that collects all of it.

ItemQtyPrice
Govee H5075 thermometer / hygrometerBluetooth, alerts, data export — rack ambient temperature112.99
ASUS USB-BT500Bluetooth 5.0 — lets the headless server read the H5075 over BlueZ119.74
Govee Smart Plug, energy monitoring15 A — measures actual rack draw so you can size the UPS on data, not estimates115.29
OVH VPS — management panel Monthly2 vCore, 4 GB RAM, 40 GB NVMe · $5/month, $60/year
Runs AmeriBrit Panel — updates, resource and storage monitoring, UPS state, alerts to iOS and webhooks. Each rack server runs an agent that reports to it.
The only recurring cost on this sheet, and the only line that is not hardware. It sits outside the build total, which is one-time money.
Off-site is the whole point. A monitor living in the rack cannot tell you the rack is down — it goes down with it. The one machine whose job is to report failure is the one that must not share a power feed, a switch or a room with what it watches.
No ports open at the house: the agents dial out, so there is nothing to forward and nothing to expose. Also means this survives a CGNAT or a changing WAN address without DDNS.
15 /mo

Game server separate budget

Second box, built on an AM3+ Gigabyte platform that is already on hand and running today — it goes in on the first pass alongside the media server. Its spend is tracked on its own line rather than in the totals at the top, since the platform costs nothing and only the case, PSU and drive are still to buy. The chassis takes a standard ATX PSU, so this runs the same PSU model as the media server rather than a second form factor to stock.

ItemQtyPrice
Rosewill RSV-Z2600U Chosen Stock4× 3.5″ bays + 1× 5.25″, mATX, 4 PCI slots, 2× USB 3.0, front panel lock · B096WG8H6X
15.0″ deep, aluminium, rear-mount PSU. Ships with 3× 80 mm PWM fans and rack mounting hardware, so the game server needs no fan spend at all.
Decided — and that makes the stock problem real. This is also the cloud-server chassis, and there was one left. Buy the second now or the cloud server needs a different case.
199.99
UTLGAMENG 2U Micro-ATX Chassis Not chosen3× 3.5″ or 2× 3.5″ + 1× 2.5″, mATX/ITX to 9.6″×9.6″, 4 PCIe slots · B0FY5R88NZ
16.89″ deep, standard ATX PSU, published 65 mm cooler ceiling. $30 cheaper, in stock, with a 2.5″ mount the Rosewill lacks.
Passed over for the Rosewill: one fewer drive bay, no fans included, and six reviews on an unknown brand. Kept on the sheet as the fallback if the cloud server cannot get a second Rosewill.
alt69.99
Gigabyte GA-78LMT-USB3 R2 HaveAM3+, AMD 760G, mATX 9.6″×7.6″, 4× DDR3 slots, 1× PCIe x16 + 1× x1 + 2× PCI
Form factor confirmed — clears both 2U cases with room to spare. Sockets AM3+, so the CPU is an FX or Phenom II.
1
AMD FX-6300 HaveSix-core Piledriver, 3.5 GHz base / 4.1 GHz turbo, 95 W TDP, AM3+
Cores are plentiful; single-thread throughput is not, and most game servers are bound by exactly that. Fine for a handful of players, thin for a busy Minecraft world. Meter it before committing a permanent U — Piledriver idles far higher than the Ryzen.
No integrated graphics on the chip, but the board's 760G provides onboard video, so no GPU is needed and chassis card clearance doesn't apply.
1
20 GB DDR3-1333 HaveUnbuffered, non-ECC · A0 4 GB · A1 4 GB · A2 4 GB · A3 8 GB
All four slots are full. More memory means replacing sticks, not adding them. The board's DMI table claims a 16 GB ceiling and a 4 GB module limit, but it is running 20 GB with an 8 GB stick — the table is just conservative.
4
ARCTIC S8038-10K Only if needed80×80×38 mm, 500–10000 RPM, 102 CFM, 51 mmH₂O static, dual ball bearing · B09VGW7L6Y · $10.99
Do not buy these preemptively. The Rosewill ships with three 80 mm PWM fans, and this box is a 95 W CPU with two SSDs and no GPU — the stock fans have an easy job.
They become the right answer in one specific case: if the low-profile cooler cannot hold the FX-6300 in 2U. Forcing air across a starved cooler is what high static pressure is for, and it is how server chassis solve exactly this problem. Buy on a temperature reading, not on spec sheets.
Measure before ordering. 38 mm is 13 mm thicker than standard, spent along the airflow axis rather than the height — an 80 mm fan clears 2U either way, but the Rosewill's fan bracket is built around 25 mm and may not have the depth.
Cap the PWM curve. 10000 RPM is a datacenter setting and assumes nobody is sitting near it.
3
Low-profile CPU cooler Tight fitMust dissipate 95 W inside roughly 70 mm · UTLGAMENG publishes 65 mm; Rosewill publishes nothing
The narrowest constraint in this build. The stock FX-6300 cooler is around 65 mm, so it may just clear — measure it before assuming. The media server's Peerless Assassin is 135 mm and is not an option.
If the stock cooler doesn't fit, note that 95 W AM3+ in a sub-70 mm envelope is a thin market — check AM3+ mounting explicitly, since most current low-profile coolers ship AM4 brackets only.
1
MSI MAG A750GL PCIE5 Second unit750 W, 80+ Gold, fully modular, ATX 3.1 · B0CC3QBGDL
Same model as the media server, not the same physical unit — one PSU can't feed two chassis. Now that the parts are known this box draws roughly 160 W loaded (95 W CPU, board, four DIMMs, one SSD), so 750 W runs it at about 21% — below the efficiency sweet spot and around $30 more than a 450 W would cost. The argument for it is one spare model that drops into either server.
189.99
TEAMGROUP AX2 256 GB SATA SSD2.5″, SATA III, 3D NAND TLC · B08CJX8M4D
Boot drive — OS only. Same split as the media server: the box can be rebuilt without touching game data.
Same model as the media server's trickplay drive, so one spare covers both machines.
152.99
TEAMGROUP AX2 1 TB SATA SSD Price2.5″, SATA III, 3D NAND TLC · B08CKFDPJ3
Server files — worlds, JARs, mods, backups. Kept off the boot drive so an OS rebuild never risks game data.
Generous for the job: several instances plus backups rarely pass 100 GB. Fine if you would rather not think about capacity again.
Confirmed SB7x0 at SATA II — about 275 MB/s, against this drive's 540 MB/s rating. At $129.99, roughly double market, half of what you'd pay for is unreachable on this board. A $50–70 Crucial, Samsung or WD 1 TB performs identically here. Buy on warranty and endurance, not on the speed number.
The controller is also in IDE mode, not AHCI. That costs NCQ and reliable TRIM, which matters far more to an SSD than the SATA generation does. Switch it in BIOS before this drive goes in.
1129.99
2.5″ to 3.5″ drive adapter AddOne per SSD — the Rosewill has no 2.5″ mount
Two drives now, so two adapters, and they take 2 of the Rosewill's 4 bays. No bulk storage lives here, so the remaining two are spare.
The UTLGAMENG alternate has one 2.5″ mount built in, which would drop this to a single adapter. The media server buys its own separately.
216.00
Priced so far, Rosewill chassis · one case only, not both · cooler still open$388.96

Cloud server & NAS other list

ItemQtyPrice
Rosewill RSV-Z2600U Same case as game4× 3.5″ bays + 1× 5.25″, mATX, 3× 80 mm PWM, 15″ deep · B096WG8H6X
Cloud server. Four bays beats three, and it's a real brand with review volume.
Reserved rather than planned — no board, CPU or drives are specced for this box yet, so the chassis is the only line it has.
The game server has claimed this model, and stock was down to one. This box has no other parts decided, so it is the one that can wait — but if you want them matched, the second case is the piece to buy ahead of the rest.
1
2.5 Gb low-profile NIC AddCloud server's port on the storage island · 10.10.10.20
The only hardware the network design still needs. Roughly $19 — not costed here since no model is chosen. Low-profile bracket required; match the Intel i226 family for the same Linux driver story as the media server's card.
1
8-bay 2U NAS LaterIntel N100 board, LSI HBA in IT mode, OMV + mergerfs + SnapRAID
Holds the bulk library. Dual-homed like the others: one port to the GS116 for management, one to the storage island at 10.10.10.30.
Both NICs must be onboard — make it a board-selection requirement. These boards usually ship a single PCIe slot, and the LSI HBA takes it. A single-NIC board would leave nowhere to add a 2.5 Gb card, so look for dual onboard i226 rather than planning to expand later.
1

Print these 5 models

PETG or ASA, never PLA. A 4U server, a GPU and a UPS in one frame will creep PLA at 50–60 °C, and a sagging bracket puts cables under tension. 0.20 mm layers, 4 walls, 20–30% infill, 40% around screw holes.

ModelQtyNotes
GS116 rack earsChriswak · Printables 731731M3 nuts + M3×16 mm screws, 8–12. Print this first — it unblocks the rack layout.
Side cable bracketsk8md · Printables 7729366–8Mounts with the same rack screws as the device beside it, so it costs no U. Rear posts: power down one side, data down the other.
Blank panels, 1U / 2U / 4Ubtadeus · Printables 3813803–4EIA-310 compliant. Two side pieces and one center, center flipped in the slicer.
Storage switch tray Find a modelNo model picked yet1The 2.5 Gb switch is desktop form factor, same problem as the GS116. Size the tray once the switch is in hand — a generic 1U shelf works if nothing fits.
Sub-1U cable guideoXiVanisher · Printables 5320721Under half a U, holes sized for larger RJ45 boots. Mount directly below the switch.

The math

Storage ports and bays

The board has six SATA, but the M.2 socket disables SATA 5/6 when populated — and it is populated, since the SK Hynix NVMe is the boot drive. That trade is already made, not hypothetical. The GPU takes the only x16 slot, so an LSI HBA is off the table and the x1 SATA card is the workaround.

Board SATA, M.2 fitted4
ELECNEXUS x1 card+4
Ports available8
Chassis 3.5″ bays7
Trickplay SSD, on its adapter−1
Bays left for HDDs6
Drives on hand5
Spare1 bay · 2 ports

The five drives on hand fit with room left. They use six of seven bays and six of eight ports, so there is one bay for a sixth drive. After that, bays bind before ports do — the eighth port would have nowhere to put a drive.

Boot costs nothing in this budget: the NVMe sits on the board, using no port and no bay. Growing past six HDDs means the NAS, not this chassis.

19 TB raw, and no parity. Two 8 TB drives plus three 1 TB. Nothing here is redundant — a drive failure loses whatever was on it, which is the argument for the NAS running SnapRAID rather than the media server growing indefinitely.

The three 1 TB drives are worth reconsidering. Each costs a bay and a port to contribute 1 TB, and consolidating them into one larger drive would free two of each — the scarce resources in this chassis are physical, not capacity.

Replacing the 1 TB drives

Three bays currently hold 3 TB between them. Swapping them for 8, 10 or 14 TB drives, keeping both 8 TB drives and leaving the sixth bay for parity:

Replace withData, 5 drivesParity drive neededBays used of 7
3× 8 TB40 TB8 TB7 · full
3× 10 TB46 TB10 TB7 · full
3× 14 TB58 TB14 TB7 · full
2× 14 TB, one bay left empty44 TB14 TB6 · one spare

The decision worth making now is the largest drive, not the total. If parity is ever added, the parity drive must be at least as large as the biggest data drive. Buying one 14 TB today sets a 14 TB floor on a purchase you have not made yet — mixing sizes does not average out, it takes the maximum.

So: pick a target size and buy only that size. Three 8 TB drives and an 8 TB parity is a coherent build. Two 8 TB plus one 14 TB is the same capacity as three 10s while forcing the most expensive parity drive of the three options.

Bigger drives make the missing parity worse, not better. Losing a 1 TB drive today costs 1 TB. Losing a 14 TB drive costs 14 TB, and the rebuild — once there is something to rebuild from — runs for the better part of a day. The larger these get, the harder it is to justify the current no-redundancy arrangement.

Watch which port each drive lands on. Four board SATA run at full 6 Gb/s; the four on the ELECNEXUS card share roughly 500 MB/s across all of them, since the x1 slot negotiates PCIe 2.0 on this board. Fine for streaming, painful for a parity sync across four large drives at once. Put the largest drives on the board ports.

One caution on 14 TB specifically: at that size drives are usually 7200 rpm enterprise units — louder, hotter and thirstier than the 5400 rpm class. In an open frame in an office, that is a real cost the capacity table does not show.

Power draw

Ryzen 5 3600 (PPT)88 W
RTX 3050130 W
Board + RAM40 W
Drives, idle50 W
Fans15 W
Typical~325 W
Cold boot, all drives spinning up~450 W

750 W puts you near 43% load, right by the Gold efficiency peak. A 550 W would have saved $50 but leaves no room for a future GPU.

UPS headroom

Media server, typical~325 W
Game server, loaded~160 W
Cloud server, estimated~150 W
Three switches~15 W
Three servers, typical~650 W
All cold-booting together~850 W

The CyberPower is 1000 W and could carry all three at about 65%, with even a simultaneous cold boot inside the envelope. Note the 1500 VA figure is not the constraint — active-PFC supplies run a power factor near 1.0, so the 1000 W rating is what binds.

It should not have to. Moving the game server to the BR1000MS drops this to ~475 W and takes runtime from roughly five minutes to ten — see the office split below. The figures above are the all-on-one case, kept as the ceiling to design against.

Runtime, not capacity, is the limit either way. Ten minutes is a graceful-shutdown window, not a ride-through — worth wiring up NUT or apcupsd before you rely on it.

Adding the NAS later pushes typical toward 770 W, around 77%, which is where headroom starts to matter. The 2000 VA version of the same unit is $449.95, so about $90 buys that margin if the NAS is a certainty.

The interim APC is only 600 W. It carries the media server alone comfortably and two servers at idle with little to spare, but a simultaneous cold boot overruns it — exactly what happens when utility power returns after an outage. Until the CyberPower lands, stagger the boots in BIOS or run the game server straight off the wall. It is the one box whose sudden loss costs nothing.

What you have vs what you're buying

 APC BR1000MS — haveCyberPower CP1500PFCRM2U — planned
Capacity1000 VA / 600 W1500 VA / 1000 W
Form factorTower, 14.5″ deep2U rackmount, 10.5″ deep
Rack cost~3U, and a shelf you don't own2U, rails included
Media server alone · ~325 W54%33%
Three servers · ~650 Wover capacity65%
All cold-booting · ~850 Wover capacity85%
Adding the NAS later · ~770 Wover capacity77%
Runtime at ~325 W~10 min~20 min
Runtime at ~650 Wn/a~5 min
Costowned$359.95

These are not alternatives — both stay in service, so read the red as "cannot carry the servers", not "inadequate". The APC is a different class of thing, and its job after the upgrade is the low-draw network gear, where 600 W is enormous.

Settled: the APC lives beside the rack, not in it. It is a 14.5″ tower and would have cost roughly 3U on a shelf. The 2U it would have taken is instead reserved for the second CyberPower, shown dotted at the bottom of both views — so the eventual swap is a slide-in, not a re-hang.

Runtimes are approximate — battery age and load shape both move them, and neither figure is long enough to be a ride-through. Both are shutdown windows.

Weight — and what the rack is actually rated for

 Day oneFully populated
VEVOR 20U frame~45 lb~45 lb
CyberPower UPS~46 lb~92 lb · two units
Media server, 4U + 6 HDDs~34 lb~34 lb
Game server, 2U~20 lb~20 lb
Cloud server, 2U~22 lb
NAS, 2U + 8 HDDs~38 lb
GS116 + network shelf~8 lb~8 lb
Rails, cage nuts, cabling~16 lb~29 lb
Gross~170 lb~288 lb
Load on the rails — frame excluded~125 lb~243 lb

The last row is the one to measure against. A rack's load rating excludes its own frame — it is what the rails carry. Day one you are fine on any reading of the VEVOR spec. Fully populated you are comfortably over a 200 lb rating and comfortably under 500, and VEVOR's own pages claim both. Settle it before the NAS and the second UPS go in.

The UPSes dominate. Two CyberPowers are ~92 lb, near a third of the total and all of it sealed lead-acid. That is the reason they hold the bottom 4U rather than anywhere else.

The APC is not counted — it is ~26 lb sitting on the floor beside the rack, so it costs nothing structurally. Fourteen 3.5″ drives across the media server and NAS are ~15 lb between them, more than the GS116, the network shelf and every printed part combined.

Assume the rating is static, not rolling. An open frame at ~288 lb on casters is a different proposition from one standing still — load it in position.

Power topology — four units, whole path protected

UnitCapacityWaveformCarries
APC BX1500M · bedroom1500 VA / 900 WSteppedWifi modem + main eero
APC BE850M2 · kitchen850 VA / 450 WSteppedKitchen eero + BrosTrend switch + Eufy HomeBase 3
APC BR1000MS · office1000 VA / 600 WPure sineGame server + office eero + 3 switches
CyberPower CP1500PFCRM2U · rack1500 VA / 1000 WPure sineMedia + cloud servers

Every hop from the modem to the rack is on battery. That is unusual and it removes the failure this build would otherwise have: the rack outliving its own network and becoming unreachable mid-outage. Nothing more is needed upstream.

The waveform column is the one to respect. The two Back-UPS units output a stepped approximation of a sine wave. Modems and eeros are small switching supplies and do not care. An active-PFC server supply very much does — it can run hot, buzz, or drop out entirely on stepped output. Never move a server onto the BX1500M or the BE850M2, however tempting their spare capacity looks.

That leaves exactly two units that may carry anything with an active-PFC supply: the BR1000MS and the CyberPower. Both are pure sine, which is why the sheet has always specified it.

The kitchen is complete rather than partial: the BrosTrend switch sits on the BE850M2 alongside the eero and the HomeBase 3, so the Eufy stays reachable during an outage and not merely powered. Worth noting because a camera hub that runs but cannot upload is the least useful failure available.

Splitting the office load

Never plug one UPS into another. The downstream unit's charger looks like a nonlinear load with real inrush to the upstream one, most manufacturers forbid it, and the runtimes do not usefully add. Both office units hang off the wall independently.

Leaving the BR1000MS on 30 W of network gear wastes it. It is pure sine, so it is one of only two units in the house allowed to carry a server — and hours of network runtime buy little once the servers are already down. Put the game server on it.

BR1000MS · game server + eero + 3 switches~190 W · 32% · ~20 min
CyberPower · media + cloud servers~475 W · 48% · ~10 min

The media server's runtime roughly doubles, from about five minutes to ten, which is the real prize. Both units land near half load, which is where their batteries last longest and run coolest.

The game server is the right one to move: it holds nothing that a sudden loss would damage, so pairing it with the older battery costs the least. Media and cloud — the two that hold data — stay on the newer, larger unit.

This does mean two shutdown paths. Each UPS needs its own USB run to something that can act on it: BR1000MS to the game server, CyberPower to the media server, with the cloud server running a NUT client pointed at the media server. One UPS with one cable is simpler; that simplicity is what you are trading for the extra five minutes.

Coming back up

Shutting down cleanly is the easy half. Coming back on is two separate settings, and neither is on by default.

1 · BIOS: restore on AC power loss. Set it to Power On, not Last State.

Media · ASUS PrimeAdvanced → APM → Restore AC Power Loss → Power On
Game · GA-78LMT-USB3Power Management Setup → AC BACK → Always On
Game · same boardErP / EuP → Disabled — it cuts the standby rail auto-power-on runs from

Last State reads as the safer option and is the wrong one here. NUT shut the box down cleanly, so the last state is off — and it stays off.

2 · The UPS has to actually cut its outlets. This is the step that gets missed. NUT's shutdown must finish by telling the UPS to drop the load, so it re-energises when mains returns — shutdown.return, issued by upsdrvctl shutdown at the end of upsmon's sequence.

Without it, the failure is specific: power comes back before the battery is flat. The outlets never de-energised, the servers never see an AC transition, and they sit there off until someone walks over and presses a button. A battery running all the way down does the right thing by accident — you do not want correct behaviour to depend on the outage being long enough.

Confirm each unit supports it before relying on it, because CyberPower's NUT load-shed support is less consistent than APC's: upscmd -l cyberpower should list shutdown.return.

3 · Test it the long way. Pull the plug and leave it — all the way down, outlets dead, then restore mains. Cutting the test short at "they shut down" only proves the half that was already easy.

Nothing on the monitoring panel can verify this. It sees a broken shutdown path; it cannot see a server that would never come back, because that only shows up during the one event you are building for.

WAN headroom

1 Gb symmetric is the enabler. Most residential plans give a fraction of that upstream, which is what usually makes self-hosting painful. Remote Jellyfin is the only real consumer:

4K HDR direct play40–80 Mbps
1080p remux direct play20–40 Mbps
Transcoded 1080p8–12 Mbps
Concurrent 4K at ~900 Mbps12–20

The RTX 3050 runs out before the uplink does. NVENC handles roughly 8–12 simultaneous 1080p transcodes, so the GPU caps you well below the line. More bandwidth would not buy one extra stream.

Everything else is noise: game servers are 10–50 kbps per player, Immich sync is inbound and bursty, restic is incremental after the first seed and runs overnight.

The constraint worth watching is the mesh backhaul, not the plan — see the network design. Two wireless hops could hold the rack to 200–400 Mbps no matter what you pay for.

Sizing the panel VPS

2 vCore, 4 GB, 40 GB NVMe at $5/month. The instinct is that 40 GB is tight for a metrics database. It is not the constraint.

Samples, per host per day · 15 s5,760 rows
Four hosts, 30 days full resolution~690k rows · <250 MB
Hourly rollups, one year~35k rows · noise
Debian + Postgres + binaries~10 GB

Even with the retention job never written, four hosts generate roughly 2 GB a year. That is a decade of headroom on 40 GB. Pruning still matters — but for query speed and index size, not for disk, and it is worth being clear about which problem you are solving.

4 GB is comfortable for Postgres, Caddy and the panel itself. The panel is a Rust binary in the tens of megabytes resident, so the database gets essentially all of it. Two cores are idle most of the time: a handful of agents posting every 15 s and an alert sweep every 60 s is not a workload.

Two things would break this sizing, and neither is planned: shipping logs to the panel rather than just metrics, or keeping full-resolution history for a year instead of rolling it up. Both are disk problems, and both are decisions rather than surprises.

Airflow

One 120 mm in (~70 CFM), two 80 mm out (~80 CFM) plus PSU exhaust. Slightly negative pressure.

Not a thermal problem — intake pulls through the drive cage, cooling the HDDs on the way past. It is a dust problem: unfiltered air enters through every seam. Blow the chassis out every few months.

If the P12 Pro has to run loud to hold GPU temps, drop to one rear P8 Max. Less exhaust, closer to neutral, quieter.

PCIe slots

One x16 (GPU) plus x1 slots. Two x1 cards want those slots: the SATA card and the NIC.

Verify the exact x1 slot count on your board before ordering both. If there's only one usable slot after the dual-slot GPU, something has to give — most likely the SATA card, with bulk storage moving to the NAS instead.

10 GbE is not possible here. It needs x4 or x8. 2.5 G over x1 is the ceiling.

Fan control on Debian

The hub is a dumb splitter, so lm-sensors and fancontrol drive it through the motherboard header. The real obstacle is the Super I/O driver.

Nuvoton chips need acpi_enforce_resources=lax at boot. ITE chips need the out-of-tree it87 module via DKMS — the frankcrawford fork is the maintained one.

Run sensors-detect after the build. If pwmconfig finds no PWM outputs, that's the ACPI lock, not the hardware. Fallback: set a conservative fixed curve in BIOS and move on.

Wiring the fans

PA120 MiniCPU_FAN
P12 Pro frontHub, slot 1
2× P8 Max rearHub
Hub inputCHA_FAN1
CHA_FAN2free

Cooler stays off the hub so it tracks CPU temp independently. The hub reports RPM from slot 1 only — put the intake there, since it's the fan whose failure matters most.

Network design decided · $0 in switches

Internet service is 1 Gb up and down, so nothing that touches the WAN gains anything from 2.5 Gb. The only traffic that can saturate a 2.5 Gb link is server to server — Jellyfin reading the library, Immich originals, restic snapshots. So 2.5 Gb goes where it can actually be used, on an isolated storage network, and everything else stays on gigabit. Both switches are already owned.

Internet 1 Gb Modem eero 7 Bedroom eero 7 Kitchen BrosTrend 2.5 Gb · Kitchen eero 7 Office Eufy HomeBase 3 GS108 · 8-port 1 Gb Gaming tower GS116 · 16-port 1 Gb Media server Game server Cloud server NAS 2.5 Gb switch · 5-port No uplink · no gateway · no DNS
Main LAN — gigabit, routed, DHCP from the eero
Storage island — 2.5 Gb, isolated, static addressing

Rule 1 — never uplink the storage switch

No cable between it and the GS116, ever. If the two networks touch, every server has two paths to every other one and traffic takes whichever it likes.

The result is asymmetric routing, ARP confusion, and storage traffic quietly leaking onto the gigabit side — which looks like a performance mystery, not a wiring mistake.

Rule 2 — storage NICs get no default route

Netmask only on the island interfaces. No gateway, no DNS. That is what stops the OS deciding to send general traffic down the storage link.

Reference island hosts by IP or /etc/hosts, never by DNS name. This is the single most common way an isolated network stops being isolated.

Edge — GS108, 8 ports

1Uplink to eero
2Gaming tower
3Down to the GS116
4–8Spare — five free

The spare Netgear, put to work. It keeps the tower's desk run off the rack switch and leaves the GS116 entirely for rack machines. Five ports stay free, so anything else that lands near the office plugs in without touching the rack.

Main LAN — GS116, 16 ports

1Uplink to GS108
2Media server, onboard
3Game server, onboard
4Cloud server, onboard
5NAS, onboard secondary
6–7Reserved — future 2U servers
8–16Spare

Storage island — 2.5 Gb, 5 ports

1Media server · XikeStor I226-V · 10.10.10.10
2Cloud server · NIC still to buy · 10.10.10.20
3NAS · onboard i226 · 10.10.10.30
4–5Reserved — future 2U · .40, .50

Static 10.10.10.0/24. The game server is deliberately absent — its board is gigabit-only and it has no storage traffic worth the slot.

Every server is dual-homed

Onboard gigabit to the GS116 for internet, SSH, web UIs and management. A second 2.5 Gb card to the island, where applicable, for NFS, Immich originals and restic.

Main LAN addressing is DHCP from the eero — reserve a fixed lease by MAC for every server so hostnames stay stable.

The rack sits four hops out

Modem to Bedroom to Kitchen to the BrosTrend switch, which fans out to the Eufy HomeBase 3 and to the Office eero. The Office unit then feeds the whole rack.

That makes the BrosTrend a single point of failure for everything in the rack. It is a $38 unmanaged switch carrying the entire WAN path — if it dies, the rack loses internet even though every eero is still up. Worth keeping a spare in a drawer; it is the cheapest insurance in the build.

It is at least on battery, sharing the BE850M2 with the kitchen eero and the Eufy, so a power cut does not take it out. Note this is the second reason that unit matters more than its size suggests.

Worth confirming the backhaul is wired. These are dual-band, so there is no dedicated backhaul radio — on a wireless mesh each hop shares airtime with clients, and this far out the rack could see well under half the 1 Gb service. Wired, it is a non-issue.

Note there are two 2.5 Gb switches in play. The Kitchen BrosTrend is ordinary LAN and carries the rack's uplink. The rack one is the isolated island and must never be confused for it.

Cable colours

Blue for main LAN, server onboard NICs to the GS116. Green for the storage island. White or red for the eero uplink.

Uniform correct lengths matter more than cable spec. Avoid Cat 7 and Cat 8 — marketing labels at these speeds — plus flat cable, braided jackets, and anything not stating bare copper.

What this gives up

The gaming tower and every Wi-Fi client reach the NAS at 1 Gb, since they arrive through the GS108 and GS116 rather than the island. Fine for occasional access, noticeable if you regularly pull large media off the NAS.

The fix is a 2.5 Gb card in the tower and a run to a reserved island port, or an 8-port island switch (~$60) to cover that and the future servers. Nothing here blocks either.

Assembled view drag to orbit

The same twenty U as a solid, with the cable runs the network design implies. Drag it to swing around the rack — the wiring lives at the back, so the rear view is the one that matters when you are deciding what goes where. The flat elevation in the sidebar stays the reference for what sits at which U.

Drag to rotate · arrow keys when focused · hover a device to trace its runs

Three bundles, one side each

Power runs down one rear post, data down the other, exactly as the build order calls for. Drawing them as one bundle per service is the point — a cable you can trace by colour and side is one you can unplug at 2am without tracing it at all.

Hovering a device dims everything else, which is the quickest way to see what a given box actually depends on.

The APC sits on the floor beside the rack rather than in it, so the game server, GS116 and network shelf runs leave the frame at the bottom rear and terminate there. The 2U reserved for the second CyberPower stays empty until that swap happens.

Service loops are not drawn

Every run here is the straight-line path. Real ones need the 6–8″ of slack the build order specifies, so a chassis can slide out on its rails without unplugging.

That slack is why the 5 ft patch cables are more forgiving than the 1–2 ft the network design asked for, and also why they will coil behind the posts.

The network shelf

2U carrying the GS108, the 2.5 Gb island switch and the office eero. None of the three earns a U of its own, and the eero is taller than 1.75″, so a single U would not have cleared it. The GS116 nearly fills 19″ by itself and keeps its own.

Dropping the PDU paid for the second U. One 2U bay remains genuinely spare, and the bottom 2U is reserved for the second CyberPower rather than sitting empty. Everything still adds to twenty.

Verify before ordering

  1. x1 slot count on the B450M-A II, with the dual-slot GPU physically installed. Two x1 cards are on the list.
  2. Rear fan cutout size on the 4U chassis. If they're 120 mm rather than 80 mm, buy P12 Pros instead of P8 Maxes.
  3. Cooler clearance from motherboard tray to the nearest obstruction. 135 mm should clear, but the chassis publishes no maximum.
  4. GPU length against the front drive cage. The chassis doesn't publish a maximum card length either.
  5. SATA power connector count on the PSU. Eight drives means eight connectors, correctly spaced for the cage.
  6. Rack load rating on the VEVOR listing. VEVOR's own pages contradict each other — some say 200 lb, others 500 lb. Fully populated the rails carry roughly 243 lb, which is over one figure and well under the other. Day one is only ~125 lb, so this can wait — but settle it before the NAS and the second UPS go in. See the weight breakdown in the math.
  7. SSD price. $129.99 for 1 TB SATA is about double the going rate — and on the game server's SATA II controller, half the speed you're paying for is unreachable.
  8. Measure the FX-6300's stock cooler. It has to fit under roughly 70 mm. This is the one game-server dimension with no slack, and AM3+ low-profile replacements are scarce.
  9. Switch the game server's SATA controller to AHCI in BIOS. It currently runs in IDE mode, which costs NCQ and TRIM. Do it before the SSD is installed, and confirm the initramfs carries the ahci module and fstab uses UUIDs — otherwise the box won't boot afterwards.

Build order

  1. Set rack depth to 24″ post-to-post and level it before anything goes in. Changing this later means re-hanging everything.
  2. Mount the rear cable brackets while the frame is empty. Reaching behind a loaded open frame with a driver is miserable and you'll skip half of them.
  3. Ground the rack with the included wire. Open frame plus metal chassis, two minutes, worth it.
  4. UPS in the bottom 2U. Heaviest mass lowest. Load it in place — the rack holds its rating stationary, not while rolling.
  5. Rails before servers, working bottom to top.
  6. Test the riser cards on the bench before the chassis goes in the rack. A flaky NIC you blame on drivers for an hour is usually the riser.
  7. Set the fan curve in BIOS before racking. First GPU load spike on an uncapped 80 mm at 5000 RPM is memorable for the wrong reason.
  8. Leave 6–8″ service loops per device so a chassis can slide out on its rails without unplugging. Route slack through the brackets, not around them.
  9. Put the two UPSes on separate wall circuits if the office has them. Two 1000 W units on one 15 A circuit is 1800 W of headroom against two that are hungriest at the same moment — running full load while recharging after an outage. Trivial to arrange now, annoying once the cords are dressed and the service loops are set.
  10. Run both UPS data cables. BR1000MS by USB to the game server, CyberPower by USB to the media server. Two units means two independent paths — neither one watches the other, and a UPS nothing is listening to is just a surge strip with a battery in it.
  11. Install NUT on all three servers, with the media server as the NUT server. The cloud server has no UPS of its own to talk to, so it subscribes over the network. Configure it to shut down on loss of contact as well as on low battery — its link runs through switches on the other UPS, so a dead BR1000MS would otherwise leave it running blind while the CyberPower drains.
  12. Set restore on AC power loss to Power On in every BIOSAlways On on the Gigabyte board, and ErP disabled there too. Not Last State: NUT shuts the machine down cleanly, so the last state is off and it stays off. Do this at the bench, before the chassis is racked and the setting means a monitor on the floor.
  13. Make NUT's shutdown end with shutdown.return, so the UPS drops its outlets and re-energises when mains comes back. Without it, power returning before the battery is flat leaves the servers off — they never see the AC transition their BIOS is waiting for. Confirm each unit supports it first: upscmd -l should list it.
  14. Pull the plug on each UPS separately and watch what happens. An untested shutdown path is worse than none, because you will plan around it. Confirm all three boxes go down cleanly, then leave it unplugged until the outlets are dead and confirm they come back on their own. Stopping at "they shut down" only tests the half that was already easy — a server that shuts down but never returns has just moved the outage.

What the flags mean

Colour carries the urgency: green is settled, red needs an action before you order, brass is a judgement call with no deadline.

HaveAlready owned. No spend, but it still constrains the build around it.
AddNot on the wishlist yet and the build doesn't work without it. These make up the "still needed" figure.
PriceListed well above the going rate. Worth substituting before you buy.
StockLow or single-unit availability. Decide sooner than the rest of the list.
Tight fitPhysically marginal. Measure the real part before ordering around it.
Test earlyKnown to fail intermittently. Bench it before the chassis is closed and racked.
Find a modelA printed part is needed but no design has been chosen yet.
Same case as gameTwo machines are specced on one chassis. Buy two, or move one to the alternate.
ChosenDecided. The option that gets bought where several were considered.
Not chosenConsidered and passed over. Kept on the sheet so the reasoning survives, and as a fallback. Not in any subtotal.
Only if neededDo not buy preemptively. Bought only if a measurement says so — the row explains which one.
Second unitSame model as one already listed elsewhere, bought again rather than shared.
Good pickChecked and worth keeping. No action needed.
PlannedPriced and decided, but deliberately not a day-one buy. Sits outside the build total and gets its own tile at the top.
LaterWanted eventually, not decided. Sits outside every total — some hold a rack position, some carry a price, none are committed.