Proxmox, Synology et alimentation 9 min de lecture

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 root sur 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.

Configuration du serveur onduleur réseau dans DSM, traduite en français, avec l’adresse de Proxmox autorisée
Les repères 1 à 7 reprennent l’écran original. L’adresse de Proxmox est ajoutée à la liste des clients autorisés.

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
Terminal Proxmox affichant les informations de l’onduleur obtenues avec la commande upsc
La capture originale confirme la connexion au serveur NUT de DSM. La valeur ups.status: OL indique que le secteur est présent.

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)'
  • OL signifie On Line : le courant secteur est présent.
  • OB signifie On Battery : l’onduleur fonctionne sur batterie.
  • LB signifie Low Battery : la batterie est faible.

Ce qui se passe pendant une coupure

  1. DSM détecte la perte du secteur et publie l’état OB.
  2. upsmon reçoit l’événement ONBATT et demande à upssched de lancer un minuteur de 60 secondes.
  3. Si le secteur revient avant l’échéance, l’événement ONLINE annule le minuteur.
  4. 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 MONITOR utilise les valeurs attendues par DSM.
  • Le minuteur ne démarre pas : contrôlez les deux lignes NOTIFYFLAG avec EXEC, les chemins de PIPEFN/LOCKFN et 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.

Références

À propos de l’auteur

Jeremy Kraft administre les infrastructures et les services auto-hébergés de l’IBCSC. Ces guides reprennent des configurations réellement déployées, revérifiées avant publication.

Discussion

Commentaires

0

Aucun commentaire pour le moment. Vous pouvez ouvrir la discussion avec une question ou un retour d’expérience.