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

  1. Sources
  2. NUT Server/Client Interaction Diagram
  3. What the Diagram Shows
    1. On the NUT Server:
    2. Network Connection:
    3. On the NUT Client:
  4. Techno Tim’s walkthrough videos:
    1. General NUT install
    2. Raspberry PI NUT server install using the NUTandRpi script
  5. Summary

Sources

  1. My main source is Techno Tim’s excellent Network UPS Tools (NUT) Ultimate Guide and video.

  2. I used the NUTandRpi script to install NUT Server to my Raspberry Pi.
    1. Techno Tim’s NUTandRpi script instructions instructions and video for using the script are very helpful.
  3. I relied on Zanshin Dojo’s Synology + Proxmox + NUT UPS article to set up the Synology NAS as a NUT client.

  4. 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!

  5. 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 the upsd 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 to upsmon 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 a slave.
  • upsmon: Listens to UPS events sent by the server’s upsd 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.