From LedHed's Wiki
Jump to: navigation, search

Overview

NUT is an OpenSource tool that can monitor an extensive list of UPS devices. Often times UPS manufactures charge an extremely high cost for their network monitoring / SNMP cards. NUT running on a Raspberry Pi or other inexpensive SBC can be a cost effective way to monitor an UPS and performed network wide graceful shutdown in the event of a power failure.


Prerequisites

  • Raspberry Pi or other SBC running a Debian based distro
  • NUT Compatible UPS (see: NUT-HCL)
  • USB (or Serial to USB) connection to the Raspberry Pi
  • Network Connectivity (Wired or Wireless depending on RPi Model).


Installation

Update the software package list

sudo apt update
sudo apt upgrade


Install NUT

sudo apt install nut


Server Configuration

Configuration Files

NUT is broken into two services: nut-server and nut-monitor. The configuration files for these services are located here:

/etc/nut/


ups.conf

This is the configuration file for the UPS hardware. Here is where you specify the Driver, Make, and Model of the UPS.

Obtaining the VendorID and ProductID

You will need this information before editing ups.conf.

lsusb

Bus 001 Device 004: ID 0764:0601 Cyber Power System, Inc. PR1500LCDRT2U UPS

In this case the ID field is 0764:0601 and this translates to <VendorID>:<ProductID>.

Example ups.conf

[ups1]
        driver = usbhid-ups
        port = auto
        vendor = "CyberPowerPC PR1500LCDRT2U"
        vendorid = 0764
        productid = 0601
        pollinterval = 1
        bus = "001"

upsd.conf

This file tells the UPS service what IP & Port to listen on.

Example upsd.conf

LISTEN 127.0.0.1 3493       # Listen on localhost
LISTEN 192.168.69.69 3493   # Listen on the LAN


upsd.users

This file contains the list of users that can access NUT services.

Security

Its important to note that this file contains clear text passwords! So you should take steps to restrict read access to this file. For example, set it to only be readable by the root user.

chown root.root /etc/nut/upsd.users
chmod 600 /etc/nut/upsd.users

Example upsd.users

[upsmon_master]
        password  = <MASTER_PASSWORD_HERE>
        actions = SET
        instcmds = ALL
        upsmon master
[upsmon_remote]
       password  = <SLAVE_PASSWORD_HERE>
       upsmon slave

upsmon.conf

This file tells the nut-monitor which users can access the monitoring service. It essentially maps the user you created in the previous step to an Access Control List which tells the monitoring service which users can connect from which hosts on your network.

Security

Its important to note that this file contains clear text passwords! So you should take steps to restrict read access to this file. For example, set it to only be readable by the root user.

chown root.root /etc/nut/upsmon.conf
chmod 600 /etc/nut/upsmon.conf

Example upsmon.conf

MONITOR ups1@localhost 1 upsmon_master <MASTER_PASSWORD_HERE> master

Note: You'll likely have more than one line if you have remote clients connecting to this NUT server (which is really the whole point).


nut.conf

This file defines the type of role this installation of NUT will be performing.

Example nut.conf

MODE=netserver


Client Configuration

Other

[NUT Client for ESXi]


References

https://www.networkshinobi.com/raspberry-pi-as-ups-server-via-the-nut/

https://haefelfinger.org/posts/2019/2019-11-20-using-network-ups-tools-and-mosquitto-part1/