Skip to content

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
Email 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

  1. Télécharger l'ISO Debian 13 Netinstall depuis https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/
  2. L'importer dans Proxmox : Datacenter → ssd-vms → ISO Images → Upload
  3. Créer une VM manuellement :
  4. OS : Debian 13
  5. Disque : 4 Go (juste pour le template)
  6. CPU : 1 vCPU
  7. RAM : 512 Mo
  8. Installer Debian minimal (SSH server uniquement)
  9. Installer cloud-init :
apt update && apt install -y cloud-init cloud-initramfs-growroot qemu-guest-agent
systemctl enable qemu-guest-agent
  1. Nettoyer :
truncate -s 0 /etc/machine-id
rm -f /var/log/*.log
history -c
  1. Arrêter la VM : shutdown -h now

  2. 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-vms configuré 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