Proxmox Virtual Environment o PVE è un hypervisor open source per la gestione della virtualizzazione. È una distribuzione Linux basata su Debian che consente l’implementazione e la gestione di macchine virtuali e container LXC (Linux Containers). Si tratta di un hypervisor di tipo 1, noto anche come bare-metal hypervisor. Questo significa che Proxmox si installa direttamente sull’hardware fisico, senza la necessità di un sistema operativo host.
Per chi fosse interessato a un approfondimento, questo é un ottimo corso su Proxmox, disponibile su YouTube
Lo scopo di questa guida è quello di installare Proxmox su un mini PC utilizzando esclusivamente una connessione wireless, sfruttando inizialmente la funzionalità di tethering USB offerta da uno smartphone Android. Di seguito, vengono illustrate le caratteristiche del mini PC utilizzato:
- Processore Intel Celeron J3455 a 1.50 GHz
- 12 GB di RAM
- SSD da 2 TB
Per portare a termine l’installazione avremo quindi bisogno di:
- Il mini PC
- Un monitor, una tastiera e un mouse, indispensabili per completare la prima fase di installazione
- Una pendrive con una capacità minima di 16 GB
- Uno smartphone Android in grado di attivare il tethering USB
Nella fase iniziale di installazione utilizzeremo il tethering USB dello smartphone per garantire al mini PC una connessione alla rete Internet. Questo passaggio si rende necessario perché, durante l’installazione, Proxmox non supporta l’autenticazione su reti WiFi, non offrendo infatti campi per l’inserimento di username e password. La connessione a Internet è essenziale per installare il pacchetto wpasupplicant, che successivamente consentirà di autenticare il mini PC su una rete WiFi protetta, gestendo, tramite il file di configurazione /etc/wpa_supplicant/wpa_supplicant.conf, l’inserimento delle credenziali (come SSID e password).
Download
La ISO di Proxmox si trova al seguente link. Una volta scaricata, bisogna creare una pendrive avviabile, utilizzando software come Impression, per GNU/Linux, o Rufus, per Windows.
Installazione
L’installazione è molto semplice, ma è importante prestare attenzione a quanto segue:
- selezionare il disco corretto per l’installazione
- scegliere il filesystem: in questo caso, opteremo per
ZFS Raid 0, in quanto é presente un solo disco. In alternativa, è possibile mantenere il filesystem predefinito,ext4 - assicurarsi di selezionare l’interfaccia di rete corretta, quella gestita dallo smartphone collegato tramite USB al mini PC.
Per maggiori dettagli: Proxmox Install Beginners Guide
Un video interessante:
First boot
Una volta completata l’installazione, dobbiamo modificare il file /etc/network/interfaces nel seguente modo:
|
|
In particolare, la riga iface enxa2abbbeb102a inet dhcp indica che:
- l’interfaccia di rete
enxa2abbbeb102a(quella virtuale gestita dallo smartphone) deve ottenere i parametri di rete (indirizzo IP, subnetmask, gateway e DNS) tramite il protocollo DHCP, affidandosi a un server DHCP presente nella rete
Ora, per riavviare il servizio di rete e riattivare l’interfaccia, dobbiamo dare i seguenti comandi:
Dopo aver eseguito i comandi precedenti, l’interfaccia dovrebbe avere un IP assegnato e la connessione alla rete dovrebbe risultare funzionante.
wpa supplicant
Ora dobbiamo installare il seguente pacchetto:
|
|
Quindi, per configurare correttamente wpa_supplicant coi parametri della rete WiFi a cui desideriamo connetterci, dobbiamo dare il seguente comando:
|
|
Il file /etc/wpa_supplicant/wpa_supplicant.conf dovrebbe quindi assomigliare a qualcosa del genere:
Infine, dobbiamo modificare il file /etc/network/interfaces, assegnando un IP statico all’interfaccia wireless, nel modo seguente:
|
|
inserendo i parametri corretti della nostra rete. Assicurarsi anche che sia impostato il server DNS corretto nel file /etc/resolv.conf.
Riavviando il servizio systemctl restart networking.service e scollegando lo smartphone, si dovrebbe poter accedere a Internet. La brutta notizia è che, attualmente, solo PVE ha accesso alla rete. Le VM e i container LXC non possono ancora accedervi. Per risolvere questo problema, è necessario configurare il NAT.
NAT
Per configurare il NAT, aggiungere le righe seguenti nel file /etc/network/interfaces:
|
|
In questo contesto, il NAT (Network Address Translation) serve a tradurre gli indirizzi IP interni della subnet 10.10.1.0/24 in un indirizzo IP valido sulla rete esterna (l’interfaccia wireless wlp2s0), garantendo il corretto instradamento del traffico verso l’esterno, permettendo l’accesso ad Internet.
La regola iptables -t nat -A POSTROUTING -s '10.10.1.0/24' -o wlp2s0 -j MASQUERADE dice sostanzialmente che per ogni pacchetto che proviene dalla rete 10.10.1.0/24 e che esce tramite l’interfaccia wlp2s0, viene sostituito (mascherato) l’indirizzo IP sorgente con l’indirizzo IP associato a wlp2s0. Così, dal punto di vista del destinatario esterno (il router), il pacchetto sembra provenire dall’IP dell’interfaccia wlp2s0 - un indirizzo valido e instradabile. Infine, le righe post-up e post-down garantiscono che le regole vengano aggiunte quando l’interfaccia viene attivata e rimosse quando questa viene disattivata.
Web page
Dopo aver completato correttamente tutte le configurazioni precedenti, è possibile accedere al sistema tramite l’indirizzo statico assegnato sulla porta 8006. Ad esempio, nel nostro caso si accederà a https://192.168.0.195:8006.
É buona norma configurare anche l’accesso tramite chiave SSH. Inoltre, si consiglia di abilitare la TFA dalle impostazioni dell’utente.
Repository PVE
A questo punto, si consiglia di disabilitare i repository Enterprise e di configurare quelli Community, direttamente dall’interfaccia web.
L’unica differenza è che quelli enterprise sono più adatti ad ambienti di produzione perchè sono più testati. Per farlo, basta recarsi nel proprio nodo > Updates > Repositories
Abilitare IOMMU
Il PCI passthrough consente di utilizzare un dispositivo PCI fisico (scheda grafica, scheda di rete) all’interno di una VM. In altre parole, passthrough consente a una macchina virtuale di accedere direttamente a una risorsa hardware senza l’intervento dell’host, rendendo la risorsa come se fosse dedicata esclusivamente alla macchina virtuale. Tuttavia, tale dispositivo non sarà più disponibile per l’host. Infine, le VM con dispositivi pass-through non possono essere migrate.
Per abilitare questa funzionalità, è necessario che il sistema supporti IOMMU (Input-Output Memory Management Unit), che appunto permette all’hipervisor di gestire in modo sicuro e controllato l’accesso diretto ai dispositivi hardware da parte delle VM.
Abilitare IOMMU nella configurazione di GRUB in /etc/default/grub. Nella riga GRUB_CMDLINE_LINUX_DEFAULT="quiet" aggiungere intel_iommu=on o amd_iommu=on a seconda del sistema in uso:
|
|
Successivamente, eseguire i seguenti comandi e riavviare il sistema:
Adesso, controllare che tutto sia abilitato:
Per ulteriori informazioni su come abilitare il PCI Passthrough, consultare questo link.
Creazione di un container LXC
Linux Containers (LXC) è un metodo di virtualizzazione a livello di OS per eseguire più sistemi Linux isolati utilizzando un unico kernel Linux.
Il kernel Linux mette a disposizione le funzionalità dei cgroups e dei namespaces, che consentono insieme di ottimizzare l’utilizzo delle risorse e garantire un isolamento completo delle applicazioni. I cgroups permettono di limitare e prioritizzare l’impiego di risorse hardware come CPU, memoria, I/O dei dischi e rete, evitando che una singola applicazione monopolizzi il sistema. Parallelamente, i namespaces offrono un isolamento completo dell’ambiente operativo per ciascun processo, permettendo a questi di accedere a una rete dedicata, visualizzare solo i propri processi e utilizzare un file system esclusivo.
Una volta effettuato l’accesso alla pagina web di PVE, è possibile creare un container LXC o una VM. Il primo passo consiste nello scaricare un template da utilizzare per la creazione del container:
Successivamente, per creare il container LXC, cliccare il pulsante Create CT in alto a destra:
A questo punto, selezionare il template corretto e configurare le risorse: definire lo spazio disco, la CPU e la RAM desiderati. Prestare particolare attenzione alla configurazione della rete, impostando un indirizzo IP statico nella subnet precedentemente assegnata a vmbr0 (nel nostro esempio, 10.10.1.0/24, ricordando che il gateway è 10.10.1.1):
Infine, impostare il server DNS e avviare il container. A questo punto, il sistema dovrebbe funzionare correttamente.
Aggiunta di una rotta statica
Ora la VM o il container possono accedere a Internet, ma per poterci via ssh, dobbiamo aggiungere una rotta statica al nostro pc:
In questo modo, tutto il traffico destinato alla rete 10.10.1.0/24 viene instradato verso un gateway specifico, in questo caso il nodo Proxmox che gestisce la rete della VM/container. In altri termini, stiamo dicendo al nostro computer: “Quando devi inviare pacchetti verso la rete 10.10.1.0/24, non cercare di farlo tramite il canale predefinito, ma inviali attraverso il dispositivo con IP 192.168.0.195, che sa come raggiungere quella rete”.
Questa procedura dovrá essere fatta manualmente ogni volta che ci si connette ad una rete o si accende il computer.
Proxmox Backup
Proxmox Backup Server o PBS è un software di backup client-server che esegue il backup di macchine virtuali, container e host fisici (come un pc o un laptop). È ottimizzato specificamente per la piattaforma Proxmox VE e consente di eseguire il backup e replicare i dati in modo sicuro.
Proxmox Backup supporta backup incrementali, replicazione dei backup verso altri server o archivi remoti, consentendo di implementare strategie di disaster recovery efficaci, deduplicazione dei dati, che permette di eliminare i dati ridondanti, compressione e crittografia autenticata dei dati.
Per maggiori informazioni, visitare la pagina ufficiale di Proxmox Backup Server.
Installazione PBS
É possibile installarlo scaricando la ISO e creando una pendrive avviabile, con una procedura identica a quella utilizzata precedentemente. Oppure, con dei semplici passaggi, é installabile anche accanto a PVE.
Collegarsi tramite SSH al mini PC (o anche dalla console web) e aggiungere i repository di PBS (Proxmox Backup No-Subscription Repository). Infine, procedere con l’installazione del pacchetto:
Ora possiamo collegarci alla pagina web, alla porta 8007. Nel nostro esempio, si accederà a PBS tramite l’indirizzo https://192.168.0.195:8007.
PBS client
Il client a riga di comando per Proxmox Backup Server si chiama proxmox-backup-client. Proxmox Backup Client può essere installato su qualsiasi macchina, fisica o virtuale, e permette di eseguire il backup dell’intero host (o di specifiche directory) interfacciandosi con PBS. In questo contesto, lo utilizzeremo per configurare un backup criptato del nostro PC.
Per eseguire l’installazione di proxmox-backup-client sulla propria macchina, dare i seguenti comandi:
Backup
Datastore
Per prima cosa, bisogna accedere alla pagina web di PBS. Quindi, si deve creare un nuovo Datastore, ovvero un repository dove vengono archiviati i dati di backup.
Creating a backup
Sulla propria macchina, per creare un backup si utilizza il comando seguente:
|
|
Dove backupdata è l’elenco delle sorgenti da sottoporre a backup nella forma <label.ext>:<path>.
Supponiamo di voler creare un backup della directory /etc/network e inviarlo a PBS. Il comando sarà simile al seguente:
|
|
L’estensione .pxar indica il formato di archivio file di Proxmox. Per specificare l’IP del server, si utilizza l’opzione --repository oppure si assegna il valore alla variabile d’ambiente PBS_REPOSITORY. Se non viene specificato alcun utente, viene utilizzato l’utente root.
Dall’interfaccia web di PBS si possono vedere i file compresi nel backup:
Per maggiori dettagli, leggere la pagina How to create a backup with Proxmox backup client.
Encrypting backups
Il backup creato nell’esempio precedente non è crittografato. Per crittografare i backup, si deve prima generare una chiave di crittografia col comando:
|
|
Per impostazione predefinita, viene generata una chiave in ~/.config/proxmox-backup/encryption-key.json. Questo percorso viene automaticamente cercato ogni volta che si utilizza l’opzione --keyfile. Per utilizzare un percorso diverso, bisogna specificarlo come argomento del comando:
|
|
Per generare un backup crittografato della directory /etc, utilizzando la chiave appena generata, si deve eseguire il comando seguente:
|
|
Escludere file o directory
In alcune situazioni si potrebbe voler escludere alcuni file o directory dal backup. Per effettuare questa operazione, occorre creare un file .pxarexclude nella directory di cui fare backup. Supponiamo di voler fare il backup della directory /etc ma, per qualche ragione, vogliamo escludere il file /etc/fstab e il contenuto della directory /etc/network/. In questo caso, si deve creare il file /etc/.pxarexclude, con il seguente contenuto:
Il file .pxarexclude deve contenere una voce per riga; la directory in cui si trova il file viene considerata la root directory per ogni pattern.
Elencare gli snapshot e i file
Per recuperare l’elenco dei backup creati, si utilizza il comando:
|
|
Viene restituita una tabella con l’ID dello snapshot, la sua dimensione e i file in esso contenuti. Per recuperare l’elenco dei file inclusi nel backup, eseguire il comando:
|
|
Restore del backup
Per ripristinare un backup:
|
|
dove etc.pxar indica il nome dell’archivio da ripristinare e /etc/network la directory di destinazione.
Mount
Attraverso il comando mount, é possibile anche montare l’archivio tramite FUSE (Filesystem in Userspace). Per montare l’archivio etc.pxar sulla directory /mnt, eseguire il comando:
|
|
Se il comando ha successo, il contenuto dell’archivio etc.pxar sarà accessibile al mountpoint indicato.
Riferimenti
- Setting up Proxmox over wifi
- Come Installare Proxmox Backup Server
- Backup Client Usage - Proxmox Backup documentation
- How to create a backup with Proxmox backup client
- Use Proxmox Backup Client To Backup Files In Linux
- Homelab Server con Futro S920 e Proxmox\
- TechHutTV/homelab
- How to Set Up a Proxmox Cluster for Free – Virtualization Basics