Ce guide regroupe les commandes essentielles pour administrer nos machines virtuelles en ligne de commande (CLI) via SSH, en remplacement de virt-manager.
Si le serveur Debian hôte est installé sans environnement de bureau (sans KDE/Gnome), voici les paquets requis pour faire fonctionner le moteur de virtualisation et les outils CLI :
sudo apt update sudo apt install qemu-system-x86 libvirt-daemon-system libvirt-clients virtinst
* libvirt-clients : Fournit la commande virsh.
* virtinst : Fournit la commande virt-install (création) et virt-clone (clonage).
Pour afficher toutes les VM (y compris celles qui sont éteintes), l'option –all est indispensable.
sudo virsh list --all
Affiche les informations générales (Statut, CPU, Mémoire allouée).
sudo virsh dominfo <nom_de_la_vm>
Permet de trouver l'IP attribuée par le serveur DHCP interne de libvirt ou détectée sur l'hôte.
sudo virsh domifaddr <nom_de_la_vm>
sudo virsh start <nom_de_la_vm>
Envoie un signal ACPI à l'OS invité pour un arrêt propre (comme un clic sur “Éteindre”).
sudo virsh shutdown <nom_de_la_vm>
Équivalent à débrancher la prise électrique. À n'utiliser que si la VM est totalement plantée.
sudo virsh destroy <nom_de_la_vm>
Pour que la VM s'allume toute seule au boot du serveur Debian hôte.
sudo virsh autostart <nom_de_la_vm>
Pour désactiver : ajouter l'option –disable à la fin de la commande.
sudo virsh dumpxml <nom_de_la_vm>
Utile pour faire une sauvegarde textuelle avant modification.
sudo virsh dumpxml <nom_de_la_vm> > backup_<nom_de_la_vm>.xml
Ouvre la configuration de la VM dans l'éditeur de texte par défaut du système (souvent Nano ou Vim). La VM doit être redémarrée pour appliquer les changements.
sudo virsh edit <nom_de_la_vm>
| Type | Commande | Note |
|---|
| RAM | sudo virsh setmaxmem <nom> 4194304 –config sudo virsh setmem <nom> 4194304 –config | VM éteinte obligatoirement (Exprimé en Kibibytes, ici 4 Go) |
| CPU | sudo virsh setvcpus <nom> 4 –maximum –config sudo virsh setvcpus <nom> 4 –config | VM éteinte obligatoirement |
1. Trouver le chemin du fichier de disque :
sudo virsh domblklist <nom_de_la_vm>
2. Éteindre la VM, puis ajouter l'espace (ex: +20 Go) sur l'hôte :
sudo qemu-img resize /chemin/vers/image.qcow2 +20G
3. Rallumer la VM et étendre la partition à l'intérieur du système invité.
sudo virsh domblklist <nom_de_la_vm> --details
sudo virsh domiflist <nom_de_la_vm>
Cette commande instancie la VM, crée son disque dur au format QCOW2 et boot sur l'ISO.
sudo virt-install \ --name "ma-nouvelle-vm" \ --memory 2048 \ --vcpus 2 \ --os-variant debian12 \ --disk size=20,format=qcow2,pool=default \ --network network=default \ --cdrom /var/lib/libvirt/images/debian-12-installer.iso \ --graphics vnc,listen=0.0.0.0 \ --noautoconsole
Note pour le réseau : Remplacer network=default par network=routeur_nat si vous souhaitez la lier à votre routeur virtuel.
Permet de créer une copie conforme d'une VM existante (comme un modèle) vers une nouvelle instance, en générant de nouvelles adresses MAC et de nouveaux disques pour éviter les conflits. La VM source doit être éteinte.
sudo virt-clone --original ynh_modèle --name nouvelle-instance.fr --auto-copy
Les snapshots nécessitent que les disques des VM soient au format QCOW2. Idéal avant une mise à jour critique de YunoHost.
sudo virsh snapshot-create-as <nom_de_la_vm> nom-du-snapshot "Ma description ici"
Astuce : Ajoutez l'option –live si la VM est allumée et que vous voulez aussi figer l'état exact de la RAM.
sudo virsh snapshot-list <nom_de_la_vm>
Il est recommandé d'éteindre la VM avant la restauration.
sudo virsh snapshot-revert <nom_de_la_vm> nom-du-snapshot
À faire une fois la mise à jour validée pour libérer de l'espace disque et conserver de bonnes performances.
sudo virsh snapshot-delete <nom_de_la_vm> nom-du-snapshot
Le port VNC de l'hôte n'étant pas accessible directement depuis l'extérieur pour des raisons de sécurité, il faut faire passer le flux graphique à l'intérieur d'un tunnel SSH chiffré.
Sur le serveur distant, vérifiez le numéro d'affichage ou le port de la VM en cours d'exécution :
sudo virsh vncdisplay ma-nouvelle-vm
* Si le résultat est :0, le port réel est 5900.
* Si le résultat est :1, le port réel est 5901, etc.
Ouvrez un nouveau terminal sur votre PC local (pas sur le serveur distant) et exécutez la commande suivante :
ssh -L 5900:127.0.0.1:5900 utilisateur@adresse_ip_du_serveur
Note : Si à l'étape 1 la VM affichait “:1”, remplacez le port de destination par 5901 (ex: 5900:127.0.0.1:5901).
Laissez ce terminal ouvert, c'est lui qui maintient le pont sécurisé.
1. Ouvrez votre logiciel VNC local (Remmina, TigerVNC, Vinagre, etc.).
2. Dans le champ d'adresse, connectez-vous sur : 127.0.0.1:5900
3. L'écran graphique de l'installateur ou du bureau Debian de la VM distante s'affiche.