Proxmox VE — Machines Virtuelles et Conteneurs¶
Proxmox VE (Virtual Environment) est une plateforme de virtualisation open source basée sur Debian. Elle combine deux technologies : les machines virtuelles QEMU/KVM (commande qm) et les conteneurs LXC (commande pct).
Synonymes et formulations courantes : démarrer une VM Proxmox, lancer une machine virtuelle, créer une VM, supprimer une VM, snapshot VM, backup VM, restaurer sauvegarde, agrandir disque, migrer une VM, démarrer un conteneur, console LXC, modifier IP LXC, reboot conteneur, snapshot LXC, backup conteneur.
VM, LXC, Docker — Quand utiliser quoi ?¶
| Critère | VM (QEMU/KVM) | LXC | Docker |
|---|---|---|---|
| Isolation | Totale — noyau dédié | Noyau partagé avec l'hôte | Noyau partagé avec l'hôte |
| Performance | Légère perte (~5%) | Quasi-native | Quasi-native |
| Ressources | Moyennes | Très faibles | Très faibles |
| OS complet | Oui | Oui | Non |
| Cas d'usage | Windows, OS non-Linux, isolation forte | Services Linux, microservices système | Applications conteneurisées |
| Commande Proxmox | qm |
pct |
— |
Machines Virtuelles QEMU/KVM — qm¶
Sur Proxmox VE, les machines virtuelles se gèrent via la commande qm (Qemu Manager). Les commandes s'exécutent sur l'hôte Proxmox en SSH ou en shell local.
a. Liste et Informations¶
-
Lister toutes les VMs :
qm list -
Afficher l'état d'une VM :
qm status <VMID> -
Voir la configuration complète d'une VM :
qm config <VMID> -
Voir les ressources consommées en temps réel :
qm monitor <VMID>
b. Gestion de l'État des Machines Virtuelles¶
-
Démarrer une VM (lancer, allumer, booter) :
qm start <VMID> -
Arrêter une VM proprement (guest shutdown via ACPI) :
qm shutdown <VMID> -
Arrêter une VM brutalement (coupure secteur) :
qm stop <VMID> -
Redémarrer une VM (reboot) :
qm reboot <VMID> -
Réinitialiser une VM (reset matériel) :
qm reset <VMID> -
Suspendre une VM (RAM sur disque) :
qm suspend <VMID> -
Reprendre une VM suspendue :
qm resume <VMID> -
Déverrouiller une VM bloquée :
qm unlock <VMID>
c. Configuration¶
-
Modifier une propriété de VM :
qm set <VMID> --memory 4096 # RAM en Mo qm set <VMID> --cores 4 # Nombre de CPU qm set <VMID> --onboot 1 # Démarrage automatique au boot Proxmox -
Éditer la configuration brute :
nano /etc/pve/qemu-server/<VMID>.conf -
Agrandir un disque :
qm resize <VMID> scsi0 +20G -
Accès console VM (terminal série) :
qm terminal <VMID>
💡 Pour quitter le terminal série :
Ctrl+O.
d. Snapshots VM¶
-
Créer un snapshot :
qm snapshot <VMID> <nom-snapshot> --description "Description" -
Lister les snapshots :
qm listsnapshot <VMID> -
Restaurer un snapshot :
qm rollback <VMID> <nom-snapshot> -
Supprimer un snapshot :
qm delsnapshot <VMID> <nom-snapshot>
e. Clonage et Migration¶
-
Cloner une VM (clone lié) :
qm clone <VMID-SOURCE> <VMID-DEST> --name <nom> -
Cloner une VM (clone complet, indépendant) :
qm clone <VMID-SOURCE> <VMID-DEST> --name <nom> --full -
Migrer une VM vers un autre nœud Proxmox :
qm migrate <VMID> <nœud-destination> --online
💡
--onlineeffectue une migration à chaud (live migration) sans arrêter la VM.
f. Création et Suppression¶
-
Créer une VM (configuration minimale) :
qm create <VMID> \ --name <nom-vm> \ --memory 2048 \ --cores 2 \ --net0 virtio,bridge=vmbr0 \ --scsi0 local-lvm:32 -
Supprimer une VM (et ses disques) :
qm destroy <VMID> -
Supprimer une VM en conservant les disques :
qm destroy <VMID> --purge 0
g. Sauvegarde et Restauration VM¶
-
Sauvegarder une VM (backup vzdump) :
vzdump <VMID> --storage <storage> --mode snapshot -
Restaurer une sauvegarde VM :
qmrestore /var/lib/vz/dump/vzdump-qemu-<VMID>-*.vma.zst <NEW-VMID> --storage local-lvm
h. Agent QEMU¶
L'agent QEMU (qemu-guest-agent) doit être installé dans la VM pour que ces commandes fonctionnent.
-
Vérifier que l'agent répond :
qm agent <VMID> ping -
Obtenir les IPs de la VM :
qm agent <VMID> network-get-interfaces -
Exécuter une commande dans la VM via l'agent :
qm agent <VMID> exec -- bash -c "uptime"
i. Cheatsheet VM (qm)¶
| Action | Commande |
|---|---|
| Lister les VMs | qm list |
| État | qm status <VMID> |
| Démarrer | qm start <VMID> |
| Arrêt propre | qm shutdown <VMID> |
| Arrêt brutal | qm stop <VMID> |
| Redémarrer | qm reboot <VMID> |
| Suspendre / Reprendre | qm suspend <VMID> / qm resume <VMID> |
| Déverrouiller | qm unlock <VMID> |
| Voir la config | qm config <VMID> |
| Modifier une propriété | qm set <VMID> --<option> <valeur> |
| Agrandir un disque | qm resize <VMID> scsi0 +<taille>G |
| Créer un snapshot | qm snapshot <VMID> <nom> |
| Restaurer un snapshot | qm rollback <VMID> <nom> |
| Cloner (complet) | qm clone <SRC> <DEST> --name <nom> --full |
| Migrer à chaud | qm migrate <VMID> <nœud> --online |
| Créer une VM | qm create <VMID> --name <nom> ... |
| Supprimer une VM | qm destroy <VMID> |
| Backup | vzdump <VMID> --storage <storage> --mode snapshot |
| IPs via guest agent | qm agent <VMID> network-get-interfaces |
Conteneurs LXC — pct¶
LXC (Linux Containers) est la technologie de conteneurisation au niveau OS intégrée dans Proxmox VE. Contrairement à Docker (isolation applicative), LXC émule un système Linux complet avec son propre init, ses services et ses utilisateurs.
Proxmox VE intègre LXC nativement via la commande pct. Chaque conteneur dispose de son propre filesystem (volume LVM ou ZFS), réseau et configuration.
Commandes essentielles¶
# Lister les conteneurs
pct list
# Démarrer / Arrêter / Redémarrer
pct start <CTID>
pct stop <CTID>
pct restart <CTID>
# Entrer dans un conteneur (console)
pct enter <CTID>
# Exécuter une commande sans entrer
pct exec <CTID> -- bash -c "commande"
# Copier un fichier vers le CT
pct push <CTID> /chemin/local /chemin/ct
# Copier un fichier depuis le CT
pct pull <CTID> /chemin/ct /chemin/local
Configuration¶
# Voir la config d'un CT
pct config <CTID>
# Modifier la RAM
pct set <CTID> --memory 1024
# Modifier le nombre de CPU
pct set <CTID> --cores 2
# Limiter l'usage CPU (en %)
pct set <CTID> --cpulimit 1.5
# Configurer l'interface réseau (modifier l'IP)
pct set <CTID> --net0 name=eth0,bridge=vmbr0,ip=192.168.1.50/24,gw=192.168.1.1
# Ajouter un disque données
pct set <CTID> --mp0 local-lvm:20,mp=/srv/data
# Activer le démarrage automatique
pct set <CTID> --onboot 1
Snapshots LXC¶
# Créer un snapshot
pct snapshot <CTID> nom-du-snapshot --description "Description"
# Lister les snapshots
pct listsnapshot <CTID>
# Restaurer un snapshot
pct rollback <CTID> nom-du-snapshot
# Supprimer un snapshot
pct delsnapshot <CTID> nom-du-snapshot
Accès au système de fichiers depuis l'hôte¶
# Monter le filesystem du CT sur l'hôte (CT doit être arrêté)
pct mount <CTID>
# Les fichiers sont accessibles dans /var/lib/lxc/<CTID>/rootfs/
# Démonter
pct umount <CTID>
Sauvegarde et restauration LXC¶
# Sauvegarder un CT (CT peut rester actif)
vzdump <CTID> --storage <storage> --mode snapshot
# Restaurer une sauvegarde
pct restore <CTID> /var/lib/vz/dump/vzdump-lxc-<CTID>-*.tar.zst --storage local-lvm
Conteneurs privilégiés vs non privilégiés¶
| Type | UID dans le CT | UID sur l'hôte | Sécurité |
|---|---|---|---|
| Privilégié | root (0) | root (0) | Faible |
| Non privilégié | root (0) | 100000+ | Élevée |
Les conteneurs non privilégiés (--unprivileged 1) sont recommandés pour tous les services exposés.
Bonnes pratiques LXC¶
- Toujours utiliser des conteneurs non privilégiés pour les services réseau
- Utiliser un disque LVM dédié pour les données persistantes (séparé du rootfs)
- Activer
--onboot 1pour le démarrage automatique - Utiliser
pct snapshotavant toute mise à jour critique - Centraliser les scripts de déploiement dans un repo Git versionné
Exposer un service vers l'extérieur (NAT)¶
Rediriger un port externe de l'hôte Proxmox vers un port interne d'un conteneur :
iptables -t nat -A PREROUTING -p tcp --dport <PORT_EXTERNE> -j DNAT --to-destination <IP_CT>:<PORT_INTERNE>
iptables -I FORWARD -p tcp -d <IP_CT> --dport <PORT_INTERNE> -j ACCEPT
iptables-save > /etc/iptables.rules
Pour que ces règles survivent à un redémarrage, utiliser un hook réseau (/etc/network/if-pre-up.d/) qui exécute iptables-restore < /etc/iptables.rules.
Pour centraliser tous les domaines et le TLS plutôt que de gérer un NAT par service, voir le guide Caddy.
Conventions internes au conteneur¶
| Convention | Pourquoi |
|---|---|
| Un utilisateur système dédié par service | Le service ne tourne jamais en root |
Un service systemd avec Restart=always |
Redémarrage automatique après crash |
Sauvegarde dans /backups/<service>/ sur l'hôte |
Protège contre la perte du conteneur lui-même |
Guides d'installation LXC par service¶
Guides détaillés (création du conteneur, configuration, mise à jour) pour chaque service déployé en LXC :
- Caddy — Reverse proxy avec TLS automatique
- FileBrowser — Gestionnaire de fichiers web
- GitLab Runner — CI/CD
- PrivateBin — Partage de texte chiffré
- Teleport — Accès SSH sécurisé
- Vaultwarden — Gestionnaire de mots de passe
- Wiki — Ce wiki MkDocs Material