Aller au contenu

ProxmoxVE (PVE°

Mise à jour : 2026-10-19 | Non relu

Proxmox VE (Virtual Environment) est une plateforme de virtualisation open source. Installée sur un serveur, elle permet d'héberger plusieurs machines virtuelles (VM) et conteneurs, administrés depuis une interface web. C'est un hyperviseur de type 1 (il tourne au plus près du matériel), basé sur Debian.

Deux formes de virtualisation
  • VM (KVM/QEMU) : une machine complète avec son propre noyau. Isole totalement, fait tourner n'importe quel système (Linux, Windows...). Plus lourde.
  • Conteneur (LXC) : partage le noyau de l'hôte, ne fait tourner que du Linux. Très léger et rapide, mais moins isolé.

Cette note se concentre sur l'installation de l'hôte et la création de VM, l'usage le plus courant pour un serveur d'infrastructure.

Versions visées
  • Proxmox VE 9.x, basé sur Debian 13 (Trixie)
  • Proxmox VE 8.x correspondait à Debian 12 (Bookworm)

Installer Proxmox VE

Deux approches :

  • L'image ISO officielle : la plus simple, à graver sur une clé USB. Elle installe Debian et Proxmox en une fois. À privilégier si vous contrôlez la machine physiquement.
  • Par-dessus une Debian existante : l'approche habituelle sur un serveur dédié loué, livré avec Debian. C'est celle détaillée ici.

Sur une Debian 13 existante

1) Vérifier le fichier /etc/hosts. Proxmox exige que le nom de la machine résolve vers son adresse IP, pas vers 127.0.1.1. Éditez /etc/hosts pour avoir une ligne du type :

192.0.2.10   pve.domaine.fr pve

(remplacez par l'adresse IP réelle et le nom de votre serveur)

2) Ajouter le dépôt Proxmox au format moderne deb822, dans /etc/apt/sources.list.d/proxmox.sources :

Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg

Puis la clé de signature du dépôt :

wget https://enterprise.proxmox.com/debian/proxmox-archive-keyring-trixie.gpg \
  -O /usr/share/keyrings/proxmox-archive-keyring.gpg

3) Installer le noyau Proxmox, puis les paquets :

apt update
apt install -y proxmox-default-kernel
reboot

Après le redémarrage sur le nouveau noyau :

apt install -y proxmox-ve postfix open-iscsi chrony

4) Accéder à l'interface web : https://adresse-ip:8006. Acceptez l'avertissement de certificat (il est auto-signé au départ) et connectez-vous avec l'utilisateur root et son mot de passe système.

Le dépôt : l'erreur n°1 des débutants

Une installation par ISO active par défaut le dépôt enterprise, qui exige un abonnement payant. Sans lui, apt update échoue avec une erreur 401 Unauthorized. Proxmox est pourtant gratuit en production : il faut juste utiliser le dépôt no-subscription, qui reçoit les mêmes paquets après une période de test un peu plus longue.

Sur une installation par ISO, désactivez l'enterprise et ajoutez le no-subscription depuis l'interface web (Datacenter > nœud > Updates > Repositories), ou en ligne de commande :

# Désactiver le dépôt enterprise (ajouter "Enabled: false" au fichier)
echo "Enabled: false" >> /etc/apt/sources.list.d/pve-enterprise.sources
# Puis créer le fichier proxmox.sources montré ci-dessus

N'activez jamais les deux dépôts en même temps. Une fenêtre vous signalera l'absence d'abonnement à chaque connexion : c'est sans conséquence, vous pouvez la fermer.

Configurer le réseau

C'est le cœur d'une infrastructure Proxmox. Le principe que j'applique : une seule machine exposée, des VM dans un réseau privé.

Le modèle : deux ponts (bridges)

Un pont (bridge) est un commutateur réseau virtuel auquel on raccorde les VM.

  • vmbr0 : le pont public, relié à la carte réseau physique. Il porte l'adresse IP publique du serveur. Seules les VM qui doivent être joignables depuis Internet y sont raccordées.
  • vmbr1 : un pont privé, sans accès direct à l'extérieur. Les VM y reçoivent des adresses d'un réseau interne (ex. 10.0.0.0/24), et l'hôte leur fournit l'accès à Internet par NAT (traduction d'adresses). C'est là que tournent la plupart des VM.

Analogie : vmbr0 est la rue, avec une adresse visible de tous. vmbr1 est une cour intérieure privée : on y circule librement entre voisins, et pour sortir en ville, tout le monde passe par le même portail (le NAT de l'hôte).

Exemple de configuration

Dans /etc/network/interfaces (adaptez les adresses et le nom de la carte physique, visible avec ip a) :

auto lo
iface lo inet loopback

# Carte physique, sans configuration directe
iface enp0s31f6 inet manual

# Pont public : porte l'IP publique du serveur
auto vmbr0
iface vmbr0 inet static
    address 192.0.2.10/24
    gateway 192.0.2.254
    bridge-ports enp0s31f6
    bridge-stp off
    bridge-fd 0

# Pont privé NATé pour les VM internes
auto vmbr1
iface vmbr1 inet static
    address 10.0.0.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    post-up   iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE

Pour que le NAT fonctionne, activez le routage dans le noyau :

echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-routing.conf
sysctl --system

Tester le réseau sans se couper l'accès

Une erreur dans /etc/network/interfaces sur un serveur distant peut vous déconnecter définitivement. Avant d'appliquer, gardez une console de secours ouverte (KVM/IPMI de l'hébergeur), et vérifiez deux fois la passerelle et l'adresse. Sur un serveur loué, l'adresse de passerelle et le masque sont fournis par l'hébergeur et ne s'inventent pas.

Convention pour les VM internes

Une astuce qui simplifie l'administration : donner à chaque VM l'adresse 10.0.0.X où X est son identifiant Proxmox (son "VM ID"). La VM 104 a l'adresse 10.0.0.104. On retrouve ainsi instantanément une machine d'après son numéro.

Durcir l'hôte

L'hyperviseur est la machine la plus critique : s'il tombe ou est compromis, toutes les VM le sont avec lui.

Accès SSH

Créez un compte nominatif par administrateur, interdisez la connexion root par SSH, et n'autorisez que les membres d'un groupe dédié.

addgroup ssh-users
adduser prenom
usermod -aG sudo,ssh-users prenom

Dans /etc/ssh/sshd_config :

PermitRootLogin no
AllowGroups ssh-users
PubkeyAuthentication yes
MaxAuthTries 4
systemctl restart ssh

Gardez une session ouverte en changeant la config SSH

Avant de redémarrer SSH, ouvrez une deuxième session et vérifiez que vous pouvez vous connecter avec le nouveau compte. Sinon, une erreur (groupe oublié, clé absente) vous enferme dehors. Le PermitRootLogin no ne doit être appliqué qu'une fois votre compte nominatif testé.

Accès d'administration par VPN

Idéalement, l'interface web (port 8006) et SSH ne sont pas exposés sur Internet. On les atteint à travers un VPN (WireGuard, NetBird, Tailscale...). Le serveur n'expose alors publiquement que les ports des services réellement destinés au public (80, 443...), plus un accès d'urgence documenté.

Réglages système utiles

# Fuseau horaire
timedatectl set-timezone Europe/Paris

# Limiter l'usage de la swap (préférer la RAM, plus rapide)
echo "vm.swappiness=10" > /etc/sysctl.d/99-swappiness.conf
sysctl --system

Si vous utilisez ZFS, deux réglages courants sur le pool de données :

zfs set compression=lz4 nom_du_pool   # compression légère, quasi gratuite
zfs set atime=off nom_du_pool         # ne pas écrire la date de dernier accès
ZFS et la mémoire

ZFS utilise beaucoup de RAM pour son cache (ARC). Sur une machine chargée, pensez à limiter cet usage, sinon ZFS peut entrer en concurrence avec vos VM pour la mémoire. Le réglage se fait via le paramètre zfs_arc_max du module noyau.

Créer une VM : configuration type

Depuis l'interface web, bouton Create VM. Voici les choix que j'applique pour une VM Linux d'infrastructure.

Réglages de création

  • VM ID : le numéro qui identifie la VM (et qui donnera son adresse 10.0.0.X).
  • Réseau : raccordez la carte au pont vmbr1 (privé) par défaut. Seules les VM à exposer vont sur vmbr0.
  • Disque : activez Discard (libère sur le stockage l'espace effacé dans la VM), SSD emulation et IO thread si le stockage le permet. Pour Cache, No cache est le choix sûr, surtout avec ZFS (évite un double cache en mémoire).
  • Mémoire : pour une VM critique, désactivez le ballooning et allouez la RAM de façon fixe. Les performances sont stables et le comportement plus simple à diagnostiquer.
  • Partitionnement (dans l'installeur de la VM) : utilisez LVM, qui permet d'agrandir facilement les volumes plus tard.

Configuration réseau dans la VM

Une fois la VM installée, configurez son réseau sur le pont privé. Exemple pour la VM 104, dans /etc/network/interfaces de la VM :

auto lo
iface lo inet loopback

allow-hotplug ens18
iface ens18 inet static
    address 10.0.0.104/24
    gateway 10.0.0.1          # l'adresse de l'hôte sur vmbr1

Le DNS se configure dans /etc/resolv.conf de la VM (ou via son gestionnaire réseau).

QEMU Guest Agent

Installez l'agent invité dans chaque VM : il permet à Proxmox d'arrêter proprement la VM, de connaître son adresse IP, et surtout de geler le système de fichiers au moment des sauvegardes, pour une image cohérente.

apt install -y qemu-guest-agent
systemctl enable --now qemu-guest-agent

Puis, dans Proxmox : VM > Options > QEMU Guest Agent > Enabled.

Le pare-feu Proxmox

Proxmox intègre un pare-feu à trois niveaux : Datacenter (tout le cluster), Node (l'hôte) et VM. Une règle n'est active que si le pare-feu est activé au niveau concerné.

Le service pare-feu doit tourner

Cocher les options dans l'interface ne suffit pas : le service doit être actif.

systemctl enable --now pve-firewall

Principe recommandé

  • Entrée (Input) : politique DROP par défaut (on bloque tout, on ouvre au cas par cas).
  • Sortie (Output) : politique ACCEPT (on contrôle ce qui entre, pas ce qui sort).

Ce réglage se fait dans Datacenter > Firewall > Options, puis au niveau du nœud.

Les Security Groups : à privilégier

Plutôt que de recopier les mêmes règles partout, définissez des Security Groups une fois au niveau Datacenter, puis attachez-les aux nœuds ou aux VM. Modifier le groupe met à jour toutes les machines qui l'utilisent. Exemples de groupes que l'on crée souvent :

  • un groupe "administration" : SSH et interface web, autorisés uniquement depuis la plage du VPN;
  • un groupe "web public" : ports 80 et 443 ouverts à tous, pour les VM exposées;
  • un groupe "ping" : ICMP autorisé pour le diagnostic.

Firewall de VM sur un pont privé : un piège

Activer le pare-feu Proxmox sur la carte réseau d'une VM du pont privé crée des interfaces intermédiaires (fwbr, fwln, fwpr) qui modifient le chemin réseau et peuvent couper l'accès Internet de la VM, malgré une configuration correcte. Sur les VM internes (vmbr1), je laisse le pare-feu de la carte désactivé : la protection est déjà assurée en amont (pare-feu de l'hébergeur, du Datacenter et du nœud, isolation du réseau privé). Je n'active le pare-feu de VM que sur les machines exposées (vmbr0).

Sauvegarder

Deux approches, complémentaires :

  • Sauvegardes intégrées (Datacenter > Backup) : Proxmox peut planifier des sauvegardes complètes des VM vers un stockage local ou distant (NFS...). Simple à mettre en place.
  • Proxmox Backup Server (PBS) : un serveur dédié qui offre des sauvegardes chiffrées, dédupliquées et incrémentales, avec une politique de rétention fine. C'est la solution recommandée dès qu'on a plusieurs VM : seuls les blocs modifiés sont transférés, et l'historique tient dans peu d'espace.

Dans les deux cas, le QEMU Guest Agent (voir plus haut) garantit des sauvegardes cohérentes. Et quelle que soit la méthode, appliquez la règle 3-2-1 : au moins 3 copies, sur 2 supports, dont 1 hors site.

Une sauvegarde se teste

Une sauvegarde jamais restaurée n'est pas une sauvegarde. Testez une restauration au moins une fois (sur une VM jetable), et notez la procédure, en particulier pour les sauvegardes chiffrées : sans la clé de chiffrement, elles sont irrécupérables. Sauvegardez cette clé séparément.

Mettre à jour

full-upgrade, jamais upgrade

Sur Proxmox, utilisez toujours apt full-upgrade (ou apt dist-upgrade), jamais apt upgrade. Proxmox a besoin de gérer les changements de dépendances entre ses paquets, ce que apt upgrade ne fait pas : un simple upgrade peut laisser le système dans un état incohérent.

Mise à jour courante (routine mensuelle, et sans attendre en cas de faille critique) :

apt update
apt full-upgrade
pveversion -v        # vérifier les versions après coup

Redémarrez si le noyau a été mis à jour, puis vérifiez que les VM redémarrent et que le pare-feu est actif (systemctl status pve-firewall).

Avant toute mise à jour : vérifiez que les sauvegardes récentes des VM sont en succès, et planifiez une fenêtre d'intervention (un redémarrage de l'hôte arrête toutes les VM).

Montée de version majeure (ex. 8 vers 9) : suivez impérativement le guide officiel de migration. Proxmox fournit un outil de vérification (pve8to9) qui signale les points bloquants avant de se lancer. Sauvegarde complète obligatoire au préalable.

Diagnostic

pveversion -v                    # versions de Proxmox et du noyau
qm list                          # lister les VM et leur état
qm config 104                    # configuration de la VM 104
qm start 104 / qm stop 104       # démarrer / arrêter une VM
systemctl status pve-firewall    # état du pare-feu
systemctl status pvedaemon       # service principal de Proxmox
journalctl -u pvedaemon -n 50    # journaux du service

Problèmes fréquents :

  • apt update renvoie 401 : le dépôt enterprise est encore actif (voir l'encadré sur les dépôts).
  • Une VM de vmbr1 n'a plus d'accès Internet : vérifiez d'abord que le pare-feu Proxmox n'a pas été activé sur sa carte réseau, puis le NAT (iptables -t nat -L POSTROUTING) et net.ipv4.ip_forward.
  • Une VM ne s'arrête pas proprement : le QEMU Guest Agent est absent ou désactivé dans les options.

Références