nutalert is a self-hosted UPS monitoring system for NUT (Network UPS Tools) servers. It features a modern web interface to visualize live data and manage settings, sends customizable alerts when specific conditions are met, and supports dozens of notification destinations
- Seemless connection to NUT servers to monitor UPS devices
- Multi-UPS support: monitor multiple UPS devices with individual settings
- Multi-architecture support: runs on amd64, arm64
- Multi-platform support: nutalert supports notifications for
and many more thanks to Apprise integration.
- Modern Web UI monitor UPS device data and adjust settings
- Configurable Alerts based-on:
- Runtime
- Battery charge
- Input voltage
- UPS Load
- UPS status
- Dual Configuration Modes:
- Basic (individual condition checks)
- Formula (custom expressions)
Access the web interface at http://{server_ip}:8087 to:
- Configure notification destinations
- Adjust rules and UPS limits
- View system logs
Before beginning your deployment, make sure your NUT server is operational. The instructions below cover two deployment scenarios: running both the NUT server and nutalert in a single Docker environment, or hosting nutalert while your NUT server runs externally. You can skip this step if you are setting up nut-upsd at the same time using this guide.
If your NUT server is hosted externally, first verify connectivity from the nutalert host:
/bin/echo -e "LIST VAR ups\r" | /usr/bin/nc -w 1 <nut-server-ip> 3493A successful response will display a list of available UPS variables from your NUT server confirming that nutalert can retrieve your monitoring data.
If you wish to run your NUT server using Docker alongside nutalert, create a docker-compose.yaml file with the following content:
services:
nut-upsd:
image: instantlinux/nut-upsd
container_name: nut
environment:
- TZ=America/New_York # modify if different
- API_PASSWORD={PASSWORD} # required for nut, not nutalert
- DRIVER=usbhid-ups # modify based on your ups model
devices:
- /dev/bus/usb:/dev/bus/usb # your ups device
ports:
- 3493:3493 # nut port, modify if needed
restart: unless-stopped
nutalert:
image: ghcr.io/rmfatemi/nutalert:latest
container_name: nutalert
depends_on:
- nut-upsd
ports:
- 8087:8087 # web ui port, modify if needed
volumes:
- /path/to/config_dir:/config # set the correct config path
restart: unless-stoppedIf your NUT server is hosted separately you can remove nut-upsd from template above and add its port to nutalert's ports section.
Once your docker-compose.yaml file is ready, start the service with:
docker-compose up -dOn first start, nutalert will auto-detect all UPS devices on your NUT server and generate a default config file. You can then customize settings through the web UI or by editing the config file directly.
This project is licensed under the MIT License - see the LICENSE file for details.