--- title: PeaNUT created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, networking, ups, monitoring, nut, apc, eaton, python, dashboard] confidence: high contested: false sources: [https://selfh.st/apps/?tag=networking, https://github.com/Brandawg93/PeaNUT] --- # 🔋 PeaNUT > **Dashboard web et client NUT** léger pour surveiller vos onduleurs (UPS) compatibles : charge batterie, autonomie restante, consommation, alertes. Le compagnon visuel idéal d'un serveur [[app-nut]] ou d'un NAS qui expose le protocole network UPS tools. | Métadonnée | Valeur | | :--- | :--- | | **Site web** | [github.com/Brandawg93/PeaNUT](https://github.com/Brandawg93/PeaNUT) | | **GitHub** | [Brandawg93/PeaNUT](https://github.com/Brandawg93/PeaNUT) | | **License** | MIT | | **Langage** | Python (FastAPI) + TypeScript (frontend) | | **Étoiles** | 410 ⭐ | | **Dernière MAJ** | 2026-05-30 | | **Catégorie** | [[cat-networking\|Networking]] | ## Description PeaNUT est une **web UI moderne pour NUT (Network UPS Tools)**, le démon de référence sous Linux pour piloter un onduleur (UPS) via USB ou réseau. Plutôt que de subir la console `upsc` en CLI ou l'interface vieillissante d'[[app-nut]], PeaNUT expose un **dashboard temps réel** (charge, tension, fréquence, température, autonomie estimée) avec **historique**, **alertes** (push, email, webhook), et **commandes** (test batterie, arrêt graceful des machines). Le projet supporte nativement les onduleurs des marques les plus courantes : **APC, CyberPower, Eaton, Tripp Lite, MGE, Best Power**. Il suffit d'un onduleur USB branché à un serveur (ou d'un onduleur réseau avec carte SNMP/ethernet) et d'un démon NUT (nut-server) qui l'expose via le port 3493. PeaNUT se connecte, scrape les variables MIB, et les affiche. Cas d'usage typique : un onduleur APC Back-UPS 1500VA protège un NAS Synology et un petit serveur. Sur le NAS tourne `nut-server`, sur le serveur tourne PeaNUT (Docker). Le dashboard PeaNUT montre l'autonomie (12 min), la charge (32%), la consommation (180W). Quand une coupure dépasse 5 minutes, PeaNUT déclenche un webhook Home Assistant qui initie l'arrêt propre des VMs avant que la batterie ne meure. ## Installation ### Docker Compose (recommandé) ```yaml # docker-compose.yml services: peanut: image: brandawg93/peanut:latest container_name: peanut restart: unless-stopped ports: - "8480:8080" environment: - NUT_HOST=192.168.1.50 # IP du serveur NUT - NUT_PORT=3493 - NUT_USER=monuser - NUT_PASS=*** - TZ=Europe/Paris - INFLUX_HOST=influxdb.local # optionnel : export métriques - INFLUX_TOKEN=*** volumes: - peanut-config:/config depends_on: - nut-server # Exemple : NUT server intégré (si onduleur USB sur la même machine) nut-server: image: instantlinux/nut-upsd:latest container_name: nut-server restart: unless-stopped devices: - /dev/bus/usb:/dev/bus/usb # onduleur USB passé au container ports: - "3493:3493" environment: - SHUTDOWNCMD=shutdown -h now volumes: - nut-config:/etc/nut privileged: true volumes: peanut-config: nut-config: ``` > ⚠️ Le serveur NUT (`nut-server`) doit tourner ailleurs (Synology, OpenWRT, machine avec onduleur USB) ; PeaNUT n'est qu'un **client** / dashboard. ### Installation manuelle (Docker simple) ```bash docker run -d \ --name peanut \ -p 8480:8080 \ -e NUT_HOST=192.168.1.50 \ -e NUT_PORT=3493 \ -e NUT_USER=monuser \ -e NUT_PASS=***\ -v peanut-config:/config \ --restart unless-stopped \ brandawg93/peanut:latest ``` ## Configuration Sur le serveur NUT, configurer l'utilisateur et l'onduleur : ```conf # /etc/nut/ups.conf [apc-ups] driver = usbhid-ups port = auto desc = "APC Back-UPS 1500" # /etc/nut/upsd.conf LISTEN 0.0.0.0 3493 # /etc/nut/upsd.users [monuser] password = *** actions = SET instcmds = ALL # /etc/nut/upsmon.conf MONITOR apc-ups@localhost 1 monuser *** master SHUTDOWNCMD "/sbin/shutdown -h now" ``` Côté PeaNUT (UI web sur `http://localhost:8480`), ajouter le serveur NUT et les seuils d'alerte. API JSON exposée (utile pour scripts) : ```bash curl http://peanut.local:8480/api/v1/devices | jq # Charge, status, charge en %, runtime restant, etc. ``` ## Alternatives ### Open Source - [[app-nut]] — NUT lui-même, en CLI / upsc - **apcupsd** — APC-spécifique, plus ancien - **Network UPS Tools Web UI (inactive)** — projets communautaires de GUI - **Grafana + InfluxDB + NUT exporter** — DIY dashboard - **Synology / QNAP built-in** — limité à leur écosystème - **Home Assistant NUT integration** — basique, sans historique - **OpenWRT NUT package** — sur le routeur, ultra-léger ### Propriétaire (ce que PeaNUT remplace) - **PowerChute Business Edition (APC/Schneider)** — 50-300€ selon l'onduleur - **Eaton Intelligent Power Manager** — payant - **CyberPower PowerPanel** — Windows/macOS, pas Linux - **ManageEngine OpManager UPS module** — enterprise - **PRTG UPS sensor** — payant, Paessler - **Tripp Lite PowerAlert** — UI basique, vieillissante ## Sécurité - **LAN-only par défaut** : PeaNUT expose l'état de l'onduleur. Mettre derrière un reverse-proxy avec auth (Authentik, Authelia) ou VPN ([[app-wireguard]]). - **Mots de passe NUT** : l'utilisateur NUT a des droits `SET` ; un attaquant peut déclencher un shutdown. Restreindre via `actions` dans `upsd.users`. - **HTTPS** : activer TLS via Traefik/Caddy ; les credentials transitent en clair sinon. - **2FA sur l'UI** : PeaNUT supporte l'auth intégrée, l'activer. - **Alertes webhook** : chiffrer si le canal n'est pas déjà sécurisé (Ntfy, Discord OK). - **Surveillance du daemon NUT** : si `upsd` meurt, PeaNUT ne reçoit plus rien. Superviser via [[app-watchtower]] ou [[app-prometheus]]. - **Updates** : suivre les releases, vulnérabilités potentielles dans FastAPI. - **Pas d'auto-shutdown sauvage** : configurer des seuils d'autonomie (ex : shutdown si < 5 min) pour éviter d'éteindre un serveur qui pourrait tenir. ## Ressources - [GitHub](https://github.com/Brandawg93/PeaNUT) - [Documentation NUT](https://networkupstools.org) - [Liste des drivers NUT supportés](https://networkupstools.org/stable-hcl.html) - [Discord communautaire](https://discord.gg/peanut) - [Wiki PeaNUT](https://github.com/Brandawg93/PeaNUT/wiki) ## Pages Liées - [[cat-networking|Networking]] — Catégorie parente - [[cat-monitoring|Monitoring]] — Catégorie cousine - [[app-nut|NUT (Network UPS Tools)]] — Serveur source - [[app-home-assistant|Home Assistant]] — Intégration et automatisation shutdown - [[app-prometheus|Prometheus]] — Métriques long-terme - [[app-grafana|Grafana]] — Visualisation historique - [[recettes-docker-compose|Recettes Docker Compose]] - [[protection-onduleurs-homelab|Protection onduleurs homelab]] — Stratégie globale