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.

⚠️
Verás que los ficheros que pongo de ejemplo son nuevos, siempre haré una copia de seguridad de los ficheros de configuración originales.

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.

💡
Los datos que necesitáis son los que el comando sudo nut-scanner -U nos ha aportado

Podé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