Configurare un NUC con Proxmox ed Hassio (trasferendo anche la configurazione da un Raspberry)

È passato quasi un anno da quando ho scritto la guida per installare Home Assistant su Raspbarry Pi 3. In questo periodo la mia configurazione (che i curiosi possono sbirciare su GitHub) si è sempre più arricchita di package, script ed automazioni, e piano piano mi è venuta voglia di provare a trasferire la configurazione di Home Assistant su un dispositivo più performante. Ho scelto il modello più economico di Intel NUC con processore Celeron che ho trovato su Amazon, aggiunto 8 GB di RAM DDR3L ed un SSD crucial da 120 GB di quelli che in questi giorni vengono spesso segnalati sul canale Telegram @SaggeOfferte.

Come potete immaginare, una configurazione di questo tipo solo per Home Assistant è sicuramente sprecata per questo l'elemento essenziale della nostra nuova istallazione sarà Proxmox Virtual Environment. Si tratta di una distribuzione Linux basata su Debian con un kernel LTS di Ubuntu modificato, che consente l'implementazione e la gestione di macchine e contenitori virtuali. Proxmox VE si gestisce semplicemente tramite interfaccia web e contiene una shell per configurare in modo più avanzato anche da riga di comando. Proxmox ci permetterà di avere sulla stessa macchina numerosi container e macchine virtuali, ad iniziare dalla VM con Home Assistant.

L’installazione di Proxmox

Una volta assemblato l'Intel NUC (bisogna solo mettere la RAM e l'SSD) siamo pronti ad installare il sistema operativo. Per prima cosa va scaricata l'ISO dell’ultima versione di Proxmox VE dal sito ufficiale e flashata su una pendrive USB con il software gratuito Balena Etcher. A questo punto si deve collegare un monitor ed una tastiera al NUC (ma solo temporaneamente), avviando dalla USB appena creata por eseguire l’installazione e configurare i vari parametri come nelle immagini che seguono.

Impostiamo la password di root e la nostra email (servirà per ricevere eventuali avvisi), e soprattutto facciamo molta attenzione a configurare correttamente le impostazioni di rete, scegliamo un IP fisso per il NUC (facendo attenzione di riservarlo anche sul modem/router per evitare sovrapposizioni) ed impostiamo adeguatamente Gateway e server DNS indicando l’IP del router (nel mio caso 192.168.1.254).

Completata l’installazione possiamo scollegare monitor e tastiera, in quanto d’ora in poi ci collegheremo tramite interfaccia web da browser all'indirizzo https://IP_di_PROXMOX:8006.
Il prossimo passo è quello di scaricare su un altro computer l'ISO Netinst di Debian e caricarla sul disco di Proxmox tramite l'interfaccia web, selezionando il disco local (nuc) nella colonna a sinistra e troveremo il pulsante Carica in quella a destra. A questo punto siamo pronti per creare la prima Virtual Machine che ospiterà Home Assistant.

Clicchiamo in alto a destra su crea VM (tasto blu con l’icona del monitor), assegnamo un nome ed un numero alla VM, impostiamo all’avvio l’ISO di Debian (precedentemente caricata), la dimensione del disco fisso da assegnare (consiglio 25/32 GB), la CPU e la RAM (minimo 2GB). Sono tutti parametri modificabili in futuro, quindi non ci si deve perdere troppo per decidere all'inizio. Non modifichiamo altro e proseguiamo fino a creare ed avviare la VM.

Se avete scelto di avviare la VM al termine della procedura guidata, questa sarà attiva poco dopo (la finestra in basso con il log vi darà indicazioni circa il progresso), altrimenti premete manualmente il tasto Avvia in alto a destra. Quindi entrate nella Console (sempre in alto a destra o dalle opzioni della colonna centrale). Se avete fatto tutto bene, la Console mostrerà l’installazione di Debian. Procedete impostando la password di root e facendo attenzione a non installare l’ambiente grafico e gli altri componenti che vengono proposti a fine della procedura guidata.

Siamo pronti ad installare docker e Hass.io nella VM di debian

Adesso che abbiamo la VM con Debian non resta che collegarci a questa tramite la console che troviamo selezionandola dalla colonna di sinistra. Volendo ci si può anche collegare tramite SSH una volta individuato l’IP assegnato alla VM.

Quando ci si è loggati, si devono dare uno per volta i seguenti comandi per installare docker e docker-ce:

apt-get install jq curl dbus socat bash avahi-daemon
apt-get install -y apt-transport-https ca-certificates wget software-properties-common
wget https://download.docker.com/linux/debian/gpg 
apt-key add gpg
echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee -a /etc/apt/sources.list.d/docker.list
apt-get update
apt-get -y install docker-ce

e infine l’ultimo comando per installare Hass.io (ovvero HomeAssistant):

curl -sL https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh | bash -s -- -m intel-nuc

Colleghiamo eventuali dispositivi USB

Attendiamo il termine dell’installazione e se abbiamo una chiavetta Z-Wave o ConBee andrá individuata ed assegnata alla VM dal menu Hardware come in figura. Consiglio inoltre di collegare anche la periferica USB con codice 8087:0aa7 (potrebbe variare sul vostro dispositivo), questa serve per assegnare il bluetooth del NUC ad Home Assistant e potrà essere utile in futuro. Fatto questo dobbiamo spegnere la VM (possiamo usare il tasto spegnimento in alto) e successivamente accenderla tramite il tasto Avvia.

Siamo pronti per ripristinare il nostro backup di Home Assistant

Ecco fatto: Home Assistant è installato e possiamo collegarci ad esso inserendo nel browser l'indirizzo http://IP-VM:8123 e ripristinare uno snapshot della nostra precedente configurazione o iniziarne una da zero seguendo la nostra guida.

Nel primo caso, si potrà dunque trasferire tutto quello che era presente in un precedente setup basato sul Raspbarry dentro la VM nel nuovo NUC nel giro di pochi minuti. Seguendo questa strada si noterà che la SmartHome sarà immediatamente molto più reattiva. E siccome vi avanzerà un Raspberry, perché non sfruttarlo per costruire una console da retrogaming?

Come usare il Bluetooth del NUC sulla VM di Home Assistant

Una cosa che mi ha fatto impazzire quando sono passato al NUC è stata sfruttare il Bluetooth interno come facevo con il Raspberry per collegarmi ad alcuni dispositivi BLE e leggerne i dati. In realtà una volta trovato come fare è piuttosto semplice, ma vi assicuro che ci ho perso un sacco di tempo. Se avete già associato il dispositivo Bluetooth nel passaggio precedente, bisogna eseguire questi comandi dentro la console della macchina virtuale:

apt-get install bluetooth
systemctl start bluetooth

Verifichiamo che il bluetooth funzioni avviando una scansione dei dispositivi con il comando hcitool scan e se non ci sono errori riavviamo la VM e saremo pronti ad utilizzare il Bluetooth del NUC con HomeAssistant.

Come impostare backup periodici della VM su usb esterna

L’ultima cosa che consiglio di fare è di sfruttare il fantastico sistema di backup di Proxmox. Accediamo alla shell di Proxmox e colleghiamo una pendrive USB (io uso questa da 64 GB, ma va benissimo anche di dimensioni inferiori). Individuiamo la USB con il comandolsblk

Il risultato sarà una schermata tipo quella qui sopra, dove la mia U§SB è individuata come sdc. A questo punto dobbiamo formattarla chiamandola ad esempio Backup ed utilizzando il filesystem ext4, usando il comando nella prima riga e stando attenti ad indicare correttamente la partizione della pendrive. Il secondo comanda serve a montare il disco appena formattato:

mkfs.ext4 -n "Backup" -I /dev/sdc
mount -a

Ora torniamo alla nostra interfaccia web per proseguire la configurazione dei backup automatici. Selezioniamo Datacenter dalla colonna di sinistra, indichiamo quindi il disco di backup, i giorni della settimana in cui vogliamo eseguire il backup, la modalità Snapshot e spuntiamo le VM di cui eseguirlo.

L’ultima cosa che ci è rimasta da fare è dire a Proxmox quanti backup conservare sul disco USB, onde evitare che lo spazio possa esaurirsi. Per farlo dobbiamo selezionare Datacenter nella colonna di sinistra, quindi Storage ed infine il disco backup. Premiamo su Modifica e nel pop-up che si aprirà possiamo impostare il numero massimo di backup da conservare.

Come rimuovere il messaggio errore 401 da Proxmox

Per finire vi lascio gli ultimi tre comandi che se volete potete lanciare sul terminale di Proxmox: Il primo serve per disattivare la repository commerciale, eliminando il fastidioso errore 401 che altrimenti ci troveremo nel task; il secondo attiva la community repository ed infine l'ultimo serve ad eliminare il fastidioso pop-up che visualizziamo al login che ci invita a sottoscrivere una licenza commerciale.

sed -i "s/^deb/\#deb/" /etc/apt/sources.list.d/pve-enterprise.list
echo "deb http://download.proxmox.com/debian/pve stretch pve-no-subscription" > /etc/apt/sources.list.d/pve-no-enterprise.list
sed -i.bak "s/data.status !== 'Active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service

Dopo aver dato questi 3 comandi, per vedere sparire il popup è necessario fare un login / logout prima in un’altra lingua e poi di nuovo in italiano.

Autore
Davide (@daxda)

Revisori
Massimiliano Latella (@lamax)
Maurizio Natali (@simplemal)

SmartHome Channel

Special Team - I SaggiUtenti del canale #SmartHome presente sul nostro Slack uniti per creare guide e recensioni dedicate all'automazione. Partecipa anche tu entrando nel gruppo effettuando una donazione dal SaggioSupporto.