NUT General Install Guide
NUT UPS setup
Synology NAS setup
Proxmox host setup
I got confused installing NUT. This information helped. Read it before trying to install anything!
Table of contents
- Sources
- NUT Server/Client Interaction Diagram
- What the Diagram Shows
- Techno Tim’s walkthrough videos:
- Summary
Sources
-
My main source is Techno Tim’s excellent Network UPS Tools (NUT) Ultimate Guide and video.
- I used the NUTandRpi script to install NUT Server to my Raspberry Pi.
- Techno Tim’s NUTandRpi script instructions instructions and video for using the script are very helpful.
-
I relied on Zanshin Dojo’s Synology + Proxmox + NUT UPS article to set up the Synology NAS as a NUT client.
-
The Network UPS Tools User Manual is excellent but VERY detailed. Watch Techno Tim’s videos before you try to make sense of the docs!
- My NUT Config File Reference page in this doc is my attempt to distill the NUT user manual into a quick reference for my use.
NUT Server/Client Interaction Diagram
I created this diagram of how a Network UPS Tools (NUT) server communicates with one or more clients because I would become confused troubleshooting my NUT setup. It shows how configuration files and services work together to monitor power status and coordinate safe shutdowns during power events.
flowchart LR
subgraph NUT_Server [NUT Server]
UPS["🔌 UPS Device"]
upsconf["📄 ups.conf"]
upsdrvctl["⚙️ upsdrvctl"]
upsdconf["📄 upsd.conf"]
upsdusers["📄 upsd.users"]
upsd["🔁 upsd (network daemon)"]
nutconf_srv["📄 nut.conf (netserver)"]
upsmonconf_srv["📄 upsmon.conf"]
upsmon_srv["👀 upsmon (monitor)"]
upsschedconf["📄 upssched.conf (optional)"]
upsschedcmd["📝 upssched-cmd (optional script)"]
upsconf --> upsdrvctl --> UPS
upsdconf --> upsd
upsdusers --> upsd
upsmonconf_srv --> upsmon_srv
nutconf_srv --> upsmon_srv
upsmon_srv --> upsschedconf
upsschedconf --> upsschedcmd
end
subgraph Network
upsd -. "status & events" .-> upsmon_cli
end
subgraph NUT_Client [NUT Client]
nutconf_cli["📄 nut.conf (netclient)"]
upsmonconf_cli["📄 upsmon.conf"]
upsmon_cli["👀 upsmon (monitor)"]
upsschedconf_cli["📄 upssched.conf (optional)"]
upsschedcmd_cli["📝 upssched-cmd (optional)"]
nutconf_cli --> upsmon_cli
upsmonconf_cli --> upsmon_cli
upsmon_cli --> upsschedconf_cli
upsschedconf_cli --> upsschedcmd_cli
end
What the Diagram Shows
On the NUT Server:
ups.conf
: Defines the UPS hardware and the appropriate driver.upsdrvctl
: Loads the driver and starts communication with the UPS device.upsd.conf
+upsd.users
: Configure theupsd
daemon, which shares UPS status with clients over the network.nut.conf
: Declares the server’s role (MODE=netserver
).upsmon.conf
: Configures how the server monitors UPS state and triggers shutdown if needed.upsmon
: Runs the actual monitoring logic.upssched.conf
+upssched-cmd
: (Optional) Define timed/custom actions, like delayed shutdowns or alert scripts.
Network Connection:
- The server’s
upsd
listens on port 3493 and sends status updates toupsmon
processes running on clients.
On the NUT Client:
nut.conf
: Declares the client role (MODE=netclient
).upsmon.conf
: Configures connection to the server and sets the client as aslave
.upsmon
: Listens to UPS events sent by the server’supsd
and initiates shutdowns or logging.upssched.conf
+upssched-cmd
: (Optional) Used for custom responses or timers on the client.
Techno Tim’s walkthrough videos:
General NUT install
Raspberry PI NUT server install using the NUTandRpi script
Summary
The diagram illustrates how NUT components interact to deliver reliable UPS monitoring and coordinated system shutdowns. The upsd
service is the central piece that shares UPS data, while upsmon
ensures appropriate response on both server and client systems. Optional scheduling scripts can add even more flexibility.