Objectiu
Quan munto un node amb Proxmox VE, acostumo a repetir sempre el mateix patró:
- instal·lació base neta
- accés per SSH amb clau
- repositoris correctes
- certificat vàlid per HTTPS
- una mica de disciplina amb ZFS i els backups
Aquest article és un recull d’aquestes tasques bàsiques, però sense dades personals ni valors lligats a un entorn concret.
Crear el disc d’arrencada de Proxmox VE
La primera part és la més simple: descarregar la ISO més recent des de la pàgina oficial i crear el USB d’arrencada.
Amb dd a Linux o macOS:
sudo dd if=proxmox-ve_*.iso of=/dev/sdX bs=4M status=progress && sync
Cal substituir /dev/sdX pel dispositiu correcte. Val la pena comprovar-ho abans amb lsblk o l’eina equivalent, perquè aquí és fàcil equivocar-se.
Preparar l’accés per SSH
Un cop el node està instal·lat i accessible per xarxa, una de les primeres coses útils és copiar-hi la clau pública:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@<IP_DEL_NODE>
Això no té cap misteri, però estalvia molt de temps a partir del segon accés.
Repositoris: Enterprise i No-Subscription
Si no tens subscripció, el més habitual és desactivar el repositori Enterprise i activar el de No-Subscription.
Edita:
nano /etc/apt/sources.list.d/pve-enterprise.list
I comenta la línia del repositori Enterprise:
# deb https://enterprise.proxmox.com/debian/pve trixie pve-enterprise
Després, afegeix el repositori No-Subscription a:
nano /etc/apt/sources.list
deb http://download.proxmox.com/debian/pve trixie pve-no-subscription
També convé assegurar els repositoris base de Debian:
deb http://deb.debian.org/debian trixie main contrib non-free-firmware
deb http://security.debian.org/debian-security trixie-security main contrib non-free-firmware
I finalment:
apt update
apt full-upgrade -y
Certificats HTTPS amb ACME
Si vols evitar el certificat autosignat, Proxmox ho posa bastant fàcil amb ACME.
En entorns amb validació DNS, una opció pràctica és preparar un plugin amb les credencials del proveïdor DNS en un fitxer de dades amb aquest format:
FREEDNS_User=<USUARI_DNS>
FREEDNS_Password=<CONTRASENYA_DNS>
Després, des de la interfície web:
- Ves a
Datacenter -> ACME -> Challenge Plugins - Crea o selecciona el plugin DNS
- Ves a
Node -> System -> Certificates -> ACME - Afegeix el domini i associa’l al plugin
La part bona és que, un cop configurat, la renovació queda automatitzada.
Quan ZFS entra en estat degradat
Una altra part que convé tenir assumida és què fer quan un pool ZFS comença a donar errors.
Per començar, diagnòstic:
zpool status -v <POOL_NAME>
Si ZFS et marca fitxers concrets com a corruptes, el primer pas és decidir si els pots restaurar o si els has d’eliminar.
Eliminar un fitxer corrupte:
rm /ruta/al/fitxer
Si no es deixa esborrar fàcilment:
unlink /ruta/al/fitxer
Si tens còpia de seguretat, el més net és restaurar-lo després manualment.
Tornar a revisar el pool
Després de netejar o restaurar el que toca:
zpool scrub <POOL_NAME>
I quan el scrub hagi acabat i no hi hagi nous errors:
zpool clear <POOL_NAME>
Aquesta seqüència és simple, però molt útil per deixar clar si el problema era un fitxer concret o un símptoma més greu del pool.
Muntar un disc extern o una partició de backups
Si tens un disc amb còpies de màquines virtuals i el vols muntar temporalment o deixar-lo visible dins Proxmox:
Primer, identifica el sistema de fitxers:
blkid /dev/sdX1
Crea el punt de muntatge:
mkdir -p /mnt/backup-vm
I munta’l:
mount /dev/sdX1 /mnt/backup-vm
Després pots comprovar que realment hi veus els backups:
ls /mnt/backup-vm
Afegir el disc com a storage a Proxmox
Si vols que Proxmox el tracti com a espai de còpies, pots afegir-lo a storage.cfg:
nano /etc/pve/storage.cfg
Exemple:
dir: backup-vm
path /mnt/backup-vm
content backup
maxfiles 3
prune-backups keep-last=3
Després ho hauries de veure a:
Datacenter -> StorageNode -> Backups
Muntatge persistent amb UUID
Si aquest disc s’ha de muntar després de cada reinici, millor fer-ho amb UUID i no amb el nom del dispositiu.
Primer:
blkid /dev/sdX1
Després edita:
nano /etc/fstab
I afegeix una línia del tipus:
UUID=<UUID_DEL_DISC> /mnt/backup-vm ext4 defaults 0 2
Per provar-ho:
mount -a
Programar un scrub mensual de ZFS
Una de les mesures més útils, i més fàcils d’oblidar, és programar scrub periòdicament.
Edita el crontab de root:
crontab -e
Per exemple, per executar-lo el dia 1 de cada mes a les 03:00:
0 3 1 * * zpool scrub <POOL_NAME>
I per comprovar que hi és:
crontab -l
Enviar un informe per correu després del scrub
Si vols una mica més de control, pots fer un script que llanci el scrub, esperi una estona i enviï per correu l’estat del pool.
Per exemple:
nano /usr/local/sbin/zfs-scrub-mail.sh
#!/bin/bash
POOL="<POOL_NAME>"
MAILTO="<ADMIN_EMAIL>"
HOST=$(hostname)
zpool scrub "$POOL"
sleep 30m
REPORT=$(zpool status "$POOL")
echo "$REPORT" | mail -s "[$HOST] Resultat scrub mensual ZFS ($POOL)" "$MAILTO"
I el fas executable:
chmod +x /usr/local/sbin/zfs-scrub-mail.sh
Correu sortint amb msmtp
Per enviar aquests informes, una opció lleugera és msmtp:
apt install -y msmtp msmtp-mta mailutils
Configuració típica a /etc/msmtprc:
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.log
account smtp
host <SMTP_HOST>
port <SMTP_PORT>
from <ADMIN_EMAIL>
user <SMTP_USER>
password <SMTP_PASSWORD>
account default : smtp
I una prova simple:
echo "prova" | mail -s "test Proxmox" <ADMIN_EMAIL>
Després pots programar l’script al crontab:
0 3 1 * * /usr/local/sbin/zfs-scrub-mail.sh
Recomanacions finals
Si hagués de resumir aquest tipus de manteniment en quatre idees, serien aquestes:
- deixa l’accés per SSH resolt des del principi
- defineix bé repositoris i certificats abans de començar a carregar serveis
- no confiïs massa en pools ZFS sense redundància
- tracta els
scrub, els backups i les comprovacions com a feina normal de sistema, no com a tasques “per més endavant”
Proxmox és molt còmode quan tot funciona. La diferència real acostuma a notar-se quan arriba el dia que alguna cosa falla i tens l’entorn prou ordenat per recuperar-te ràpid.