Чистое завершение работы Proxmox, VM и LXC на случай отключения электроэнергии: мой гид (квази) окончательно с NUT и ИБП Tecnoware

Опубликовано TheJoe на

Приблизительное время чтения: 4 минут

Любой, кто управляет домашней лабораторией, рано или поздно сталкивается с законом Мерфи и его самым грозным союзником.: внезапное отключение электроэнергии.

У меня под столом в кабинете стоит верный Lenovo ThinkCentre M920t с Proxmox VE.. Sopra ci girano diverse VM e svariati LXC: da Home Assistant a Nginx Proxy Manager, passando per AdGuard, Immich e – soprattutto – una VM con OpenMediaVault (Ом) che gestisce i dischi di storage in passthrough hardware.

в настоящее время, immaginate la scena: salta la corrente. Se il server si spegne di colpo, i file system dei dati si corrompono, le istanze di Docker dentro i container rimangono a metà di una scrittura e il database di Immich decide di salutare per sempre.

Per evitare questa tragedia ho recuperato un UPS Tecnoware Nemo 2.0 dotato di porta USB. L’obiettivo? Quando va via la corrente, il server deve leggere lo stato della batteria dell’UPS e avviare una procedura di spegnimento controllata, automatica e soprattutto generica.

Niente script bash astrusi con password hardcodate che entrano via SSH dentro ogni singola macchina virtuale. Tutto deve funzionare in modo nativo e “a cascata”.

Ecco come ho configurato il tutto senza nemmeno toccare fisicamente il server (gestendo tutto via SSH).

1. La teoria della “cascata” (то есть: come si spengono le cose per bene)

La prima cosa da capire è che Proxmox e i sistemi operativi moderni sono già progettati per gestire questa situazione. Quando Proxmox riceve l’ordine di spegnersi, invia un segnale ACPI alle VM e un segnale lxc-stop ai container.

Nota per chi usa distribuzioni minimali (это. Alpine Linux): Se tra i tuoi LXC ne hai alcuni leggeri basati su Alpine Linux (come il mio server FTP per le cam o WUD), dentro non troverai systemd мама OpenRC. Nessun problema: Proxmox gestisce lxc-stop in modo agnostico. OpenRC intercetta il segnale di arresto ed esegue lo stop pulito dei servizi definiti in /etc/init.d/ (incluso il demone Docker se presente), garantendo la chiusura corretta dei processi anche su distro senza systemd.

A quel punto il systemd dentro la VM (o l’LXC) intercetta il segnale, avvisa il demone Docker, e Docker invia un SIGTERM ai container chiudendo i processi e i file system in modo pulito.

L’unico vero nodo critico della mia infrastruttura è Ом (VM 104): gestendo lo storage per molti altri LXC, deve essere l’ultima risorsa a spegnersi e tra le prime a riaccendersi.

2. Gestire le priorità di avvio e spegnimento (Order & Delay)

Non serve uno script custom per spegnere le VM nell’ordine giusto. Proxmox gestisce l’ordine con il parametro startup.

La logica è semplice ma fondamentale:

  • In fase di avvio: I servizi con order più basso (это. order=1) si avviano per primi.
  • In fase di spegnimento: La logica si inverte! I servizi con order più alto (это. order=4) si spengono per primi.

Ecco la matrice che ho applicato via SSH su Proxmox:

# --- ORDER 1: Rete (DNS & Reverse Proxy) ---
# Si avviano per primi, si spengono per ULTIMI
pct set 101 --startup order=1,up=10,down=10  # AdGuard Home
pct set 102 --startup order=1,up=10,down=10  # Nginx Proxy Manager

# --- ORDER 2: Storage NAS (VM OMV) ---
# Diamo 30s di tempo all'avvio e fino a 60s allo spegnimento per smontare i dischi
qm set 104 --startup order=2,up=30,down=60   # OpenMediaVault

# --- ORDER 3: Servizi Core ---
pct set 109 --startup order=3,up=10,down=15  # Home Assistant
pct set 107 --startup order=3,up=5,down=10   # FTP Cam

# --- ORDER 4: Applicazioni & Media ---
# I primi a spegnersi per bloccare subito le Scritture su OMV
pct set 103 --startup order=4,up=5,down=20   # Immich / Media
pct set 111 --startup order=4,up=5,down=10   # Dashy

E per assicurarci che al rientro della corrente tutto si riavvii da solo, basta abilitare l’avvio automatico:

qm set 104 --onboot 1
pct set 101 --onboot 1
# ... e così via per tutti gli altri LXC

(Nota da smanettone: ricordatevi di entrare nel BIOS del vostro PC/Server, nel mio caso il Lenovo M920t, e impostare la voce After Power Loss его Power On!).

3. Incontrare NUT e il driver “traditore” del Tecnoware Nemo

Sull’host Proxmox installiamo NUT (Network UPS Tools):

apt install nut nut-client nut-server

Qui casca spesso l’asino. Molti tutorial generici dicono di usare il driver usbhid-ups. Однако, gli UPS Tecnoware (come la serie ERA o NEMO) sotto il cofano usano spesso chipset Voltronic/Cypress su protocollo Megatec. Se usate usbhid-ups, NUT semplicemente non leggerà l’UPS.

Смотри сюда:  Полное руководство по OpenMediaVault: От установки до конфигурации плагина

Il driver corretto per il Tecnoware Nemo 2.0 это nutdrv_qx.

Ecco la configurazione essenziale dei file sotto /etc/nut/:

1. /etc/nut/nut.conf

MODE=standalone

2. /etc/nut/ups.conf

[nemo]
    driver = nutdrv_qx
    port = auto
    desc = "Tecnoware Nemo 2.0"
    vendorid = "0665"

3. /etc/nut/upsd.users

(предосторожность: questo NON è un utente di sistema Linux, è solo un utente interno al demone NUT!)

[monuser]
    password = MiaPasswordSegretissima
    upsmon master

4. /etc/nut/upsmon.conf

MONITOR nemo@localhost 1 monuser MiaPasswordSegretissima master
SHUTDOWNCMD "/sbin/shutdown -h +0"

4. Il giorno del collegamento (e come verificare tutto)

Non appena collegherò fisicamente il cavo USB dell’UPS al server, i comandi da lanciare per chiudere il cerchio saranno questi:

# 1. Verificare che il controller USB venga visto
lsusb

# 2. Avviare e abilitare i servizi di NUT
systemctl restart nut-server nut-client
systemctl enable nut-server nut-client

# 3. Leggere lo stato della batteria in tempo reale
upsc nemo

является upsc nemo risponde con la percentuale della batteria e lo stato della tensione… abbiamo finito!

Cosa succede ora se salta la corrente?

  1. L’UPS va in batteria e segnala lo stato “Low Battery” a NUT.
  2. NUT lancia il comando di spegnimento a Proxmox.
  3. Proxmox:
    1. spegne i container media (Order 4)
    2. spegne Home Assistant (Order 3)
    3. spegne la VM di OMV smontando i volumi in sicurezza (Order 2)
    4. spegne il DNS e il Reverse Proxy (Order 1).
  4. Proxmox spegne se stesso e l’UPS taglia l’alimentazione.
  5. Quando torna la corrente, l’UPS ricarica la batteria, ridà tensione alle prese, il BIOS Lenovo riaccende il server e Proxmox riavvia tutte le VM e LXC nell’ordine perfetto.

Zero script barbari da aggiornare, zero rischio di corruzione dati, e la consapevolezza che anche in caso di blackout il nostro homelab è in una botte di ferro.

E voi come gestite lo spegnimento dei vostri server casalinghi? Fammelo sapere nei commenti!


TheJoe

Я держу это в качестве хобби блог от 2009. Я графики энтузиастов, технология, Программное обеспечение с открытым исходным кодом. Среди моих статей не будет трудно найти о музыке, и некоторые личные размышления, но я предпочитаю, чтобы направить линию блога в основном технологии. Для получения дополнительной информации связаться со мной.

0 Комментарии

оставьте ответ

Заполнитель аватара

Ваш электронный адрес не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатывается комментарий данных.