Phase 1 — Proxmox
Installation et configuration du cluster Proxmox VE 9.2 sur les 3 Nab6-Lite.
1.1 — Installation du système
Téléchargement
Télécharger Proxmox VE 9.2 depuis le site officiel :
https://www.proxmox.com/downloads
Création de la clé USB d'installation
# Identifier le disque USB
lsblk
# Flasher l'image (remplacer /dev/sdX par le bon périphérique)
dd if=proxmox-ve_9.2.iso of=/dev/sdX bs=1M status=progress
Installation (à répéter sur les 3 nœuds)
Lors de l'installation :
| Étape | Valeur |
|---|---|
| Disque cible | NVMe (500 Go) — ex: /dev/nvme0n1 |
| Filesystem | ext4 (ZFS n'est pas nécessaire — pas de Ceph, pas de HA) |
| Password | Choisir un mot de passe fort |
root@mounik.ovh |
|
| FQDN | pve01.homelab.mounik.ovh, pve02.homelab.mounik.ovh, pve03.homelab.mounik.ovh |
| IP | Fixe : .10, .11, .12 |
ZFS ? Inutile ici. Pas de HA, pas de replication, pas de snapshot au niveau disque. ext4 est plus simple et plus performant pour un single disk.
Configuration réseau post-installation
# /etc/network/interfaces (pve01)
auto lo
iface lo inet loopback
auto enp1s0
iface enp1s0 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.1.10/24
gateway 192.168.1.254
bridge-ports enp1s0
bridge-stp off
bridge-fd 0
(Adapter .11 et .12 pour pve02 et pve03.)
Répéter l'installation sur les 3 nœuds avant de passer à l'étape suivante.
1.2 — Cluster Proxmox
Créer le cluster depuis pve01 :
# Sur pve01 — créer le cluster
pvecm create homelab-cluster
La commande affiche une adresse de jointure (join information). Noter le IP et le fingerprint.
Rejoindre le cluster depuis pve02 :
pvecm add 192.168.1.10 --fingerprint XX:XX:XX:...
Même commande sur pve03.
Vérifier l'état du cluster :
pvecm status | grep -E "Name|Nodes|Expected"
Résultat attendu :
Membership information
Name: homelab-cluster
Nodes: 3
Expected votes: 3
1.3 — Datastore SSD
Formater et monter le SSD 1 To sur chaque nœud.
Identifier le disque
lsblk
# Identifier le disque SSD supplémentaire (ex: /dev/sda)
Créer une partition et formater
# Créer une partition unique avec fdisk
fdisk /dev/sda # n → p → 1 → Enter → Enter → w
# Formater en ext4
mkfs.ext4 /dev/sda1
# Récupérer l'UUID
blkid /dev/sda1
Monter et configurer le point de montage
mkdir -p /mnt/ssd-vms
# Ajouter dans /etc/fstab
echo "UUID=<UUID> /mnt/ssd-vms ext4 defaults 0 2" >> /etc/fstab
# Monter
mount -a
# Vérifier
df -h /mnt/ssd-vms
Ajouter le datastore dans Proxmox
Depuis l'interface web : Datacenter → Storage → Add → Directory
| Champ | Valeur |
|---|---|
| ID | ssd-vms |
| Directory | /mnt/ssd-vms |
| Content | Disk images, ISO, Container templates, Snippets |
| Nodes | Sélectionner le nœud courant |
| Disable | Non |
Répéter sur pve02 et pve03.
Vérifier en ligne de commande :
pvesm status
1.4 — Template Debian 13 cloud-init
Méthode 1 : Téléchargement depuis l'interface web
- Télécharger l'ISO Debian 13 Netinstall depuis
https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/ - L'importer dans Proxmox : Datacenter → ssd-vms → ISO Images → Upload
- Créer une VM manuellement :
- OS : Debian 13
- Disque : 4 Go (juste pour le template)
- CPU : 1 vCPU
- RAM : 512 Mo
- Installer Debian minimal (SSH server uniquement)
- Installer cloud-init :
apt update && apt install -y cloud-init cloud-initramfs-growroot qemu-guest-agent
systemctl enable qemu-guest-agent
- Nettoyer :
truncate -s 0 /etc/machine-id
rm -f /var/log/*.log
history -c
-
Arrêter la VM :
shutdown -h now -
Convertir en template : clic droit sur la VM → Convert to template
Méthode 2 : Image cloud brute (plus rapide)
# Télécharger l'image cloud Debian 13
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-13-genericcloud-amd64.qcow2
# Créer une VM depuis l'image
qm create 9000 --name "debian-13-cloud" --memory 512 --cores 1 --net0 virtio,bridge=vmbr0
qm importdisk 9000 debian-13-genericcloud-amd64.qcow2 ssd-vms
qm set 9000 --scsihw virtio-scsi-pci --scsi0 ssd-vms:vm-9000-disk-0
qm set 9000 --ide2 ssd-vms:cloudinit
qm set 9000 --boot order=scsi0
qm set 9000 --serial0 socket --vga serial0
qm set 9000 --agent enabled=1
# Convertir en template
qm template 9000
Le template est maintenant disponible sous l'ID 9000 pour être cloné par OpenTofu.
1.5 — Firewall Proxmox
Activer le firewall au niveau datacenter
pvesh set /cluster/firewall/options --enable 1
Règles au niveau de chaque nœud
Créer /etc/pve/nodes/pve01/host.fw :
[INCOMING]
ACCEPT -source 192.168.1.0/24 -p tcp -dport 22 -log nolog
ACCEPT -source 192.168.1.0/24 -p tcp -dport 8006 -log nolog
ACCEPT -source 192.168.1.0/24 -p tcp -dport 3128 -log nolog
DROP -log nolog
| Règle | Port | Service | Accès |
|---|---|---|---|
| SSH | 22 | Administration Proxmox | Réseau local uniquement |
| Web UI | 8006 | Interface web Proxmox | Réseau local uniquement |
| VEPA | 3128 | API Proxmox | Réseau local uniquement |
Répéter pour pve02 et pve03 (changer le nom du nœud).
Recharger la configuration :
pve-firewall restart
Vérifier :
pve-firewall status
1.6 — Notifications
Email (SMTP Gmail)
Gmail est utilisé comme relais SMTP. Pour que ça fonctionne, il faut un mot de passe d'application (Gmail n'accepte plus le mot de passe du compte directement).
Générer le mot de passe d'application :
1. Aller sur https://myaccount.google.com/security
2. Activer Validation en deux étapes (si pas déjà fait)
3. Aller dans Mots de passe des applications
4. Créer un mot de passe pour l'application Mail ou Autre
5. Copier le mot de passe généré (16 caractères, sans espaces)
# Installer msmtp pour l'envoi d'emails
apt install -y msmtp msmtp-mta
# /etc/msmtprc
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
account gmail
host smtp.gmail.com
port 587
from mounicou@gmail.com
user mounicou@gmail.com
password xxxxxxxxxxxxxxxx # ← mot de passe d'application Gmail
account default : gmail
Attention : le mot de passe est en clair dans le fichier. Protéger avec
chmod 600 /etc/msmtprc. Ne jamais commit ce fichier dans Git.
Configurer les alertes Proxmox
Depuis l'interface web : Datacenter → Notifications → Add → Sendmail
- Destinataire :
mounik@mounik.ovh - Déclencher sur les événements : all
1.7 — Vérification finale
# État du cluster
pvecm status
# Datastores disponibles
pvesm status
# Firewall actif
pve-firewall status
# Template cloud-init disponible
qm list | grep template
# Stockage
df -h /mnt/ssd-vms
Checklist de fin de phase
- [ ] 3 nœuds Proxmox installés (NVMe : OS, SSD 1 To : VMs)
- [ ] Cluster créé et tous les nœuds membres
- [ ] Datastore
ssd-vmsconfiguré sur chaque nœud - [ ] Template Debian 13 cloud-init disponible (ID 9000)
- [ ] Firewall Proxmox actif (datacenter + nœuds)
- [ ] Notifications email configurées
Pour aller plus loin
- Phase 2 — OpenTofu
- Architecture réseau — plan d'adressage IP
- Firewall et hardening — matrice de flux