Table of Contents
- Power and UPS
- What's Protected by What
- Critical Constraint: TP-Link Office Switch Must Stay on Battery Backup 1
- APC Beeper Is Disabled
- NUT Architecture
- NUT Configuration Files
- PVE — Master for Battery Backup 1 (APC)
- Nexus — Master for Battery Backup 2 (CyberPower)
- PBS — Slave for Battery Backup 1
- Hyperion — Slave for Battery Backup 1
- Atlas — Slave for Battery Backup 1 (Windows)
- Useful NUT Commands
- Testing UPS Shutdown
Power and UPS
This page documents the UPS hardware, NUT (Network UPS Tools) configuration, and operational notes for the homelab power-backup setup.
What's Protected by What
| UPS | Model | Location | Connected Equipment | NUT Role |
|---|---|---|---|---|
| Battery Backup 1 | APC Back-UPS ES 750 (BE750G) | Office | PVE, PBS, Hyperion, Atlas, TP-Link office switch | PVE = master (USB); PBS, Hyperion, Atlas = slaves (network) |
| Battery Backup 2 | CyberPower CP1500 AVR (1500VA) | Office | Nexus | Nexus = master (USB); no slaves |
| Battery Backup 3 | CyberPower 1500VA | Utility room | EdgeSwitch 8, Verizon router | No NUT management (passive protection only) |
Battery Backup 1 capacity: 450W / 750VA — runtime ~11.75 min at 35% load (battery replacement ordered: APC RBC17).
Battery Backup 2 capacity: 900W / 1500VA — runtime ~158 min at 5% load.
Only use the bottom-row outlets on Battery Backup 1 (battery backup outlets). The top-row Master/Controlled outlets are for energy saving only — do not plug critical equipment there.
Critical Constraint: TP-Link Office Switch Must Stay on Battery Backup 1
The office TP-Link switch must remain plugged into Battery Backup 1. If it loses power during an outage, all office machines (Atlas, Nexus, PVE, PBS, Hyperion) lose network connectivity simultaneously. This prevents NUT slaves from receiving the shutdown signal from the master, breaking orderly shutdown sequencing.
APC Beeper Is Disabled
The APC Back-UPS 750 beeper is disabled via NUT. There will be no audible alarm during a power outage. This is intentional.
Re-enable if needed:
upscmd -u upsmon -p [PASSWORD] apcups beeper.enable
Disable again:
upscmd -u upsmon -p [PASSWORD] apcups beeper.disable
NUT Architecture
NUT uses a master/slave model:
- The master host has the UPS connected via USB and runs
upsdto expose UPS data on the network (port 3493). - Slave hosts run
upsmonin slave mode, connecting to the master over the network to monitor UPS state. - When the UPS reaches the low-battery threshold, the master signals all slaves to shut down first, then shuts itself down last.
Battery Backup 1 low-battery shutdown threshold is set to 300 seconds (5 minutes) remaining runtime.
NUT Configuration Files
PVE — Master for Battery Backup 1 (APC)
/etc/nut/ups.conf
[apcups]
driver = usbhid-ups
port = auto
desc = "APC Back-UPS ES 750 - PVE"
vendorid = 051d
productid = 0002
override.battery.runtime.low = 300
/etc/nut/nut.conf
MODE=netserver
/etc/nut/upsd.conf
LISTEN 0.0.0.0 3493
/etc/nut/upsd.users
[upsmon]
password = [PASSWORD]
upsmon master
actions = SET
instcmds = ALL
[remote]
password = [PASSWORD]
upsmon slave
/etc/nut/upsmon.conf
MONITOR apcups@localhost 1 upsmon [PASSWORD] master
SHUTDOWNCMD "/sbin/shutdown -h +0"
Nexus — Master for Battery Backup 2 (CyberPower)
/etc/nut/ups.conf
[cyberpower]
driver = usbhid-ups
port = auto
desc = "Cyberpower 1500VA - Nexus"
vendorid = 0764
productid = 0501
/etc/nut/nut.conf
MODE=netserver
PBS — Slave for Battery Backup 1
/etc/nut/nut.conf
MODE=netclient
/etc/nut/upsmon.conf
MONITOR apcups@192.168.1.227 1 remote [PASSWORD] slave
Hyperion — Slave for Battery Backup 1
Hyperion uses the Synology NAS built-in UPS settings instead of standard NUT files.
/usr/syno/etc/ups/synoups.conf
ups_enabled="yes"
ups_type="net"
ups_host="192.168.1.227"
ups_port="3493"
ups_name="apcups"
ups_user="remote"
ups_pass="[PASSWORD]"
Atlas — Slave for Battery Backup 1 (Windows)
Atlas uses WinNUT-Client (nutdotnet/WinNUT-Client). Configuration:
| Setting | Value |
|---|---|
| Server | 192.168.1.227 |
| Port | 3493 |
| UPS name | apcups |
| User | remote |
| Password | [PASSWORD] |
| Startup | Start with Windows, minimize to system tray |
Useful NUT Commands
All commands below run on the NUT master for the relevant UPS (PVE for BB1, Nexus for BB2).
Check full UPS status:
upsc apcups@localhost
upsc cyberpower@localhost
Monitor key values in real-time:
watch -n 1 'upsc apcups@localhost | grep -E "status|charge|runtime|input.voltage"'
Check logs for battery events:
journalctl -u nut-monitor --since "1 hour ago" | grep battery
Restart NUT services on Proxmox (PVE):
upsdrvctl stop
upsdrvctl start
systemctl restart nut-server
systemctl restart nut-monitor
Enable or disable APC beeper:
upscmd -u upsmon -p [PASSWORD] apcups beeper.enable
upscmd -u upsmon -p [PASSWORD] apcups beeper.disable
Testing UPS Shutdown
A graceful shutdown sequence was successfully tested on March 16, 2026. The procedure:
- Verify all NUT slaves (PBS, Hyperion, Atlas) are connected to the master (
upsc apcups@localhostshould show clients). - Pull the APC power cable to simulate an outage.
- NUT master (PVE) detects on-battery state and begins countdown.
- At the low-battery threshold (300 seconds remaining), master signals slaves to shut down.
- Slaves shut down in order; master shuts itself down last.
- Restore power and verify all machines come back online.
Re-test after battery replacement (APC RBC17) to confirm updated runtime at threshold.
Automation
Infrastructure
Services
- Dashy
- Bookstack
- Tandoor
- Home Assistant
- Pinchflat
- FreshRSS
- Frigate
- Wyze-Bridge
- Mosquitto
- Dispatcharr
- Proxmox LXC Services
Operations
- How to Update Apps
- Backup & Restore Strategy
- Maintenance Schedule
- Useful Commands
- Restore Proxmox Containers
- NAS NFS Share for LXC
- SSH Public Key onto Nexus