diff --git a/README.md b/README.md index 7726fdf..3feccd9 100644 --- a/README.md +++ b/README.md @@ -1 +1,171 @@ -# Nut-ups \ No newline at end of file +# 🔋 Protection Proxmox via Onduleur EATON Ellipse PRO avec NUT + +## ✅ Objectif + +Assurer un **arrêt automatique propre** de toutes les VMs puis du serveur **Proxmox VE** en cas de coupure de courant, en s'appuyant sur l'onduleur **EATON Ellipse PRO USB** et le logiciel **NUT (Network UPS Tools)**. + +--- + +## ⚡ Composants + +* **UPS** : EATON Ellipse PRO 850 VA (USB) +* **Hôte Proxmox VE** (relié physiquement via USB) +* **Logiciel** : `nut`, `nut-client`, `jq` +* **Notifications** : Webhook Discord +* **Scripts personnalisés** : `/etc/nut/upssched-cmd.sh` + +--- + +## 📅 Fonctionnement + +| Événement | Action | +| ------------------------------- | ------------------------------------------------------------ | +| Passage sur batterie (`onbatt`) | Envoie un message Discord avec état complet de l'UPS | +| Retour secteur (`online`) | Message Discord "Retour secteur" | +| Batterie faible (`shutdown`) | Arrêt propre des VMs (via `qm shutdown`) puis du serveur PVE | + +--- + +## 🔧 Installation & configuration + +### 1. Installer les paquets + +```bash +apt update -y && apt install -y nut jq +``` + +### 2. Détection de l'UPS (via USB) + +```bash +nut-scanner -U +``` + +Confirmer que le modèle EATON est bien détecté. + +### 3. Fichiers de configuration NUT + +#### `/etc/nut/ups.conf` + +```ini +[eaton] + driver = usbhid-ups + port = auto + vendorid = 0463 + productid = FFFF + desc = "Onduleur EATON Ellipse PRO" +``` + +#### `/etc/nut/nut.conf` + +```ini +MODE=standalone +``` + +#### `/etc/nut/upsd.users` + +```ini +[monuser] + password = secret + upsmon master +``` + +#### `/etc/nut/upsmon.conf` + +```ini +MONITOR eaton@localhost 1 monuser secret master +NOTIFYCMD /sbin/upssched +``` + +#### `/etc/nut/upssched.conf` + +```ini +CMDSCRIPT /etc/nut/upssched-cmd.sh +PIPEFN /var/run/nut/upssched.pipe +LOCKFN /var/run/nut/upssched.lock + +AT COMMBAD * EXECUTE onbatt +AT COMMOK * EXECUTE online +AT LOWBATT * EXECUTE shutdown +``` + +--- + +## 🔢 Script `/etc/nut/upssched-cmd.sh` + +### Fonctions incluses : + +* Lecture de l'état de l'UPS via `upsc` +* Log local horodaté `/var/log/ups-shutdown.log` +* Notification Webhook Discord (format Markdown) +* Arrêt propre de toutes les VMs via `qm shutdown` +* Attente de l'extinction totale avant `shutdown -h now` + +### Sécurité : + +Le script contient une variable `SIMULATION=false` pour activer le mode production. +Si mise à `true`, aucun arrêt ne sera réellement effectué (mode test). + +### Autorisations + +```bash +chmod +x /etc/nut/upssched-cmd.sh +``` + +--- + +## 🚀 Notifications Discord + +Chaque événement envoie un message via Webhook (texte ou bloc `markdown`). + +Exemple `onbatt` : + +```markdown +🔕 pve est passé sur batterie à 2025-07-29 09:10:22 +``` + +``` +🖥️ Modèle : Ellipse PRO 850 +🔋 Charge batterie : 46 % +⏳ Autonomie estimée : 168 sec +⚡ Charge appliquée : 47 % +🔌 Entrée : 237.0 V → ⚡ Sortie : 234.0 V +🔋 Puissance : 261 VA +💡 Statut UPS : OL +``` + +--- + +## 🛡️ Test manuel sans danger + +```bash +/etc/nut/upssched-cmd.sh onbatt +``` + +Permet de vérifier les logs + Discord sans exécuter d'arrêt. + +--- + +## 🔺 Bascule en production + +```bash +nano /etc/nut/upssched-cmd.sh +# Remplacer : SIMULATION=true --> SIMULATION=false +``` + +Puis redémarrer NUT : + +```bash +systemctl restart nut-server +systemctl restart nut-client +``` + +--- + +## 📄 Log + +Fichier log local : `/var/log/ups-shutdown.log` +Contient tous les événements UPS avec horodatage. + +--- + +## 💼 Auteur : Ssyleric — 2025-07-29