Installa Proxmox 8 su Rasperry Pi 5
[documento editato il 2025-02-24]
Normalmente Proxmox viene installato tramite immagine dedicata. Non essendo prevista ancora una immagine ufficiale dedicata al Rapberry Pi 5, si procede con l'installazione nativa su Raspberry OS.
La procedura, in alcuni momenti, prevede l'accesso diretto alla scheda Pi 5. Si consiglia di utilizzare il sistema operativo Raspberry OS in versione lite (no desktop) ed installato su supporto SSD NVMe.
Le procedure a seguire danno per scontato:
- sistema Raspberry OS 64bit lite
- utente con accesso a comando `sudo``
Come documentazione di riferimento si consiglia il repository ufficiale: Proxmox-Port
Preparazione del sistema
Inanzi tutto è buona norma effettuare un aggiornamento dei pacchetti
sudo apt update
sudo apt upgrade
Occorre poi creare la password per l'utente root
$ sudo su
$ passwd
Nuova password:
Reimmetere la nuova password:
passwd: password aggiornata correttamente
Predisposizione all'installazione di Proxmox
Rimanendo loggati come root, scarichiamo le chiavi pubbliche dal repository del porting di Proxmox e
le salviamo nel percorso di sistema /usr/share/keyrings
curl -L https://mirrors.apqa.cn/proxmox/debian/pveport.gpg | tee /usr/share/keyrings/pveport.gpg
Non preoccuparsi se a terminale vengono visualizzati caratteri illeggibili. Al termine è possibile ripulire
il terminale con il comando ctrl+L. Eventuali caratteri rimasti non influiscono sul funzionamento.
Successivamente inseriamo nella lista dei repository dei pacchetti debian anche quello del porting di Proxmox.
echo "deb [deb=arm64 signed-by=/usr/share/keyrings/pveport.gpg] https://mirrors.apqa.cn/proxmox/debian/pve bookworm port" | tee /etc/apt/sources.list.d/pveport.list
Ora che abbiamo aggiunto il repository, facciamo si che apt lo prenda in considerazione.
$ apt update
Trovato:1 http://deb.debian.org/debian bookworm InRelease
Trovato:2 http://deb.debian.org/debian-security bookworm-security InRelease
Trovato:3 http://deb.debian.org/debian bookworm-updates InRelease
Trovato:4 http://archive.raspberrypi.com/debian bookworm InRelease
Scaricamento di:5 https://mirrors.apqa.cn/proxmox/debian/pve bookworm InRelease [3.997 B]
Scaricamento di:6 https://mirrors.apqa.cn/proxmox/debian/pve bookworm/port arm64 Packages [566 kB]
Recuperati 570 kB in 3s (179 kB/s)
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze... Fatto
Lettura informazioni sullo stato... Fatto
Tutti i pacchetti sono aggiornati.
W: Acquisizione del file "port/binary-armhf/Packages" saltata in quanto il repository "https://mirrors.apqa.cn/proxmox/debian/pve bookworm InRelease" non sembra fornire tale file (voce in sources.list errata?)
Non preoccuparsi del messaggio di warning.
Ora occorre aggiornare la ditribuzione
apt dist-upgrade
Potrebbe aggiornare qualche pacchetto. Nel mio caso, avendo già effettuato l'upgrade ad inizio procedura, non sono stati effettuati aggiornamenti.
Prima della prossimo passo occorre segnarsi l'indirizzo IP del dispositivo
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 2c:cf:67:25:e3:50 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.180/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::cb72:7680:a684:d070/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 2c:cf:67:25:e3:51 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.181/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
valid_lft 57673sec preferred_lft 57673sec
inet6 2001:b07:5d33:12c5:47ad:a67d:87aa:f672/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::4703:d3cd:4352:ca46/64 scope link noprefixroute
valid_lft forever preferred_lft forever
Nel mio caso sono attive due interfacce: eth0 e wlan0 rispettivamente agli indirizzi
192.168.1.180 e 192.168.1.181
Ora occorre aggiornare il file hosts tramite comando nano /etc/hosts e modificarlo per renderlo simile a quanto segue:
127.0.0.1 localhost
127.0.1.1 raspi5
192.168.1.180 raspi5
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
In cui raspi5 è l'hostname del dispositivo.
Ora si configurano le interfacce di rete per renderle utilizzabili da Proxmox.
Utilizzare il comando nano /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
#source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
iface eth0 inet static
auto vmbr0
iface vmbr0 inet static
address 192.168.1.180/24
gateway 192.168.1.254
bridge-ports eth0
bridge-stp off
bridge-fd 0
NOTA accertarsi che l'indirizzo del gateway sia quello corretto, altrimenti sarà impossibile accedere ad internet.
Ora installiamo le utility per i bridge di rete
apt install ifupdown2 bridge-utils
Se tutto è andato a buon fine la rete è stata riavviata (se si era connessi da remoto si è persa la connessione).
Per verificare che tutto funzioni provare ad effettuare un ping www.google.com
Come ultimo passo di predisposizione, importante affinché funzionino correttamente gli script per la compilazione di immagini docker, occorre utilizzare kernel con pagesize 4K.
NOTA le linee seguenti fanno riferimento alla posizione dei file
/boot/firmwarerelativa a Debian 12 Bullseye nel caso la propria installazione sia basata su _Debian 11 i file sono in/bootE' possibile verificare la propria distribuzione con il comandocat /etc/os-release
Per questo effettuare le seguenti modifiche: editare il file config.txt : nano /boot/firmware/config.txt
ed aggiungere in calce al file la linea:
kernel=kernel8.img
Inoltre occorre modificare la linea di comando : nano /boot/firmware/cmdline.txt
inserendo i seguenti parametri alla fine della linea:
cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1
RIAVVIARE LA SCHEDA
Installazione di Proxmox
Effettuati tutti i preparativi possiamo finalmente installare Proxmox VE.
apt install pve-edk2-firmware
apt install proxmox-ve postfix open-iscsi pve-edk2-firmware-aarch64
Durante l'installazione verranno richieste alcune informazioni, di seguito le risposte che ho selezionato:
| Richiesta | Scelta effettuata |
|---|---|
| Postfix Configuration | Nessuna Configurazione |
| File di configurazione pveport.list | N : mantiene la versione attualmente installata |
Ora occorre riavviare ed il server Proxmox dovrebbe partire automaticamente.
reboot
Configurazione di Proxmox VE 8
Accedere all'interfaccia web all'indirizzo : https://192.168.1.180:8006 oppure https://raspi5.local:8006
-- TODOs - argomenti da aggiungere ed espandere
A. allargare la dimensione dello SWAP file
sudo dphys-swapfile swapoff
edit /etc/dphys-swapfile
```text CONF_SWAPSIZE=8000
CONF_MAXSWAP=8000 ```
Riavviare servizio
text
sudo dphys-swapfile setup
sudo dphys-swapfile swapon
verificare sudo swapon --show
1. gestire i backup delle VM e delle CT
- shared Storage aggiunta di storage NFS per l'archiviazione esterna dei backup
- Preparare la condivisione NFS su Synology vedere qui
Datacenter/Storage/Add: NFS-
Configurare
text ID: SynoNFS Server: 192.168.1.250 Export: /volume1/proxmox Content: Disk image, ISO image, Container template, VZDump backup file, Container-->
Add -
attivare la cache locale per la creazione del backup
nano /etc/vzdump.conf
text
# vzdump default settings
tmpdir: /tmp
#dumpdir: DIR
#storage: STORAGE_ID
...
2. rendere visibili le VM/CT come [hostname].local sulla propria rete locale
- install
avahi-daemonpackage
3. Pimox scripts
Proxmox arm64 Install Scripts
4. Accorgimenti per far funzionare le VM arm64 anche desktop mode
- bios : OVMF (UEFI)
- initial DVD:SCSI / HD : SATA
- then NO DVD / HD (detach + reattach as SCSI0)
- Boot order (always to check)
- (some time with no display)
- if hangs on STOP or SHUTDOWN use "Monitor" then QUIT
5. Aggiustare DNS all'interno di CT (basate su debian 12)
- verifica dns :
cat /etc/resolv.conf - modifica il file con
nameserver 8.8.8.8 - riavvia il servizio
sudo systemctl restart systemd-resolved
6. montare un disco esterno su proxmox (SMB)
Distinguiamo due differenti metodi per montare un disco: il primo più "storico" è mediante la configurazione del file fstab,
l'altra, più "moderna" utilizza systemd.
- creare la cartella per il punto di mount:
mkdir /media/wdbackup - preparare un file con le credenziali di accesso alla risorsa condivisa :
nano /etc/win-credentials
text
username=root
password=pass
- editare il file
/etc/fstabed aggiungere per esempio per una connessione SMB/cifs:
text
//192.168.1.249/WDBackup /media/wdbackup cifs relatime,credentials=/etc/win-credentials,file_mode=0777,dir_mode=0777,x-systemd.automount 0 0
questo dovrebbe montare in /media/wdbackup la condivisione WDBackup dal server 192.268.1.249, nota che in questo caso seppur la condivisione fosse senza guest viene comunque usato un fake user e password
In automatico systemd utilizza il file fstab per crearsi la configurazione
di mount alla partenza. Vengono creati servizi con come mount-point.mount.
Per l'esempio seguente viene creato il servizio media-wdbackup.mount
Quindi è possibile verificare lo stato del sistema con il comando:
systemctl status media-wdbackup.mount
Sono possibili anche tutti i comandi disponibili con systemctl come start, stop, restart ...
7. condividere cartelle o mount da Proxmox host verso CT
- per effettuare la condivisione di cartella (bindmount) eseguire il comando:
bash
pct set 504 -mp0 /media/wdbackup,mp=/media/wdbackup
in questo caso viene condivisa la cartella /media/wdbackup sulla CT in /media/wdbackup con is mp0. ATTENZIONE: la CT deve essere definita "priviledged" altrimenti è impossibile utilizzare la cartella in scrittura.
8. convertire una CT da unpriviledged to priviledged o viceversa
Effettuare backup della CT Effettuare il restore scegliendo l'opzione scelta.
9. Creare una partizione LVM-Thin partendo da un disco full ext4
Se si dispone di aree di SSD non partizionate allora è possibile procedere alla creazione di una partizione LVM
- usare
fdiskper creare la nuova partizione di tipo LVM
Si procede alla creazione della nuova partizione sfruttando lo spazio liberato.
fdisk /dev/nvme0n1 per entrare nell'utility di formattazione
F per visualizzare gli spazi non partizionati. Potrebbero
essere listati più spazi in quanto spesso per questioni di allineamento
rimangono anche piccoli spazi disco non partizionabili.
Appuntarsi i valori di Start ed End dello spazio che
si deve utilizzare.
n creare la nuova partizione: tipo primary, numero della
partizione e start e end appuntati precedentemente.
t per cambiare il formato della partizione in 8e LVM
w scrive le modifiche su disco (con q si esce senza modificare)
- creazione del "Thinpool"
Da interfaccia web, selezionare la voce
Disks\LVM-Thindel nodo. Selezionare la voceCreate:Thinpoole da popup configurare:- Disk: selezionata in automatico la partizione formattata in LVM
- Name: local-lvm
- Add Storage: selezionato
10. Tailscale non funziona all'interno di una LXC
Potrebbe essere necessario installare tailscale all'interno di un LXC.
Può succedere che dopo aver seguito la procedura indicata nel sito ufficiale di Tailscale al
momento di lanciare il comando tailscale up il sistema indichi un errore.
Questo è dovuto al fatto che il sistema non è in grado di essere instanziato come servizio per incompatibilità della struttura: non riesce a trovare il percorso /dev/net
La soluzione consiste nel modificare a mano il file di configurazione del LXC.
Dalla console comandi della macchina Proxmox spostarsi nella cartella /etc/pve/lxc e editare
il file relativo alla CT sulla quale si riscontra il problema: ad esempio 303.conf
Aggiungere in fondo al file le seguenti due linee:
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net dev/net none bind,create=dir
Salvare e riavviare la CT.
Ora il comando tailscale up dovrebbe funzionare.