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.
É 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
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.
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 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.
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:
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
- 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
- Accedere a una rete da remoto con Tailscale