Introduction
Each of my proxmox servers has its own dedicated UPS. My servers are low power and the UPS will keep them up for at least 2 hours. I’m using a Cyberpower UPS connected via USB.
This howto will use a Cyberpower UPS as the example. Its very easy to make a couple changes to use another UPS.
We will be using NUT to do the heavy lifting. When done the server will run and shutdown when the battery reaches 20%. As a bonus notification emails will be sent as well.
Installation and configuration
SSH into your proxmox server with an account that has root privileges.
The only package to install is nut.
>sudo apt install nut
Plug in your UPS to a USB port. We need to find the USB device information for your UPS. So lets list our USB devices.
> lsusb
Here’s my list of USB devices. In this example I’m interested in the Cyberpower. Copy down the ID of your UPS.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 003: ID 05e3:0608 Genesys Logic, Inc. Hub Bus 001 Device 002: ID 0764:0501 Cyber Power System, Inc. CP1500 AVR UPS Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Create the following config file: /etc/nut/ups.conf
maxretry = 3 [theUPS] driver = usbhid-ups port = auto desc = "the server UPS"
We need to create a udev rule to allow nut user access to the driver. The ID you copied down earlier is used here so udev knows which device the rule applies to. So create: /etc/udev/rules.d/90-nut-ups.rules
# Rule for a Cyberpower UPS ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0764", ATTR{idProduct}=="0501", MODE="0660", GROUP="nut"
Now restart udev.
> sudo service udev restart
Next unplug the usb cable to the UPS and plug it back in for the rule to work.
Ok. Its time to configure NUT to run in stand alone mode. Replace /etc/nut/nut.conf with the following:
MODE=standalone
The ups daemon has 2 configuration files to deal with. It needs to be configured for the ip and port to listen on. We also create a user that can monitor the UPS.
Replace /etc/nut/upsd.conf with the following.
# LISTEN <address> [<port>]
LISTEN 127.0.0.1 3493
LISTEN ::1 3493
Replace /etc/nut/upsd.users with the following.
[upsmonitor] password = YOUR_PASSWORD upsmon master
The last file to configure is the UPS monitoring daemon. Replace /etc/nut/upsmon.conf with the following.
# Commands for shutdown on power loss MONITOR theUPS@localhost 1 upsmonitor YOUR_PASSWORD master POWERDOWNFLAG /etc/killpower SHUTDOWNCMD "/sbin/shutdown -h now"
Enable the nut server and client services.
> sudo systemctl enable nut-server.service
> sudo systemctl enable nut-client.service
For the final step lets start the server and client services.
> service nut-server start
> service nut-client start
Conclusion
Nut is a pain to configure, but well worth it.
Thanks much! I used this on Proxmox 5.3-5 and it seems to work!
These instructions worked perfectly. Thank you!
These instructions worked perfectly. Thanks!
this isn’t working for me. I am somewhat of a noob at this and followed the instructions to a T (replacing the USB ID and the password where required). I am running Proxmox 5.4-3. Do I need to do any steps in addition to what’s listed here that might be inplied (like creating a new user in Proxmox)?
There may be some changes caused by 5.4. I will have to test on 5.4 to verify. You will also want to verify that your ups is supported in linux. I have an older ups with a bad controller that always tells Proxmox that it is on battery backup.
Hi,
it works for me on 5.4-6.
Check MONITOR line, I think it should be
“MONITOR theUPS@localhost 1 upsmonitor YOUR_PASSWORD master”, if you are following this tutorial, since “theUPS” was used as a name in ups.conf.
Also, I added only MONITOR line to the “/etc/nut/upsmon.conf”. POWERDOWNFLAG and SHUTDOWNCMD were already present.
One more thing – I did not manually create udev rule. I simply copied “/lib/udev/rules.d/62-nut-usbups.rules” udev file to “/etc/udev/rules.d/”.
Ofcourse, you have to check if it has your UPS.
Error in monitor line has been corrected.
Thanks for great summary of NUT setup!
BTW, notification emails should work with this config or it has to be additionally configured in upsmon.conf?
Excellent thanks!
Do yourselves a favor and read the comments in these config files because they explain what the parameters your changing actually are because the guide as written doesn’t at all.
I didnt realize from just reading the guide that “[theUPS]” was meant to be the the name of the UPS to be referenced in later steps. Same for the “upsmonitor” steps.
Thank you! These docs are still good for Proxmo 6.3-3 in case anyone is wondering.
Still works perfectly on 7.0 as well.