A la hora de tener un SAI, todos estamos de acuerdo que su principal función es proteger nuestros sistemas ante caídas o picos de tensión.
Pero un paso importante es saber la información de nuestro SAI, de forma que podamos conocer el consumo en tiempo real, la capacidad restante de batería y el tiempo que tenemos en caso de irse la corriente.
Para ello instalaremos NUT
Requisitos
Estos son los requisitos para poder continuar con esta guía:
- Un servidor que actuará como monitor NUT. En mi caso una Raspberry Pi 5.
- Tener Linux instalado en el servidor. Prácticamente cualquier distro servirá.
- Un servidor con Docker (opcionalmente con Portainer). Si tienes dudas puedes seguir esta guía.
- Un SAI/UPS compatible con NUT, puedes comprobarlo en esta lista.
Preparando el servidor
Lo primero que tenemos que saber, es qué tipo de driver va a utilizar nuestro SAI, y qué conexión va a tener. La mayoría de SAI de precio razonable para homelabs y hogares, van a ir conectados mediante USB, así que con conectarlos a nuestro servidor sería suficiente.
Instalando NUT
Es el paso más sencillo, puesto que en la mayoría de distribuciones Linux es un paquete. En mi caso uso Raspbian (Debian), así que lo primero, al tratarse de una nueva instalación, he actualizado el repositorio:
sudo apt update
sudo apt upgrade
Y posteriormente he instalado el paquete de NUT:
sudo apt install nut nut-client nut-server
Comprobamos que se ha instalado correctamente usando este comando:
sudo nut-scanner -U
Debería darnos una información similar a esta:

Con esto deberíamos estar más que servidos, ya solo tendremos que empezar con la configuración.
Configurando NUT
Para configurarlo, necesitaremos modificar una serie de ficheros, así que iremos cubriendo cada uno de ellos, y explicando para qué sirven las modificaciones que hacemos.
Dando de alta nuestro UPS
Para ello, deberemos editar el fichero ups.conf, así que ejecutamos este comando:
sudo mv /etc/nut/ups.conf /etc/nut/ups.conf.bk
sudo nano /etc/nut/ups.conf
Aquí deberemos dar de alta los datos de nuestro SAI, siguiendo el ejemplo que adjunto. En mi caso se trata de un SAI de Cyberpower.
sudo nut-scanner -U nos ha aportadoPodéis modificar lo que está entre corchetes ("[SAI]") por el nombre que le queráis dar a vuestro UPS dentro del sistema de NUT. Adaptad el resto con vuestra información.
pollinterval = 1
maxretry = 3
[sai]
driver = usbhid-ups
port = auto
desc = "Cyberpower 1200VA"
vendorid = 0764
productid = 0601
serial = ABCDEFHI123456
Ahora, guardamos pulsando CTRL + O, le damos a ENTER y cerramos con CTRL + X.
Creando el monitor de UPS
Será el encargado de monitorizar nuestro UPS como tal, ejecutamos:
sudo mv /etc/nut/upsmon.conf /etc/nut/upsmon.conf.bk
sudo nano /etc/nut/upsmon.conf
Aquí deberemos poner una línea por cada UPS que monitoricemos, en mi caso solo es uno. Además, definiremos el usuario y contraseña para conectarse posteriormente, recuerda adaptarlo a tus necesidades:
MONITOR sai@localhost 1 admin secret master
Igual que antes, guardamos y cerramos. Ahora configuraremos el usuario para el monitor, por lo que introducimos el siguiente comando:
sudo mv /etc/nut/upsd.users /etc/nut/upsd.users.bk
sudo nano /etc/nut/upsd.users
Y damos de alta lo siguiente, al igual que en el archivo anterior, modificando el usuario o contraseña si lo vemos conveniente, pero siempre que sean los mismos datos:
[monuser]
password = secret
admin master
Como antes, guardamos y cerramos.
Activando el modo servidor
Con los pasos anteriores, estamos listos para hacer que NUT sea accesible como un servidor, de forma que podamos conectar otras aplicaciones como PeaNUT (lo veremos en siguientes pasos en esta guía) para obtener la información.
Lo primero aquí es establecer desde qué red o IP vamos a permitir conectarse, para ello ejecutamos:
sudo mv /etc/nut/upsd.conf /etc/nut/upsd.conf.bk
sudo nano /etc/nut/upsd.conf
Y en el fichero veremos que hay una línea que está apuntando a la IP 127.0.0.1. Si vamos a instalar PeaNUT en este mismo servidor, no es necesario, pero si queremos permitir conexiones desde cualquier IP, siempre podemos indicar:
LISTEN 0.0.0.0 3493
3493 es el puerto por defecto que usa NUT, pero puedes modificarlo si lo deseas.Como ya sabemos toca guardar el fichero con CTRL + O, darle a ENTER y cerrar con CTRL + X. Ahora vamos al otro fichero implicado en este paso, donde activaremos el modo servidor:
sudo mv /etc/nut/nut.conf /etc/nut/nut.conf.bk
sudo nano /etc/nut/nut.conf
Aquí tan solo tendremos que introducir:
MODE=netserver
Y con esto ya lo tendríamos, tan solo hay que guardar y salir como ya sabemos.
Aplicar los cambios y comprobar
Ahora toca aplicar los cambios, tenemos dos opciones, reiniciar los servicios con:
sudo service nut-server restart
sudo service nut-client restart
sudo systemctl restart nut-monitor
sudo upsdrvctl stop
sudo upsdrvctl start
O reiniciar todo el sistema entero con:
sudo reboot now
En cualquiera de los casos, al reiniciar, podremos listar los USBs que tenemos disponibles:
lsusb
Y de ahí sacar el que tiene el nombre de nuestro SAI, para listar su información detallada

Recuerda modificar mi ejemplo con los datos del BUS y Dispositivo.
lsusb -D /dev/bus/usb/003/002
Y ahora sí nos dará los detalles de nuestro UPS:

Instalar PeaNUT
PeaNUT es una interfaz web que nos permite conectarnos a nuestro NUT server, y así poder visualizar de manera cómoda los datos, consumo real y tiempo restante de nuestro SAI.
Lo instalaremos usando Docker. Este sería su fichero docker-compose.yaml:
services:
peanut:
image: brandawg93/peanut:latest
container_name: PeaNUT
restart: unless-stopped
volumes:
- peanut-config:/config
ports:
- 9080:8080
environment:
- WEB_PORT=8080
volumes:
peanut-config:
Si utilizamos interfaces como Portainer, solo tendremos que darlo de alta como un stack.
Una vez arranque, accederemos a su web y puerto, que en este caso he utilizado el 9080 para evitar conflictos con otras apps. Nos saldrá lo siguiente, indicando que no hay configurado ningún dispositivo:

Le daremos al icono del engranaje. Nos llevará a la ventana de administración.

Donde dándole al icono del + nos aparecerá el formulario para dar de alta un UPS. Recuerda modificar los campos con los valores que hayas ido configurando, como el puerto, el servidor, o el nombre y contraseña del usuario:

Una vez finalices, sólo hay que darle al botón de Aplicar en la esquina inferior derecha. Volveremos a la ventana principal, y tendremos nuestro SAI dado de alta:

Si queremos ver más información, podemos darle al botón de detalles que aparece a la derecha, y nos saldrán una serie de gráficas, donde podremos ver hasta el consumo real de los dispositivos conectados a nuestro SAI, o el tiempo de respuesta:

Y con esto tendríamos nuestro UPS bien monitorizado con PeaNUT.
Conclusión
Habiendo seguido esta guía, hemos podido configurar nuestro servidor de monitorización de SAI con NUT, y aplicarle una interfaz web amigable para poder gestionarlo cómodamente con PeaNUT.
Referencias
- Guía en inglés de TechnoTim: https://technotim.com/posts/NUT-server-guide/
- Vídeo del que obtuve la idea de Hardware Heaven: https://www.youtube.com/watch?v=dXSbURqdPfI
- Documentación oficial de NUT para contrastar: https://networkupstools.org/
- Guía de instalación oficial de PeaNUT: https://github.com/Brandawg93/PeaNUT