Network UPS Tools User Manual

Russell Kroll, Arnaud Quette and Arjen de Korte

Table of Contents

1. Introduction
2. Network UPS Tools Overview
2.1. Description
2.2. NUT and the ecosystem
2.3. Installing
2.4. Upgrading
2.5. Configuring and using
2.6. Documentation
2.7. Network Information
2.8. Manifest
2.9. Drivers
2.10. Network Server
2.11. Monitoring client
2.12. Clients
2.13. CGI Programs
2.14. Version Numbering
2.15. Backwards and Forwards Compatibility
2.16. Support / Help / etc.
2.17. Hacking / Development Info
2.18. Acknowledgements / Contributions
3. Features
3.1. Multiple manufacturer and device support
3.2. Multiple architecture support
3.3. Layered and modular design with multiple processes
3.4. Redundancy support — Hot swap/high availability power supplies
3.5. Security and access control
3.6. Web-based monitoring
3.7. Free software
3.8. UPS management and control
3.9. Monitoring diagrams
3.10. Image credits
3.11. Compatibility information
4. Download information
4.1. Source code
4.2. Binary packages
4.3. Java packages
4.4. Virtualization packages
5. Installation instructions
5.1. Installing from source
5.2. Building NUT for in‐place upgrades or non‐disruptive tests
5.3. Installing from packages
6. Configuration notes
6.1. Details about the configuration files
6.2. Basic configuration
6.3. Configuring automatic shutdowns for low battery events
6.4. Typical setups for enterprise networks and data rooms
6.5. Typical setups for big servers with UPS redundancy
7. Advanced usage and scheduling notes
7.1. The simple approach, using your own script
7.2. The advanced approach, using upssched
8. NUT outlets management and PDU notes
8.1. Introduction
8.2. NUT outlet data collection
8.3. Outlets on PDU
8.4. Outlets on UPS
8.5. Other type of devices
9. NUT daisychain support notes
9.1. Introduction
9.2. Implementation notes
10. Notes on securing NUT
10.1. How to verify the NUT source code signature
10.2. How to verify the NUT source code checksum
10.3. System level privileges and ownership
10.4. NUT level user privileges
10.5. Network access control
10.6. Configuring SSL
10.7. chrooting and other forms of paranoia
A. Glossary
B. Acknowledgements / Contributions
B.1. The NUT Team
Active members
Retired members
B.2. Supporting manufacturers
UPS manufacturers
Appliances manufacturers
B.3. Other contributors
B.4. Older entries (before 2005)
C. NUT command and variable naming scheme
C.1. Structured naming
C.2. Time and Date format
C.3. Variables
device: General unit information
ups: General unit information
input: Incoming line/power information
output: Outgoing power/inverter information
Three-phase additions
battery: Any battery details
ambient: Conditions from external probe equipment
outlet: Smart outlet management
driver: Internal driver information
server: Internal server information
C.4. Instant commands
D. Hardware Compatibility List
E. Documentation
E.1. User Documentation
E.2. Developer Documentation
E.3. Data dumps for the DDL
E.4. Offsite Links
E.5. News articles and Press releases
F. Support instructions
F.1. Documentation
F.2. Mailing lists
Request help
Post a patch, ask a development question, …
Discuss packaging and related topics
F.3. IRC (Internet Relay Chat)
F.4. GitHub Issues
G. Cables information
G.1. APC
940-0024C clone
940-0024E clone
940-0024C clone for Macs
G.2. Belkin
OmniGuard F6C***-RKM
G.3. Eaton
MGE Office Protection Systems
Powerware LanSafe
G.4. HP - Compaq
Older Compaq UPS Family
G.5. Phoenixtec (Best Power)
G.6. Tripp-Lite
H. Configure options
H.1. Keeping a report of NUT configuration
H.2. In-place replacement defaults
H.3. Driver selection
Serial drivers
USB drivers
SNMP drivers
XML drivers and features
LLNC CHAOS Powerman driver
IPMI drivers
I2C bus drivers
GPIO bus drivers
Modbus drivers
Manual selection of drivers
H.4. Optional features
CGI client interface
Pretty documentation and man pages
Python support
Development files
Options for developers
I want it all!
Networking transport security
Networking access security
Networking IPv6
H.5. Other configuration options
NUT data server port
Daemon user accounts
Syslog facility
H.6. Installation directories
H.7. Directories used by NUT at run-time
H.8. Things the compiler might need to find
I. Upgrading notes
I.1. Changes from 2.8.2 to 2.8.3
I.2. Changes from 2.8.1 to 2.8.2
I.3. Changes from 2.8.0 to 2.8.1
I.4. Changes from 2.7.4 to 2.8.0
I.5. Changes from 2.7.3 to 2.7.4
I.6. Changes from 2.7.2 to 2.7.3
I.7. Changes from 2.7.1 to 2.7.2
I.8. Changes from 2.6.5 to 2.7.1
I.9. Changes from 2.6.4 to 2.6.5
I.10. Changes from 2.6.3 to 2.6.4
I.11. Changes from 2.6.2 to 2.6.3
I.12. Changes from 2.6.1 to 2.6.2
I.13. Changes from 2.6.0 to 2.6.1
I.14. Changes from 2.4.3 to 2.6.0
I.15. Changes from 2.4.2 to 2.4.3
I.16. Changes from 2.4.1 to 2.4.2
I.17. Changes from 2.4.0 to 2.4.1
I.18. Changes from 2.2.2 to 2.4.0
I.19. Changes from 2.2.1 to 2.2.2
I.20. Changes from 2.2.0 to 2.2.1
I.21. Changes from 2.0.5 to 2.2.0
I.22. Changes from 2.0.4 to 2.0.5
I.23. Changes from 2.0.3 to 2.0.4
I.24. Changes from 2.0.2 to 2.0.3
I.25. Changes from 2.0.1 to 2.0.2
I.26. Changes from 2.0.0 to 2.0.1
I.27. Changes from 1.4.0 to 2.0.0
I.28. File trimmed here on changes from 1.2.2 to 1.4.0
J. Project history
J.1. Prototypes and experiments
May 1996: early status hacks
January 1997: initial protocol tests
September 1997: first client/server code
J.2. Smart UPS Tools
March 1998: first public release
June 1999: Redesigned, rewritten
J.3. Network UPS Tools
September 1999: new name, new URL
June 2001: common driver core
May 2002: casting off old drivers, IANA port, towards 1.0
J.4. Leaving 0.x territory
August 2002: first stable tree: NUT 1.0.0
November 2002: second stable tree: NUT 1.2.0
April 2003: new naming scheme, better driver glue, and an overhauled protocol
July 2003: third stable tree: NUT 1.4.0
July 2003: pushing towards 2.0
J.5. Backwards and Forwards Compatibility (NUT v1.x vs. v2.x)
November 2003: a new URL
J.7. Second major version
March 2004: NUT 2.0.0
J.8. The change of leadership
February 2005: NUT 2.0.1
K. Prerequisites for building NUT on different OSes
K.1. General call to Test the ability to configure and build
K.2. Build prerequisites to make NUT from scratch on various Operating Systems
Debian 10/11/12
CentOS 6 and 7
Arch Linux
Slackware Linux 15
FreeBSD 12.2
OpenBSD 6.5
NetBSD 9.2
OpenIndiana 2021.10
OmniOS CE (as of release 151036)
Solaris 8
MacOS with homebrew
Windows builds
L. CI Farm configuration notes
L.1. Setting up the multi-arch Linux LXC container farm for NUT CI
Common preparations
Setup a container
Shepherd the herd
Further setup of the containers
L.2. Connecting Jenkins to the containers
Agent Labels
Generic agent attributes
Where to run agent.jar
Sequentializing the stress