Bonjour,
Mon QNAP n’arrive pas à se connecter à mon NUT
QNAP + NUT (Home Assistant) : Guide de configuration
Connecter un QNAP en esclave réseau UPS via Raspberry Pi
Problème connu : L’interface QTS ne permet pas de saisir le nom de l’UPS, le username ou le
password. Ces valeurs sont hardcodées dans le firmware QNAP. Ce guide documente le contournement complet.
Architecture
L’architecture cible est la suivante :
UPS (USB)
↓
Raspberry Pi → Home Assistant OS → Addon NUT (netserver)
↓
QNAP NAS → Esclave réseau UPS (QTS)
Le problème : pourquoi ça ne fonctionne pas par défaut
Deux raisons principales expliquent l’échec silencieux de QTS :
-
Le nom de l’UPS est hardcodé
QTS cherche systématiquement un UPS nommé « qnapups » — peu importe ce que vous configurez dans l’interface. Ce nom est inscrit en dur dans les scripts internes du firmware (/etc/init.d/usb_ups.sh) et dans /etc/config/ups/upsmon.conf.
Si votre serveur NUT expose un UPS avec un autre nom (ex: « eaton », « myups »), QTS ne le trouvera jamais. -
Les credentials sont hardcodés
QTS utilise le username « admin » et le password « qnap-ups » (ou « 123456 » selon les versions firmware). Ces valeurs ne sont pas configurables depuis l’interface graphique.
Le fichier de référence est : /etc/config/ups/upsd.users sur le QNAP.
Solution complète
Étape 1 — Configurer l’addon NUT sur le Pi
Dans Home Assistant → Paramètres → Modules complémentaires → NUT → Configuration :
mode: netserver
devices:
- name: qnapups # ← Obligatoire : doit s'appeler qnapups
driver: usbhid-ups
port: auto
users:
- username: admin
password: qnap-ups # ← Vérifier dans /etc/config/ups/upsd.users sur le QNAP
instcmds:
- all
actions:
- set
upsmon: slave
Vérifier le vrai password utilisé par votre QNAP :
cat /etc/config/ups/upsd.users
Le champ « password » est celui à utiliser côté NUT.
Étape 2 — Exposer le port 3493 sur le réseau
Par défaut, l’addon NUT tourne dans un container Docker isolé. Le port doit être publié vers l’hôte.
Dans HA → Addon NUT → onglet « Réseau » : saisir 3493 dans le champ hôte en face de 3493/tcp, puis Enregistrer et Redémarrer l’addon.
Vérification depuis le Pi (terminal VS Code ou addon Terminal) :
netstat -tlnp | grep 3493
Doit afficher : 0.0.0.0:3493
Étape 3 — Corriger la configuration upsmon du QNAP
Le fichier /etc/config/ups/upsmon.conf contient la ligne MONITOR utilisée par QTS. Elle pointe par défaut sur localhost au lieu du Pi.
Éditer le fichier :
vi /etc/config/ups/upsmon.conf
Changer la ligne MONITOR :
AVANT (défaut) :
MONITOR qnapups@localhost 1 admin 123456 master
APRÈS :
MONITOR qnapups@192.168.1.10 1 admin change_me slave
↑ ↑
IP du Pi HA Password du upsd.users QNAP
Redémarrer le service UPS sur le QNAP :
/etc/init.d/ups.sh restart
Vérifications
Depuis le QNAP (SSH)
Test de connectivité TCP
curl 192.168.1.10:3493
→ Doit retourner une erreur HTTP/0.9 (normal, NUT parle son propre protocole)
Test de récupération des données
upsc qnapups@192.168.1.10
→ Doit afficher les données UPS (battery.charge, ups.status, etc.)
Test d’authentification
/usr/sbin/upsmon -D 2>&1 | head -10
→ Doit afficher : Logged into UPS qnapups@192.168.1.10
Dans l’interface QTS
Panneau de configuration → Système → Alimentation → UPS → Rafraîchir la page.
Les champs Etat, Capacité batterie, Temps de protection et Modèle doivent être remplis.
Diagnostic avancé
Le port 3493 n’est pas joignable depuis le QNAP
• Vérifier que l’addon NUT est bien démarré dans HA
• Vérifier que le port est bien mappé : HA → Addon NUT → onglet Réseau
• Tester depuis un PC Windows : Test-NetConnection -ComputerName 192.168.1.10 -Port 3493
ERR ACCESS-DENIED dans les logs upsmon
• Le username ou password ne correspond pas à ce qui est configuré dans l’addon NUT
• Vérifier /etc/config/ups/upsd.users sur le QNAP pour le vrai password
• S’assurer que l’addon NUT accepte le password (longueur minimum, caractères spéciaux)
upsmon tourne mais QTS affiche toujours ‹ – ›
• Le nom de l’UPS dans la ligne MONITOR n’est pas « qnapups »
• QTS utilise /sbin/upsc qnapups@localhost en interne — le nom est hardcodé
• Renommer l’UPS en « qnapups » côté NUT est obligatoire
Trouver les vraies valeurs hardcodées de votre firmware
Username et password utilisés par QTS :
cat /etc/config/ups/upsd.users
Ligne MONITOR active :
cat /etc/config/ups/upsmon.conf | grep MONITOR
Script de démarrage UPS (pour comprendre la logique) :
cat /etc/init.d/usb_ups.sh | grep -E ‹ qnapups|upsmon|upsc ›
Note sur la limitation de QTS
Ce comportement n’est pas un bug à proprement parler, mais une limitation de conception.
L’interface « Esclave réseau UPS » de QTS a été conçue pour fonctionner avec un autre QNAP
en mode serveur (qui utilise également « qnapups » comme nom d’UPS).
Elle n’a pas été prévue pour s’intégrer avec des serveurs NUT tiers.
Une feature request peut être soumise à QNAP pour permettre de configurer
le nom d’UPS, le username et le password depuis l’interface graphique.
Récapitulatif des changements
Paramètre Côté Pi (addon NUT) Côté QNAP
Nom de l’UPS qnapups (obligatoire) MONITOR qnapups@…
IP du serveur Bind sur 0.0.0.0:3493 192.168.1.10 (IP du Pi)
Username admin admin (hardcodé)
Password 123456 change_me (depuis upsd.users)
Rôle master slave