UPS Systems for Your Home Lab: A Complete Guide
A power outage is the fastest way to ruin your day as a home lab operator. A sudden loss of power can corrupt filesystems, interrupt ZFS scrubs, kill in-progress database writes, and leave your RAID arrays in a degraded state. If you've put any effort into your home lab — or store any data you care about — a UPS isn't optional. It's the first piece of infrastructure you should buy after the server itself.
A UPS (Uninterruptible Power Supply) sits between the wall outlet and your equipment. When power drops, it seamlessly switches to battery, giving your systems time to shut down gracefully. The good ones also clean up dirty power (voltage sags, surges, line noise) that can silently degrade hardware over time.
This guide covers how to pick the right UPS, size it for your load, set up automated monitoring and shutdowns on Linux, and keep the batteries healthy for years.
Why Your Home Lab Needs a UPS
The obvious reason is "power goes out, servers stay on long enough to shut down." But there are less obvious benefits:
Filesystem protection. Linux filesystems like ext4 and XFS use journaling that handles unexpected shutdowns reasonably well, but "reasonably well" isn't "perfectly." ZFS is more resilient, but even ZFS documentation recommends a UPS. A dirty shutdown during a scrub or resilver operation can extend the rebuild time significantly.
Hardware longevity. Voltage sags (brownouts) stress power supplies. Repeated hard shutdowns wear on SSDs and HDDs. A line-interactive UPS regulates voltage continuously, not just during outages.
Network stability. Your router, switch, and access points should be on UPS power too. A server that stays up during a brownout isn't much use if the network is down.
Peace of mind. Brief outages happen far more often than extended ones. A UPS handles the 2-second flicker that would otherwise crash-reboot your entire lab without you even knowing power dipped.
Understanding UPS Specifications
VA vs. Watts
UPS units are rated in both VA (Volt-Amperes) and Watts. They're not the same thing.
- VA is apparent power — the total power the UPS can deliver
- Watts is real power — the actual power your equipment consumes
- Power factor is the ratio: Watts = VA x Power Factor
Most UPS units have a power factor of 0.6 to 0.8. A 1500VA UPS with a 0.6 power factor delivers 900 watts of real power. Some newer models (especially sine wave units) approach 0.9.
Always size based on watts, not VA. The VA number is the marketing number. The watts number is what matters.
UPS Topologies
Standby (Offline). Cheapest. Runs on wall power normally and switches to battery when power drops. The switchover takes 5-10 milliseconds. Fine for non-critical home equipment, but the switchover gap can cause sensitive equipment to reboot.
Line-Interactive. The sweet spot for home labs. Has an autotransformer that continuously regulates voltage without switching to battery. Handles brownouts and overvoltage without draining the battery. Switchover time is 2-4 milliseconds. This is what you want.
Online (Double-Conversion). Power always runs through the inverter — zero transfer time. Equipment never touches raw wall power. Expensive, generates more heat, louder fans. Overkill for most home labs, but used in datacenters where even millisecond interruptions matter.
Waveform: Simulated vs. Pure Sine Wave
When running on battery, a UPS outputs either a simulated (stepped/modified) sine wave or a pure sine wave.
Simulated sine wave UPS units are cheaper but produce a waveform that some power supplies don't like. Active PFC power supplies (common in modern servers and workstations) may shut down, buzz, or run inefficiently on simulated sine wave power.
Pure sine wave UPS units produce clean power indistinguishable from wall power. Every active PFC power supply works correctly. If your home lab has server-grade hardware, get a pure sine wave UPS. It's worth the premium.
Check your power supply specs. If it says "Active PFC" or has a power factor above 0.9, you need pure sine wave.
Sizing Your UPS
Step 1: Measure Your Load
The best approach is measuring actual power consumption. A Kill-A-Watt meter costs $20-30 and tells you exactly how many watts your equipment draws.
Plug your entire lab power strip into the meter and note the reading under typical load:
| Equipment | Typical Draw |
|---|---|
| Dell PowerEdge R720 | 150-250W |
| HP ProLiant DL380 Gen9 | 120-200W |
| Custom tower server (i5/Ryzen 5) | 60-120W |
| Mini PC (Intel NUC, etc.) | 15-40W |
| Raspberry Pi 4 | 5-7W |
| Managed switch (24-port) | 15-30W |
| Unmanaged switch (8-port) | 5-10W |
| Router/firewall box | 10-25W |
| Cable modem | 8-12W |
Step 2: Calculate Required Capacity
Take your measured wattage and add 20-30% headroom. You should never load a UPS above 80% of its rated watt capacity.
Example: Your lab draws 350W.
- Required capacity: 350W / 0.8 = 437W minimum
- A 750W (1200-1300VA) UPS would give comfortable headroom
- A 900W (1500VA) UPS would allow room to grow
Step 3: Determine Runtime Needs
How long do you need the UPS to keep things running? For most home labs, the answer is "long enough to shut down gracefully" — typically 5-10 minutes. You're not trying to ride out a multi-hour outage on battery.
Manufacturers publish runtime charts. At 50% load, a typical 1500VA unit provides 10-15 minutes of runtime. At 80% load, expect 5-8 minutes.
If you need longer runtime, consider:
- A larger UPS (more battery capacity)
- An extended battery pack (some models support external battery modules)
- Reducing your load (powering only critical equipment from the UPS)
Brand Comparison: APC vs. CyberPower vs. Eaton
Three brands dominate the home lab UPS market. All three make reliable products, but they have different strengths.
APC (Schneider Electric)
The most recognized name in UPS. APC's Smart-UPS line is the datacenter standard. Their home/small office lineup (Back-UPS, Back-UPS Pro) is widely available and well-supported.
Strengths:
- Excellent build quality, especially the Smart-UPS line
- Best NUT (Linux) compatibility
- Widely available replacement batteries
- Strong resale value
Weaknesses:
- Premium pricing
- The Back-UPS line uses simulated sine wave; you need Back-UPS Pro or Smart-UPS for pure sine wave
- APC's PowerChute software is Windows-centric (use NUT on Linux instead)
Recommended models:
- APC Back-UPS Pro 1500 (BR1500MS2) — 1500VA/900W, pure sine wave, LCD, ~$250
- APC Smart-UPS 1500 (SMT1500RM2UC) — 1500VA/1000W, pure sine wave, rack-mount, ~$550
CyberPower
The value champion. CyberPower offers competitive specs at lower prices than APC. Their PFC Sinewave series is specifically designed for active PFC power supplies.
Strengths:
- Lower price point than APC for equivalent specs
- PFC Sinewave line is clearly labeled for active PFC compatibility
- Good LCD interfaces on mid-range and above
- Decent NUT support
Weaknesses:
- Build quality is a step below APC (plastic feels cheaper)
- Fan noise can be louder on some models
- Replacement batteries sometimes harder to source for specific models
Recommended models:
- CyberPower CP1500PFCLCD — 1500VA/1000W, pure sine wave, ~$200
- CyberPower PR1500LCDRT2U — 1500VA/1000W, pure sine wave, rack-mount, ~$450
Eaton
The enterprise choice that also makes excellent smaller units. Eaton's 5S and 5P lines are well-regarded in the home lab community.
Strengths:
- Excellent engineering and build quality
- Very good Linux/NUT support
- Quieter operation than CyberPower
- Strong enterprise heritage
Weaknesses:
- Less retail availability (harder to find at local stores)
- Replacement batteries can be more expensive
- Fewer community discussions (smaller home lab user base)
Recommended models:
- Eaton 5S 1500 — 1500VA/900W, line-interactive, ~$220
- Eaton 5P 1550 — 1550VA/1100W, line-interactive, rack/tower, ~$500
The Verdict
For most home labs, the CyberPower CP1500PFCLCD offers the best value. If you want the best quality and don't mind paying more, go APC Back-UPS Pro 1500 or Smart-UPS. If you find a good deal on Eaton 5S/5P, grab it.
NUT: Linux UPS Monitoring
Network UPS Tools (NUT) is the standard for monitoring UPS devices on Linux. It supports hundreds of UPS models from all major manufacturers via USB or serial connections.
Installing NUT
# Debian/Ubuntu
sudo apt install -y nut
# Fedora/RHEL
sudo dnf install -y nut
Configuring NUT
NUT uses several configuration files in /etc/nut/. The three important ones:
1. /etc/nut/nut.conf — Set the mode:
MODE=standalone
Use standalone for a single server connected directly to the UPS. Use netserver if other machines need to monitor this UPS over the network.
2. /etc/nut/ups.conf — Define the UPS:
[homelab-ups]
driver = usbhid-ups
port = auto
desc = "APC Back-UPS Pro 1500"
pollinterval = 5
The usbhid-ups driver works for most USB-connected APC, CyberPower, and Eaton units. Connect the UPS via USB, and NUT will auto-detect the device.
3. /etc/nut/upsd.users — Create a monitoring user:
[upsmon]
password = your-secure-password
upsmon master
4. /etc/nut/upsmon.conf — Configure monitoring:
MONITOR homelab-ups@localhost 1 upsmon your-secure-password master
SHUTDOWNCMD "/sbin/shutdown -h now"
POWERDOWNFLAG /etc/killpower
POLLFREQ 5
POLLFREQALERT 2
HOSTSYNC 15
DEADTIME 15
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
Starting NUT
# Start the services
sudo systemctl enable --now nut-driver
sudo systemctl enable --now nut-server
sudo systemctl enable --now nut-monitor
# Verify the UPS is detected
upsc homelab-ups@localhost
The upsc command shows all available data from the UPS: battery charge, runtime remaining, input voltage, load percentage, and more.
# Useful queries
upsc homelab-ups@localhost battery.charge # Battery percentage
upsc homelab-ups@localhost battery.runtime # Seconds of runtime remaining
upsc homelab-ups@localhost ups.load # Current load percentage
upsc homelab-ups@localhost input.voltage # Input voltage
upsc homelab-ups@localhost ups.status # OL = Online, OB = On Battery
Automated Shutdown Scripts
NUT handles basic shutdown automatically — when battery reaches a critical level, it runs the SHUTDOWNCMD from upsmon.conf. But you might want more sophisticated behavior.
Custom Notification Script
Create /etc/nut/notify.sh:
#!/bin/bash
# NUT notification script
EVENT="$1"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
case "$EVENT" in
ONLINE)
logger -t ups-notify "[$TIMESTAMP] Power restored. UPS back on line power."
;;
ONBATT)
logger -t ups-notify "[$TIMESTAMP] Power failure! Running on battery."
# Optional: send notification via webhook, email, etc.
# curl -s -X POST "https://ntfy.sh/your-topic" -d "UPS on battery!"
;;
LOWBATT)
logger -t ups-notify "[$TIMESTAMP] Battery low! Initiating shutdown."
;;
COMMOK)
logger -t ups-notify "[$TIMESTAMP] UPS communication restored."
;;
COMMBAD)
logger -t ups-notify "[$TIMESTAMP] UPS communication lost!"
;;
REPLBATT)
logger -t ups-notify "[$TIMESTAMP] UPS battery needs replacement."
;;
esac
sudo chmod +x /etc/nut/notify.sh
Add to upsmon.conf:
NOTIFYCMD /etc/nut/notify.sh
NOTIFYFLAG ONLINE EXEC+SYSLOG
NOTIFYFLAG ONBATT EXEC+SYSLOG
NOTIFYFLAG LOWBATT EXEC+SYSLOG
NOTIFYFLAG COMMOK EXEC+SYSLOG
NOTIFYFLAG COMMBAD EXEC+SYSLOG
NOTIFYFLAG REPLBATT EXEC+SYSLOG
Graceful Service Shutdown Before Power Off
If you want to stop Docker containers, VMs, or database services cleanly before the system powers off, create a pre-shutdown script:
#!/bin/bash
# /usr/local/bin/ups-shutdown.sh
# Called before system shutdown on UPS low battery
logger -t ups-shutdown "Gracefully stopping services before power-off..."
# Stop Docker containers gracefully
docker stop $(docker ps -q) --time=30 2>/dev/null
# Stop Proxmox VMs (if applicable)
# qm shutdown VMID --timeout 60
# Sync filesystems
sync
# Proceed with shutdown
/sbin/shutdown -h now
Update upsmon.conf to use this script:
SHUTDOWNCMD "/usr/local/bin/ups-shutdown.sh"
Network Shutdown for Multiple Machines
If multiple servers share one UPS, configure NUT in netserver mode on the machine connected to the UPS, and netclient mode on the others.
On the server (connected to UPS), in upsd.conf:
LISTEN 0.0.0.0 3493
On client machines, in nut.conf:
MODE=netclient
In upsmon.conf on clients:
MONITOR homelab-ups@192.168.1.100 1 upsmon your-secure-password slave
Now all machines receive shutdown signals when the UPS battery runs low.
Battery Replacement and Maintenance
UPS batteries are consumables. Plan for replacement every 3-5 years, depending on usage, temperature, and how often they cycle.
Signs Your Battery Needs Replacement
- UPS displays a "Replace Battery" warning
- Runtime under load has dropped significantly
- The UPS switches to battery and immediately shuts down
- Battery bulging or leaking (replace immediately)
- Self-test failures
Performing a Self-Test
Most UPS units have a self-test button or can be triggered via NUT:
upscmd -u upsmon -p your-secure-password homelab-ups@localhost test.battery.start.quick
Monitor the result:
upsc homelab-ups@localhost ups.test.result
Buying Replacement Batteries
UPS batteries are standard sealed lead-acid (SLA) cells. You don't have to buy the manufacturer's branded replacements at premium prices.
For an APC Back-UPS Pro 1500, the battery is typically two 12V 9Ah SLA batteries wired in series (24V). The APC replacement cartridge (RBC124) costs $80-100. Third-party equivalents cost $30-50 for the pair.
Search for your UPS model + "replacement battery" to find the exact specifications. Key specs to match:
- Voltage (almost always 12V per cell)
- Capacity (Ah rating)
- Physical dimensions
- Terminal type (F1 or F2)
Battery Health Tips
- Keep it cool. Battery life halves for every 10C above 25C. Don't put your UPS in a hot closet.
- Don't leave it discharged. If you unplug the UPS for storage, charge it fully first and recharge every 3-6 months.
- Run the self-test monthly. This exercises the battery and alerts you to degradation early.
- Replace proactively. Don't wait for failure. If your batteries are 4+ years old, order replacements.
Practical Setup Recommendations
Minimum Home Lab UPS Setup
For a modest lab (mini PC + switch + router, ~100W total):
- CyberPower CP850PFCLCD (850VA/510W, pure sine wave, ~$130)
- Provides 15-20 minutes runtime at this load
- USB connected to the server running NUT
Standard Home Lab UPS Setup
For a typical lab (tower server + switch + router + NAS, ~300W total):
- CyberPower CP1500PFCLCD (1500VA/1000W, pure sine wave, ~$200)
- Provides 10-15 minutes runtime at this load
- NUT with automated shutdown at 20% battery
Power-Hungry Lab UPS Setup
For a loaded lab (rack server + multiple switches + NAS, ~600W+):
- APC Smart-UPS 2200 (2200VA/1980W, pure sine wave, rack-mount, ~$800)
- Or two smaller UPS units splitting the load
- NUT in netserver mode monitoring multiple client machines
What NOT to Put on a UPS
- Laser printers (massive power spikes when heating)
- Space heaters
- Anything with a motor (vacuum, fan) — use the "surge only" outlets
- Non-essential monitors
Most UPS units have both "battery + surge" outlets and "surge only" outlets. Put critical equipment (servers, switches, NAS) on battery outlets. Put non-critical equipment (monitors, desk lights) on surge-only outlets.
Final Thoughts
A UPS is boring infrastructure. It sits quietly in the corner, doing nothing visible 99.9% of the time. But the 0.1% when power drops and your servers gracefully shut down instead of crashing — that's when you appreciate it.
For a home lab, the formula is straightforward:
- Measure your actual power draw
- Buy a line-interactive, pure sine wave UPS rated for 1.5-2x your load
- Connect via USB, install NUT, configure automated shutdown
- Replace batteries on schedule
Get this right once, and you won't think about it again until the battery replacement reminder pops up in three years. That's exactly how infrastructure should work.