Désactiver le préchargeur
Tutoriels Linux Panneaux de contrôle

Installer Virtualmin sur Linux (Ubuntu, Debian, AlmaLinux)

Documentation / Tutoriels Linux / Panneaux de contrôle / Installer Virtualmin sur Linux (Ubuntu, Debian, AlmaLinux)
Mis à jour le 19/09/2026
27 vues
Intermédiaire
40 minutes

Prérequis

  • Un serveur sous Ubuntu 24.04, Debian 13, AlmaLinux 9 ou Rocky Linux 9 : voir nos VPS au Canada
  • Une connexion SSH ouverte en root : Se connecter en SSH à votre VPS
  • Un serveur vierge, sans serveur web, base de données ni serveur de courriel déjà installés
  • 4 Go de RAM et 10 Go d'espace disque libre
  • Un nom d'hôte complet pour le serveur, comme serveur.exemple.ca, qui n'est pas un domaine que vous hébergerez dessus
  • L'adresse IP publique de votre poste, pour lui réserver l'accès au panneau
Votre serveur :

Virtualmin est un panneau d'hébergement libre bâti sur Webmin : depuis un navigateur, il crée des domaines avec leur site Apache, leur base de données, leur courriel et leur zone DNS. Ce guide l'installe, ouvre le panneau, le réserve à votre adresse, et crée un premier domaine. Choisissez votre système ci-dessus. Copiez la commande avec le bouton Copier, collez-la dans votre terminal, et comparez avec le résultat attendu.

1Mettre à jour le système

Mettre à jour le système
apt update && apt upgrade -y
Résultat attendu
...
225 upgraded, 8 newly installed, 0 to remove and 4 not upgraded.
(les nombres dépendent de l'âge de l'image)
Mettre à jour le système
dnf upgrade -y
Résultat attendu
...
Complete!

2Lancer l'installateur

L'installateur reçoit tout en options et travaille seul pendant une quinzaine de minutes, en quatre phases. Il retire ufw et firewalld s'ils sont là, et pose son propre pare-feu.

Télécharger et lancer l'installateur officiel
sh -c "$(curl -fsSL https://download.virtualmin.com/virtualmin-install)" -- --bundle LAMP --hostname serveur.exemple.ca --yes
Résultat attendu
▣◻◻◻ Phase 1 of 4: Check
...
▣▣◻◻ Phase 2 of 4: Setup
...
▣▣▣◻ Phase 3 of 4: Installation
...
▣▣▣▣ Phase 4 of 4: Configuration
...
▣▣▣ Cleaning up

[SUCCESS] Installation Complete!
[SUCCESS] If there were no errors above, Virtualmin is ready to be configured
[SUCCESS] at https://serveur.exemple.ca:10000 (or
[SUCCESS] https://203.0.113.42:10000).
[WARNING] You will see a security warning in the browser on your first visit.
[INFO] Extra Webmin modules are now provided as separate packages:
[INFO] https://www.virtualmin.com/webmin-modules
(entre 9 et 17 minutes selon le système)
--bundle LAMP
Apache. Mettez LEMP pour nginx ; le choix ne se change plus après.
--hostname serveur.exemple.ca
Le nom d'hôte complet du serveur. Pas un domaine que vous hébergerez dessus.
--yes
Aucune question.

3Ouvrir le panneau

Vérifier que le panneau répond
curl -sk -o /dev/null -w '%{http_code}\n' https://127.0.0.1:10000/
Résultat attendu
200
  1. Ouvrez https://203.0.113.42:10000 dans votre navigateur, avec l'adresse IP de votre serveur, en https, et le port.
  2. Le navigateur avertit que le certificat n'est pas reconnu : Virtualmin en a créé un lui-même pour le nom d'hôte. Cliquez sur Avancé, puis Continuer vers le site.
  3. Identifiant root, avec le mot de passe root de votre serveur. Un utilisateur qui a sudo peut aussi se connecter avec le sien.

4Réserver le panneau à votre adresse

Tout Internet peut ouvrir votre panneau

Le pare-feu posé par l'installation ouvre les ports 10000 (Webmin, l'administration) et 20000 (Usermin, l'interface des utilisateurs) à toutes les adresses : ils répondent à n'importe qui sur Internet, avec pour seule barrière le mot de passe root.

Les règles sont dans /etc/webmin/nftables/rules.conf. La suite retire ces ports du jeu ouvert à tous, les réserve à une seule adresse, puis recharge le pare-feu. Remplacez 198.51.100.7 par l'adresse IP publique de votre poste.

Voir le jeu de ports ouvert à tous
grep -E 'elements = \{ 20|tcp dport' /etc/webmin/nftables/rules.conf
Résultat attendu
		elements = { 20, 21, 22, 25, 53, 80, 110, 143, 443, 465, 587, 853, 993, 995, 2222, 10000-10100, 20000, 49152-65535 }
		tcp dport @profile_hosting_tcp_ports accept
Réserver Webmin et Usermin à votre adresse
sed -i 's/, 10000-10100, 20000//' /etc/webmin/nftables/rules.conf
sed -i '/tcp dport @profile_hosting_tcp_ports accept/i ip saddr 198.51.100.7 tcp dport { 10000-10100, 20000 } accept' /etc/webmin/nftables/rules.conf
/etc/webmin/nftables/apply-boot.pl
Vérifier le résultat
nft list table inet profile_hosting | grep -E 'elements = \{ 20|tcp dport'
Résultat attendu
		elements = { 20, 21, 22, 25, 53,
		ip saddr 198.51.100.7 tcp dport { 10000-10100, 20000 } accept
		tcp dport @profile_hosting_tcp_ports accept

Vos sites, votre courriel et SSH ne sont pas touchés. Depuis votre adresse, le panneau répond ; depuis n'importe quelle autre, il ne répond plus. Le pare-feu est rechargé à chaque démarrage à partir de ce fichier.

Vérifier depuis une autre machine que le panneau ne répond plus
curl -sk -o /dev/null -w '%{http_code}\n' --max-time 10 https://203.0.113.42:10000/
Résultat attendu
000
(000 veut dire aucune réponse : c'est le résultat attendu depuis une adresse qui n'est pas la vôtre)

5Créer un premier domaine

Dans le panneau, c'est Create Virtual Server. La même chose en une commande, avec votre domaine ; le mot de passe est celui de l'utilisateur système du domaine :

Lire le mot de passe du domaine, puis le créer
read -s -p 'Mot de passe du domaine : ' MDP; echo
virtualmin create-domain --domain monsite.exemple.ca --pass "$MDP" --default-features
Résultat attendu
...
Re-loading Webmin ..
.. done
Re-starting Usermin ..
.. done
Restarting mail server ..
.. done
All done!
Voir les domaines
virtualmin list-domains
Résultat attendu
Domain                         Username        Description                   
------------------------------ --------------- ------------------------------
monsite.exemple.ca             monsite         monsite.exemple.ca            
Ce qui a été créé sur le disque
stat -c '%n %U:%G %A' /home/monsite/public_html; ls /home/monsite/public_html
Résultat attendu
/home/monsite/public_html  monsite:monsite  drwxr-x---
awstats-icon
awstatsicons
icon
index.html

Vos fichiers vont dans ce dossier.

Vérifier que le site répond, sans attendre le DNS
curl -s -o /dev/null -w '%{http_code}\n' -H 'Host: monsite.exemple.ca' http://203.0.113.42/
Résultat attendu
200

6Les commandes du quotidien

Les domaines hébergés
virtualmin list-domains
Créer un domaine
virtualmin create-domain --domain monsite.exemple.ca --pass 'MotDePasse' --default-features
Supprimer un domaine, avec ses fichiers
virtualmin delete-domain --domain monsite.exemple.ca
Vérifier que tous les services du panneau sont en ordre
virtualmin check-config
Changer le mot de passe root, donc celui du panneau
passwd root
L'état du panneau
systemctl status webmin
Redémarrer le panneau
systemctl restart webmin
Les règles du pare-feu posé par Virtualmin
nft list table inet profile_hosting
Les ports en écoute
ss -ltn
Voir les ports en écoute
ss -ltn | awk 'NR>1{print $4}' | sed 's/.*://' | sort -n -u | tr '\n' ' '
Résultat attendu
21 22 25 53 80 110 143 443 465 587 953 993 995 2222 3306 8461 8891 10000 10023 11000 20000
(Debian ajoute 5355 : un service du système)
Voir les ports en écoute
ss -ltn | awk 'NR>1{print $4}' | sed 's/.*://' | sort -n -u | tr '\n' ' '
Résultat attendu
21 22 25 53 80 110 143 443 465 587 953 993 995 2222 3306 8891 10000 11000 20000
(Rocky ajoute 111 : un service du système)

La base de données (3306) et les services internes sont dans cette liste mais ne répondent pas depuis l'extérieur : le pare-feu ne les ouvre pas.

Sur AlmaLinux et Rocky, l'installateur a désactivé SELinux.

Erreurs fréquentes

Virtualmin en service

Le panneau répond sur le port 10000, réservé à votre adresse, et votre premier domaine est servi. Pour un panneau plus léger sans courriel, voyez Installer CloudPanel ; pour Webmin seul, Installer Webmin.

💬 Écrivez-nous sur Messenger !