loading . . . SAI en línea con NUT <p>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.</p><p>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.</p><p>Para ello instalaremos <a href="https://networkupstools.org/">NUT</a></p><h1 id="requisitos">Requisitos</h1><p>Estos son los requisitos para poder continuar con esta guía:</p><ul><li>Un servidor que actuará como monitor NUT. En mi caso una Raspberry Pi 5.</li><li>Tener Linux instalado en el servidor. Prácticamente cualquier distro servirá.</li><li>Un servidor con Docker (opcionalmente con Portainer). Si tienes dudas puedes seguir <a href="https://blog.runesoft.net/install-docker-and-portainer-ce/">esta guía</a>.</li><li>Un SAI/UPS compatible con NUT, puedes comprobarlo <a href="https://networkupstools.org/stable-hcl.html.">en esta lista</a>.</li></ul><h1 id="preparando-el-servidor">Preparando el servidor</h1><p>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 <em>homelabs</em> y hogares, van a ir conectados mediante USB, así que con conectarlos a nuestro servidor sería suficiente.</p><h1 id="instalando-nut">Instalando NUT</h1><p>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:</p><pre><code class="language-bash">sudo apt update
sudo apt upgrade
</code></pre><p>Y posteriormente he instalado el paquete de NUT:</p><pre><code class="language-bash">sudo apt install nut nut-client nut-server
</code></pre><p>Comprobamos que se ha instalado correctamente usando este comando:</p><pre><code class="language-bash">sudo nut-scanner -U
</code></pre><p>Debería darnos una información similar a esta:</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/NUT---nut-scanner.png" class="kg-image" alt="" loading="lazy" width="1271" height="495" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/NUT---nut-scanner.png 600w, https://blog.runesoft.net/content/images/size/w1000/2026/01/NUT---nut-scanner.png 1000w, https://blog.runesoft.net/content/images/2026/01/NUT---nut-scanner.png 1271w" /></figure><p>Con esto deberíamos estar más que servidos, ya solo tendremos que empezar con la configuración.</p><h1 id="configurando-nut">Configurando NUT</h1><p>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.</p><div class="kg-card kg-callout-card kg-callout-card-yellow"><div class="kg-callout-emoji">⚠️</div><div class="kg-callout-text">Verás que los ficheros que pongo <b><strong style="white-space:pre-wrap">de ejemplo</strong></b> son nuevos, siempre haré una copia de seguridad de los ficheros de configuración originales.</div></div><h2 id="dando-de-alta-nuestro-ups">Dando de alta nuestro UPS</h2><p>Para ello, deberemos editar el fichero <code>ups.conf</code>, así que ejecutamos este comando:</p><pre><code class="language-bash">sudo mv /etc/nut/ups.conf /etc/nut/ups.conf.bk
sudo nano /etc/nut/ups.conf
</code></pre><p>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.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text">Los datos que necesitáis son los que el comando <code style="white-space:pre-wrap">sudo nut-scanner -U</code> nos ha aportado</div></div><p>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.</p><pre><code class="language-conf">pollinterval = 1
maxretry = 3
[sai]
driver = usbhid-ups
port = auto
desc = "Cyberpower 1200VA"
vendorid = 0764
productid = 0601
serial = ABCDEFHI123456
</code></pre><p>Ahora, guardamos pulsando <code>CTRL + O</code>, le damos a <code>ENTER</code> y cerramos con <code>CTRL + X</code>.</p><h2 id="creando-el-monitor-de-ups">Creando el monitor de UPS</h2><p>Será el encargado de monitorizar nuestro UPS como tal, ejecutamos:</p><pre><code class="language-bash">sudo mv /etc/nut/upsmon.conf /etc/nut/upsmon.conf.bk
sudo nano /etc/nut/upsmon.conf
</code></pre><p>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:</p><pre><code class="language-conf">MONITOR sai@localhost 1 admin secret master
</code></pre><p>Igual que antes, guardamos y cerramos. Ahora configuraremos el usuario para el monitor, por lo que introducimos el siguiente comando:</p><pre><code class="language-bash">sudo mv /etc/nut/upsd.users /etc/nut/upsd.users.bk
sudo nano /etc/nut/upsd.users
</code></pre><p>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:</p><pre><code class="language-conf">[monuser]
password = secret
admin master
</code></pre><p>Como antes, guardamos y cerramos.</p><h2 id="activando-el-modo-servidor">Activando el modo servidor</h2><p>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.</p><p>Lo primero aquí es establecer desde qué red o IP vamos a permitir conectarse, para ello ejecutamos:</p><pre><code class="language-bash">sudo mv /etc/nut/upsd.conf /etc/nut/upsd.conf.bk
sudo nano /etc/nut/upsd.conf
</code></pre><p>Y en el fichero veremos que hay una línea que está apuntando a la IP <code>127.0.0.1</code>. Si vamos a instalar PeaNUT en este mismo servidor, no es necesario, pero si queremos permitir conexiones desde cualquier IP, siempre podemos indicar:</p><pre><code class="language-conf">LISTEN 0.0.0.0 3493
</code></pre><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text"><code style="white-space:pre-wrap">3493</code> es el puerto por defecto que usa NUT, pero puedes modificarlo si lo deseas.</div></div><p>Como ya sabemos toca guardar el fichero con <code>CTRL + O</code>, darle a <code>ENTER</code> y cerrar con <code>CTRL + X</code>. Ahora vamos al otro fichero implicado en este paso, donde activaremos el modo servidor:</p><pre><code class="language-bash">sudo mv /etc/nut/nut.conf /etc/nut/nut.conf.bk
sudo nano /etc/nut/nut.conf
</code></pre><p>Aquí tan solo tendremos que introducir:</p><pre><code class="language-conf">MODE=netserver
</code></pre><p>Y con esto ya lo tendríamos, tan solo hay que guardar y salir como ya sabemos.</p><h2 id="aplicar-los-cambios-y-comprobar">Aplicar los cambios y comprobar</h2><p>Ahora toca aplicar los cambios, tenemos dos opciones, reiniciar los servicios con:</p><pre><code class="language-bash">sudo service nut-server restart
sudo service nut-client restart
sudo systemctl restart nut-monitor
sudo upsdrvctl stop
sudo upsdrvctl start
</code></pre><p>O reiniciar todo el sistema entero con:</p><pre><code class="language-bahs">sudo reboot now
</code></pre><p>En cualquiera de los casos, al reiniciar, podremos listar los USBs que tenemos disponibles:</p><pre><code class="language-bash">lsusb
</code></pre><p>Y de ahí sacar el que tiene el nombre de nuestro SAI, para listar su información detallada</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/NUT---lsusb.png" class="kg-image" alt="" loading="lazy" width="1142" height="198" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/NUT---lsusb.png 600w, https://blog.runesoft.net/content/images/size/w1000/2026/01/NUT---lsusb.png 1000w, https://blog.runesoft.net/content/images/2026/01/NUT---lsusb.png 1142w" /></figure><p>Recuerda modificar mi ejemplo con los datos del BUS y Dispositivo.</p><pre><code>lsusb -D /dev/bus/usb/003/002
</code></pre><p>Y ahora sí nos dará los detalles de nuestro UPS:</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/NUT---lusb--d.png" class="kg-image" alt="" loading="lazy" width="975" height="562" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/NUT---lusb--d.png 600w, https://blog.runesoft.net/content/images/2026/01/NUT---lusb--d.png 975w" /></figure><h1 id="instalar-peanut">Instalar PeaNUT</h1><p>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.<br />Lo instalaremos usando Docker. Este sería su fichero <code>docker-compose.yaml</code>:</p><pre><code class="language-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:
</code></pre><p>Si utilizamos interfaces como <a href="https://www.portainer.io/">Portainer</a>, solo tendremos que darlo de alta como un <em>stack</em>.</p><p>Una vez arranque, accederemos a su web y puerto, que <strong>en este caso he utilizado el <code>9080</code></strong> para evitar conflictos con otras apps. Nos saldrá lo siguiente, indicando que no hay configurado ningún dispositivo:</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/PeaNUT---Sin-dispositivos.png" class="kg-image" alt="" loading="lazy" width="2000" height="799" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/PeaNUT---Sin-dispositivos.png 600w, https://blog.runesoft.net/content/images/size/w1000/2026/01/PeaNUT---Sin-dispositivos.png 1000w, https://blog.runesoft.net/content/images/size/w1600/2026/01/PeaNUT---Sin-dispositivos.png 1600w, https://blog.runesoft.net/content/images/2026/01/PeaNUT---Sin-dispositivos.png 2320w" /></figure><p>Le daremos al icono del engranaje. Nos llevará a la ventana de administración.</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/PeaNUT---Configuraciones.png" class="kg-image" alt="" loading="lazy" width="1433" height="452" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/PeaNUT---Configuraciones.png 600w, https://blog.runesoft.net/content/images/size/w1000/2026/01/PeaNUT---Configuraciones.png 1000w, https://blog.runesoft.net/content/images/2026/01/PeaNUT---Configuraciones.png 1433w" /></figure><p>Donde dándole al icono del <strong>+</strong> 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:</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/PeaNUT---Administrar-Servidores.png" class="kg-image" alt="" loading="lazy" width="1865" height="1067" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/PeaNUT---Administrar-Servidores.png 600w, https://blog.runesoft.net/content/images/size/w1000/2026/01/PeaNUT---Administrar-Servidores.png 1000w, https://blog.runesoft.net/content/images/size/w1600/2026/01/PeaNUT---Administrar-Servidores.png 1600w, https://blog.runesoft.net/content/images/2026/01/PeaNUT---Administrar-Servidores.png 1865w" /></figure><p>Una vez finalices, sólo hay que darle al botón de <strong>Aplicar</strong> en la esquina inferior derecha. Volveremos a la ventana principal, y tendremos nuestro SAI dado de alta:</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/PeaNUT---Con-Dispositivos.png" class="kg-image" alt="" loading="lazy" width="2000" height="357" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/PeaNUT---Con-Dispositivos.png 600w, https://blog.runesoft.net/content/images/size/w1000/2026/01/PeaNUT---Con-Dispositivos.png 1000w, https://blog.runesoft.net/content/images/size/w1600/2026/01/PeaNUT---Con-Dispositivos.png 1600w, https://blog.runesoft.net/content/images/2026/01/PeaNUT---Con-Dispositivos.png 2309w" /></figure><p>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:</p><figure class="kg-card kg-image-card"><img src="https://blog.runesoft.net/content/images/2026/01/PeaNUT---Detalles-de-SAI.png" class="kg-image" alt="" loading="lazy" width="1389" height="623" srcset="https://blog.runesoft.net/content/images/size/w600/2026/01/PeaNUT---Detalles-de-SAI.png 600w, https://blog.runesoft.net/content/images/size/w1000/2026/01/PeaNUT---Detalles-de-SAI.png 1000w, https://blog.runesoft.net/content/images/2026/01/PeaNUT---Detalles-de-SAI.png 1389w" /></figure><p>Y con esto tendríamos nuestro UPS bien monitorizado con PeaNUT.</p><h1 id="conclusi%C3%B3n">Conclusión</h1><p>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.</p><h1 id="referencias">Referencias</h1><ul><li>Guía en inglés de <strong>TechnoTim</strong>: <a href="https://technotim.com/posts/NUT-server-guide/">https://technotim.com/posts/NUT-server-guide/</a></li><li>Vídeo del que obtuve la idea de <strong>Hardware Heaven</strong>: <a href="https://www.youtube.com/watch?v=dXSbURqdPfI">https://www.youtube.com/watch?v=dXSbURqdPfI</a></li><li>Documentación oficial de <strong>NUT</strong> para contrastar: <a href="https://networkupstools.org/">https://networkupstools.org/</a></li><li>Guía de instalación oficial de <strong>PeaNUT</strong>: <a href="https://github.com/Brandawg93/PeaNUT">https://github.com/Brandawg93/PeaNUT</a></li></ul> https://blog.runesoft.net/sai-en-linea-con-nut/