A lightweight containerized Network UPS Tools (NUT) server built on Debian, designed for monitoring and managing UPS devices across your network infrastructure.
This project is community-maintained and no more tested. While functional and stable:
- Multi-Architecture: Supports ARM32, ARM64, and AMD64 platforms
- Updates: Automated builds ensure latest NUT server versions
- Support: Community-based support via GitHub issues
- 🔌 USB UPS Support - Direct USB device connectivity for most UPS models
- 🌐 Network Monitoring - NUT server accessible across your network (port 3493)
- 🔧 Easy Configuration - Environment variable based setup
- 🏠 Home Server Ready - Perfect for Raspberry Pi, home labs, and NAS systems
- 📱 Client Compatible - Works with Synology NAS, HomeAssistant, and other NUT clients
- 🐳 Multi-Architecture - Native support for ARM32, ARM64, and AMD64
docker run -d \
--name=nut-server \
-p 3493:3493 \
--device=/dev/bus/usb/001/005 \
--restart unless-stopped \
nardo86/nut-serverdocker run -d \
--name=nut-server \
-p 3493:3493 \
--device=/dev/bus/usb/001/005 \
-e NAME="office-ups" \
-e DESC="Office APC UPS" \
-e POLLFREQ=10 \
--restart unless-stopped \
nardo86/nut-serverversion: '3.8'
services:
nut-server:
image: nardo86/nut-server
container_name: nut-server
ports:
- "3493:3493"
devices:
- "/dev/bus/usb/001/005:/dev/bus/usb/001/005"
environment:
- NAME=home-ups
- DESC=Home APC Back-UPS ES 700
- POLLFREQ=5
- TZ=Europe/Rome
restart: unless-stopped| Variable | Description | Default | Example |
|---|---|---|---|
NAME |
UPS identifier name | ups |
office-ups |
DRIVER |
UPS driver to use | usbhid-ups |
blazer_usb |
PORT |
Device port/path | auto |
/dev/ttyUSB0 |
POLLFREQ |
Polling interval (seconds) | 5 |
10 |
DESC |
UPS description | UPS |
Office APC UPS |
USERSSTRING |
User configuration | # |
See below |
TZ |
Timezone | Etc/UTC |
Europe/Rome |
Use lsusb to identify your UPS device:
lsusb
# Output: Bus 001 Device 005: ID 051d:0002 American Power Conversion UPS
# Use: --device=/dev/bus/usb/001/005For Synology NAS compatibility:
-e USERSSTRING='[monuser]
password = secret
upsmon slave'This container supports most USB UPS devices. Check the NUT Hardware Compatibility List for your specific model.
- Verify UPS is connected via USB
- Check device path with
lsusb - Ensure container has device access permissions
- Verify port 3493 is accessible
- Check firewall settings
- Ensure NUT client configuration matches server settings
- Check NUT compatibility list
- Try different drivers (e.g.,
blazer_usb,nutdrv_qx) - Monitor container logs for error messages
Available at: https://hub.docker.com/r/nardo86/nut-server
This project was developed with the assistance of Claude AI (Anthropic). While functional, please be aware that:
- Security considerations: The configuration may not be optimized for production environments
- Best practices: Some settings might not follow enterprise-grade security standards
- Testing required: Thoroughly test in your environment before production use
- No warranty: Use at your own risk - review all configurations before deployment
- Community input welcome: Issues and improvements are encouraged via GitHub issues/PRs
Recommendation: Have a security professional review the setup before production deployment.
This is a community project maintained on a volunteer basis.
If this project helped you:
- ⭐ Star the repository on GitHub
- 🐛 Report issues and bugs
- 🔧 Contribute improvements
- ☕ Feel free to consider donating if my work helped you! https://paypal.me/ErosNardi
For issues:
- Check existing GitHub issues
- Review security considerations
- Test in isolated environment
- Provide detailed reproduction steps including UPS model
- Be patient - this is maintained on volunteer basis
- Base Image: Debian Bullseye Slim
- NUT Version: Latest available from Debian repositories
- Architectures: ARM32, ARM64, AMD64
- Update Schedule: Automated monthly builds