Relier Proxmox à l’onduleur d’un NAS Synology avec NUT
Utiliser le serveur NUT de DSM pour arrêter proprement les machines virtuelles et l’hôte Proxmox après une coupure de courant.
Mon onduleur est relié en USB au NAS Synology. Le même câble ne pouvant pas être partagé avec l’hôte Proxmox installé sur un Aoostar WTR PRO, DSM sert de passerelle : il lit l’état de l’onduleur, puis le publie sur le réseau avec NUT. Proxmox peut ainsi détecter une coupure et arrêter proprement ses machines virtuelles, ses conteneurs et enfin l’hôte.
Avant de commencer
- Attribuez des adresses IP fixes, ou des réservations DHCP, au NAS et à Proxmox.
- Branchez le NAS, l’hôte Proxmox et le commutateur qui les relie sur les prises secourues de l’onduleur. Sans réseau pendant la panne, l’alerte NUT n’arrivera jamais jusqu’à Proxmox.
- Vérifiez que l’onduleur est reconnu par DSM et qu’il offre assez d’autonomie pour terminer l’arrêt.
- Dans Proxmox, configurez l’ordre et les délais d’arrêt des invités. Pour les VM, installez et activez le QEMU Guest Agent lorsque le système invité le permet.
- Exécutez les commandes ci-dessous depuis un shell
rootsur l’hôte Proxmox.
1. Activer le serveur d’onduleur dans DSM
Ouvrez Panneau de configuration → Matériel et alimentation → Onduleur. Activez la prise en charge de l’onduleur, puis Activer le serveur onduleur réseau. Dans Périphériques Synology NAS autorisés, ajoutez l’adresse IP de Proxmox — 192.168.68.24 dans cet exemple — et appliquez les modifications.
Le serveur NUT de DSM ne doit être accessible que depuis le réseau local de confiance. Si un pare-feu sépare le NAS de Proxmox, autorisez uniquement le port TCP 3493 depuis l’adresse de l’hôte Proxmox. Ne publiez jamais ce port sur Internet.
2. Installer NUT sur Proxmox
Installez le client NUT depuis les dépôts Debian utilisés par Proxmox :
apt update && apt install nut -y
Dans /etc/nut/nut.conf, indiquez que cette machine est uniquement cliente d’un serveur NUT distant :
MODE=netclient
3. Déclarer l’onduleur distant
Ouvrez /etc/nut/upsmon.conf et ajoutez ou adaptez les lignes suivantes :
MONITOR ups@192.168.68.10 1 monuser secret secondary
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h now"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
NOTIFYCMD /usr/sbin/upssched
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG ONLINE SYSLOG+EXEC
ups, monuser et secret correspondent aux valeurs habituellement exposées par le serveur NUT de DSM. Elles ne remplacent pas la restriction par adresse IP. Les versions modernes de NUT utilisent le rôle secondary ; si un ancien paquet refuse ce mot, utilisez son ancien alias slave.
4. Déclencher l’arrêt après 60 secondes
Créez /etc/nut/upssched.conf :
CMDSCRIPT /etc/nut/upssched-cmd
PIPEFN /run/nut/upssched.pipe
LOCKFN /run/nut/upssched.lock
AT ONBATT * START-TIMER shutdown-now 60
AT ONLINE * CANCEL-TIMER shutdown-now online
Le répertoire /run/nut est normalement préparé par le paquet. S’il n’existe pas, créez-le avec des droits limités :
install -d -o nut -g nut -m 0750 /run/nut
Créez ensuite le gestionnaire /etc/nut/upssched-cmd :
#!/bin/sh
case "$1" in
shutdown-now)
logger -t upssched-cmd "UPS on battery for 60 seconds - initiating shutdown"
/usr/sbin/upsmon -c fsd
;;
online)
logger -t upssched-cmd "UPS back online - canceling shutdown"
;;
*)
logger -t upssched-cmd "Unknown command: $1"
;;
esac
Rendez le script exécutable. Les fichiers de configuration doivent rester modifiables uniquement par l’administrateur :
chown root:nut /etc/nut/upsmon.conf /etc/nut/upssched.conf /etc/nut/upssched-cmd
chmod 750 /etc/nut/upssched-cmd
chmod 640 /etc/nut/upsmon.conf /etc/nut/upssched.conf
La valeur 60 reprend la configuration testée dans l’article d’origine. Augmentez-la si vos invités ont besoin de davantage de temps, tout en conservant une marge suffisante avant l’épuisement de la batterie.
5. Démarrer le moniteur et vérifier la connexion
systemctl enable nut-monitor
systemctl restart nut-monitor
systemctl status nut-monitor
Interrogez ensuite directement l’onduleur présenté par DSM :
upsc ups@192.168.68.10
Pour ne garder que l’état et l’autonomie estimée :
upsc ups@192.168.68.10 2>&1 | grep -E '^(ups.status|battery.runtime)'
OLsignifie On Line : le courant secteur est présent.OBsignifie On Battery : l’onduleur fonctionne sur batterie.LBsignifie Low Battery : la batterie est faible.
Ce qui se passe pendant une coupure
- DSM détecte la perte du secteur et publie l’état
OB. upsmonreçoit l’événementONBATTet demande àupsschedde lancer un minuteur de 60 secondes.- Si le secteur revient avant l’échéance, l’événement
ONLINEannule le minuteur. - Si la panne continue, le script appelle
upsmon -c fsd. Proxmox arrête alors les invités, puis l’hôte selon les délais configurés.
Tester sans mauvaise surprise
Commencez par suivre le journal dans un second terminal :
journalctl -u nut-monitor -f
Débranchez ensuite l’alimentation secteur de l’onduleur, jamais les équipements de ses prises secourues. Vérifiez que l’état passe à OB. Les versions récentes de NUT permettent aussi de lister le minuteur en attente avec :
/usr/sbin/upssched -l
Pour un premier essai, rebranchez le secteur avant 60 secondes et confirmez l’annulation dans le journal. Programmez ensuite une vraie simulation en période de maintenance afin de vérifier l’arrêt complet des VM, des conteneurs et de l’hôte. La commande upsmon -c fsd provoque réellement la séquence d’arrêt : ne la lancez pas sur un serveur en production sans fenêtre prévue.
Dépannage rapide
- Connection refused ou timeout : contrôlez l’adresse du NAS, le serveur onduleur réseau de DSM, le port TCP 3493 et le pare-feu.
- Access denied : vérifiez que l’adresse de Proxmox figure bien parmi les périphériques autorisés et que la ligne
MONITORutilise les valeurs attendues par DSM. - Le minuteur ne démarre pas : contrôlez les deux lignes
NOTIFYFLAGavecEXEC, les chemins dePIPEFN/LOCKFNet les droits de/run/nut. - L’hôte s’arrête mais pas les VM : revoyez l’ordre d’arrêt, les délais Proxmox et le QEMU Guest Agent dans chaque invité concerné.
Conclusion
Cette configuration évite d’acheter un second onduleur ou de partager physiquement le câble USB. Le NAS reste le serveur NUT, Proxmox devient un client réseau et une panne brève n’interrompt rien grâce au délai de 60 secondes. Le point essentiel reste le test réel : le réseau doit demeurer alimenté et tous les invités doivent s’arrêter avant que la batterie soit vide.
Discussion
Commentaires
Aucun commentaire pour le moment. Vous pouvez ouvrir la discussion avec une question ou un retour d’expérience.
La connexion protège les échanges du spam et évite de publier votre adresse e-mail.
Se connecter pour commenter →