Docs menu Architecture

Hardware

Every physical piece of the lab, from the five Galaxy nodes and their drives to the UniFi gear, the two UPS units and the workstations. Each table says what the hardware is and what I use it for.

Updated Source in the repo: Infrastructure/Hardware/Nodes.md Infrastructure/Hardware/Power.md Infrastructure/Hardware/Components/Drives/README.md Infrastructure/Hardware/Workstations/ Infrastructure/Network/UniFi/README.md

The lab is small: five Proxmox nodes, one UniFi gateway, three switches, one access point, two UPS units and two Windows workstations. This page lists all of it. The memory and storage figures are the 2026-09-24 readback through pvesh, and the module and disk models come from an SSH read of lscpu, dmidecode -t 17 and lsblk on all five nodes on 2026-09-27.

How the nodes are clustered is on Proxmox cluster, and how the network gear is configured is on Network.

At a glance

CategoryCountNotes
Proxmox nodes530 physical cores, 38 hardware threads, 114.78 GiB usable memory
Boot drives5One NVMe per node
Data drives6Two SATA SSDs and four SATA HDDs
Gateway1Ubiquiti Cloud Gateway Fiber
Switches3One Switch Pro Max 16 PoE and two smaller UniFi switches
Access points1Tri-band UniFi AP
UPS units2APC 1500 VA / 900 W
Workstations2Jedi PC (admin) and ObiPC (end user)

Galaxy nodes

The node names are colors. Grey is the founder and carries most of the load; the other four are small Intel machines.

NodeModelCPUCores / threadsInstalled RAM (usable)GPUDisksPower
grey-serverNot recordedAMD Ryzen 7 3700X8 / 1664 GB (62.72 GiB)NVIDIA GeForce GTX 1080 Ti, discrete1 TB NVMe, 2 TB SATA SSD, 2 TB SATA HDDUPS-02
purple-serverNot recordedIntel Core i5-8500T @ 2.10GHz6 / 616 GB (15.46 GiB)Intel UHD Graphics 630, integrated256 GB NVMe, 250 GB SATA SSDNot reported
blue-serverLenovo ThinkCentre M910qIntel Core i5-7500T @ 2.70GHz4 / 46 GB (5.68 GiB)Intel HD Graphics 630, integrated256 GB NVMe, 500 GB SATA HDDUPS-02
red-serverNot recordedIntel Core i5-8500T @ 2.10GHz6 / 616 GB (15.46 GiB)Intel UHD Graphics 630, integrated256 GB NVMe, 1 TB SATA HDDUPS-02
green-serverLenovo ThinkCentre M920qIntel Core i5-8500T @ 2.10GHz6 / 616 GB (15.46 GiB)Intel UHD Graphics 630, integrated256 GB NVMe, 320 GB SATA HDDNot reported

Blue’s model comes from its BIOS record (M1AKT35A, dated 2018-03-21), Green’s from the PXE and memory-fault records (BIOS M1UKT45A, dated 2019-07-11). The repository does not name the chassis for Grey, Purple or Red, so I leave those cells as not recorded rather than guess.

What each node does today:

NodeRoleMemory in use (2026-09-24)
grey-serverWorkload host for the development VMs, the SIEM, the identity plane, the main Docker host and every template. Also owns the USB data link to UPS-02.51.61 GiB of 62.72 GiB
purple-serverApplication and production VMs on its NVMe11.68 GiB
blue-serverFour small LXCs: automation, monitoring, the access stack and a second Docker host2.99 GiB
red-serverThe media container, with its library on the local HDD3.29 GiB
green-serverNothing. It has unresolved host memory errors from 2026-09-20 and holds no guests until a full memory test passes.1.91 GiB

Warning: Green’s memory fault is open. An online memtester pass on 2026-09-20 reported 25 failure lines, and a bounded 8 GiB test on 2026-09-27 failed six seconds after launch with a possible bad address line. Neither module nor slot is isolated yet, and that needs physical access.

Memory modules

NodeSlot layoutSpeed
grey-server4 x 16 GB DDR4, G.Skill F4-3600C18-16GVKConfigured at 3200 MT/s
purple-serverMicron 8ATF1G64HZ-2G6E1 8 GB + SK Hynix HMA81GS6AFR8N-UH 8 GB2400 MT/s
blue-serverSamsung M471A5644EB0-CPB 2 GB + SK Hynix HMA851S6AFR6N-UH 4 GB2133 MT/s
red-server2 x Micron 8ATF1G64HZ-2G6E1 8 GB2666 MT/s
green-serverMicron 8ATF1G64HZ-2G6E1 8 GB + SK Hynix HMA81GS6CJR8N-VK 8 GB2666 MT/s

Blue and Green swapped memory on 2026-07-31: I moved Blue’s 8 GB module to Green and put a 2 GB Samsung module in Blue’s open slot. That is why Blue runs on 6 GB and has the least headroom in the cluster. Green’s two modules are non-ECC, and Linux exposes no EDAC instance on that machine, so the memory test is the only way to find the fault.

Drives

Slotted in the nodes

NodeDeviceModelCapacityPower-on hoursWear usedHealthRole
greyNVMeCrucial CT1000P310SSD81 TB7,9622%PASSEDBoot and local-lvm
greySATA SSDCrucial CT2000BX500SSD12 TB8,0232%PASSEDssd-lvm1 thin pool
greySATA HDDToshiba DT01ACA2002 TB45,831n/aPASSEDhddpool-1 ZFS
purpleNVMeToshiba THNSF5256GPUK256 GB23,14830%PASSEDBoot and local-lvm
purpleSATA SSDSamsung SSD 850 EVO 250GB250 GB45,242see notePASSEDssd-lvm2 thin pool, empty
blueNVMeSamsung MZVLW256HEHP-000L7256 GB48,2939%PASSEDBoot and local-lvm
blueSATA HDDWDC WD5000LPVX-08V0TT5500 GB23,215n/aPASSED extended testUnused, empty GPT
greenNVMeSamsung MZVLB256HAHQ-000L7256 GB36,96511%PASSEDBoot and an empty local-lvm
greenSATA HDDHitachi HTS723232A7A364320 GB43,950n/aFAILED extended testBlank, do not use
redNVMeSamsung MZVLB256HAHQ-000L7256 GB25,7837%PASSEDBoot and local-lvm
redSATA HDDSeagate ST1000LM035-1RK1721 TB24,007n/aPASSEDMedia library bind mount

Hours and wear are from the dated smartctl captures in July 2026. The 850 EVO publishes no percentage-used field; its 2026-07-28 capture shows a normalized wear-leveling value of 15 out of 100 with zero reallocated, uncorrectable and CRC errors.

A few of these have a story:

  • Purple’s boot drive was replaced on 2026-07-25. The Samsung MZVLB256HAHQ it shipped with reached 169% of rated write endurance after 49,373 hours and about 105 TB written, reported a degraded-reliability critical warning and failed a short self-test. I cloned it with Clonezilla onto the lower-mileage Toshiba and added the 850 EVO on the SATA port at the same time.
  • Green’s Hitachi HDD failed its extended test on 2026-07-31. The test stopped at 60 percent with a read failure and the pending-sector count went from one to two, while the top-level SMART flag still said PASSED. I classify drives from the completed self-test, not the flag. The disk stays slotted for identification only, with its partition metadata wiped.
  • Blue’s WDC HDD passed a full extended read the same day, but it peaked at 48 C against the 32 C maximum operating temperature the drive itself reports. I want a temperature check under sustained load before it carries data. It also arrived with an old Proxmox volume group named pve, which collided with Blue’s live one on the 2026-07-30 boot; I wiped it after confirming nothing on it was needed.

Spares and retired

DriveCapacityPower-on hoursWear usedStatus
Samsung MZVLB256HAHQ-000L7 (M.2 NVMe)256 GB54,35713%Spare. Same model Red and Green boot from, so it is the drop-in if one wears out.
WDC PC SN720 SDAQNTW-512G (M.2 NVMe)512 GB29,6036%Spare. Passed an extended self-test.
Samsung MZVLB256HAHQ-000L7 (M.2 NVMe)256 GB49,373169%Retired 2026-07-25 from Purple. Kept only as the rollback path for Purple’s clone.

I record drives by model and the last four characters of the serial, because four of my NVMe drives share one part number and the suffix is the only thing that tells their captures apart.

Network hardware

DeviceModelFirmware (2026-09-24)UplinkPurpose
Ahsoka GatewayUbiquiti Cloud Gateway Fiber (UCG-Fiber)5.1.33.34087Internet 1 WANRoutes all 16 LANs, runs the zone firewall, local DNS, DHCP, the WireGuard servers and Threat Management
Bane Switch POEUbiquiti Switch Pro Max 16 PoE (USW-Pro-Max-16-PoE)7.5.15.1714610 GbE to Ahsoka port 6Core switch; Grey, Purple, Blue and Green plug in here
Mace SwitchUniFi device code USWED352.1.8.9712.5 GbE to Bane port 15Downstream switch; feeds the access point and Jango
Jango SwitchUniFi device code USWED352.1.8.9712.5 GbE to Mace port 4Downstream switch; Red plugs in here
Anakin APUniFi device code UAPA6A9, 2.4, 5 and 6 GHz8.7.11.19419Mace port 3The only access point

All five were online with no upgrade pending on 2026-09-24. Their management interfaces live on the untagged Management network, which holds network gear only.

Node switch ports, from the 2026-07-10 check and the Green install:

NodeSwitchPortProfile
grey-serverBane Switch POE14Proxmox-Trunk
purple-serverBane Switch POE2Proxmox-Trunk
blue-serverBane Switch POE3Proxmox-Trunk
green-serverBane Switch POE4Proxmox-Trunk, PoE off (was Server-Provision during the PXE install)
red-serverJango Switch3Proxmox-Trunk

Power

UnitModelRatingConnected loadsMonitoring
UPS-01APC Back-UPS Pro BR1500MS2 (recorded by eye)1500 VA / 900 W, 10 outletsJedi PC onlyNone since 2026-08-28
UPS-02APC Back-UPS RS 1500MS2 (as reported over NUT)1500 VA / 900 W, 10 outletsAhsoka Gateway, Bane Switch POE, grey-server, blue-server, red-server, Verizon ONTUSB data to grey-server, read over NUT by the monitoring host

UPS-01 and UPS-02 are my inventory IDs; I have not labelled the physical units. I installed both on 2026-07-22. Red started on UPS-01 and moved to UPS-02 on 2026-08-28, which also unplugged UPS-01’s USB data cable. On 2026-09-07 I decided UPS-01 stays unmonitored, because it powers only the workstation.

The last readings I have:

UnitDateStateChargeLoadEstimated runtime
UPS-012026-07-22Online100%58%675 s
UPS-022026-08-31Online100%19%2,424 s

UPS-02’s load rose from 17 to 19 percent and its runtime estimate fell from 2,895 to 2,424 seconds between those dates, which is Red arriving on the unit. These are point-in-time values, not rated runtimes. Purple and Green have no recorded power source.

Note: I have not recorded the physical location, purchase date, battery installation date, exact outlet, battery-backed versus surge-only bank, or measured wattage of either UPS. The inventory does not claim them.

Placement and remote power

Green is rack-mounted with no display attached. The rack has no managed PDU outlet assigned to it, and Green’s Intel AMT management ports do not answer, so when its first PXE install hung on 2026-07-31 the only recovery was the physical power button. Bane port 4 has PoE disabled and Green runs from its own Lenovo AC adapter, so cycling the switch port only interrupts Ethernet. The running driver reports Wake-on-LAN magic-packet wake enabled, but that wakes a sleeping machine and cannot reset a hung one. The remote power research lists the two real options: provision AMT locally, or put the adapter on a switched outlet.

Workstations

Jedi PC

My Windows 11 Pro administration workstation, on the Secure network (VLAN 50) and the only load on UPS-01. Its computer name is DURESAGAMINGPC.

PartDetail
MotherboardASUSTeK TUF GAMING X870-PLUS WIFI, AMI BIOS 1402 (2025-11-11)
CPUAMD Ryzen 9 9950X3D, 16 cores / 32 threads
Memory2 x 16 GB G.Skill DDR5 F5-6000J3038F16G, rated 6000 MT/s, running at 4800
GPUNVIDIA GeForce RTX 5070 Ti, plus the Ryzen iGPU
StorageSamsung SSD 9100 PRO 2TB (C:) and Samsung SSD 990 PRO 2TB (D: Storage)
NetworkRealtek PCIe 2.5GbE
OSWindows 11 Pro, installed 2025-07-15

ObiPC

The first physical end-user workstation on the ad.alphasecunited.com domain, on Secure Client (VLAN 60) with DHCP. It joined on 2026-09-11 and was reinstalled and rejoined on 2026-09-18 after a corruption I did not diagnose. I shut it down on 2026-09-20.

PartDetail
MotherboardASUS TUF GAMING B650-PLUS WIFI, AMI BIOS 3201 (2025-01-10)
CPUAMD Ryzen 7 7700X, 8 cores / 16 threads
Memory2 x 16 GB G.Skill DDR5 F5-6000J3636F16G, running at 4800 (no EXPO profile)
GPUNVIDIA GeForce RTX 3070, plus the Ryzen iGPU
StorageSamsung SSD 980 1TB (C:) and Crucial P310 500GB (D: Storage, empty)
NetworkRealtek 2.5GbE wired (domain-facing); Realtek Wi-Fi 6 adapter, disconnected
FirmwareUEFI with Secure Boot on, AMD firmware TPM 2.0
OSWindows 11 Pro 25H2, build 26200

Other admin devices

Two laptops on Trusted (VLAN 10) have no hardware record yet: a Surface Pro (Model 1796) running Ubuntu, and Parrot OS-Mac, a MacBook Pro (MacBookPro14,3) running Parrot Security 7.3. Parrot OS-Mac got the same admin access as my MacBook Air M3 on 2026-09-27. The MacBook Air and a Pixel phone are the other personal admin devices the firewalls name.

Records

Written from the public Homelab repository on GitHub, which records the lab's changes, incidents and current state.