Proxmox
Configuration de base
Changement des repository en “Free”
apt update
apt install sudo pve-headers pve-firmware
rm /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-no-subscription.list
wget http://download.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
tee -a /etc/apt/sources.list.d/pve-no-subscription.list >/dev/null <<'EOF'
deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription
EOF
Limitation du cache zfs ARC
sudo tee -a /etc/modprobe.d/zfs.conf >/dev/null <<'EOF'
options zfs zfs_arc_max=1073741824
EOF
sudo update-initramfs -u -k all
sudo reboot
Note
Voire la page Debian Pour le reste de la configuration
Warning
Ne pas désactiver root et mettre le même mdp sur les même noeud
Configuration de l'envoi de mail
sudo apt install libsasl2-modules -y
sudo sed -i 's/relayhost =/#relayhost =/g' /etc/postfix/main.cf
sudo tee -a /etc/postfix/main.cf >/dev/null <<'EOF'
relayhost = smtp.gmail.com:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/Entrust_Root_Certification_Authority.pem
EOF
sudo tee -a /etc/postfix/sasl_passwd >/dev/null <<'EOF'
smtp.gmail.com:587 pain.rime@gmail.com:achangéparlemdpgmail
EOF
sudo postmap hash:/etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd
sudo systemctl restart postfix
echo "Test email from Proxmox: $(hostname)" | sudo /usr/bin/proxmox-mail-forward
Pré-Configuration pour être dans un cluster
Obligatoire : Quand le node ne se connecte pas avec l'adresse IP du LAN
éditer l'adresse IP de ces fichiers :
/etc/network/interfaces
auto lo
iface lo inet loopback
iface eno1 inet manual
auto vmbr0
iface vmbr0 inet dhcp
bridge-ports eno1
bridge-stp off
bridge-fd 0
auto vmbr1
iface vmbr2 inet static
address 10.3.5.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.3.5.1/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.3.5.1/24' -o vmbr0 -j MASQUERADE
- On peut aussi configurer un Serveur DHCP
- On peut aussi interconnecter les hyperviseurs et les différent subnet avec Tailscale
Bien rajouter les nom des nodes dans le fichier host
/etc/hosts
127.0.0.1 localhost.localdomain localhost
100.84.104.5 coma.local coma
100.124.95.107 medusa.local medusa
100.73.208.70 virgo.local virgo
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Ne pas oublier de mettre a jour les certificat
Enfin pour rajouter le nœud au datacenter mieux vaut le faire en ligne de commande :
Configuration avancé
Installer snap dans un conteneur
Config sur l'hyperviseur
#préciser le nom du conteneur
sudo tee -a /etc/pve/lxc/nomduconteneur >/dev/null <<'EOF'
features: fuse=1,nesting=1
lxc.mount.entry: /dev/fuse dev/fuse none bind,create=file,optional
lxc.mount.auto: cgroup:rw
EOF
#dans le conteneur
sudo apt update && sudo apt upgrade -y
sudo mkdir /lib/modules
sudo apt install squashfuse fuse snapd
Ajouter mount point lc container
#add
pct set 205 -mp0 /soure(hyperviser),mp=destination(container)
#exemple
pct set 205 -mp0 /Slow-0/web-service,mp=/home/user/cloud/Services
#exemple avec backup
#penser a crée les dossier au préalable
#reboot
Ajouter un VPN dans un conteneur LXC
Agent pour machine virtuel sur debian
Sortir d'un noeud
En forcant à détruire la config
Les données de configuration des VM seront détruites
systemctl stop pve-cluster corosync
pmxcfs -l
rm -rf /etc/corosync/*
rm -rf /etc/pve/corosync.conf
rm /var/lib/corosync/*
rm -rf /etc/pve/nodes/*
rm /etc/pve/priv/authorized_keys
killall pmxcfs
systemctl start pve-cluster
reboot
Ou
systemctl stop pve-cluster
systemctl stop corosync
pmxcfs -l
rm /etc/pve/corosync.conf
rm -r /etc/corosync/*
killall pmxcfs
systemctl start pve-cluster
pvecm delnode oldnode
#si on ne peut toujour pas rejoindre le noeud
pvecm expected 1
rm /var/lib/corosync/*
Si le cluster est stable
renitialiser certificat
#Supprimer les anciens certificats :
rm /etc/pve/pve-root-ca.pem
rm /etc/pve/local/pve-ssl.key
rm /etc/pve/local/pve-ssl.pem
#Générez de nouveaux certificats CA et Proxmox :
#Pour CA
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -sha256 -days 365 -out ca.pem
#Pour Proxmox
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -in server.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server.pem -days 365 -sha256
#Renommez les certificats en proxmox :
mv ca.pem pve-root-ca.pem
mv server.key pve-ssl.key
mv server.pem pve-ssl.pem
#Copier dans le fichier Proxmox File System:
cp pve-root-ca.pem /etc/pve/pve-root-ca.pem
cp pve-ssl.key /etc/pve/local/pve-ssl.key
cp pve-ssl.pem /etc/pve/local/pve-ssl.pem
#Redémarrez le démon et le proxy :
service pveproxy restart
service pvedaemon restart
ou
cd /etc/pve
rm pve-root-ca.pem priv/pve-root-ca.key nodes/*/pve-ssl.{key,pem}
pvecm updatecerts --force
systemctl restart pveproxy
Résolution d'erreur
TASK ERROR: migration aborted
Waring remote host identification has changed
Conteneur ou machine virtuelle bloqué
Pour un conteneur :
Pour une vm :
On doit ensuite modifier la conf de la vm pour enlever le snap dans :
vm : /etc/pve/qemu-server/nomdelavm.conf
ct : /etc/pve/lxc/nomduct.conf
Pour enlever le snapshot du disque :
Utilisez la commande suivante pour répertorier tous les éléments
Sortie
NAME USED AVAIL REFER MOUNTPOINT
rpool 83.3G 366G 82.4G /rpool
rpool/subvol-110-disk-0 473M 7.54G 473M /rpool/subvol-110-disk-0
rpool/subvol-110-disk-1 337M 7.67G 337M /rpool/subvol-110-disk-1
rpool/data/vm-102-disk-1 5G 10G 5G -
Note
subvol est le stockage/disque pour les conteneurs (CT)
vm-xxxx est le stockage/disque pour les conteneurs
Supprimer des disques de machine virtuelle
Supprimer les disques de conteneur
Logs
Disque mal allouer
Pour les VM
Pour les CT
GPU Passtrught
Remplacer la ligne grub par sa :
Pour intel :
nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=efifb:off"
update-grub
Pour AMD :
nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=efifb:off"
update-grub
nano /etc/modules
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
#remplacer par ids du gpu
lspci -v
lspci -n -s 01:00
echo "options vfio-pci ids=10de:1b81,10de:10f0 disable_vga=1"> /etc/modprobe.d/vfio.conf
update-initramfs -u
Si le gpu passtrought ne fonctionne pas ajouter dans le job crontab
Si parsec ne fonctionne pas : cocher la case primary GPU

Source :
https://gist.github.com/qubidt/64f617e959725e934992b080e677656f
PCI passthrough via OVMF - ArchWiki (archlinux.org)
Warning
Ne pas activé dans le bios les élément suivant Re-Size BAR Support Above 4G memory / Crypto Currency mining
Auto Snapshot de machine virtuel ou conteneur
Installation :
sudo curl -o /bin/pve-autosnap https://raw.githubusercontent.com/michabbs/pve-autosnap/master/pve-autosnap
sudo chmod +x /bin/pve-autosnap
job="@hourly /bin/pve-autosnap --hourly --leave=4 vmid 200 201 204 301 305"
(sudo crontab -l; echo "$job" ) | sudo crontab -
Connexion avec le port serial
Sur l'hôte Proxmox ajouter le serial port

Sur la machine virtuelle :
Ajout de swap dynamique
sudo apt install git make -y
git clone https://github.com/Nefelim4ag/systemd-swap.git
cd systemd-swap
make deb
sudo apt install ./systemd-swap_*_all.deb
sudo tee -a /etc/systemd/swap.conf >/dev/null <<'EOF'
zswap_enabled=1
swapfc_enabled=1
EOF
sudo systemctl enable --now systemd-swap
sudo update-initramfs -u -k all
rm -rf ~/systemd-swap/
Exporte les disque d'une VM a un autre format
Dans cette exemple nous allons exporté un disque en "raw" et le mettre en qcow2" tout en le déplacant dans un point de montage crée pour l'occasion :
La cible a exporter ne peut pas être un template il faut le cloner
- Trouver le disque que l'on souhaite transformer :
Pour ce faire on peut utiliser la commande : - Monter un partage externe :
- Utiliser la commande
sudo qemu-img convert -O qcow2 source destinationpour transformer le disque qcow2 Voici un exemple :
Pour le convertir en vhdx on peut faire :
sudo qemu-img convert -O vhdx /dev/zvol/fast-1/vm-300-disk-0 /mnt/temp/Telechargements/Debian11.vhdx
Ou en vmdk :
sudo qemu-img convert -O vmdk /dev/zvol/fast-1/vm-300-disk-0 /mnt/temp/Telechargements/Debian11.vhdx
Supprimer un disque de machine virtuelle via la ligne de commande
1\. Énumérez les informations de base de tous les ensembles de données sur le système avec:
La sortie affiche les noms des jeux de données et les valeurs de leurs propriétés utilisées, disponibles, référencées et montées. Par exemple:
2. Pour supprimer un disque via la ligne de commande, exécutez :
Par conséquent, pour supprimer l’exemple de disque mentionné ci-dessus, exécutez :
Forcer la suppression d'un job de réplication
Mise en place de l'option SDN
La mise en place est très simple. Voici ce qu'il faut faire sur chaque noeud Proxmox :
apt install libpve-network-perl ifupdown2
echo "source /etc/network/interfaces.d/*" >> /etc/network/interfaces
reboot now
nous allons ensuite crée notre zone VxLAN
Éléments renseignées :
- ID : le nom de la zone
- Address : les adresses IP des nœuds Proxmox côté LAN. C'es une liste d'adresses IP de tous les nœuds via lesquels vous souhaitez communiquer.
- MTU : le MTU doit être inférieur pour s'assurer que les 50 octets supplémentaires de l'en-tête VXLAN peuvent être contenu. Le MTU de ma carte étant de 1500, je renseigne 1450. (faux ! il faut mettre : 9216)
Le MTU des machines invitées devra être égal au MTU défini ci-dessus.
Ce qui donne :

Maintenant que votre zone est créée, il faut créer un VNet que l'on va rattacher à notre zone.
Selon la doc Proxmox, un VNet est un réseau virtuel qui n'est dans sa forme de base qu'un pont Linux qui sera déployé localement sur le nœud et utilisé pour la communication de la machine virtuelle. En fait quand nous provisionnerons nos VM, nous rattacherons le réseau de celles-ci au bridge nouvellement au lieu de vmbr0 par exemple.
Ce qu'il faut renseigner :
- Le nom
- Un alias (optionnel)
- La zone de rattachement
- Le TAG : id du VxLAN (ce que vous vous voulez entre 1 et 16 777 215)

Pour terminer
Maintenant que notre zone est créée et le vnet rattaché, il suffit de cliquer sur SDN puis de cliquer sur "Apply", ainsi vous verrez la zone se déployer sur l'ensemble des nœuds retenus (tous par défaut).

Création des conteneurs
Créez deux conteneurs sur deux nœuds différents puis sur la partie réseau, mettez en bridge le nom de votre vnet :

Lancez les conteneurs puis réalisez un test de connectivité réseau avec ping :

source : Mise en place du SDN sur Promox 7 | Libre à vous (raspot.in)
Software Defined Network (proxmox.com)
Voire le contenu d'une machine virtuelle
L'emplacement des disk virtuelle est ici :
exemple de montage :