Come installare e configurare PVE e PBS utilizzando una connessione WiFi

2025-03-08

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

First boot

Una volta completata l’installazione, dobbiamo modificare il file /etc/network/interfaces nel seguente modo:

root@pve:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

iface enxa2abbbeb102a inet dhcp

#auto vmbr0
#iface vmbr0 inet static
#	address 192.168.180.45/24
#	gateway 192.168.180.76
#	bridge-ports enxa2abbbeb102a
#	bridge-stp off
#	bridge-fd 0

iface enp3s0 inet manual

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:

systemctl restart networking.service

ifdown enxa2abbbeb102a

ifup enxa2abbbeb102a

dhclient

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:

apt update && apt -y install wpasupplicant

Quindi, per configurare correttamente wpa_supplicant coi parametri della rete WiFi a cui desideriamo connetterci, dobbiamo dare il seguente comando:

wpa_passphrase [myssid] [my_very_secret_passphrase] > /etc/wpa_supplicant/wpa_supplicant.conf

Il file /etc/wpa_supplicant/wpa_supplicant.conf dovrebbe quindi assomigliare a qualcosa del genere:

root@pve:~# cat /etc/wpa_supplicant/wpa_supplicant.conf 
ctrl_interface=/run/wpa_supplicant
update_config=1
country=IT

network={
        ssid="[myssid]"
#       psk="[my_very_secret_passphrase]"
        psk="random_stuff_that_corresponds_to_the_password_hash"
        proto=WPA RSN
        key_mgmt=WPA-PSK
}

Infine, dobbiamo modificare il file /etc/network/interfaces, assegnando un IP statico all’interfaccia wireless, nel modo seguente:

root@pve:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

#iface enxa2abbbeb102a inet dhcp

#auto vmbr0
#iface vmbr0 inet static
#	address 192.168.180.45/24
#	gateway 192.168.180.76
#	bridge-ports enxa2abbbeb102a
#	bridge-stp off
#	bridge-fd 0

iface enp3s0 inet manual

auto wlp2s0
iface wlp2s0 inet static
	address 192.168.0.195
	netmask 255.255.255.0
	gateway 192.168.0.1
	wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

source /etc/network/interfaces.d/*

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:

auto lo
iface lo inet loopback

auto vmbr0
iface vmbr0 inet static
        address 10.10.1.1/24
        # address [IP_of_the_VMs_and_container_gateway]/[mask]
        # This IP is only seen in the proxmox server
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        # Route from VM to internet
        # post-up   iptables -t nat -A POSTROUTING -s '[IP_of_the_VMs_and_container_subnet]' -o [wifi_interface] -j MASQUERADE
        # post-down iptables -t nat -D POSTROUTING -s '[IP_of_the_VMs_and_container_subnet]' -o [wifi_interface] -j MASQUERADE
        post-up   iptables -t nat -A POSTROUTING -s '10.10.1.0/24' -o wlp2s0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '10.10.1.0/24' -o wlp2s0 -j MASQUERADE
        # To reach other device in network (for firewall reasons)
        post-up   iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
        post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1

iface enp3s0 inet manual

auto wlp2s0
iface wlp2s0 inet static
	address 192.168.0.195
	netmask 255.255.255.0
	gateway 192.168.0.1
	wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

source /etc/network/interfaces.d/*

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.

pve

É buona norma configurare anche l’accesso tramite chiave SSH. Inoltre, si consiglia di abilitare la TFA dalle impostazioni dell’utente.

tfa

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

community_repo

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:

download_template_lxc

Successivamente, per creare il container LXC, cliccare il pulsante Create CT in alto a destra:

createct

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):

network

Infine, impostare il server DNS e avviare il container. A questo punto, il sistema dovrebbe funzionare correttamente.

ct

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

É 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:

echo "deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription" >> /etc/apt/sources.list

apt update && apt install proxmox-backup

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

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:

wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg

echo "deb http://download.proxmox.com/debian/pbs-client bookworm main" >> /etc/apt/sources.list

apt update && apt install proxmox-backup-client

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.

pbs_datastore

Creating a backup

Sulla propria macchina, per creare un backup si utilizza il comando seguente:

proxmox-backup-client backup [backupdata] [OPZIONI]

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:

proxmox-backup-client backup etc.pxar:/etc/network --repository 192.168.0.195:mydatastore

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:

backuplist

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:

proxmox-backup-client key create

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:

proxmox-backup-client key create /path/to/mykey

Per generare un backup crittografato della directory /etc, utilizzando la chiave appena generata, si deve eseguire il comando seguente:

proxmox-backup-client backup etc.pxar:/etc --keyfile /path/to/mykey --repository 192.168.0.195:mydatastore

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:

/fstab  
/network/*

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:

proxmox-backup-client snapshot list --repository 192.168.0.195:mydatastore

Password for "root@pam": **********
┌──────────────────────────────────┬────────────┬───────────────────────────────────┐
│ snapshot                         │       size │ files                             │
╞══════════════════════════════════╪════════════╪═══════════════════════════════════╡
│ host/dadopc/2025-03-09T14:18:11Z │ 18.502 KiB │ catalog.pcat1 etc.pxar index.json │
└──────────────────────────────────┴────────────┴───────────────────────────────────┘

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:

proxmox-backup-client catalog dump --repository 192.168.0.195:mydatastore host/dadopc/2025-03-09T14:18:11Z

Restore del backup

Per ripristinare un backup:

proxmox-backup-client restore --repository 192.168.0.195:mydatastore host/dadopc/2025-03-09T14:18:11Z etc.pxar /etc/network

dove etc.pxar indica il nome dell’archivio da ripristinare e /etc/network la directory di destinazione.

Montare l’archivio

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:

proxmox-backup-client mount --repository 192.168.0.195:mydatastore host/dadopc/2025-03-09T14:18:11Z etc.pxar /mnt

Se il comando ha successo, il contenuto dell’archivio etc.pxar sarà accessibile al mountpoint indicato.

Riferimenti

Inserisci l'indirizzo della tua istanza


Altri post come questo