Network UPS Tools (NUT) is a mature, open-source way to monitor many different power devices through one consistent interface. This guide explains the NUT server model, common homelab setups, UPS battery monitoring, runtime data, graceful shutdown planning, Raspberry Pi NUT deployments, hardware compatibility, and Android monitoring with UPSLink.
Your homelab needs more than battery backup
You built your homelab to keep useful services under your control. It may hold family backups, media, home automation, development environments, security tools, or business systems. You are the person responsible for keeping that infrastructure healthy when utility power becomes unreliable.
A UPS gives the equipment time, but time alone is not a strategy. If nobody knows the UPS is on battery, how much runtime remains, or whether the battery is healthy, a short outage can quietly become an abrupt shutdown. File systems, databases, virtual machines, and storage arrays do not benefit from discovering the end of the battery at the same moment power disappears.
The villain is not merely a blackout. It is unexpected power loss combined with poor UPS visibility. A UPS may be protecting the rack while its warnings remain trapped in a vendor utility on one machine. A worn battery may report much less UPS runtime than expected. A network switch may lose power before secondary servers receive a shutdown message. A USB cable connected to one host may leave every other device unaware of the power event.
Good UPS monitoring changes the situation. It lets protected systems observe the same power state, gives administrators time to investigate battery and load conditions, and provides the information needed for a planned graceful shutdown. That is the problem Network UPS Tools was designed to solve.
What is Network UPS Tools?
Network UPS Tools, commonly shortened to NUT, is a free and open-source toolkit for monitoring and managing UPS systems and other power devices. The project provides a common protocol, tools, and data model across a broad range of manufacturer-specific hardware and communication methods.
That common layer is the key idea. An APC UPS, CyberPower UPS, Eaton unit, or another supported device may expose information in a different way. NUT drivers translate device-specific protocols into consistent variables and status values that NUT clients can understand. Instead of every monitoring tool needing custom knowledge of every model, it can communicate with the NUT server.
The official project describes support for UPS devices as well as power distribution units, automatic transfer switches, power supply units, and solar controllers. It can communicate over USB, serial, and network protocols where suitable drivers exist. The exact capabilities still depend on the device, connection, firmware, and selected driver, so the official compatibility information should always be your source of truth.
NUT has become an industry-standard choice for Linux and self-hosted environments because it separates hardware communication from network access and client behavior. That modular approach works for a single computer beside a UPS, but it also scales to one UPS protecting several machines.
How a NUT server works
NUT uses a layered driver, server, and client architecture. The layers may run on one host or be distributed across a network, depending on the setup.
UPS driver
A device-specific driver communicates with the UPS through USB, serial, SNMP, or another supported method and translates its data into standard NUT variables.
NUT data server
upsd makes the driver data available to authorized clients over the network. Its default TCP port is 3493.
NUT clients
Clients query status, record data, show dashboards, send notifications, or trigger local shutdown behavior based on the UPS state.
On the machine physically connected to the UPS, a driver talks to the hardware. The NUT data server, upsd, publishes the available information. A command-line tool such as upsc, a monitoring daemon such as upsmon, or a third-party UPS monitoring app can then act as a client.
This separation is why the word “Network” matters. The server attached to the USB cable does not have to be the only machine that knows about the UPS. Other systems can connect to the NUT server across a trusted network, observe the power state, and follow their own shutdown policy.
Keep the network path powered. If secondary machines rely on a NUT server during an outage, the switches, routers, bridges, and access points between them must also remain powered long enough for monitoring and shutdown communication to work.
What NUT UPS monitoring can show you
The data available through NUT depends on what the UPS and driver report. A basic model may expose only a small set of values. A more capable device may provide detailed electrical measurements, battery information, alarms, and controllable settings.
Common NUT monitoring data can include:
- Current UPS status, including online, on battery, or low battery conditions
- Battery charge percentage and estimated UPS runtime remaining
- UPS load percentage and apparent or real power where reported
- Input and output voltage, frequency, and transfer conditions
- Battery voltage, replacement indicators, and manufacturer data
- Device model, serial number, firmware, and driver information
- Alarm states and other hardware-specific measurements
UPS battery monitoring is most useful when you treat the numbers as operational signals rather than guarantees. Runtime is an estimate influenced by battery age, temperature, current load, calibration, and the UPS model. A dashboard showing 20 minutes under a light load does not promise the same runtime after more equipment is added.
Watch trends and validate assumptions. If the same load produces noticeably less runtime over time, investigate battery condition. If load percentage rises after adding a server, confirm that your shutdown sequence still leaves enough margin. Avoid running destructive battery tests on critical equipment without understanding the risk and the manufacturer’s instructions.
NUT and graceful shutdown
A graceful shutdown is the controlled process of stopping applications, flushing writes, closing databases, unmounting storage, and powering off an operating system before the UPS battery is exhausted. NUT can support this workflow, but it must be configured and tested on the systems being protected.
The standard NUT client upsmon monitors UPS state and can initiate a local shutdown when the configured power situation becomes critical. In a simple deployment, the driver, upsd, and upsmon may all run on one host. In a networked deployment, a primary host talks to the UPS while secondary systems run their own monitoring clients and connect to the primary NUT server.
A thoughtful shutdown plan considers more than the low-battery flag:
- Which systems should stop first, and which host must remain online longest?
- How much battery reserve is needed for shutdown to finish safely?
- Will network equipment remain powered throughout the sequence?
- What happens if utility power returns after shutdown has started?
- How will you test the policy without risking production data?
NUT includes tools for advanced scheduling and notification logic, but configuration differs by operating system and package. Follow the documentation shipped with your installed NUT version because distribution packages can lag behind current upstream development. Test deliberately, starting with simulated or non-critical scenarios where possible.
An Android UPS monitor does not replace this local shutdown configuration. UPSLink gives a person visibility and alerts; upsmon and related NUT components provide the automated response on protected computers. The two roles complement each other.
Running Raspberry Pi NUT for a homelab
A Raspberry Pi can make a practical NUT server because it uses little power and can stay connected to a UPS by USB while sharing status across the local network. It is especially useful when the main server, NAS, or hypervisor should not own the physical UPS connection.
A typical Raspberry Pi NUT layout looks like this:
- The UPS connects to the Raspberry Pi by a supported USB or serial connection.
- A NUT driver on the Pi communicates with the UPS.
upsdpublishes the normalized UPS data on the trusted network.- Servers and NAS devices connect as NUT clients for monitoring or graceful shutdown.
- UPSLink connects from Android for a convenient status view and notifications.
The exact installation commands and service names vary by Raspberry Pi OS and NUT package version. At minimum, a server normally needs device configuration, server listener settings, and appropriate user or access rules. USB permissions must allow the unprivileged NUT driver process to reach the device.
Do not expose TCP port 3493 directly to the internet. Restrict access with the host firewall and NUT configuration, keep credentials private, and use a trusted VPN when remote monitoring is required. If the Android device cannot reach the Raspberry Pi NUT server, verify the server bind address, firewall, client network, and allowed access rules before assuming the UPS driver is at fault.
APC UPS, CyberPower UPS, and hardware compatibility
NUT supports many models from APC, CyberPower, Eaton, Tripp Lite, Vertiv, and numerous other manufacturers, but a brand name alone is not enough to confirm compatibility. Two devices sold under the same brand may use different protocols, USB identifiers, or firmware behavior.
Before buying hardware or changing a working configuration:
- Search the official NUT hardware compatibility list for the exact model.
- Note the reported support level, driver, connection type, and user comments.
- Check whether your operating system package includes a sufficiently recent driver.
- Confirm that the values you need—such as UPS runtime or load—are actually reported.
- Keep a copy of the working configuration before testing another driver.
Many USB UPS devices use the HID power-device standard and work with a common driver, while others need vendor-specific drivers. Network management cards may use SNMP or another network protocol. Let the compatibility list and detected hardware guide the decision rather than selecting a driver from the manufacturer name alone.
Monitor your NUT server from Android with UPSLink
Once the NUT server is working, you still need a convenient way to see what it knows. Command-line queries are excellent for setup and troubleshooting, but they are not always where you look during a storm, a brief outage, or an ordinary day away from the rack.
UPSLink is an Android UPS monitoring app built as a companion for user-configured NUT servers. It connects to the server you specify and presents UPS status, battery percentage, estimated runtime, load, voltage, notifications, diagnostics, and Android widgets in a mobile interface.
That makes UPSLink useful for Synology, Unraid, Proxmox, TrueNAS, Raspberry Pi, and Linux environments that already expose a compatible NUT service. It does not replace NUT, control utility power, or guarantee a graceful shutdown. It makes the NUT monitoring data easier to check from the Android device you already carry.
For access away from home, prefer a VPN such as Tailscale or another secure remote-access design. Never publish a NUT server broadly to the internet merely to make a phone app connect. The secure network path is part of the solution.
A simple NUT monitoring plan
You do not need to perfect every automation on the first day. Build confidence in four deliberate steps.
Connect and verify the UPS
Confirm the exact model and driver, establish communication, and use a local NUT client to verify that status and useful measurements are updating.
Publish data to trusted clients
Configure upsd, access controls, and the firewall so only the systems that need UPS data can reach the NUT server.
Configure and test graceful shutdown
Set the policy on each protected host, account for network equipment and shutdown order, then test safely before relying on it during a real outage.
Add human-friendly monitoring
Connect UPSLink for an Android UPS monitor, configure useful notifications, and add a widget when at-a-glance status helps your routine.
After the basic plan works, revisit it when hardware, load, batteries, network topology, or server roles change. A homelab UPS setup is not “done forever.” It is a small operational system that deserves periodic review.
Common NUT UPS monitoring mistakes
Exposing the NUT server publicly
A NUT server belongs on a trusted network. Use firewall restrictions and a VPN for remote access. Do not treat an open internet port as a shortcut to mobile monitoring.
Powering servers but not the network
Secondary clients cannot receive state changes from the primary server if the switch between them loses power. Include critical networking equipment in the UPS load and runtime plan.
Treating runtime as a promise
UPS runtime is an estimate, not a service-level guarantee. Battery wear and load changes matter. Preserve a safety margin for the shutdown process.
Skipping shutdown tests
A configuration file that looks correct is not proof that applications stop cleanly, the OS powers off, or the sequence survives a changing network state. Test in a controlled way.
Assuming every model exposes every value
NUT can only report what the device and driver make available. Missing load, voltage, or runtime fields may reflect hardware or protocol limitations rather than a client problem.
Network UPS Tools FAQ
What is Network UPS Tools?
Network UPS Tools is a free, open-source toolkit that provides a common interface for monitoring and managing many UPS systems and other power devices. It separates hardware drivers, the NUT data server, and clients so UPS information can be shared across a network.
Can I run a NUT server on a Raspberry Pi?
Yes. A Raspberry Pi can run the appropriate NUT driver and upsd for a compatible USB, serial, or network UPS. It can then serve status to authorized computers, NAS devices, and monitoring clients.
Does NUT work with APC UPS and CyberPower UPS models?
NUT supports many APC and CyberPower devices, but compatibility is model-specific. Check the official hardware compatibility list for the exact model, driver, connection type, and reported support level.
What port does a NUT server use?
The upsd data server listens on TCP port 3493 by default. Restrict that port to trusted clients and use a secure VPN for remote access instead of exposing it directly to the internet.
Can UPSLink shut down my servers?
UPSLink is an Android monitoring companion. Configure graceful shutdown on the protected systems using NUT components such as upsmon and, where needed, upssched. UPSLink helps a person see status and receive alerts.
How do I monitor a NUT UPS from Android?
First configure and secure a reachable NUT server. Then add its address and port to an Android NUT monitoring app such as UPSLink. Follow the UPSLink getting-started guide for the app workflow.
Why is my NUT UPS runtime missing or inaccurate?
Not every UPS reports runtime, and estimates depend on device firmware, battery condition, calibration, and load. Verify the raw value with a standard NUT client and consult the hardware compatibility notes for your model.
Can I monitor a Synology NAS UPS server?
Synology DSM can expose its connected UPS through its Network UPS Server feature. The client device must be permitted in DSM and able to reach the NAS. See the UPSLink FAQ for the Synology connection checklist.
Build visibility before the next outage
Your UPS already provides a window of time. Network UPS Tools turns that window into shared, actionable information. It gives different power devices a common language, lets multiple systems observe one UPS, and supports local graceful shutdown decisions when the power situation becomes critical.
The successful outcome is not a dashboard for its own sake. It is knowing that your battery is healthy enough, your load is understood, your runtime assumptions are realistic, and your protected systems have a tested path to shut down cleanly. It is fewer surprises when utility power fails and less time wondering whether the UPS is doing what you expect.
Start with the official NUT documentation, confirm your hardware, and build the driver-server-client chain carefully. Then make the resulting data convenient enough that you will actually look at it.
Keep your NUT server status within reach.
Once your NUT server is configured, UPSLink can bring its UPS status, battery, runtime, alerts, and widgets to Android.