UPS — CyberPower PR1500ERT2U¶
Line-interactive rackmount UPS providing battery backup and graceful shutdown for proxfold. Monitored via Network UPS Tools (NUT) running directly on the Proxmox host.
Hardware¶
| Property | Value |
|---|---|
| Model | CyberPower PR1500ERT2U |
| Capacity | 1500VA / 1500W, pure sine wave, line-interactive |
| Form factor | 2U rackmount |
| Purchased from | Scorptec (~$1,179 AUD) |
| Protected load | proxfold (Dell R430, dual 550W redundant PSUs — Dell P/N 0X185V, 80+ Platinum — both on UPS) |
| Power cables | 2× IEC C13-to-C14 (UPS outputs → each R430 PSU); standard IEC kettle lead supplied in the box for wall → UPS |
| Data cable | USB Type A-to-B (proxfold → UPS), supplied with the unit |
Note
Both R430 PSUs are on battery-backed UPS outlets, so the pair still provides its usual hot-plug redundancy against a single-PSU failure — but both share the UPS as an upstream single point of failure. The NAS (192.168.1.253) and networking gear (The-Egg, PENFOLD-SW01) are not on the UPS yet; revisit outlet allocation as part of future rack work.
Guest shutdown behaviour¶
NUT runs in standalone mode on proxfold only. There are no NUT clients on the VMs/LXCs — arrstack (VM 101), nginx (VM 102), plex (LXC 100), and control (LXC 104) shut down as part of the host's own graceful shutdown -h +0. Proxmox sends each guest an ACPI shutdown, waits, then powers off. This is sufficient for a single-host deployment.
If additional hosts are added later (e.g. a second Proxmox node, a dedicated Home Assistant appliance) they should run NUT in netclient mode pointing at proxfold as the master — the existing upsmon user is already defined for this.
USB detection¶
The UPS presents as a CyberPower HID device:
The vendor/product pair 0764:0601 is the generic CyberPower HID identifier shared by the PR1500ERT2U, PR1500LCDRT2U, PR1500RT2U, and several other CyberPower models — it is driven by NUT's usbhid-ups driver (CyberPower HID subdriver 0.6).
NUT installation¶
| Item | Value |
|---|---|
| Host | proxfold (Proxmox VE, Debian-based) |
| Package | nut (apt, version 2.8.0) |
| Mode | standalone |
| Driver | usbhid-ups (CyberPower HID subdriver 0.6) |
| UPS name | cyberpower |
| Listen | 127.0.0.1:3493, [::1]:3493 (loopback only) |
Install on a fresh Proxmox host:
Configuration¶
Full file contents are captured in Config Files — NUT (/etc/nut/*.conf). Summary of each file:
| File | Purpose |
|---|---|
/etc/nut/nut.conf |
Sets NUT mode — MODE=standalone |
/etc/nut/ups.conf |
Declares the cyberpower UPS, driver, USB match |
/etc/nut/upsd.conf |
upsd listen addresses (loopback only) |
/etc/nut/upsd.users |
Monitoring user (upsmon) and admin user for upsrw/upscmd |
/etc/nut/upsmon.conf |
upsmon monitor line, shutdown command, powerdown flag |
All /etc/nut/*.conf files are owned root:nut with mode 640.
Services¶
| Service | Role |
|---|---|
nut-server.service |
Runs the usbhid-ups driver and the upsd network daemon |
nut-monitor.service |
Runs upsmon, which reacts to UPS events (OB/LB) and triggers host shutdown |
Both are enabled and active.
Operational parameters¶
Values captured at deploy (2026-04-19) with the R430 at idle:
| Metric | Value |
|---|---|
| Input voltage | 238 V (nominal 240 V AC) |
| Load at idle | ~8% (~120 W) |
| Battery runtime at current load | ~118 min (7083 s reported) |
battery.charge.warning |
35% |
battery.runtime.low (shutdown trigger) |
600 s (10 min — raised from the 300 s default to give ZFS and guest VMs extra buffer) |
Commands reference¶
# Full status dump
upsc cyberpower@localhost
# Single variable
upsc cyberpower@localhost ups.status
upsc cyberpower@localhost battery.runtime
# Tune a variable (requires admin creds from upsd.users)
upsrw -s battery.runtime.low=600 -u admin cyberpower@localhost
# Send a UPS command
upscmd cyberpower@localhost beeper.disable
upscmd cyberpower@localhost test.battery.start.quick
# Force shutdown (ACTUALLY shuts the host down — test only on a safe window)
upsmon -c fsd
# Service logs
journalctl -u nut-monitor
journalctl -u nut-server
Test results¶
Battery transfer test — 2026-04-19 11:40 ACST
- Duration on battery: ~2.5 min (11:40:33 → 11:42:58)
- Server operation: no disruption — clean
OL→OB→OLtransitions upsmonevent log captured transitions correctly- No guest interruption, no ZFS scrub or pool error
Future work¶
- Discord notification — hook
NOTIFYCMDinupsmon.confinto the existing MediaBot webhook for battery/transfer events - Home Assistant NUT integration — once the HAOS VM is deployed (Phase 6B), consume
upsddirectly from HA for dashboards and automations - Beeper — consider
upscmd cyberpower@localhost beeper.disabledepending on final rack location - Daily self-test — cron
upscmd cyberpower@localhost test.battery.start.quickweekly or monthly once HA/Discord alerting is in place - Expand protected load — extend UPS coverage to the NAS and networking once additional PSU cables are on hand
Related¶
- proxfold overview
- Proxmox configuration
- Config Files — NUT
nutrole — install +/etc/nut/*.confcodified in Ansible- Roadmap — Phase 4A UPS
- Boot Drive Swap runbook — NUT config is not in vzdump; capture and restore is covered in the runbook