Всем привет!!!
В этой статье я расскажу как подключить NUT клиент в Proxmox к Synology NAS, который подключен к ИБП по USB, что бы все это корректно выключалось, когда отключат электричество.

Заметку делаю для себя, что бы не забыть, но если она вам поможет, то я только буду рад.
У меня есть Synology NAS, к которому по USB подключен ИБП. Настройка ИБП в Synology довольно простая, там достаточно купить совместимый ИБП и активировать одну галочку.
Через какое-то время я обзавелся гипервизором Proxmox на Aoostart WTR PRO и встала задача, подключить Proxmox к ИБП. Проблема в том, что у ИБП всего один порт USB и два сервера к нему не подключить, но можно подключить Proxmox к Synology по сети через клиента NUT и тогда уже Synology будет передавать состояние ИБП в Proxmox и последний будет принимать решение о начале выключения.
Не буду ходить вокруг да около начнем настройку.
Первым делом на Synology в панели управления — Оборудование и питание на вкладке ИБП нужно включить сервер ИБП и разрешить подключение с IP адреса гипервизора Proxmox. В моем случаи это 192.168.68.24.

Как Для корректного отключения виртуальных машин нужно установить гостевой агент. В противном случаи виртуальные машины будут выключаться не корректно и смысл теряется от всего ниже настроенного. Как это сделать было описано тут: Оптимизация оперативной памяти в Proxmox
Теперь настроим Proxmox. Сначала нужно установить NUT
apt update && apt install nut -y
Затем переведем NUT в режим клиента отредактировав файл /etc/nut/nut.conf
MODE=netclient
Теперь настроим мониторинг отредактировав следующий файл /etc/nut/upsmon.conf
MONITOR ups@192.168.68.10 1 monuser secret slave
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h now"
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
NOTIFYCMD /usr/sbin/upssched
где 192.168.68.10 это IP адрес Synology NAS
Затем нужно настроить планировщик отредактировав этот файл /etc/nut/upssched.conf
CMDSCRIPT /etc/nut/upssched-cmd
PIPEFN /etc/nut/upssched.pipe
LOCKFN /etc/nut/upssched.lock
AT ONBATT * START-TIMER shutdown-now 60
AT ONLINE * CANCEL-TIMER shutdown-now online
где 60 это время, после которого Proxmox начнет выключать виртуальные машины и отключится сам.
Теперь создадим скрипт обработки команд отредактировав этот файл /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
Сделайте его исполняемым
chmod +x /etc/nut/upssched-cmd
Запустим службу
systemctl enable nut-monitor
systemctl restart nut-monitor
Проверим ее статус
systemctl status nut-monitor
Проверим подключение к ИБП
upsc ups@192.168.68.10
Если видим ups.status: OL то это работа от сети
Я пользуюсь такой командой

upsc ups@192.168.68.10 2>&1 | grep -E "(status|battery.runtime)"
Как это работает
- При отключении электричества: ИБП переходит на батарею, статус меняется с
OLнаOB - Запускается таймер на 60 секунд:
upsschedполучает командуONBATT - Через 60 секунд: Выполняется команда выключения Proxmox
- Если питание восстановится: Таймер отменяется командой
ONLINE
Теперь вы знаете как настроить NUT клиент Proxmox и подключить его к Synology NAS

