Home Project · Build Sheet · Rev 2
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 U13 / 20
Parts to print6

Rack & power 12 items · 4 alternates

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
ODROID N2+ 4 GB HaveAmlogic S922X, 4× A73 + 2× A53, 4 GB RAM, gigabit Ethernet, 4× USB 3.0 · ~4 W · U16
Three jobs: NUT master for both UPS units, sensor gateway for the Govee kit, and Home Assistant / Homebridge. Runs an AmeriBrit Panel agent like every other machine.
Serves the whole rack rather than one machine, which is why it lives here beside the switches rather than under a server.
It is not a fourth server and should never be given a server's job. It is the only machine in the build that is out-of-band relative to the servers while still being inside the house — that is the entire value, and loading it up destroys it.
Two USB ports for the UPS data cables plus one for the Bluetooth dongle. Four available, so one stays free on both storage stages.
1
128 GB A2 microSD — N2+ boot HaveDay-one boot media · the weakest component in the build, and worth saying plainly
A2 is a performance class, not an endurance one. It specifies minimum random IOPS and sustained sequential write so apps launch faster. It carries no TBW figure and says nothing about lifespan. Endurance is a separate product line entirely — SanDisk Max Endurance, Samsung PRO Endurance — sold for dashcams and surveillance because those write continuously. So will this box.
Worth knowing for the record: on Linux SBCs, A2 often doesn't even deliver its performance claim. The speedup depends on command queuing and host-side caching that most SD host drivers don't implement, so A2 cards frequently benchmark at or below A1 on boards like this. You are paying for a spec the platform can't use.
The irony belongs on the sheet: the machine whose entire job is to report failure has the least reliable storage in the rack. Every server here boots from SSD or NVMe. The NUT master boots from a card with a crude FTL, minimal wear levelling and no meaningful SMART.
Mitigations are load-bearing on this stage, not optional. Home Assistant recorder purge_keep_days at 7, /var/log on tmpfs or log2ram, swap off, no local metrics database, and a dd image of a known-good card kept off the box.
Power-loss corruption is the other common killer and is already handled: the N2+ is on the BR1000MS and shuts down under its own NUT master.
1
Hardkernel 64 GB eMMC Module N2 Linux Planned$47 · outside the build total, same treatment as the CyberPower
N2-series module, not N2L. Linux variant, not Android. Both are easy to order wrong.
Capacity is the smaller half of the argument — wear headroom scales with capacity, so 64 GB carries roughly twice the spare blocks of the 32 GB for this workload.
No reader or writer needed. Fit the module with the microSD still in — the S922X keeps microSD UHS mode active alongside eMMC, which the older S905 could not — boot from the card, dd the image across, set boot order. The card then stays in the slot as a bootable recovery image of a known-good system, which is a better end state than buying a reader would have produced.
What triggers the buy, stated so it isn't left to memory: any read-only remount, any unexplained reboot, or the day the N2+ picks up a job that writes continuously. Card failures are not gradual and there is no wear indicator to watch, so the trigger has to be an event.
The eMMC buys margin, not immunity. Keep the mitigations after it lands — HA's recorder is the heaviest writer here either way.
Hardkernel's own listing price; verify at checkout and factor Korean shipping, which usually costs more than the module.
1
Boot the N2+ from a USB3 SSD Not chosenThe N2+'s SPI flash supports it, so this was a real option.
Passed over on ports and tidiness: two UPS cables and the Bluetooth dongle already take three of four USB ports, and the eMMC is faster, neater and cheaper than an SSD plus enclosure.
alt
Hardkernel 32 GB eMMC Module Not chosen$38 · ample capacity for this workload
Passed over for $9 of endurance margin on the one box that most needs not to die. Kept here so the reasoning survives.
alt
N2+ on the network shelf Not chosenThe board is 90×90 mm and would sit beside the eero and the island switch on the existing 2U shelf — zero U, no print at all.
Passed over on cable runs: the shelf is at U18–19 and both UPS units are at U1–4, which puts roughly 6 ft of USB down the back of the frame for the NUT runs. Within spec, but the whole point of this box is those two cables, so it goes near them.
Kept as the fallback if the 19″ mount doesn't print cleanly.
alt
Active cooling for the N2+ Not chosenPassive day one. The heatsink is the board's entire underside and is sized for sustained all-core load; NUT, HA, Homebridge and one agent is single-digit CPU. Expect roughly 45–55 °C idle against an ~85 °C throttle point.
The argument against is stronger than the thermal argument for. A fan is a moving part on the one machine whose job is to not fail, and small sleeve-bearing fans are among the least reliable things in any build. Bolting a mechanical failure point onto the monitor inverts the point of it — plus whine in an office and dust pulled into the fins.
What is actually unknown is rack ambient at U16, not the SoC. Open frame, no doors, and the 4U media server exhausting below it at U5–8 — convection carries that heat straight past. Room temperature is not the right number.
This resolves itself: the Govee H5075 is already on the sheet and the N2+ is the thing reading it. Add SoC temperature to what its agent reports and the box measures its own case for the answer.
Trigger for revisiting: sustained SoC above ~70 °C, or rack ambient above ~35 °C. Then in order — reposition first (confirm the mount isn't capping the fins and the U above is clear), then Hardkernel's clip-on N2 fan, which is PWM-controlled from the board rather than a 40 mm part running flat out.
alt
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 5 items · 1 recurring · 1 alternate

Three sensors and the box that reads them. Bluetooth thermometer in the rack, USB adapter so the N2+ can reach it, smart plug for real draw numbers — and an off-site VPS running the management panel that collects all of it. These feed the panel through the N2+'s agent; the panel owns alerting, and nothing here talks to Mattermost directly.

ItemQtyPrice
Govee H5075 thermometer / hygrometerBluetooth, alerts, data export — rack ambient temperature, read by the N2+
Also the measurement that settles the N2+ fan question, since it now reports its own SoC temperature alongside this.
112.99
ASUS USB-BT500Bluetooth 5.0 — lets the N2+ read the H5075 over BlueZ. Takes the third of its four USB ports.
Moved off the media server deliberately. A rack thermometer read by a machine inside the rack's own failure domain reports nothing at the moment it matters.
119.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. Every machine in the rack runs an agent that reports to it, the N2+ included.
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 must not share a power feed, a switch or a room with what it watches.
The outbound-agent design is the architecture, not a detail of it. Agents dialling out to a collector on the same switch would not be a weakened version of this — it would be a LAN service with extra hops. No open ports, CGNAT tolerance and no DDNS are all properties of the collector being on the far side of the WAN. They evaporate together the moment it moves in-house.
The N2+'s agent is the authoritative source for UPS state, not the media server's. During an outage the servers are the things shutting down, so their agents go quiet exactly when detail is wanted. The N2+ outlives them by a wide margin, so the timeline reads on battery → servers shutting down → clean → last word from the N2+ rather than three agents stop, silence.
Config in git. A $5 VPS without snapshots makes the monitoring system its own single point of failure. Config in a repo, restore in twenty minutes.
2 vCore / 4 GB is generous for a panel — real room for an external probe node later, genuinely off-net, which is what that job requires.
15 /mo
External check on the panel itself AddHealthchecks.io or UptimeRobot · one URL · $0
Nothing currently watches the watcher. If the OVH box dies, or the outbound path breaks, or a firewall rule gets fat-fingered, the result is silence — and silence is indistinguishable from everything being fine. That is the exact failure this whole design exists to eliminate, reintroduced one layer up.
Two fixes, and both are needed. The panel must alert on absence, not only on events — an agent that stops checking in is an incident, and if a missing heartbeat doesn't page then the panel only catches failures polite enough to report themselves. And one external check pointed at the panel, because it is the only component you neither own nor maintain, which is the entire point of it.
1
Second alerting stack on the N2+ Not chosenUptime Kuma or similar, running alongside the panel.
Dropped from the plan deliberately: the panel's agents already cover per-service checks. Two alerting systems means two sets of thresholds that drift apart and two streams you learn to ignore. Recorded here so the decision is visible rather than just absent.
alt

Game server separate budget · A / B decision

This is now an A/B decision, not a single spec, and neither option is retired. Option A is the 2U FX-6300 build below — fully specced, fully costed, buildable today, and the spec of record. Option B is an HP EliteDesk 705 G4 DM in a printed 1U mount: about $105 against ~$389, or $145 if the heap numbers say it needs the RAM kit, and it closes four open risk flags by deleting them rather than solving them. Evaluate B first; if it fails validation, A is the fallback and nothing is lost. Spend stays on its own line either way.

Option B — EliteDesk 705 G4 DM, 1U Recommended

The machine was identified from its serial, and it is not what the first pass assumed. MXL9505DF8 puts it at week 50 of 2019, Mexico assembly — an EliteDesk 705 G4 DM, which is HP's AMD line. Socketed AM4, Raven Ridge APU, Radeon Vega graphics.

Everything vendor-specific on this sheet has been corrected accordingly: there is no Quick Sync, no vPro/AMT, no Intel MSR undervolt, and the RAM ceiling is 32 GB rather than 64. The form-factor conclusions did not depend on the CPU vendor — power, 1U, weight and the four deleted risk flags all stand.

HP's QuickSpecs offer only four-core parts in the DM column. The Ryzen 7 PRO 2700X/2700 and Ryzen 5 PRO 2600 are SFF and MT only, so four cores is the ceiling here.

CPUCoresBoostTDPLikelihood
Ryzen 5 PRO 2400GE4C/8T3.8 GHz35 WMost common
Ryzen 5 PRO 2400G4C/8T3.9 GHz65 WPossible
Ryzen 3 PRO 2200GE4C/4T3.6 GHz35 WPossible
Ryzen 3 PRO 2200G4C/4T3.7 GHz65 WPossible

The CPU is socketed, so a swap is physically possible — but temper that. HP BIOS whitelists are restrictive and the 705 G5 moved to Picasso on a different BIOS. Assume no upgrade path unless someone has confirmed one on this exact board.

RAM ceiling32 GB · 2 SODIMM slots
M.2 slots2 listed — verify one isn't the 2230 WLAN slot
2.5″ 7 mm bays1
3.5″ bays · PCIe slotsNone
Out-of-band managementNone — AMD, so no vPro/AMT
Draw~10–30 W · against ~160 W
BR1000MS load~60 W · ~10% · 1 hr+
Rack · weight1U front posts only · ~3 lb

M.2 is PCIe 3.0, so a Gen4 drive buys nothing but heat in an enclosure with no case airflow. Prefer a cool-running Gen3 or low-power Gen4 part.

EliteDesk 705 G4 DM · MXL9505DF8Have
2× 8 GB DDR4-2666 · dual-channelHave · confirmed
Power brick, 65 or 90 WHave · matches build
2× 16 GB DDR4-2666 kitOnly if heap demands it · price fresh
Silicon Power P34A60 256 GB NVMe · B07ZGK3K4VBoot · chosen
TEAMGROUP AX2 1 TB SATA · B08CKFDPJ3Server files · chosen
HP 2.5″ drive caddy + SATA/power cableAdd if absent · ~$15–25 used
Second M.2 · only if slot 2 is 2280Hold
Thermal pad kit, 13 W/mK~$10
M3×10 socket head + hex nuts8 ea · ~$8
Printed 1U mount~$3 filament
Non-drive hardware~$21, plus the caddy if absent

No total is quoted here on purpose — see the pricing note in the math. What can be stated without a current quote is structural: Option A's chassis ($99.99), its second PSU ($89.99) and its two drive adapters ($16) are line items that simply do not exist in Option B. That is ~$206 of Option A that has nothing to do with market pricing.

The drives are roughly a wash between the two options — both carry the AX2 1 TB, and the P34A60 replaces Option A's AX2 256 GB boot drive at a similar or lower price. So the saving is the ~$206 of deleted hardware, not a drive bargain, and it holds whatever the NAND market does. Add ~$70–100 a year less in electricity running 24/7.

RAM — checked, and it's the good answer

Confirmed: 2× 8 GB DDR4-2666, so the box is running dual-channel. That was the one blocking question in Option B and it has resolved the right way. Full ~42 GB/s against the FX rig's ~21 GB/s, so the memory-bandwidth advantage in the comparison below is real and not conditional. Shorter GC pauses come with it.

What it costs is the upgrade path. Two slots, both full — so more memory means replacing both sticks, not adding one. That is the same trap the FX-6300 is already in with all four DDR3 slots occupied, and it is worth seeing it coming rather than discovering it with a single SODIMM in hand.

16 GB is still a step down from the FX rig's 20 GB, and that has not changed. If the current instances are allocated more than roughly 12 GB of heap between them, Option B is worse on day one — single-thread advantage does not buy back a heap ceiling. Check what the running instances are actually allocated before deciding; this is now the only open question on the RAM.

So the 2× 16 GB kit drops from mandatory to conditional. At ~$40 it takes the box to its 32 GB ceiling, and the pulled 8 GB sticks become spares — but there is no longer a channel-configuration reason to buy it. Buy it if the heap number says so, not on principle.

Storage — both drives decided

Same boot/data split as the media server and Option A: an OS rebuild never risks world data.

DriveSlotJob
Silicon Power P34A60 256 GB · B07ZGK3K4VM.2 2280 slot 1Debian, Docker, Pterodactyl panel — ~40–60 GB in use
TEAMGROUP AX2 1 TB · B08CKFDPJ32.5″ bayWorlds, JARs, mods, backups

The P34A60 is a deliberate Gen3 choice, not a compromise. M.2 2280 single-sided, PCIe 3.0 x4, SM2263XT controller, Micron 96-layer 3D TLC, ~2,100/1,200 MB/s, 150 TBW with a 5-year warranty. Native Gen3 matches the Raven Ridge slot exactly — a Gen4 drive would cost more and downshift anyway. Single-sided and low-power suits a 1 litre chassis with no case airflow, and it is TLC rather than QLC.

Accepted limitation: the 256 GB is the slowest of its family — the 512 GB and 1 TB reach 2,200/1,600 on more NAND dies and a bigger SLC cache. Irrelevant for boot, visible only on large sustained writes like a big Docker image pull, and still roughly twice SATA even then.

Buy from Amazon or Silicon Power direct, not a marketplace seller. SP's bill of materials varies by production run — Micron and Intel TLC have both been observed — and counterfeit SP drives exist.

The AX2 1 TB stays, and it is deliberately ~10× the stated need. Several instances plus backups rarely pass 100 GB. It stays because this is the machine's only bulk volume: one 2.5″ bay, no 3.5″ bays, and slot 2 may turn out to be WLAN. The growth path here is replace the drive, not add one — the same trap as the RAM. The 512 GB is the fallback if pricing bites, still 5× the need.

Accepted limitation: DRAM-less, so the FTL lives in NAND and sustained random writes are the weak point. Minecraft region saves are periodic chunked writes rather than sustained random IO, and the SLC cache absorbs them. This would be the wrong drive for a database volume.

Half the sheet's standing objection to the AX2 is void on this platform. The "SB7x0 at SATA II, half of what you pay for is unreachable" note applies to the FX-6300's chipset, not this one — the 705 G4 DM runs a modern AMD Promontory controller at SATA III 6 Gb/s in AHCI, with no IDE mode. The full 540/490 MB/s is reachable. The price half of that objection still stands, and has moved in an unexpected direction — see the pricing note in the math.

New blocker this introduces: the caddy. HP Desktop Minis configured M.2-only frequently shipped without the 2.5″ drive bracket and its SATA/power cable. It is a separate HP part at roughly $15–25 used. Check during teardown — a drive with nowhere to mount is a dead order.

And one thing not to mistake for a fault: on some Desktop Mini models HP firmware throws a boot warning when a 2.5″ drive is fitted without the caddy's cooling fan. Dismissable, and the machine runs fine.

Check whether the OEM NVMe is still in it before buying the P34A60 at all. sudo nvme smart-log /dev/nvme0 — if percentage_used is low, that purchase may simply not be needed.

Performance, honestly

The gain is real but narrower than a first look suggested. Corrected against the actual platform:

FX-6300R3 2200GER5 2400GE
ArchPiledriver, 2012Zen 1, 2018Zen 1, 2018
Cores6C/6T4C/4T4C/8T
PassMark single~1,470~1,950~2,050
PassMark multi~4,210~5,700~7,700
Single-thread gain~+33%~+40%

The storage row may matter more than the CPU row. Option A's controller runs in IDE mode on SATA II — no NCQ, no reliable TRIM. Chunk loading and world saves are bursty random reads that stall the main tick thread while they complete. Moving to NVMe shows up as fewer TPS dips rather than a better average, and dips are what players actually feel.

3.8 GHz is a boost figure. A 35 W part in a 1 litre chassis will hold ~3.2–3.4 GHz all-core under sustained load, so the single-thread advantage holds up better than the multi-thread one.

Where Option A genuinely competes: four or more simultaneously busy instances. Six Piledriver integer cores against four Zen cores is roughly a wash on aggregate throughput — about 5.3 FX-equivalent cores on a 2200GE. It still loses on the metric players feel, because each world's tick rate is bound to a single thread.

Two rows where the FX wins outright: heap ceiling (20 GB against 16 GB until the kit lands) and sustained all-core clocks, since it has 95 W and no thermal envelope to respect.

Identify the thermal build first

HP shipped the 705 G4 DM with both 35 W (GE) and 65 W (G) processors, and the two get different thermal hardware. They are not interchangeable, and the difference drives every decision below.

35 W build65 W build
HeatsinkAluminiumCopper
Top panelSolidPerforated
CPU2400GE / 2200GE2400G / 2200G
Brick65 W90 W

Two-minute check: open the lid, look at the heatsink colour, read the watt rating on the brick.

The one thing that must not be got wrong. On the 65 W build the perforated top is a primary intake, and covering it makes the fan work measurably harder. A printed sleeve is the single largest threat to this machine's cooling — larger than the workload is. Load the mount STL in the slicer and confirm the top is open above the perforated area; cut it open before printing if it isn't. This check outranks everything else here.

Do it all while the case is open

The case comes apart for the drives and the RAM regardless, so do these in one session.

Blow out the fin stack5–15 °C
Repaste with MX-75–10 °C
Pads on VRM + chipsetIndirect
Pad the P34A60 to the chassis10–20 °C on the SSD
Fit the AX2 in the caddyConfirm the caddy exists first

The fin stack is the biggest single win on a used mini — dust packs where you cannot see it — and factory paste is 2019 vintage. NVMe throttles hard with no airflow, which is what the M.2 pad is for.

Free levers, and they are AMD ones. Set the fan profile to maximum cooling; HP's defaults assume a desk, not a rack. Cap cTDP in BIOS if HP exposes it — a Minecraft server is bound by 1–3 threads and does not need sustained all-core boost. On Linux the tool is ryzenadj for STAPM/PPT limits, not intel_rapl or MSR 0x150.

Raven Ridge has no equivalent of Intel's undervolt offset interface. Power limits are the lever here; voltage offsets are not available.

Confirm AHCI rather than RAID before installing. Unlike Option A this should already be correct, but it is a two-second check against a reinstall.

Placement: not directly above the media server's rear 80 mm exhausts, and leave the U above it clear unless whatever sits there has an open bottom — stacking on a perforated top chokes it. Preferred position is at or near the network shelf: low draw beside low draw, away from the 4U.

Validation — and the go/no-go

Baseline the FX rig before you migrate anything. It is running today, and this cannot be done afterwards:

/spark tps · /spark profiler start --timeout 300

Record MSPT, not TPS. TPS pins at 20 until it doesn't; MSPT shows the actual headroom.

< 20 msBoth boxes idle — pick on power and rack space
20–40 msNormal load — expect the HP ~30% lower
> 40 ms, spikes past 50Already dropping ticks — real, visible headroom

Then load the HP with a populated Minecraft instance for one hour, not stress-ng. A game server's thermal shape is nothing like an all-core torture test. Watch it with sensors (k10temp reports Tctl/Tdie) and watch -n1 "grep MHz /proc/cpuinfo", and watch both drives too — nvme smart-log /dev/nvme0 and smartctl -a /dev/sda. The NVMe should stay clear of its throttle point once padded; if it does not, the pad is the problem, not the workload.

Pass criteria: clocks hold ~3.2 GHz+ all-core with no sustained drop toward base. Raven Ridge Tctl throttles at 95 °C, and sustained 75–85 °C under load is normal and harmless. Temperature alone is not a failure — only clock collapse is.

If tick rate is poor at acceptable temperatures, the cause is JVM heap and GC configuration, not cooling. Do not buy hardware for a software problem.

Eight checks, all must pass. Any failure falls back to Option A with nothing lost.

1 · RAM channel configPassed — 2× 8 GB, dual-channel
2 · 2.5″ caddy present or sourcedBlocking for the AX2 — else data on M.2 only
3 · Exact CPU; 4C/8T preferred4C/4T needs the note below
4 · Thermal build; mount clears the vents→ cut the STL, else shelf-mount
5 · M.2 slot count, before ordering two drives→ one drive + the 2.5″
6 · Mount fits the 705 bezel and VEVOR ears→ sand/scale, else shelf-mount
7 · One-hour load, clocks hold→ hardware fixes, then A
8 · MSPT beats the FX baselineThe real test

If it turns out to be a 2200GE (4C/4T): four threads against the FX's six cores is acceptable for one or two instances. If you run three or more populated worlds simultaneously, benchmark before committing — that is the one configuration where Option A's core count could genuinely hold up.

Only after measurement, and in this order: swap to the 65 W thermal module (~$25–30 used) if it pairs an aluminium heatsink with a 65 W CPU; replace the fan (~$25–30) if it is audibly worn or the RPM curve looks wrong; a 40/60 mm fan on a printed bracket (~$10) as a last resort. Cutting the top and bolting on a tower cooler is not on the list — that rebuilds the 2U we just deleted.

What changes if B is chosen

LineOption AOption B
ChassisRosewill 2U, $99.99Printed 1U mount
Rosewill units needed21 — Stock flag clears
MSI A750GL units21
Boot driveAX2 256 GB SATA, $52.99P34A60 256 GB NVMe
Data driveAX2 1 TB SATAAX2 1 TB SATA — kept
AX2 "SATA II unreachable" noteAppliesVoid — SATA III AHCI
2.5″ drive caddyn/aAdd if absent, ~$15–25
RAM20 GB DDR3, have16 GB DDR4 dual-channel, have · 32 GB kit only if heap needs it
2.5″→3.5″ adapters20
Rail sets43
Game server U2U1U
Spare U1U2U
Draw~160 W~10–30 W
Weight~20 lb~3 lb
Cooler <70 mm checkOpenClosed — n/a
IDE→AHCI checkOpenClosed — n/a

A gap Option B introduces, worth stating plainly: with the 705 there is no out-of-band management anywhere in the rack. It is an AMD platform, so there is no AMT/vPro KVM to fall back on, and recovery from a failed boot means a keyboard and a monitor at the rack. Not a blocker — nothing in this build ever had it — but it is a real property of the choice rather than a benefit.

Unchanged either way: absent from the storage island, GS116 port 3, on the BR1000MS, blue cable. The one thing that changed for both options is NUT — the game server is no longer the BR1000MS's USB listener, because both UPS cables now land on the N2+.

Rail count needs reconciling before ordering. The rail row counts a set for the UPS, but the CyberPower row says rails are included. It may be 2 sets, not 3.

The 17 lb saved does not change the rack rating question. That is still driven by the two UPS units and the NAS, and still needs settling before either goes in.

What happens to the FX-6300

Do not rack it as a second node. It is a 95 W platform that idles high, with a SATA II controller in IDE mode — roughly $75–125 a year in electricity at 24/7, against $11–35 for the mini. There is no meaningful resale either: the AM3+ board and the DDR3 together are worth less than shipping them.

Give it a job instead: rehearse the NAS. OMV, mergerfs and SnapRAID on junk drives — break the pool, rebuild it, restore from parity, twice. Work out the mergerfs create policy that keeps show seasons together. Practise the SnapRAID sync and scrub cadence.

It is also the right box to drill the IDE→AHCI switch, with initramfs and UUID fstab, and the NUT master/client split — because bricking it costs nothing. Powered off between sessions, all of that is free, and it stays a cold spare for the game server.

What to avoid is leaving it powered on "in case", doing nothing, at ~$100 a year.

Option A below — the spec of record. Built on an AM3+ Gigabyte platform already on hand and running today. 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 drives 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.
This objection is specific to the FX-6300 platform — on the 705 of Option B it is void, since that board is SATA III AHCI.
Confirmed SB7x0 at SATA II — about 275 MB/s, against this drive's 540 MB/s rating. Half of what you would pay for is unreachable on this board, whatever the price.
The price half of this flag is now stale and possibly reversed. $129.99 was flagged as roughly double a $50–70 market — that market is gone, and Crucial has left the consumer business entirely. Re-check against current comparable drives before substituting. 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 6 models · +1 if Option B

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.
ODROID N2+ 19″ rack mount Test earlyJonas Burkhard · Printables 9487301Thinnest-sourced model on this list by a wide margin — one STL, 23 downloads, zero makes, zero comments, no published U height and no hardware list. Nothing else here is that unverified, which is why it carries the flag.
Check the STL bounding box before slicing: a full-width 19″ panel is 483 mm and will not fit a 256 mm bed. Confirm clearance for the passive heatsink (~30–35 mm total, should clear 1U) and verify hole spacing against the VEVOR posts.
Load is trivial at ~200 g, so this print is about creep near the UPS heat, not weight.
EliteDesk Mini 1U mount Option B onlySpekkie3D · Printables 6589361Only printed if the game server goes Option B. Two halves joined with 6× M3×10 and hex nuts; the mini slides in from the back and seats against the facade bezel, with 2× M3×10 through the rear tabs stopping it creeping. A blank left bracket is included for single-PC use, which is our config. Print face-down, no supports. Each half is roughly 240×180 mm — check against the bed.
Well proven, unlike the N2+ mount: ~19k downloads, 113 makes and comments, 12 remixes, updated October 2025.
But it was designed around the 800-series bezel, and ours is a 705. The 705 G4 DM shares the 1 litre chassis with the 800 G4 DM, and the commercial ModMount family explicitly covers 705 G3–G5, so it should fit — but the 705's front port layout differs. Check the facade cutouts against the actual machine before committing filament.
We deviate from the author's material recommendation. They suggest PLA because shrinkage makes the front lip a tight fit. The PETG/ASA rule wins anyway — this bracket is cantilevered off the front posts in an open frame near a 4U's exhaust, and PLA softens around 60 °C. Fit is the easier problem: print a ~20 mm test slice of the facade, then sand the inside chamfer with 120 grit, or scale X/Y by +0.3–0.5% and re-check the ear hole spacing.
Two things the model does not solve. There is no power-brick arm — use the side cable brackets on a rear post or velcro it under the network shelf, and decide before the cables are dressed. And top-panel clearance, which is critical on the 65 W build.

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.

Every price on this sheet is stale — read this before ordering

The NAND and DRAM markets moved sharply while this sheet was being written, and they moved up. NAND contract prices have multiplied roughly 4.2–4.5× over three quarters. 2 TB NVMe drives that ran $120–150 a year ago now run $300–480. Micron exited the Crucial consumer business entirely, with product ceasing to ship in February 2026. DDR4 followed, and DDR4 SODIMM is worse than most — an end-of-life line with capacity redirected elsewhere.

This inverts one of the sheet's own conclusions. The Price flags on both AX2 drives were set against a market where the 1 TB sat around $36–50, which is what made $129.99 look like double the going rate. That comparison no longer holds. Re-check against current comparable drives rather than against the old note — the flag may now be pointing the wrong way.

Both AX2 Price flagsStale · re-check, do not assume
The ~$40 DDR4 SODIMM kit estimateUnreliable · reasoning holds, number may not
256 GB boot / 1 TB data sizingReinforced
Media server 1 TB → 8/10/14 TB pathRe-price before deciding

The sizing decisions come out stronger, not weaker. In a market like this the rule is to buy the capacity you will actually use — unused terabytes are expensive insurance. The 256 GB boot drive and the 1 TB data drive are both right for that reason, and the 1 TB is right despite being ~10× the stated need only because it is the machine's only bulk volume.

Nothing on this sheet is a current quote. Verify every figure at checkout. The subtotals are kept because the relative comparisons — what Option B deletes, what a second PSU costs — survive a moving market. The absolute numbers do not.

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
ODROID N2+~4 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.

Option B changes this arithmetic more than anything else on the sheet. The 705 G4 DM draws ~10–30 W against the FX-6300's ~160 W, which takes the BR1000MS from ~194 W to ~60 W — about 10% load, and runtime from roughly twenty minutes to over an hour. The unit stops being a shutdown window and becomes an actual reserve.

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
ODROID N2+ + printed mount<1 lb<1 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.

The N2+ is a rounding error at ~200 g plus its bracket, which is why that print is about creep near the UPS heat rather than about load. Option B would take ~17 lb off the game server line — welcome, but it does not change the rating question, which is driven by the two UPS units and the NAS.

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 + ODROID N2+ + 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.

The N2+ is on the BR1000MS rather than the CyberPower, and that is deliberate. It is the box that must outlast every server it shuts down, and it holds both UPS data cables. Putting it on the unit that carries the media server would mean the NUT master and its heaviest client draining the same battery.

An outage window nobody had measured. The panel keeps hearing from the house for as long as the WAN path holds, not as long as the office unit holds. Modem and both intermediate eeros are on the BX1500M and the BE850M2, so the path is protected — but it is those units' runtimes, not the office unit's ~20 minutes, that bound how long the outage stays visible from outside. Currently unmeasured, and worth a number.

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.

Both USB runs land on the N2+, so there is still only one shutdown path. Two units, two data cables, but one upsd and one master upsmon — every server is an identical slave pointed at U16. The simplicity that splitting the load used to cost has been recovered: you get the extra five minutes and one config.

The N2+ adds ~4 W to the BR1000MS, taking it from ~190 W to ~194 W. Not enough to restate the table.

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
Five agents, 30 days full resolution~860k rows · <350 MB
Hourly rollups, one year~44k rows · noise
Debian + Postgres + binaries~10 GB

Five agents now — three servers, the NAS when it lands, and the N2+. Even with the retention job never written, that is roughly 2.6 GB a year, or a decade of headroom on 40 GB.

Set retention before the first agent connects anyway — but for the right reason. It is an index-size and query-speed decision, not a capacity one, and being clear about which problem you are solving stops it being deferred as "we'll deal with it when the disk fills". The disk will not fill.

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
8ODROID N2+ · one-foot patch from U16
9–16Spare

The N2+ is wired only — no onboard wireless — and sits at U16 directly below this switch. Blue cable, main LAN, same as every other onboard NIC. It needs a fixed DHCP lease by MAC like the servers do, because the NUT slaves need a stable name for it.
Not on the storage island: gigabit-only, no storage traffic, and a 5-port switch has no room to spare.

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.

The telemetry path is protected end to end

This wasn't planned and it happens to be right, so it is worth stating as a property of the design rather than leaving it to luck: the N2+'s entire path out of the rack — GS116, GS108, office eero — is already on the BR1000MS alongside the N2+ itself. The one machine that must keep reporting during an outage shares a battery with every hop it needs to do so.

Combined with the modem and both intermediate eeros upstream, the path from the N2+ to the VPS is on battery with no exceptions.

One ambiguity it does not solve. Because the link is wired-only, a dead GS116 or a bad patch cable takes the N2+ off the network along with all four servers. The panel still catches it — five agents going quiet at once is unmistakable — but it cannot distinguish the rack is down from the switch is down, and those are very different 2am problems. A ~$10 USB wireless dongle associating to the office eero as a backup path would resolve exactly that. Against it: a second interface on a box whose job is to be simple, plus route metrics to get right so it never becomes the primary path. Left undecided on purpose.

One Homebridge constraint while it is in mind: HomeKit discovery is mDNS, so the N2+ must stay in the same broadcast domain as the phones and the eero-attached accessories. Flat DHCP from the eero across unmanaged switches satisfies that today. If the main LAN is ever segmented, Homebridge is the thing that breaks first and least obviously.

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. The bottom 2U is reserved for the second CyberPower rather than sitting empty. Everything still adds to twenty.

The N2+ took half of what used to be the spare 2U. The elevation summed to exactly twenty with no free U, so its mount had to come from somewhere: U16 for the N2+, U15 still genuinely spare. USB from U16 down to the CyberPower at U3–4 is roughly 4 ft internal, well inside the 5 m limit, and the BR1000MS sits on the floor at the same end.

The storage switch tray stays a separate print, and that was checked rather than assumed. Combining it with the N2+ mount into one 1U tray was considered and rejected: taking the island switch off the network shelf doesn't shrink that shelf below 2U, because the eero is taller than 1.75″ on its own. The combined tray would cost a real U instead of saving one.

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. Option A only — Option B deletes this check.
  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. Option A only — Option B deletes this check.
  10. STL bounding box on Printables 948730 before slicing. A full-width 19″ panel is 483 mm and does not fit a 256 mm bed. One file with no makes means nobody has confirmed this.
  11. N2+ heatsink clearance in that mount, and EIA-310 hole spacing against the VEVOR posts.
  12. USB cable reach from U16 to the CyberPower at U3–4 and to the BR1000MS on the floor. Both are inside the 5 m USB limit, but confirm the actual lengths before the NUT wiring is dressed.
  13. Confirm the connector types for both UPS units. The CyberPower and the BR1000MS both use USB-B, so that is two USB-A→B cables and neither unit includes one.
  14. Set the microSD mitigations before the N2+ is racked — recorder purge, tmpfs logs, swap off, and the read-only-remount alert. Stage one runs on the card, so these are the difference between a card that lasts and one that doesn't.
  15. Add the read-only-remount alert to the N2+'s agent. Flash storage here exposes almost no SMART, so the practical signal is the classic death signature — ext4 remounting read-only. Alert on that, on free space, and on a heartbeat file failing to write. A card that has gone read-only will keep serving the NUT daemon from page cache for a surprisingly long time while silently recording nothing.
  16. When the eMMC lands: fit it with the card still in, confirm the target device by size in lsblk — a dd to the wrong mmcblk wipes the running system — then write, expand and set boot order. Locate the board's microSD-boot override switch first; it is the escape hatch if the image is bad, and Petitboot in the 8 MB SPI flash is the second one.
  17. USB port budget on the N2+. Four ports; two UPS cables and one Bluetooth dongle account for three. One stays free on both storage stages, since boot is never on USB.
  18. Read rack ambient at U16 and N2+ SoC temperature after a week in place, with the media server under load. This is the measurement that decides the fan question. Room temperature is not a substitute — the 4U exhausts below it in an open frame.
  19. Profile the 705 before ordering anything for it. Option B only. RAM is already answered — 2× 8 GB, dual-channel, which was the blocking one. Two left, and one session settles both:
    lscpu | grep 'Model name'
    sudo lspci | grep -i 'non-volatile\|network'
    The CPU decides the multi-instance answer (4C/4T against 4C/8T), and one of the two listed M.2 slots may be a 2230 WLAN slot rather than a second NVMe — confirm before buying two drives.
  20. Check the 705 has its 2.5″ drive caddy during teardown. Option B only. HP Desktop Minis configured M.2-only frequently shipped without the bracket and its SATA/power cable. It is a separate HP part, ~$15–25 used, and without it the AX2 has nowhere to mount — a drive ordered against a bay that cannot hold it. Check this in the same teardown as everything else.
  21. Check whether the OEM NVMe is still installed, before buying a boot drive. Option B only. sudo nvme smart-log /dev/nvme0 — a low percentage_used may remove the need to buy the P34A60 at all.
  22. Add up what the running instances are actually allocated. Option B only. The 705 has 16 GB against the FX rig's 20 GB, and that gap is the last real argument against the move. Past roughly 12 GB of combined heap, Option B is worse on day one and the ~$40 kit stops being optional.
  23. Baseline the FX rig with spark before migrating anything. Option B only. /spark tps and a 300-second profile, recording MSPT rather than TPS — TPS pins at 20 until it doesn't, MSPT shows the real headroom. This cannot be done after the move, and it is the number that settles whether the gain came from the CPU or from getting off the IDE-mode SATA controller.

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. Rack the N2+ at U16, below the GS116. Set its microSD mitigations at the bench first — recorder purge, tmpfs logs, swap off, read-only-remount alert — because stage one runs on the card and those are what make it last. One blue patch up to GS116 port 8, and a fixed DHCP lease by MAC so the NUT slaves have a stable name.
  11. Run both UPS data cables to the N2+. BR1000MS by USB, CyberPower by USB, both into the same box at U16. Both units use USB-B, so that is two USB-A→B cables and neither UPS includes one. A UPS nothing is listening to is just a surge strip with a battery in it.
  12. One NUT master, on the N2+. Two usbhid-ups driver instances, one upsd, master upsmon. All three servers run slave upsmon pointed at it.
    This replaces the earlier two-master arrangement, and it buys three things: one config to get right instead of two, with every server doing the identical thing; a master that outlives the things it shuts down, at 4 W on the BR1000MS rather than a master that is itself mid-shutdown; and it closes the gap this sheet already flagged — the cloud server's link no longer crosses the other UPS's switches to reach its master, so the "dead BR1000MS leaves the cloud server running blind" case disappears instead of being papered over with a timer.
  13. Keep the loss-of-contact shutdown on all three slaves anyway. It is cheap, and the N2+ is now a single point of failure for the shutdown path. One master is simpler, not safer.
  14. The N2+ must not issue the outlet-kill for either UPS. Standard NUT ordering has the master cut power once the slaves are down — but the N2+ is not powered by the CyberPower at all, and it needs to stay up on the BR1000MS. Handle POWERDOWNFLAG deliberately: each server shuts itself down, and nothing tries to cut power to a UPS it isn't plugged into.
  15. 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.
  16. 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.
  17. 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 at the time it was flagged. Every one of these is now stale — NAND and DDR4 have risen sharply since, so re-check against current comparable parts rather than trusting the flag. See the pricing note in the math.
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.
MonthlyA recurring cost, not a purchase. Sits outside the build total, which is one-time money, and carries its own tile at the top.
Option B onlyNeeded only if the game server goes the EliteDesk route. Not bought or printed while Option A is the spec of record.
LaterWanted eventually, not decided. Sits outside every total — some hold a rack position, some carry a price, none are committed.