Proxmox Backup è stato già trattato in un precedente articolo. L’idea ora è quella di integrare PBS all’interno del nuovo homelab, sfruttando le sue caratteristiche peculiari:

  • Deduplicazione: i backup periodici generano una quantità significativa di dati ridondanti. La deduplicazione consente di eliminare la ridondanza e ottimizzare lo spazio di archiviazione utilizzato
  • Backup incrementali
  • Integrità dei dati: l’utilizzo di checksum garantisce l’affidabilità dei backup
  • Sincronizzazione: è possibile sincronizzare i dati verso siti remoti o dispositivi di archiviazione USB, trasferendo esclusivamente il delta
  • Crittografia: i backup possono essere crittografati lato client
  • Controllo degli accessi granulare

Hardware e specifiche di rete

Per l’implementazione di PBS utilizzerò il mio vecchio Intel NUC con le seguenti specifiche:

  • CPU Intel Celeron J3455
  • 12 GB RAM
  • SSD da 2 TB

Il layout di rete previsto è illustrato nello schema seguente:

Schema di rete PBS homelab

  • Indirizzo IP di PBS: 10.0.5.5
  • Gateway: 10.0.5.254
  • Da collegare alla porta 2 dello switch, già configurata nella VLAN 5 di Management

Installazione

Dopo aver scaricato l’immagine ISO e creato un supporto di avvio, l’installazione risulta semplice e analoga a quella di PVE.

Per accedere all’interfaccia web di configurazione all’indirizzo https://10.0.5.5:8007, è possibile procedere in due modi:

  • Collegare un dispositivo alla porta 3 dello switch, anch’essa configurata nella VLAN 5
  • Creare una regola di firewall che consenta l’accesso a PBS dalla VLAN 10, esclusivamente al nostro device

firewall-rules-pbs-access

Se la configurazione è stata eseguita correttamente, sarà possibile accedere all’interfaccia di gestione di PBS.

Dalla sezione Configuration si possono modificare e visualizzare le impostazioni di rete:

pbs-network

Primo accesso

Si raccomanda di eseguire le seguenti operazioni preliminari:

  • Modificare la password di root con una password complessa e sicura
  • Abilitare la 2FA per l’utente root da Access Control > Two Factor Authentication
  • Verificare ed installare tutti gli aggiornamenti disponibili dalla sezione Administration > Updates
  • Impostare un indirizzo email valido per ricevere notifiche relative allo stato dei backup e alle verifiche di integrità dei dati

smtp-setting

email-default

Gestione backup

Datastore

Il primo passo consiste nella creazione del datastore, il contenitore dedicato ai backup. È possibile accedere alla sezione corrispondente dall’interfaccia di amministrazione.

pbs-datastore

All’interno di questa sezione, è possibile definire anche la retention policy dei backup, ovvero la durata di conservazione dei dati. Esiste anche l’ottimo strumento ufficiale per la simulazione della retention.

pbs-datastore-retention

Verify e Prune Job

Da Datastore > Verify Job, creare un job di verifica dell’integrità del backup. Spostandosi nella tab Prune, creare il job per il prune dei vecchi backup.

Utente dedicato

Per garantire la sicurezza e limitare i permessi, è necessario creare un utente dedicato ai backup. Questo utente avrà il solo permesso di eseguire backup, senza la possibilità di eliminarli.

L’utente si crea dalla sezione Access Control > User Management.

backup-user

Successivamente, nella tab Permissions, è possibile assegnare i permessi corretti all’utente creato in precedenza, limitandoli al solo datastore di interesse. Nel caso specifico, avendo creato il datastore pve01.home.lan, si assegna all’utente il ruolo DatastoreBackup, che consente esclusivamente di creare nuovi backup e eseguire operazioni di lettura e verifica sul datastore.

datastore-permission

Configurazione del datastore su PVE

L’ultimo passaggio prevede l’aggiunta del datastore appena creato all’interno di PVE, tramite il percorso Datacenter > Storage. Non è necessario specificare la retention policy, in quanto questa viene gestita direttamente da Proxmox Backup. Si consiglia inoltre di attivare la crittografia dalla tab Encryption, assicurandosi di salvare in modo sicuro la chiave di crittografia generata.

pve-pbs-storage

Il fingerprint richiesto, puó essere visualizzato direttamente dalla dashboard di PBS:

pbs-fingerprint

Infine, è possibile creare un job di backup tramite il percorso Datacenter > Backup, selezionando lo storage appena configurato e inserendo le varie VM.

Selezionando la VM e quindi spostandosi nella sezione Backup, é possibile eseguire un backup/restore manuale.

manual-backup

Disco esterno

Per configurare un datastore su un disco USB esterno, bisogna:

  • Connettere il disco USB esterno al mini PC su cui è installato PBS
  • Dalla sezione Storage/Disk identificare il disco USB appena collegato
  • Eseguire un wipe del disco: questa operazione cancellerà in modo permanente tutti i dati presenti

zfs-wipe

  • Spostarsi nella tab ZFS e avviare la procedura per la creazione di un nuovo pool

zfs-pool-create

  • Al termine della creazione del pool, verrá in automatico creato il datastore associato.

zfs-pool

Confronto PVE-PBS

Di seguito viene presentato un confronto tra un backup eseguito tramite PVE e uno eseguito tramite PBS:

pve-backup

pbs-backup

Dal confronto emerge che il primo backup risulta identico in entrambi i casi, in quanto completo. A partire dal secondo backup, tuttavia, le differenze diventano evidenti: grazie al fatto che si tratta di backup incrementali, PBS completa il backup in 2 secondi contro i 32 secondi di PVE. Inoltre, l’occupazione di spazio su disco risulta notevolmente ridotta grazie anche alla deduplicazione.

deduplication

Un ulteriore vantaggio offerto da PBS è la possibilità di eseguire il ripristino di singoli file, tramite l’opzione File Restore:

file-restore

Backup delle configurazioni di un nodo PVE

Un nodo Proxmox può subire guasti hardware o malfunzionamenti. Eseguire il backup della directory /etc consente di preservare tutte le impostazioni principali del sistema e/o del cluster, garantendo un rapido ripristino del servizio in caso di reinstallazione. Non è necessario includere altre directory come /var, /root o simili, in quanto non contengono configurazioni critiche per il recupero del nodo.

Backup automatico tramite PBS e systemd

Il client a riga di comando proxmox-backup-client, installato di default in PVE, consente di interfacciarsi con PBS per eseguire backup di host fisici o virtuali. In questo contesto, verrà utilizzato per configurare un backup crittografato della directory /etc del nostro PVE.

Prerequisiti

  • Creare un datastore e un utente dedicato allo scopo, col ruolo DatastoreBackup
  • Verificare che il pacchetto proxmox-backup-client sia installato sul nodo PVE

Timer Systemd

Accedere via SSH a PVE e creare il servizio /etc/systemd/system/proxmox-backup.service con il seguente contenuto:

1
2
3
4
5
6
7
8
[Unit]
Description=Proxmox Host Backup
[Service]
Type=simple
EnvironmentFile=/etc/default/proxmox-backup
ExecStart=/usr/bin/proxmox-backup-client backup vps.pxar:/ --repository ${PBS_REPOSITORY} --backup-type host --keyfile ${PBS_ENCRYPTION_FILE} --backup-id ${ID}
StandardOutput=journal
StandardError=journal

Creare il timer /etc/systemd/system/proxmox-backup.timer:

1
2
3
4
5
6
7
[Unit]
Description=Daily Backup
[Timer]
OnCalendar=*-*-* 20:00:00
Persistent=true
[Install]
WantedBy=timers.target

In questo modo, ogni giorno alle ore 20:00 viene eseguito un backup della directory /etc.

Definire le variabili nel file /etc/default/proxmox-backup:

1
2
3
4
5
6
7
PBS_REPOSITORY="user@pam@your-pbs-server:your-datastore"
PBS_PASSWORD="your-pbs-password"
PBS_FINGERPRINT="your-server-fingerprint"
PBS_ENCRYPTION_PASSWORD="your-backup-key-password"
# PBS_ENCRYPTION_PASSWORD: se impostata, questa variabile d’ambiente viene utilizzata per accedere alla encryption key /etc/proxmox/backup.key (se protetta da password)
PBS_ENCRYPTION_FILE="/etc/proxmox/backup.key"
ID="pve01.home.lan"

Impostare i seguenti permessi: chmod 600 /etc/default/proxmox-backup

Le informazioni si trovano direttamente selezionando il datastore e cliccando Show Connection Information

connection-information

Crittografia

Per garantire un ulteriore livello di sicurezza, è possibile generare una chiave di crittografia lato client:

1
2
3
4
5
6
mkdir /etc/proxmox
proxmox-backup-client key create /etc/proxmox/backup.key
Encryption Key Password: ********
Verify Password: ********

chmod 600 /etc/proxmox/backup.key

Includere la chiave nel comando di backup tramite l’opzione --keyfile /etc/proxmox/backup.key. La chiave é giá inclusa nel comando di backup specificato nel servizio.

Importantissimo: salvarsi il contenuto del file /etc/proxmox/backup.key in un posto sicuro, altrimenti il restore non sarà possibile

Attivazione del timer

Eseguire i seguenti comandi per attivare il timer:

1
2
systemctl daemon-reload
systemctl enable --now proxmox-backup.timer

Per eseguire un backup manuale, basta riavviare il servizio systemctl restart proxmox-backup.service.

Restore

I backup si possono vedere direttamente da PBS:

pbs-backup-client

Oppure tramite i seguenti comandi:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
source /etc/default/proxmox-backup

proxmox-backup-client list --repository "$PBS_REPOSITORY"

Password for "pve-config@pbs": 
┌─────────────────────┬──────────────────────────────────────────┬──────────────┬───────────────────────────────────┐
│ group               │ last snapshot                            │ backup-count │ files                             │
╞═════════════════════╪══════════════════════════════════════════╪══════════════╪═══════════════════════════════════╡
│ host/pve01.home.lan │ host/pve01.home.lan/2026-04-04T16:17:13Z │            8 │ catalog.pcat1 etc.pxar index.json │
└─────────────────────┴──────────────────────────────────────────┴──────────────┴───────────────────────────────────┘

Shell interattiva

1
2
source /etc/default/proxmox-backup
proxmox-backup-client catalog shell host/pve01.home.lan/2026-04-04T16:17:13Z etc.pxar --repository "$PBS_REPOSITORY" --keyfile /etc/proxmox/backup.key

Per maggiori informazioni sul processo di restore, si rimanda alla documentazione ufficiale.

Video

Riferimenti