← All articles
HARDWARE UPS Systems for Your Home Lab: A Complete Guide 2026-02-09 · ups · power · hardware

UPS Systems for Your Home Lab: A Complete Guide

Hardware 2026-02-09 ups power hardware protection

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.

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.

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:

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:

Weaknesses:

Recommended models:

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:

Weaknesses:

Recommended models:

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:

Weaknesses:

Recommended models:

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

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:

Battery Health Tips

Practical Setup Recommendations

Minimum Home Lab UPS Setup

For a modest lab (mini PC + switch + router, ~100W total):

Standard Home Lab UPS Setup

For a typical lab (tower server + switch + router + NAS, ~300W total):

Power-Hungry Lab UPS Setup

For a loaded lab (rack server + multiple switches + NAS, ~600W+):

What NOT to Put on a UPS

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:

  1. Measure your actual power draw
  2. Buy a line-interactive, pure sine wave UPS rated for 1.5-2x your load
  3. Connect via USB, install NUT, configure automated shutdown
  4. 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.