UPS and Power Sizing for the Homelab in 2026
By LK Wood IV · 2026-05-16 · ~14 min read · St. Louis County, MO
A homelab without a UPS is a data integrity incident waiting to happen. An unclean power-off hits a Proxmox cluster mid-write the same way it hits any other server: ZFS journals, VM checkpoints, and TrueNAS datasets can survive it, but they do not have to — and the margin between “survived” and “corrupted” is thinner than most people expect until they lose a pool after a brief power flicker.
This article covers everything between buying decision and runtime calculation: VA vs W, line-interactive vs online double-conversion, how to read a runtime curve, how much power your specific homelab actually pulls (my bench measurements from the P3 P4400 are below), how to wire NUT into Proxmox so VMs shut down before the battery reaches critical, and the battery replacement math you need to know before the first cell dies.
How I tested
Numbers in this article come from my homelab in St. Louis County, MO in May 2026. I measured idle and full-load draw using a P3 Kill A Watt P4400 meter. Hardware under test: a Ryzen 5600 Proxmox node with 64 GB DDR4 and four PCIe NVMe drives, a Synology DS923+ with four 16 TB Toshiba MG09 spinning drives, a CyberPower CP1500PFCLCD UPS (1500VA / 900W), a 24-port UniFi USW-24 switch, and a UDM-Pro running UniFi Network 4.1. I measured each device in isolation — meter between the wall and the power strip supplying only that device — then measured the full stack together on a common circuit. All readings are at-the-wall and include PSU efficiency losses.
Runtime tests on the CP1500PFCLCD used the built-in UPS self-test plus a manual load test at three load levels. The battery was purchased December 2024 — approximately five months old at test time. Last verified: 2026-05-16 by LK Wood IV.
VA vs W: why they are not the same number
Almost every UPS ships with two power ratings: a VA (volt-ampere) rating and a W (watt) rating. The CP1500PFCLCD is rated 1500VA / 900W. That gap is not a typo.
VA is apparent power — the product of RMS voltage and RMS current regardless of phase relationship.
W is real power — the power that actually does work.
The ratio W/VA is the power factor. A pure resistive load (incandescent bulb) has a power factor of 1.0. Switching power supplies in servers and NAS units have power factors between 0.6 and 0.99 depending on whether they include active power factor correction (PFC). Any server PSU with active PFC — virtually all units sold for the homelab market after 2012 — runs 0.90–0.99. Older PSUs or cheap gear can pull the number to 0.6.
What this means for sizing: you cannot add up device wattages and buy a UPS rated to that wattage. You need to know the VA draw as well, and the UPS’s W rating must exceed your total watt draw.
Required VA = Total W load ÷ power factor
If you have 450 W of gear at a power factor of 0.9, you need at least 500VA of UPS capacity. If your load has mixed power factors — one good server PSU and a few uncorrected wall-warts — average conservatively.
| Device | Measured idle W | Estimated PF | Idle VA |
|---|---|---|---|
| Ryzen 5600 Proxmox node (64 GB, 4×NVMe) | 42 W | 0.97 | 43 VA |
| Ryzen 5600 Proxmox node (full CPU load) | 128 W | 0.97 | 132 VA |
| Synology DS923+ (4×16 TB spinning, idle) | 38 W | 0.90 | 42 VA |
| Synology DS923+ (4×16 TB, spin-up/resync) | 74 W | 0.90 | 82 VA |
| UniFi USW-24 switch | 17 W | 0.85 | 20 VA |
| UDM-Pro (firmware 4.1) | 22 W | 0.90 | 24 VA |
| Full stack — idle | 119 W | — | ~129 VA |
| Full stack — peak | 241 W | — | ~262 VA |
My full stack peaks at 241 W at the wall — roughly 262 VA. The CP1500PFCLCD is rated 900W / 1500VA. At peak draw I am using 27% of the watt rating and 17% of the VA rating. That is intentional: I want headroom for the stack to grow and long runtime at real loads.
The common failure mode is sizing a UPS to the wattage label on each device’s nameplate. Nameplate power is the rated maximum, not typical draw. A server that nameplate-says 300 W might idle at 45 W and peak at 150 W under real workloads. Size to measured draw or to expected peak, not to nameplate.
Line-interactive vs online double-conversion
The UPS market splits into three topologies. The two that matter for homelabs are line-interactive and online double-conversion.
Standby (offline) UPS — utility power passes straight through; battery kicks in on outage. Switchover time is 4–8 ms. Adequate for desktops; not appropriate for homelab servers and NAS where mid-write power loss is a real risk.
Line-interactive UPS — adds an autotransformer or buck-boost circuit so the UPS can correct voltage sags and surges without switching to battery. Switchover time is 2–4 ms on most models. This is the right pick for 80% of homelabs. The CP1500PFCLCD is line-interactive.
Online double-conversion UPS — input power is rectified to DC, then reinverted to AC. The load always runs on the inverter; the battery is always in the loop. Switchover time is effectively zero because there is no switchover — the load never touches utility AC directly. Double-conversion units also have a power factor of ~1.0 on the output side. They are heavier, louder, run hotter, and consume 5–10% more electricity than line-interactive at the same load. The APC Smart-UPS series (SMT and SRT lines) and Eaton 9-series are the most common double-conversion units in home racks.
For most homelabs, line-interactive is the right answer. The 2–4 ms switchover time is well within the holdup time of any modern server PSU (typically 16–20 ms per ATX spec). Double-conversion is worth the premium if you have equipment that does not tolerate a brief switchover glitch — some Ethernet switches reset during the transition — or if you need zero-transfer protection for a data acquisition setup.
| Feature | Standby | Line-interactive | Online double-conversion |
|---|---|---|---|
| Transfer time | 4–8 ms | 2–4 ms | 0 ms |
| Voltage regulation without battery | No | Yes | Yes |
| Output power factor | Utility (varies) | Utility (varies) | ~1.0 |
| Efficiency at 50% load | ~98–99% | ~95–98% | ~88–92% |
| Heat / noise | Low | Low–medium | Medium–high |
| Cost per VA | $ | $$ | $$$ |
| Right for homelab? | No | Yes | Only if zero-transfer required |
Reading the runtime curve
Every UPS ships with a runtime curve — a chart or table that maps load to runtime in minutes. Runtime curves are one of the most misread specs in homelab buying discussions.
The runtime curve for the CP1500PFCLCD (CyberPower product page):
| Load | Runtime |
|---|---|
| 900 W (100%) | ~3 min |
| 450 W (50%) | ~8 min |
| 270 W (30%) | ~16 min |
| 135 W (15%) | ~36 min |
| 90 W (10%) | ~55 min |
At my real idle load of 119 W (roughly 13% of rated capacity), the vendor curve puts me at 45–55 minutes. My manual load test at 120 W yielded 49 minutes — consistent with the vendor curve on a five-month-old battery.
What runtime you actually need. Most homelabs do not need 60 minutes of runtime. They need enough time for:
- NUT to detect the outage and signal Proxmox to begin VM shutdown (configurable; mine fires at 5 minutes on battery).
- All VMs to complete a clean checkpoint and power off (1–4 minutes depending on how many are running and whether any are pinned to high-memory workloads).
- The host OS to power off cleanly.
A total of 5–10 minutes of runtime covers clean shutdown on almost any homelab. You only need 30+ minutes if you have a ride-through workload — something that must stay online during a typical brief outage and only shut down on a long event.
Size for your shutdown window, not for “how long could I theoretically run.” This lets you buy a smaller or less expensive UPS and still protect data integrity.
How much does a homelab actually draw?
Practical breakdown by common configuration, combining my P4400 bench measurements and community data from ServeTheHome’s UPS coverage:
| Configuration | Typical idle W | Typical peak W | Minimum UPS W |
|---|---|---|---|
| Single mini-PC (N100/N305) + NAS | 18–35 W | 55–80 W | 200 W |
| Single Ryzen/Intel desktop node + NAS + switch | 80–130 W | 160–220 W | 300 W |
| Two-node Proxmox cluster + NAS + switch + router | 140–250 W | 280–450 W | 600 W |
| Full three-node Proxmox HA cluster + NAS + networking | 300–500 W | 600–900 W | 1200 W |
| GPU node added (RTX 5060 Ti under inference load) | +130 W idle | +350 W peak | +600 W |
If you run a GPU node like the RTX 5060 Ti build as part of your homelab, factor in the GPU’s TDP (the 5060 Ti is rated 180 W, measuring around 160 W under typical inference loads). Whether to put the GPU node on the UPS depends on whether it is running a service that needs clean shutdown — like a local inference server — or whether it is primarily a desktop workstation.
NUT integration with Proxmox
Network UPS Tools (NUT) is the open-source daemon suite that reads UPS status from USB or serial and signals connected nodes to shut down on low battery. Proxmox VE has native NUT support through its node settings panel, but configuring NUT directly in /etc/nut/ gives you more control over thresholds and VM-aware shutdown sequencing.
Installation and basic configuration
apt install nut nut-client
Check the USB device:
lsusb | grep -i cyber
# or
nut-scanner -U
/etc/nut/ups.conf for a CyberPower USB-connected UPS:
[myups]
driver = usbhid-ups
port = auto
desc = "CyberPower CP1500PFCLCD"
override.battery.charge.low = 20
override.battery.runtime.low = 300
The battery.runtime.low = 300 override tells NUT to trigger a low-battery event when estimated runtime remaining drops to 300 seconds (5 minutes) — enough headroom to complete a clean shutdown regardless of VM activity when the event fires.
/etc/nut/upsd.conf:
LISTEN 0.0.0.0 3493
/etc/nut/upsd.users:
[upsmon]
password = changeme
upsmon master
/etc/nut/upsmon.conf on the Proxmox master node:
MONITOR myups@localhost 1 upsmon changeme master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h now"
NOTIFYCMD /usr/sbin/upssched
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG ONLINE SYSLOG+WALL
Start and enable services, then verify the UPS is responding:
systemctl enable --now nut-server nut-client
upsc myups@localhost
upsc should immediately return battery charge, runtime estimate, and load percentage. If the driver fails to connect, check dmesg for the USB HID device and confirm port = auto is resolving correctly.
VM-aware shutdown via upssched
By default, NUT’s SHUTDOWNCMD fires a hard OS shutdown without pausing running VMs first. The cleaner path calls qm shutdown on each running Proxmox VM before the OS shutdown command executes.
The Proxmox community NUT wiki page covers the full upssched.conf pattern. The relevant script skeleton:
#!/bin/bash
# /usr/local/bin/ups-on-battery.sh
qm list | awk 'NR>1 && $3=="running" {print $1}' | \
xargs -I{} qm shutdown {} --timeout 120
sleep 30
/sbin/shutdown -h now
Chain this from upssched.conf with a timer event on ONBATT. My threshold is 5 minutes from the ONBATT signal before the script fires, plus 30 seconds for all VMs to complete shutdown before the host powers off.
For a Proxmox cluster with NFS-mounted storage from a TrueNAS node (see Proxmox vs TrueNAS vs Unraid storage backends 2026), shutdown order matters: VMs must complete shutdown before the NFS server goes offline. If compute and storage share one UPS, configure the NFS host as a NUT slave with a longer shutdown delay. If they are on separate UPS units, size the storage UPS slightly larger so it outlasts the compute UPS by at least the VM shutdown window.
Surge protection and UPS placement
A UPS is not just a battery. Its front-end surge suppression absorbs impulse events that would otherwise reach connected equipment. Most line-interactive UPS units include MOV surge suppression on all outlet banks, rated in joules.
The CP1500PFCLCD is rated for 900 joules of surge suppression. A direct lightning strike on a residential power line can release tens of thousands of joules — no UPS absorbs that. A typical line surge from a nearby strike or utility switching event is 25–300 joules, which is within spec.
Do not daisy-chain a UPS through a surge suppressor or extension cord. Either can introduce impedance that affects UPS load calculations, and some units will refuse to operate correctly if input ground continuity is not clean. Plug the UPS directly into a wall outlet, on a dedicated 20A circuit if possible.
Battery replacement TCO
Every sealed lead-acid (SLA) battery has a service life of approximately 3–5 years under ideal conditions (float temperature 20–25°C, moderate discharge cycles). Homelab environments are rarely ideal — high ambient temperature from a server closet accelerates cell degradation significantly.
CyberPower and APC both publish cycle-life curves showing how many charge-discharge cycles a battery sustains at different discharge depths. Shallow cycles (10–20% per event) extend life; deep cycles (80–100%) compress it.
Replacement batteries for the CP1500PFCLCD use two 12V 9Ah SLA cells (CyberPower part RB1290X2, ~$38 retail; third-party equivalents run $25–35 a pair). Replacement takes about 5 minutes with a screwdriver.
Recommended battery replacement schedule:
- Year 3: Run a 50% load test and check runtime against the vendor curve. If runtime has degraded below 60% of rated at that load, replace.
- Year 4: Replace regardless of test result.
- Year 5: If not yet replaced, do it now. A failed UPS battery does not fail gracefully — it may fail to carry any load on the next outage without warning.
Battery replacement cost per year:
| UPS model | Battery cost | Replacement interval | Annual cost |
|---|---|---|---|
| CyberPower CP1500PFCLCD | ~$38 OEM / ~$28 3rd-party | 3–4 years | $7–13/yr |
| APC BR1500MS2 | ~$45 OEM / ~$30 3rd-party | 3–4 years | $8–15/yr |
| APC Smart-UPS SMT1500RM2UC | ~$65 OEM hot-swap | 4–5 years | $13–16/yr |
| Eaton 5PX1500RT | ~$70 OEM | 4–5 years | $14–18/yr |
The total ownership cost of a line-interactive UPS over five years — unit cost, battery replacements, and the ~5% efficiency penalty at load — is lower than the cost of a single data recovery engagement on a corrupted NAS pool.
UPS picks for 2026
| Budget | Model | VA / W | Topology | Pure sine wave | Notes |
|---|---|---|---|---|---|
| ~$150 | CyberPower CP1500PFCLCD | 1500VA / 900W | Line-interactive | Yes | Best value for most homelabs; USB HID, NUT-compatible |
| ~$180 | APC BR1500MS2 | 1500VA / 900W | Line-interactive | Yes | APC warranty support; USB + SmartSlot |
| ~$250 | CyberPower CP2000PFCLCD | 2000VA / 1200W | Line-interactive | Yes | Right for two-node clusters or if a GPU node is on the UPS |
| ~$400–550 | APC Smart-UPS SMT1500RM2UC | 1500VA / 1000W | Online | Yes | Rack-mount; zero transfer; preferred for Proxmox HA clusters |
| ~$700+ | Eaton 5PX1500RT | 1500VA / 1350W | Online | Yes | Hot-swap battery; Gigabit card slot; rack-mount |
The “pure sine wave” column matters for active-PFC server PSUs. A UPS that outputs a simulated (stepped) sine wave can cause PSUs with active PFC to produce audible noise or fail to start cleanly when switching to battery. All models in the table output a true sine wave on battery.
What I run today, and why
My primary homelab circuit runs through a CP1500PFCLCD. At 119 W idle it delivers ~49 minutes of runtime — more than enough for NUT to complete a VM-aware shutdown sequence before the battery reaches the critical threshold. My ONBATT grace period is 5 minutes; low-battery threshold is 300 seconds of remaining runtime. Battery replaced December 2024. Annual operating cost: roughly $8–10 in electricity loss (at $0.12/kWh for inverter heat) and ~$10/year in battery amortization.
The networking stack — UDM-Pro, USW-24, patch panel — is on a separate smaller CyberPower CP900EPFCLCD. Keeping compute and networking on separate UPS units means the network stays up after compute shuts down, which is useful for remote access after a power event.
If I were sizing fresh today for a two-node Proxmox cluster with the NFS storage described in Proxmox vs TrueNAS vs Unraid storage backends 2026, I would start with a CP2000PFCLCD (1200 W) for compute and NAS together, and keep networking on its own sub-500 W unit. At three nodes or with a GPU inference node, I would move to the APC SMT1500RM2UC in a 2U rack slot.
The firewall decisions from Homelab Firewall and Router Stack 2026 are the other half of this equation. A pfSense or OPNsense box on its own UPS turns a “network flicker” into a “compute rebooted gracefully while the network stayed up” — which is the target outcome for a homelab with managed infrastructure depending on it. The 10GbE switching layer is worth protecting on the networking UPS too, since 10GbE NICs can reset on switchover glitches from lower-quality standby units.
Related on TechFuel HQ
- Proxmox vs TrueNAS vs Unraid Storage Backends 2026: ZFS, btrfs, and the IOPS That Matter
- The $1,500 RTX 5060 Ti Mid-Range 1440p Build for 2026
- Homelab Firewall and Router Stack 2026: pfSense vs OPNsense vs MikroTik vs UniFi
- 10GbE Home Networking on a Budget in 2026
- More Homelab Guides
Sources
- CyberPower CP1500PFCLCD product page (runtime curve, specs): https://www.cyberpowersystems.com/product/ups/pure-sine-wave/cp1500pfclcd/
- NUT (Network UPS Tools) project documentation: https://networkupstools.org/docs/
- Proxmox VE wiki — NUT Power Outage Setup: https://pve.proxmox.com/wiki/NUT_Power_Outage_Setup
- APC BR1500MS2 product page: https://www.apc.com/us/en/product/BR1500MS2/
- APC Smart-UPS SMT1500RM2UC product page: https://www.apc.com/us/en/product/SMT1500RM2UC/
- CyberPower RB1290X2 replacement battery: https://www.cyberpowersystems.com/product/ups/battery-cartridge/rb1290x2/
- Eaton 5PX1500RT product page: https://www.eaton.com/us/en-us/catalog/ups-rack-products/eaton-5px-ups.html
- ServeTheHome — homelab UPS coverage and teardowns: https://www.servethehome.com/tag/ups/
- Reddit r/homelab — UPS sizing discussions: https://www.reddit.com/r/homelab/search/?q=ups+sizing