Konfiguracja NUT pod Proxmox

Kupiłeś UPS? Myślisz że masz problem z głowy? A jak skończy się prąd w baterii?
Opis będzie dotyczył UPS marki GreenCell model 600VA (chyba najmniejszy w ofercie), jednak zaskoczył mnie ponad godzinnym działaniem mojego serwera (dell 7010 z i5 3470, pobiera ok 50 W)
Jeśli nie chcesz twardego wyłączenia, odpowiedzią jest NUT, czyli Network UPS Tools
Home Assistant ma add on i integrację do obsługi NUT, sam jest w stanie wyłączyć się jeśli zajdzie taka potrzeba. Ale zacznijmy od podstaw, czyli od Proxmox.

Instalacja i konfiguracja NUT na Proxmox:
Wchodzimy do konsoli, a najlepiej łączymy się przez terminal (polecam Putty), po zalogowaniu na użytkownika root:
Instalujemy NUT:

apt install nut

Teraz sprawdź jakie urządzenia są wyrywane pod USB w systemie, komenda:

lsusb

Podłącz UPS do portu USB, określamy pod jakim adresem jest dostępny:

lsusb

Lista urządzeń USB
(będzie to nowa pozycja na liście)
U mnie jest to
Bus 001 Device 003: ID 0001:0000 Fry’s Electronics
Notujemy ID, czyli 0001

Teraz będziemy edytować pliki konfiguracyjne (osobiście używam nano, ale każdy inny edytor będzie ok)

nano /etc/nut/ups.conf

Na samym dole pliku wklejamy konfigurację, dla mojego UPS’a będzie to:

maxretry = 3

[ups]
driver = blazer_usb
port = auto
desc = “GreenCell 600VA”
ignorelb
battery.charge < battery.charge.low
override.battery.charge.low = 30

(CTRL+O zapisujesz plik, Enterem zatwierdzasz zapis, CTRL+X wychodzisz z pliku)

Chciałbym krótko omówić co tu się dzieje.
w nawiasach jest [nazwa serwera] - będzie potem potrzebna
driver = sterownik który system ma użyć, na stronie NUT jest ogromna lista
port = auto ułatwia życie :wink:
desc = opis dla Ciebie
Miałem problem ze zbyt późnym sygnałem od UPS o wyczerpanej baterii, krótko mówiąc wyłączał się zbyt szybko, zanim system zamknął się poprawnie. Znalazłem rozwiązanie w nadpisaniu systemowej flagi o wyczerpanej baterii.
ignorelb - ta funkcja pozwala ignorować systemową flagę
podajemy warunek
wprowadzamy flagę i od jakiego poziomu % baterii ma być wystawiana informacja o wyczerpanej baterii (=zamknij system)

Teraz wprowadzimy regułę, aby NUT miał dostęp do sterownika:

nano /etc/udev/rules.d/90-nut-ups.rules

w plik wklej:

ACTION==“add”, SUBSYSTEM==“usb”, ATTR{idVendor}==“0001”, ATTR{idProduct}==“0501”, MODE=“0660”, GROUP=“nut”

U siebie zmień ATTR{idVendor}==“xxxx” na ID portu USB

Restartujemy udev:

service udev restart

Najprawdopodobniej będziesz musiał odłączyć i podłączyć UPS ponownie, żeby był w pełni wykryty.

Lecimy z konfiguracją NUT dalej:

nano /etc/nut/nut.conf

wklej na końcu:

MODE=netserver

Teraz ustawimy adresy IP na których ma działać w sieci:

nano /etc/nut/upsd.conf

znajdź w pliku część z LISTEN, lub wklej na końcu:

LISTEN 127.0.0.1 3493
LISTEN ::1 3493

To adresy lokalne, przydał by się jeszcze wpis z adresem Twojej maszyny z Proxmoxm czyli np.
LISTEN 192.168.141.2 3493
Adresy portów nie są potrzebne, to są domyślne adresy, jeśli chcesz możesz je zmienić (jeśli wiesz co robisz, żeby nie używać już zajętych)

Przyszła pora na użytkowników:

nano /etc/nut/upsd.users

W na końcu pliku zapisz:

[upsmonitor]
password = Twoje fajne hasło
upsmon master

Znowu chwila na wyjaśnienie:
w nawiasach [nazwa użytkownika] - będzie później potrzebna
password = nie mów nikomu
upsmon to tryb, może być master lub slave.
Do mastera podłączony jest fizycznie UPS, Slave siedzi i słucha co mówi master (to będzie później HA).

Ostatni plik z komendami do wyłączania systemu:

nano /etc/nut/upsmon.conf

wklej:

MONITOR UPS@localhost 1 upsmonitor PASSWORD master
POWERDOWNFLAG /etc/killpower
SHUTDOWNCMD “/sbin/shutdown -h now”

Już wyjaśniam:
MONITOR nazwa twojego ups z pliku /etc/nut/ups.conf
@adres serwera, możesz zostawić localhost
cyfra mocy 1 :wink: (ile UPS podtrzymuje ten system)
Nazwa użytkownika
Twoje fajne hasło
master - oznacza że ten system zamknie się ostatni, jak wszyscy slave zgłoszą wyłączenie
slave - zamyka się natychmiast
Następnie są tajemnicze magiczne komendy, które najważniejsze, że działają.

Prawie na koniec, uruchamiamy serwis:

systemctl enable nut-server.service

oraz uruchamiamy klienta:

systemctl enable nut-client.service

A na koniec uruchamiamy:

nut-server start

nut-client start

Mała ściągawka z komend, które mogą się przydać:

service nut-server status

możesz sprawdzić czy serwer NUT działa i kto jest do niego zalogowany
można zmienić status na start lub restart

oczywiście:

service nut-client status

pozwala sprawdzić czy klient lokalny działa

Tak powinien wyglądać statu działającego nut-server:


nut-client status:

Możesz też podejrzeć parametry swojego UPSa:

upsc nazwaUPS@adres

Jeśli nie zmieniałeś danych z przykładu, możesz wpisać:

upsc ups@localhost

1 Like

Teraz bierzemy się za klienta w Home Assistant.

W Supervisor zainstaluj dodatek Network UPS Tools.
NUT będzie działał w trybie netclient i pobierał dane z NUTa w Proxmox.

Przejdź do zakładki konfiguracyjnej. Z tego co wyczytałem w dokumentacji users i devices możesz zostawić puste, w trybie netclient nie są brane pod uwagę.

Czyli zmieniamy mode: netclient
shutdown_host: ‘false’ - u siebie zostawiłem false, Proxmox i tak poprawnie zamyka VM, zachęcam do dzielenia się wynikami eksperymentów.
Dodaj wpisy:
remote_ups_name: [nazwa z kwadratowych nawiasów w pliku /etc/nut/ups.conf]
remote_ups_host: ‘tu wpisz IP Proxmoxa’
remote_ups_user: nazwa użytkownika, wcześniej był upsmonitor
remote_ups_password: Twoje fajne hasło

Wpisałem też przekierowanie na ten sam 3493
Zapisz, zrestartuj. Jeśli masz ochotę, to w Proxmoxie w statusie serwisu powinien pojawić się nowy zalogowany klient i jego adres IP.
Możesz też sprawdzić logi add-onu

Następnie dodajemy Integrację w Ustawieniach.
Która nie uwierzysz jak się nazywa, Network UPS Tools (NUT), intuicyjnie prawda :wink:
Podaj adres IP, dane logowania, a następnie parametry które chcesz mieć dostępne w HA (u siebie mam wszystkie, a co).

Cały opis został oparty na kilku poradnikach, dziękuję autorom:

https://diyblindguy.com/howto-configure-ups-on-proxmox/
https://wiki.ipfire.org/addons/nut/detailed
https://www.youtube.com/watch?v=IlHMY7sAGHY&t=615s

1 Like

Będę wdzięczny za uwagi oraz informację czy działa :wink:

@artur myślę że artykuł nadaje się do bazy wiedzy HA, co Ty na to??

@Marcin_Domański zdecydowanie tak
@wielkim dzięki za świetny poradnik