Onduleur, Proxmox et Peanut

Cet article vise à configurer un service nut sur un serveur Proxmox (valable pour Debian) et à le préparer pour lui permettre de remonter les informations à Peanut.

PVE

Vérifier que l’onduleur est bien reconnu dans les périphériques usb

lsusb

Pour ma part l’onduleur s’affiche ainsi :

Bus 001 Device 007: ID 0463:ffff MGE UPS Systems UPS

Installer nut :

apt update && apt install nut -y

nut.conf

Modifier le fichier /etc/nut/nut.conf pour changer le mode (none par défaut), mettre netserver (sera utile pour y avoir accès via le réseau par la suite) :

MODE=netserver

ups.conf

On configure ce qui a trait à l’onduleur en lui même dans /etc/nut/ups.conf (à rajouter à la fin du fichier) :

[onduleur]
   driver = usbhid-ups
   port = auto
   vendorid = 0463
   productid = ffff
   desc = "Onduleur Eaton"

upsd.conf

Dans /etc/upsd.conf, on ajoute une ligne pour dire à nut d’écouter le port 3493 sur l’interface réseau du serveur proxmox :

# =======================================================================
# LISTEN <IP address or name> [<port>]
# LISTEN 127.0.0.1 3493
# LISTEN ::1 3493
# LISTEN myhostname 83493
# LISTEN myhostname.mydomain
#
# With no LISTEN statement, the default is localhost and port 3493.
# In case of IP v4 or v6 disabled kernel, only the available one will
# be used.
# Note that it is not true for Windows platforms. You shouldn't use IPv6 in
# your configuration files unless you have IPv6 installed.
#
# As a special case, `LISTEN * <port>` (with an asterisk) will try
# to listen on "ANY" IP address for both IPv6 (::0) and IPv4 (0.0.0.0),
# subject to `upsd` command-line arguments, or system configuration.
# Note that if the system supports IPv4-mapped IPv6 addressing per RFC-3493,
# and does not allow to disable this mode, then there may be one listening
# socket to handle both address families.
#
# One or more LISTEN statements give the IP address (or name that
# resolves to such an address) for upsd to listen on, optionally with
# a port number.
#
# As an example, a machine with a LAN and a WAN interface that also
# functions as a router and firewall might be configured to listen
# only on the LAN interface.
#
# This will only be read at startup of upsd.  If you make changes here,
# you'll need to restart upsd, as reload will have no effect.
#

LISTEN 192.168.0.6 3493

upsd.users

 On crée les utilisateurs dont on aura besoin dans le fichier /etc/nut/upsd.users (à ajouter à la fin du fichier) :

[upsmon]
   password = <UPSMON_PASSWORD>
   upsmon primary
[peanut]
   password = <PEANUT_PASSWORD>
   upsmon slave
[upsroot]
   password = <UPSROOT_PASSWORD>
   actions = SET
   instcmd = ALL

upsmon : daemon de surveillance de proxmox

peanut : autorise une instance peanut à se connecter

upsroot : permet de modifier la configuration de l’onduleur

Permissions

Appliquer les permissions usb :

udevadm control --reload-rules
udevadm trigger

Vérifier les droits attribués au périphérique:

ls -l /dev/bus/usb/001/007

L’utilisateur ou le groupe doit afficher nut (ex : crw-rw---- 1 root nut ...).

Driver et services

Lancer le pilote et vérifier

systemctl start nut-driver@onduleur
upsdrvctl start

Retourne:

root@pve2:~# upsdrvctl start
Network UPS Tools - UPS driver controller 2.8.1
Network UPS Tools - Generic HID driver 0.52 (2.8.1)
USB communication driver (libusb 1.0) 0.46
Duplicate driver instance detected (PID file /run/nut/usbhid-ups-onduleur.pid exists)! Terminating other driver!
Using subdriver: MGE HID 1.46

Si le pilote s’initialise correctement, on relance les services et on interroge l’onduleur :

systemctl restart nut-server nut-client
upsc onduleur@localhost

On oublie pas d’enregistrer les services si on veut un redémarrage automatique au reboot (c’est mieux) :

systemctl enable nut-driver@onduleur nut-server nut-client

Réglage du seuil

Configuration supplémentaire, j’aime bien passer la limite de déclenchement de l’extinction des serveurs à 35% (au lieu de 20% par défaut) :

upsrw -s battery.charge.low=35 -u upsroot onduleur@localhost

Un mot de passe est demandé, saisir le mdp de l’utilisateur upsroot.

On a maintenant une configuration opérationnelle. Reste à remonter les infos dans Peanut.

Peanut

Il suffit de renseigner les paramètres de connexion dans l’interface de Peanut, à savoir le nom que l’on souhaite voir s’afficher dans peanut, l’ip du serveur nut (définie dans upsd.conf), l’identifiant et le mot de passe définis dans upsd.users.

Flasher ESPHome sur un ESP8266

Deux possibilités : web.esphome.io ou esphome en local.

Le site web.esphome.io permet de flasher un esp avec une version esphome de base et de configurer le wifi. Les mises à jour sont normalement possibles en OTA par la suite. J’ai cependant eu droit à des erreurs que je n’ai pas trop cherché à résoudre. À la place je suis parti sur une installation en local d’ESPHome.

Lire la suite

Historique ZSH corrompu

Apparition d’un message d’erreur au lancement d’une console :

zsh: corrupt history file /home/user/.zsh_history

Renommer le fichier :

mv .zsh_history .zsh_history_bad

Copier le contenu de .zsh_history_bad dans un nouveau fichier qui sera nommé .zsh_history :

strings .zsh_history_bad > .zsh_history
Si la commande « strings » n’est pas disponible, installer le paquet « binutils« .
sudo apt update
sudo apt install binutils

Il faut ensuite demander à zsh de lire le nouveau fichier pour récupérer son historique :

fc -R .zsh_history

« fc » est une commande interne du shell. Pour plus de renseignements: https://linux.die.net/man/1/zshbuiltins

Source: https://www.geeksforgeeks.org/linux-unix/how-to-fix-a-corrupt-zsh-history-file/

DNS dans un sous-système Debian

Petite problématique du jour: j’avais besoin de changer de résolveur DNS dans mon terminal Debian. En modifiant le fichier /etc/resolv.conf ça fonctionne, mais au redémarrage du pc la configuration disparaît.

Il y a bien une ligne dans le fichier resolv.conf qui explique que ce fichier est généré automatiquement et qu’il faut ajouter les lignes suivantes au fichier /etc/wsl.conf (dans le terminal Debian):

[network]
generateResolvConf = true

Mais ça ne suffit pas! Au redémarrage le fichier resolv.conf est de nouveau écrasé. Pour que la modification de wsl.conf soit prise en compte il faut arrêter wsl à l’aide de la commande suivante, à exécuter dans un terminal windows:

wsl --shutdown

Ensuite en lançant un terminal Debian on peut se rendre compte que le fichier resolv.conf a disparu (il n’a pas été généré automatiquement). Il suffit donc de le créer et d’y ajouter les résolveurs DNS souhaités:

nameserver x.x.x.x
nameserver y.y.y.y

Le fichier restera en place et ne sera plus écrasé au démarrage de WSL.

Speedtest sur Kali Linux

Depuis un petit moment le paquet « speedtest-cli » fourni par les dépôts de Kali Linux ne fonctionne plus. L’installation se déroule bien mais lors du lancement de la commande speedtest on obtient une erreur 403 Forbidden.

Il existe une méthode d’installation, fournie par Ookla (voir ici), pour installer Speedtest à partir des dépôts packagecloud.io pour les distributions Ubuntu / Debian, mais l’accès semble bloqué pour Kali. Pour pouvoir installer le paquet une petite bidouille s’impose.

Lire la suite

Enlever un disque dur manquant dans OpenMediaVault

Article rédigé le 02/07/2022

Lors du retrait d’un disque dur d’un serveur OMV il y a une procédure à respecter. Si celle-ci n’est pas suivie (ou si un disque dur claque) le disque apparaît « manquant » dans la liste des systèmes de fichier et il est impossible de l’enlever via l’interface web.

Cet article est une traduction / adaptation de How to Delete/Remove disconnected disk from OpenMediaVault/OMV (Remove Missing Disk from OMV) du site dannyda.com, merci à elle / lui.

Lire la suite

HomeAssistant et MQTT avec Docker

Article publié le 06/06/2022
Mis à jour le 07/06/2022

On trouve pas mal de tutos pour installer MQTT sur Home Assistant lorsque celui-ci tourne sur un raspberry ou sur une distrib linux classique, contrairement aux installations sur Docker. Il y a pas mal de doc mais souvent en anglais. J’ai un peu galéré pour arriver à un résultat fonctionnel (et d’ailleurs mon installation est certainement perfectible), j’ai donc résumé ici les quelques étapes de la configuration des différents éléments.

Lire la suite