first commit
This commit is contained in:
171
README.md
Normal file
171
README.md
Normal file
@@ -0,0 +1,171 @@
|
||||
# 🔋 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
|
||||
Reference in New Issue
Block a user