Aller au contenu

Installation de Proxmox

Mise à jour :

Logo Proxmox

La virtualisation est au cœur des environnements modernes, offrant flexibilité et efficacité dans la gestion des ressources. Parmi les solutions disponibles, Proxmox se distingue par sa puissance et sa simplicité. Que ce soit pour des besoins professionnels ou pour votre Homelab, installer Proxmox sur une base Debian 12 est un excellent choix pour créer un environnement robuste et évolutif.

Prérequis

Avant de plonger dans l’installation de Proxmox, il est important de s’assurer que votre système répond à certains prérequis. Ces prérequis sont essentiels pour garantir une expérience fluide et sans encombre tout au long du processus d’installation et d’utilisation.

Assurez-vous que votre machine dispose d’un CPU avec 8 cœurs au minimum, d’au moins 16 Go de RAM et de suffisamment d’espace disque (100 Go minimum recommandé). La virtualisation demande des ressources, et une machine puissante garantira de meilleures performances.

Mise au point du Script d’Installation de Proxmox

Je vais détailler comment je m’y suis pris pour installer Proxmox sur une distribution Debian existante. Je me suis basé sur la documentation officielle.

Mise au point de l’installation

Connectez-vous à votre machine sous Debian 12 via SSH par exemple.

Une fois connecté, il est conseillé de modifier le fichier /etc/hosts. Exécutez les commandes suivantes pour mettre à jour votre système :

Terminal window
cat > /etc/hosts << EOF
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.3.10 proxmox.robert.local proxmox
EOF

Il faut aussi modifier certaines valeurs des paramètres du kernel :

Terminal window
cat > /etc/sysctl.d/proxmox.conf << EOF
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.ip_forward=1
EOF

Et on les applique :

Terminal window
sysctl -p /etc/sysctl.d/proxmox.conf

J’ai choisi le mode bridge pour permettre aux machines virtuelles d’être directement accessibles sur le réseau local, comme n’importe quel autre appareil, offrant ainsi une meilleure intégration et une plus grande flexibilité pour mes tests et l’administration. Plus d’infos sur bridge ou NAT.

Pour éviter de laisser faire Proxmox, je vais créer un bridge vmbr0 :

Terminal window
cat > /etc/network/interfaces << EOF
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
dns-nameserver 4.2.2.1
dns-nameserver 4.2.2.2
dns-nameserver 208.67.220.220
pre-up sleep 2
iface eth1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.3.10/24
bridge-ports eth1
bridge-stp off
bridge-fd 0
EOF

On peut ensuite ajouter le dépôt Proxmox à la liste de sources APT. Exécutez les commandes suivantes :

Terminal window
echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg

Ces commandes ajoutent le dépôt Proxmox et importent la clé GPG pour garantir l’authenticité des paquets.

Avec le dépôt en place, nous allons mettre à jour le système :

Terminal window
apt update -y && apt full-upgrade -y

On peut installer enfin Proxmox :

Terminal window
apt install -y proxmox-ve ksm-control-daemon locales-all chrony libguestfs-tools

J’installe quelques packages supplémentaires à ceux recommandés. Par exemple ksm-control-daemon installe KSM (Kernel Samepage Merging) qui permet de combiner plusieurs pages de mémoire identiques en une seule page, pour économiser de la mémoire.

Le package libguestfs-tools installe un ensemble d’outils pour créer, accéder et modifier des images de disque virtuel. Ces outils vont nous servir à manipuler les systèmes de fichiers et les configurations des templates de machines virtuelles Proxmox.

On nettoie le système :

Terminal window
apt remove linux-image-amd64 'linux-image-6.1*' os-prober -y

On reboot pour terminer :

Terminal window
reboot

Au bout de quelques secondes, vous devriez pouvoir accéder à Proxmox de nouveau.

Accès à l’Interface Web

Une fois la VM redémarrée, vous pouvez accéder à l’interface web de Proxmox en ouvrant un navigateur et en saisissant l’adresse IP de la VM suivie de :8006. Par exemple, https://192.168.3.10:8006.

Terminal window
curl -v -k -L https://192.168.3.10:8006
...
<script type="text/javascript" src="/proxmoxlib.js?ver=v4.1.3-t1700730770"></script>
<script type="text/javascript" src="/pve2/js/pvemanagerlib.js?ver=8.1.3"></script>
<script type="text/javascript" src="/pve2/ext6/locale/locale-en.js?ver=7.0.0"></script>
<script type="text/javascript">
if (typeof(PVE) === 'undefined') PVE = {};
Ext.History.fieldid = 'x-history-field';
Ext.onReady(function() { Ext.create('PVE.StdWorkspace');});
</script>
</head>
<body>
<!-- Fields required for history management -->
<form id="history-form" class="x-hidden">
<input type="hidden" id="x-history-field"/>
</form>
</body>
</html>
* Connection #0 to host 192.168.3.10 left intact

Le script définitif

Pour éviter de répéter ces tâches à chaque fois que vous voudrez faire cette installation, voici un script complet (enfin presque, il manque la copie du certificat) :

Terminal window
!#/usr/bin/env bash
export DEBIAN_FRONTEND=noninteractive
cat > /etc/hosts << EOF
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.3.10 devbox1
EOF
cat > /etc/sysctl.d/proxmox.conf << EOF
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.ip_forward=1
EOF
cat > /etc/network/interfaces << EOF
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
dns-nameserver 4.2.2.1
dns-nameserver 4.2.2.2
dns-nameserver 208.67.220.220
pre-up sleep 2
iface eth1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.3.10/24
bridge-ports eth1
bridge-stp off
bridge-fd 0
EOF
echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
apt update -y && apt full-upgrade -y
apt install -y proxmox-ve ksm-control-daemon locales-all chrony libguestfs-tools
rm -f /etc/apt/sources.list.d/pve-install-repo.list
sysctl -p /etc/sysctl.d/proxmox.conf
apt remove linux-image-amd64 'linux-image-6.1*' os-prober -y

Connexion Sécurisée à Proxmox

Ça fonctionne, mais il faut installer un certificat pour que la connexion en https fonctionne, indispensable pour utiliser terraform.

Génération et installation d’un certificat auto-signé

Comme à mon habitude, je vais utiliser mkcert que j’ai documenté ici. Important, réalisez toutes les opérations décrites dans ce guide, car il faut ajouter le certificat racine sur votre machine !

Terminal window
mkcert 'proxmox.robert.local' localhost 127.0.0.1 ::1
Created a new certificate valid for the following names
- "proxmox.robert.local"
- "localhost"
- "127.0.0.1"
- "::1"
The certificate is at "./proxmox.robert.local+3.pem" and the key at "./proxmox.robert.local+3-key.pem"
It will expire on 27 March 2026 🗓

Nous allons les transférer dans la configuration de Proxmox :

Terminal window
scp proxmox.robert.local+3.pem root@192.168.3.10:/etc/pve/nodes/devbox1/pveproxy-ssl.pem
scp proxmox.robert.local-key.pem root@192.168.3.10:/etc/pve/nodes/devbox1/pveproxy-ssl.key

On se connecte à la box Vagrant et on redémarre le service :

Terminal window
vagrant ssh
sudo systemctl restart pveproxy.service

Déconnectez-vous et on reteste sans l’option -k de curl qui bypass le contrôle de connexion sécurisée :

Terminal window
curl -v -L https://proxmox.robert.local:8006
...
</head>
<body>
<!-- Fields required for history management -->
<form id="history-form" class="x-hidden">
<input type="hidden" id="x-history-field"/>
</form>
</body>
</html>
* Connection #0 to host proxmox.robert.local left intact

Nickel Chrome

Configuration SSH pour se Connecter à Proxmox

Pour pouvoir utiliser Terraform pour provisionner des ressources, il faut autoriser la connexion ssh avec le compte root. Pour cela, il faut éditer le fichier de configuration et mettre la valeur PermitRootLogin yes :

Terminal window
vagrant ssh
sudo vi /etc/ssh/sshd_config

Déconnectez-vous et éditez le fichier de configuration du client ssh :

Terminal window
vi ~/.ssh/config

Ajoutez cette ligne :

Terminal window
Host proxmox.robert.local
User root

Idem, ajoutez cette ligne dans votre fichier /etc/hosts :

Terminal window
192.168.3.10 proxmox.robert.local

On teste :

Terminal window
ssh proxmox.robert.local
You have new mail.
Last login: Tue Dec 26 13:06:48 2023 from 192.168.3.1
root@proxmox:~# ...

Conclusion

Avec les étapes que nous avons suivies, votre environnement Proxmox 8 est désormais opérationnel sur une machine tournant sous Debian 12. Cette configuration vous ouvre la porte à une multitude de possibilités dans le domaine de la virtualisation et de la gestion des conteneurs.

Un des avantages de cette installation est la possibilité d’utiliser Terraform pour instancier et gérer des ressources sur Proxmox. Terraform, un outil d’Infrastructure as Code (IaC), permet de déployer et de gérer l’infrastructure de manière automatisée et reproductible. Pour en savoir plus sur l’utilisation de Terraform avec Proxmox, je vous invite à consulter ce guide détaillé : Utiliser Terraform avec Proxmox.

De plus, nous explorerons ensuite l’utilisation de l’inventaire dynamique Ansible avec Proxmox. Ansible est un outil puissant pour l’automatisation de la configuration et la gestion de l’infrastructure et l’inventaire dynamique est un moyen efficace de gérer les ressources virtualisées de manière flexible et scalable.