4 231
modifications
(162 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 3 : | Ligne 3 : | ||
[[Category:virtualisation]] | [[Category:virtualisation]] | ||
Nous allons voir comment installer proxmox | Nous allons voir comment installer proxmox 7.x sur un raid 1 logiciel (md / mdadm) avec debootstrap. | ||
=Prérequis= | =Prérequis= | ||
Ligne 18 : | Ligne 18 : | ||
* <code>/etc/hosts</code> | * <code>/etc/hosts</code> | ||
* <code>/etc/fstab</code> | * <code>/etc/fstab</code> | ||
* <code>/etc/mdadm/mdadm.conf</code> si vous disposez d'un raid logiciel | * <code>/etc/mdadm/mdadm.conf</code> si vous disposez d'un raid logiciel | ||
* tout fichier de personnalisation de grub (<code>/etc/grub.d/ | * tout fichier de personnalisation de grub (<code>/etc/grub.d/</code> par exemple) | ||
Cela vous permettra de vous faire une idée plus précise de ce qui doit figurer dans ces différents fichiers. | Cela vous permettra de vous faire une idée plus précise de ce qui doit figurer dans ces différents fichiers. | ||
=Partitionnement= | =Partitionnement et système de fichier= | ||
Voici le partitionnement que je vais utiliser : | Voici le partitionnement que je vais utiliser : | ||
* / | * Partition root (/) de 20 Go (/) en raid 1 sur les disques sda et sdb | ||
* | * Partitions swap de 4096 Go chacune réparties sur sda et sdb | ||
* | * Le reste de l'espace sera utilisé plus tard pour un LVM dédié aux VMs | ||
== | ==Partitionnement== | ||
===Possibilité 1 : Partitionnement GPT pour EFI / UEFI=== | |||
Nous allons créer avec <code>gdisk</code> 3 partitions sur chaque disque : | |||
* sda1 et sdb1 : partitions EFI (ESP), obligatoire pour le démarrage EFI/UEFI. Il faudra leur attribuer le type <code>EF00</code>. Pour assurer une bonne compatibilité avec les multiples firmwares EFI, il est recommandé de leur attribuer une taille de 512 MiB (+512M au prompt gdisk). | |||
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type <code>FD00</code>. | |||
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type <code>8200</code>. | |||
<br> | |||
Pour les partitions EFI, nous créons un système de fichier FAT32 avec le label (nom) <code>EFI_SYSPART</code> : | |||
<pre> | <pre> | ||
mkfs. | mkfs.fat -F 32 -n EFI_SYSPART /dev/sda1 | ||
mkfs.fat -F 32 -n EFI_SYSPART /dev/sdb1 | |||
</pre> | </pre> | ||
== | ===Possibilité 2 : Partitionnement GPT pour BIOS=== | ||
Nous allons créer avec <code>gdisk</code> 3 partitions sur chaque disque : | |||
* sda1 et sdb1 : partitions pour le bootloader. Il faudra leur attribuer le type <code>EF02</code>. On peut la créer idéalement du secteur 34 au secteur 2047 du disque. | |||
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type <code>FD00</code>. | |||
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type <code>8200</code>. | |||
Notez que la partition du bootloader ne doit pas être formatée. | |||
===Possibilité 3 : partitionnement MBR pour BIOS (non prise en charge dans ce wiki)=== | |||
A titre informatif : création avec <code>parted</code>, sans nécessité de créer une partition dédiée au bootloader/grub. | |||
==Création du RAID== | |||
Pour des raisons esthétiques, définissez l'hostname de votre système de rescue : | |||
<pre>hostname proxmox</pre> | |||
Pour créer votre raid 1 avec 2 disques : | |||
<pre> | <pre> | ||
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2 | |||
</pre> | </pre> | ||
Notez que si vous souhaitez utiliser plus que 2 disques, il faut augmenter la valeur de <code>--raid-devices</code> et ajouter les partitions des disques à la suite. | |||
Attendez que le raid soit synchronisé avant de continuer. Vous pouvez surveiller facilement cela avec la commande <code>watch cat /proc/mdstat</code>. | |||
==Création des systèmes de fichiers== | |||
Créez un système de fichier ext4 pour le raid du root : | |||
<pre> | |||
mkfs.ext4 /dev/md2 | |||
</pre> | |||
Enfin, initialisez les swaps : | |||
<pre> | |||
mkswap /dev/sda3 | |||
mkswap /dev/sdb3 | |||
</pre> | |||
=Installation de proxmox= | =Installation de proxmox= | ||
Ligne 51 : | Ligne 91 : | ||
==Installation du système de base== | ==Installation du système de base== | ||
< | Nous débutons par installer le système de base de Debian avec <code>debootstrap</code> | ||
Installez les paquets nécessaires dans votre rescue : | |||
<pre>apt install debootstrap debian-keyring debian-archive-keyring</pre> | |||
Montez votre partition raid root sur <code>/mnt</code> : | |||
<pre> | <pre> | ||
mount /dev/ | mount /dev/md2 /mnt | ||
</pre> | </pre> | ||
<pre>debootstrap --arch=amd64 | Installez le système de base debian, version bullseye : | ||
<pre>debootstrap --arch=amd64 bullseye /mnt http://ftp.fr.debian.org/debian</pre> | |||
==Configuration de Debian== | ==Configuration de Debian== | ||
Montez les vfs suivants, puis chrootez dans votre nouveau système debian : | |||
<pre> | <pre> | ||
mount -o bind /proc /mnt/proc | mount -o bind /proc /mnt/proc | ||
mount -o bind /dev /mnt/dev | mount -o bind /dev /mnt/dev | ||
mount -o bind /dev/pts /mnt/dev/pts | |||
mount -o bind /sys /mnt/sys | mount -o bind /sys /mnt/sys | ||
chroot /mnt | chroot /mnt | ||
</pre> | </pre> | ||
Configurez les archives apt : éditez le fichier <code>/etc/apt/sources.list</code> : | |||
<pre> | <pre> | ||
deb http:// | # main archive | ||
deb-src http:// | deb http://deb.debian.org/debian/ bullseye main contrib non-free | ||
deb-src http://deb.debian.org/debian/ bullseye main contrib non-free | |||
# | # security updates | ||
deb http://security.debian.org/ | deb http://security.debian.org/debian-security bullseye-security main contrib non-free | ||
deb-src http://security.debian.org/ | deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free | ||
# | # bullseye-updates, previously known as 'volatile' | ||
deb http:// | deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free | ||
deb-src http:// | deb-src http://deb.debian.org/debian/ bullseye-updates main contrib non-free | ||
# | # backports | ||
#deb http:// | #deb http://deb.debian.org/debian bullseye-backports main contrib non-free | ||
#deb-src http://deb.debian.org/debian bullseye-backports main contrib non-free | |||
</pre> | </pre> | ||
Mettez à jour les paquets : | Mettez à jour les paquets : | ||
<pre> | <pre> | ||
apt update | |||
apt full-upgrade | |||
</pre> | </pre> | ||
Installez les locales et la configuration de console : | Installez les locales et la configuration de console : | ||
<pre> | <pre> | ||
apt install locales | |||
dpkg-reconfigure locales | dpkg-reconfigure locales | ||
apt install console-data console-setup-linux console-setup wget | |||
dpkg-reconfigure console-data # from arch > french > latin9) | dpkg-reconfigure console-data # from arch > french > latin9) | ||
</pre> | </pre> | ||
Ligne 105 : | Ligne 154 : | ||
</pre> | </pre> | ||
Configurez votre fichier <code>/etc/fstab</code> : | |||
<pre> | <pre> | ||
# <file system> <mount point> <type> <options> <dump> <pass> | |||
/dev/md2 / ext4 defaults,errors=remount-ro,relatime 0 1 | |||
/dev/sda1 /boot/efi vfat defaults 0 1 | |||
/dev/sda3 swap swap sw,pri=1 0 0 | |||
/dev/sdb3 swap swap sw,pri=1 0 0 | |||
</pre> | </pre> | ||
Montez la partition EFI / ESP : | |||
<pre> | <pre> | ||
mkdir /boot/efi | |||
mount /boot/efi | |||
/ | |||
</pre> | </pre> | ||
/etc/network/interfaces : | Configurez les interfaces réseaux dans <code>/etc/network/interfaces</code> : | ||
<pre> | <pre> | ||
# The loopback network interface | # The loopback network interface | ||
Ligne 123 : | Ligne 175 : | ||
iface lo inet loopback | iface lo inet loopback | ||
auto | auto eno3 | ||
iface | iface eno3 inet static | ||
address XXXX | address XXXX/24 | ||
gateway XXXX | gateway XXXX | ||
</pre> | </pre> | ||
/etc/hosts: | Configurez le fichier <code>/etc/hosts</code> : | ||
<pre> | <pre> | ||
# | # local | ||
127.0.0.1 localhost | |||
127.0.0.1 | ::1 localhost ip6-localhost ip6-loopback | ||
ff02::1 ip6-allnodes | |||
ff02::2 ip6-allrouters | |||
::1 | # main | ||
ipdelamachine proxmox.domain.tld proxmox pvelocalhost | |||
ff02::1 ip6-allnodes | |||
ff02::2 ip6-allrouters | |||
</pre> | </pre> | ||
Définissez les hostnames dans ces fichiers : | |||
<pre> | <pre> | ||
echo | # Pour celui la : non-fqdn | ||
echo | echo proxmox > /etc/hostname | ||
# Pour celui la : fqdn | |||
echo proxmox.domain.tld > /etc/mailname | |||
</pre> | </pre> | ||
'''ATTENTION''' Le fichier /etc/hosts DOIT être cohérent avec le fichier /etc/hostname. Par exemple, si le contenu de /etc/hostname est <code>proxmox | '''ATTENTION''' Le fichier <code>/etc/hosts</code> DOIT être cohérent avec le fichier <code>/etc/hostname</code>.<br> | ||
Par exemple, si le contenu de <code>/etc/hostname</code> est <code>proxmox</code> et que l'ip de votre proxmox est 225.182.54.9 il faudra veiller a avoir les informations suivantes dans <code>/etc/hosts</code> : | |||
<pre> | <pre> | ||
127.0.0.1 localhost | 127.0.0.1 localhost | ||
225.182.54.9 proxmox.domain.tld proxmox | 225.182.54.9 proxmox.domain.tld proxmox pvelocalhost | ||
</pre> | </pre> | ||
N'oubliez pas de configurer les dns (ceux de votre hébergeur dédié) : | N'oubliez pas de configurer les dns (ceux de votre hébergeur dédié) dans <code>/etc/resolv.conf</code> : | ||
<pre>nameserver XX.XX.XX.XX</pre> | <pre>nameserver XX.XX.XX.XX</pre> | ||
Installez postfix : | |||
<pre> | |||
hostname -F /etc/hostname | |||
apt install postfix | |||
</pre> | |||
Enfin, comme nous installons notre partition de boot sur un raid software, il faut installer <code>madadm</code> à ce stade : | |||
<pre>apt install mdadm</pre> | |||
Vérifiez si votre array root s'est bien défini automatiquement dans <code>/etc/mdadm/mdadm.conf</code>. Si ce n'est pas me cas, ajoutez la configuration de l'array manuellement : | |||
<pre>mdadm --examine --scan >> /etc/mdadm/mdadm.conf</pre> | |||
==Installation de proxmox - kernel== | ==Installation de proxmox - kernel== | ||
Ligne 167 : | Ligne 228 : | ||
<pre> | <pre> | ||
# PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use | # PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use | ||
deb http://download.proxmox.com/debian | deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription | ||
</pre> | </pre> | ||
Ajoutez la clé du dépôt proxmox : | Ajoutez la clé du dépôt proxmox : | ||
<pre> | <pre> | ||
wget | wget https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg | ||
</pre> | </pre> | ||
Mettez à jour le système : | |||
<pre> | |||
apt update | |||
apt full-upgrade | |||
</pre> | |||
===Possibilité 1 : Partitions GPT pour EFI / UEFI=== | |||
Vérifiez que <code>/boot/efi</code> est bien monté. Si ce n'est pas le cas, faites le. | |||
Installez le kernel proxmox : | Installez le kernel proxmox : | ||
<pre> | <pre> | ||
apt install pve-firmware | |||
apt install pve-kernel-5.15 grub-efi-amd64 gdisk | |||
</pre> | |||
Supprimez les paquets suivant si vous n'avez pas besoin de secureboot : | |||
<pre>apt purge grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed shim-signed-common shim-unsigned</pre> | |||
Normalement tout doit se faire avec des promps. Si ce n'était pas le cas : | |||
<pre>grub-install --bootloader-id=proxmox</pre> | |||
Si jamais vous utilisez un démarrage en PXE (c'est le cas sur un serveur OVH par exemple), utilisez l'argument <code>--no-nvram</code> pour empêcher grub de mettre à jour la NVRAM et casser votre mécanique de démarrage PXE : | |||
<pre>grub-install --bootloader-id=proxmox --no-nvram</pre> | |||
Etant donné que seul <code>/dev/sda1</code> est monté sur <code>/boot/efi</code>, il faut transférer manuellement les données sur <code>/dev/sdb1</code> : | |||
<pre> | |||
mount /dev/sdb1 /mnt | |||
rsync -av /boot/efi/ /mnt/ | |||
umount /mnt | |||
</pre> | |||
Si pour une raison quelconque, vous aviez besoin des headers du kernel : | |||
<pre>apt install pve-headers-5.15</pre> | |||
===Possibilité 2 : Partitions GPT pour BIOS OU Partitions MBR pour BIOS=== | |||
<pre> | |||
apt install pve-firmware | |||
apt install pve-kernel-5.13 grub-pc | |||
</pre> | </pre> | ||
Lorsqu'on vous demandera où installer grub, choisissez <code>sda</code> ET <code>sdb</code> | |||
==Installation de proxmox - OpenSSH== | |||
Installez openssh et définissez un password root. Autorisez le login root par password temporairement. | Installez openssh et définissez un password root. Autorisez le login root par password temporairement. | ||
<pre> | <pre> | ||
hostname -F /etc/hostname | |||
apt install openssh-server | |||
passwd | passwd | ||
sed -i "s/PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config | sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config | ||
</pre> | </pre> | ||
==Installation de proxmox - Vérifications finales et redémarrage sur le kernel proxmox== | |||
Si vous avez une configuration particulière à entrer dans <code>/etc/default/grub</code>, faites le maintenant. Par exemple : | |||
<pre> | <pre> | ||
GRUB_CMDLINE_LINUX="nomodeset iommu=pt" | |||
</pre> | </pre> | ||
Puis | Puis régénérez la configuration de grub : | ||
<pre>update-grub</pre> | <pre>update-grub</pre> | ||
Vous pouvez vérifier que votre fstab est valide avec : | |||
<pre>findmnt --verify --verbose</pre> | |||
Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier | Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier | ||
<pre> | <pre> | ||
umount /boot/efi/ | |||
exit | exit | ||
umount /mnt/sys | umount /mnt/sys | ||
umount /mnt/dev/pts | |||
umount /mnt/dev | umount /mnt/dev | ||
umount /mnt/proc | umount /mnt/proc | ||
Ligne 209 : | Ligne 315 : | ||
</pre> | </pre> | ||
Enfin, redémarrez le serveur sur le disque dur. | |||
==Installation de ifupdown2== | |||
Le paquet <code>ifupdown2</code> est en voie de devenir le remplaçant officiel de <code>ifupdown</code> pour proxmox. | |||
<pre> | |||
apt install ifupdown2 | |||
apt purge ifupdown | |||
systemctl enable networking | |||
</pre> | |||
Pour vérifier que votre configuration est fonctionnelle : lancez <code>ifquery -a</code> | |||
Redémarrez à nouveau votre serveur | |||
==Installation de proxmox - pve== | ==Installation de proxmox - pve== | ||
Une fois le | Une fois le redémarrage effectué, vous allez enfin pouvoir installer pve : | ||
<pre>apt install lvm2</pre> | |||
<pre>apt install proxmox-ve ksm-control-daemon</pre> | |||
<pre> | <pre>apt remove os-prober</pre> | ||
<pre> | |||
Editez la configuration réseau <code>/etc/network/interfaces</code> afin d'y créer votre bridge : | |||
<pre> | <pre> | ||
auto | auto eno3 | ||
iface | iface eno3 inet manual | ||
auto vmbr0 | auto vmbr0 | ||
iface vmbr0 inet static | iface vmbr0 inet static | ||
address xxxxx | address xxxxx/24 | ||
gateway xxxx | gateway xxxx | ||
bridge_ports | hwaddress AA:BB:CC:11:22:33 | ||
bridge_ports eno3 | |||
bridge_stp off | bridge_stp off | ||
bridge_fd 0 | bridge_fd 0 | ||
</pre> | </pre> | ||
Définissez la ligne <code>hwaddress</code> avec l'adresse MAC de l'interface eno3. | |||
Installez votre clé SSH dans <code>/root/.ssh/authorized_keys</code> puis désactivez le login root par password de OpenSSH dans <code>/etc/ssh/sshd_config</code>. | |||
<br><br> | |||
Une fois tout installé, je vous conseille de reconfigurer grub afin de mettre à jour la configuration interne de debian: | |||
* Pour EFI : <code>dpkg-reconfigure grub-efi-amd64</code> | |||
* Pour BIOS : <code>dpkg-reconfigure grub-pc</code> | |||
<br> | |||
Redémarrez une dernière fois pour appliquer les changements. | |||
Votre proxmox sera accessible à l'adresse https://ip:8006 | |||
==Nettoyage des paquets== | |||
Si vous ne comptez pas utiliser ZFS, vous pouvez supprimer les paquets suivantes : | |||
<pre>apt purge zfs-zed libnvpair3linux libuutil3linux libzfs4linux libzpool5linux zfsutils-linux</pre> | |||
==Configuration réseau avancée== | ==Configuration réseau avancée== | ||
===Ajout d'une IPv6 sur vmbr0=== | ===Ajout d'une IPv6 sur vmbr0=== | ||
===Ajout d'un réseau interne vmbr1=== | ===Ajout d'un réseau interne vmbr1=== | ||
Ligne 265 : | Ligne 387 : | ||
address 192.168.0.1 | address 192.168.0.1 | ||
netmask 255.255.255.0 | netmask 255.255.255.0 | ||
</pre> | </pre> | ||
Note : vous pouvez faire de même en ipv6 : | Note : vous pouvez faire de même en ipv6 : | ||
* il faut utiliser le range fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address) | * il faut utiliser le range Unique Local Address (ULA) fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address) | ||
* pour générer votre | * pour générer votre ULA : http://pfoo.unscdf.org/ula/gen-ula.html | ||
==Sécurisation de base== | ==Sécurisation de base== | ||
Je vous conseil de commencer à sécuriser votre ssh : | Je vous conseil de commencer à sécuriser votre ssh : | ||
* désactivez le login root (directive <code>PermitRootLogin no</code> dans <code>/etc/ssh/sshd_config</code>) | * désactivez le login root (directive <code>PermitRootLogin no</code> dans <code>/etc/ssh/sshd_config</code>). Pensez néanmoins à créer un utilisateur pour vous connecter en ssh avant de désactiver le login root. | ||
* utilisez la directive <code>allowusers <user></code> dans <code>/etc/ssh/sshd_config</code> pour n'autoriser que certains utilisateurs à se connecter en ssh | * utilisez la directive <code>allowusers <user></code> dans <code>/etc/ssh/sshd_config</code> pour n'autoriser que certains utilisateurs à se connecter en ssh. | ||
Il est aussi préférable d'installer le serveur de temps NTP à la place de systemd-timesyncd: | |||
<pre> | <pre> | ||
apt install chrony | |||
apt purge systemd-timesyncd | |||
</pre> | </pre> | ||
=Configurer le serveur mail postfix= | =Configurer le serveur mail postfix= | ||
==Configuration== | ==Configuration== | ||
==Certificats SSL== | ==Certificats SSL== | ||
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. Si ce n'est pas le cas, vous pouvez toujours aller lire [http://wiki. | Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. Si ce n'est pas le cas, vous pouvez toujours aller lire [http://wiki.unscdf.org/index.php?title=Installation_et_configuration_de_OpenSSL ceci] afin d'apprendre à créer votre autorité ssl. | ||
Ajoutez les lignes suivantes dans <code>/etc/ssl/openssl.cnf</code> : | Ajoutez les lignes suivantes dans <code>/etc/ssl/openssl.cnf</code> : | ||
Ligne 419 : | Ligne 425 : | ||
</pre> | </pre> | ||
Puis générez la clé et le certificat, et signez le avec votre autorité ( | Puis générez la clé et le certificat, et signez le avec votre autorité (int_ca dans mon cas) : | ||
<pre> | <pre> | ||
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req | openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req | ||
openssl ca -config /etc/ssl/openssl.cnf -name | openssl ca -config /etc/ssl/openssl.cnf -name int_ca -extensions POSTFIX -in postfix.req -out postfix.pem | ||
</pre> | </pre> | ||
Déplacez les fichiers dans le répertoire <code>/etc/postfix/ssl</code>: | Déplacez les fichiers dans le répertoire <code>/etc/postfix/ssl</code> : | ||
<pre> | <pre> | ||
mkdir /etc/postfix/ssl | mkdir /etc/postfix/ssl | ||
Ligne 431 : | Ligne 437 : | ||
mv postfix.pem /etc/postfix/ssl/ | mv postfix.pem /etc/postfix/ssl/ | ||
chmod 600 /etc/postfix/ssl/* | chmod 600 /etc/postfix/ssl/* | ||
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/ | cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/int_ca/int_ca.pem > /etc/postfix/ssl/ca_chain.pem | ||
</pre> | </pre> | ||
Ligne 448 : | Ligne 454 : | ||
smtpd_tls_loglevel = 1 | smtpd_tls_loglevel = 1 | ||
smtp_tls_loglevel = 1 | smtp_tls_loglevel = 1 | ||
#smtp_tls_policy_maps = hash:/etc/postfix/tls_policy | #smtp_tls_policy_maps = hash:/etc/postfix/tls_policy | ||
</pre> | </pre> | ||
=Utiliser son propre certificat SSL avec un signataire intermédiaire= | =Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire= | ||
Depuis Proxmox 5.2, il n'est plus recommandé d'adapter manuellement les fichiers contenant les certificats et clés privés de proxmox.<br> | |||
Cependant, vous pouvez placer directement votre clé privé dans le fichier <code>/etc/pve/local/pveproxy-ssl.key</code> et la chaîne de certification dans le fichier <code>/etc/pve/local/pveproxy-ssl.pem</code>. Vous pouvez également déposer ces fichiers via la webui de proxmox au niveau de chaque serveur. | |||
<br | |||
=Surveiller l'état des disques avec SMART= | =Surveiller l'état des disques avec SMART= | ||
Commencez par installer le paquet smartmontools : | Commencez par installer le paquet smartmontools : | ||
<pre> | <pre>apt install smartmontools</pre> | ||
Vérifiez que vos disques gèrent smart et qu'il est activé : | Vérifiez que vos disques gèrent smart et qu'il est activé : | ||
Ligne 500 : | Ligne 476 : | ||
Si smart n'est pas activé, essayez de l'activer comme ceci : | Si smart n'est pas activé, essayez de l'activer comme ceci : | ||
<pre> | <pre> | ||
smartctl -s on - | smartctl -s on /dev/sda | ||
smartctl -s on /dev/sdb | |||
</pre> | </pre> | ||
Ligne 518 : | Ligne 495 : | ||
Si vous voyez <code>No Errors Logged</code> ou quelques erreurs, c'est bon. S'il y eu a beaucoup, il faut envisager de changer le disque. | Si vous voyez <code>No Errors Logged</code> ou quelques erreurs, c'est bon. S'il y eu a beaucoup, il faut envisager de changer le disque. | ||
Le fichier de configuration de smartd est <code>/etc/smartd.conf</code>. Commentez la ligne <code>DEVICESCAN</code> puis ajoutez les lignes suivantes pour surveiller les deux disques durs : | |||
<pre> | <pre> | ||
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld | |||
/dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld | |||
</pre> | |||
Nous activons la surveillance globale (<code>-a</code>), la vérification automatique offline, (<code>-o on</code>), la sauvegarde automatique des attributs (<code>-S on</code> et lançons un <code>short self test</code> tous les jours à 2h du matin, et un <code>long self test</code> tous les samedi à 3h du matin. Si des erreurs sont détectés, un email est envoyé à vous@domain.tld.<br> | |||
Relancez smartd : | |||
<pre>/etc/init.d/smartmontools restart</pre> | |||
Pour plus d'information sur SMART et ses arguments : [[Diagnostic smart d'un disque]] | |||
=Protégez votre proxmox= | |||
==Désactiver le login root sur l'interface proxmox== | |||
Avant toute manipulation, n'oubliez pas de créer un utilisateur ayant les droits d'administration pour accéder à l'interface de proxmox | |||
===Via l'interface proxmox=== | |||
Dans Datacenter > Permissions > Users : Editez l'utilisateur root et décochez la case <code>Enabled</code> | |||
===Via les droits linux=== | |||
<pre>passwd --lock root</pre> | |||
Attention, dans ce cas, vous ne pourrez plus vous loguer en root sur le serveur par ssh (sauf si vous avez une clé ssh défini), écran ou kvm ! | |||
===Via PAM=== | |||
Vous pouvez désactiver le login pam en éditant <code>/etc/pam.d/other</code> et en y ajoutant, en début de fichier, les lignes suivantes : | |||
<pre> | |||
auth required pam_deny.so | |||
auth required pam_warn.so | |||
account required pam_deny.so | |||
account required pam_warn.so | |||
</pre> | </pre> | ||
Attention, cette méthode peut avoir des effets de bord si d'autres programmes utilisent l'entité pam/other | |||
==Désactiver rpcbind== | |||
Si vous n'utilisez pas de montage NFS vous pouvez désactiver rpcbind.<br> | |||
Editez <code>/etc/default/nfs-common</code> et passez l'argument suivant : | |||
<pre>NEED_STATD=no</pre> | |||
Puis désactivez rpcbind : | |||
<pre> | <pre> | ||
systemctl disable rpcbind.target | |||
systemctl disable rpcbind.socket | |||
systemctl disable rpcbind.service | |||
systemctl stop rpcbind.target | |||
systemctl stop rpcbind.socket | |||
systemctl stop rpcbind.service | |||
</pre> | </pre> | ||
==Eviter les reboots accidentels avec molly-gard== | |||
<pre>apt install molly-guard</pre> | |||
==Protection SSH avec sshguard== | |||
[[Protéger SSH avec sshguard]] | |||
== | ==Protéger l'interface web avec fail2ban== | ||
<pre>aptitude install fail2ban</pre> | |||
Créez le fichier <code>/etc/fail2ban/jail.local</code> contenant : | |||
<pre> | |||
[DEFAULT] | |||
# "ignoreip" can be an IP address, a CIDR mask or a DNS host | |||
ignoreip = 127.0.0.1 | |||
bantime = 1800 | |||
maxretry = 3 | |||
== | # | ||
# Destination email address used solely for the interpolations in | |||
# jail.{conf,local} configuration files. | |||
destemail = root@localhost | |||
action = %(action_mwl)s | |||
[ssh] | |||
enabled = false | |||
[sshd] | |||
enabled = false | |||
[proxmox] | |||
enabled = true | |||
port = https,http,8006 | |||
filter = proxmox | |||
logpath = /var/log/daemon.log | |||
maxretry = 4 | |||
bantime = 3600 #1 heure | |||
</pre> | |||
Créez le fichier <code>/etc/fail2ban/filter.d/proxmox.conf</code> : | |||
<pre> | <pre> | ||
[Definition] | |||
failregex = pvedaemon\[.*authentication failure; rhost=<HOST> user=.* msg=.* | |||
ignoreregex = | |||
</pre> | |||
Vous pouvez tester votre configuration avec la commande <code>fail2ban-regex /var/log/daemon.log /etc/fail2ban/filter.d/proxmox.conf</code> | |||
Relancez fail2ban : | |||
/ | <pre>/etc/init.d/fail2ban restart</pre> | ||
/ | |||
==firewall iptables== | |||
=Création d'un stockage pour les VMs= | |||
Créez les partitions sda4 et sdb4 au moyen de gdisk (EFI) ou parted (BIOS). | |||
Créez sur ces partitions un raid : | |||
/ | <pre>mdadm --create --verbose /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4</pre> | ||
/ | |||
Maintenez à jour <code>mdadm.conf</code> et votre initramfs afin de conserver le bon naming du raid après reboot : | |||
<pre> | |||
mdadm --examine --scan >> /etc/mdadm/mdadm.conf | |||
update-initramfs -u | |||
</pre> | |||
Puis initialisez-y un LVM : | |||
<pre> | |||
pvcreate /dev/md4 | |||
/ | vgcreate main /dev/md4 | ||
</pre> | </pre> | ||
= | Il ne reste plus qu'a déclarer ce Volume Group LVM dans l'interface proxmox. | ||
=VM qemu/kvm= | |||
==Télécharger vos images== | ==Télécharger vos images== | ||
Vous pouvez placer les iso dans <code>/var/lib/vz/template/iso/</code> avec <code>wget</code> par exemple. | Vous pouvez placer les iso dans <code>/var/lib/vz/template/iso/</code> avec <code>wget</code> par exemple. | ||
Notez que l'interface graphique de proxmox propose une fonction d'upload. | Notez que l'interface graphique de proxmox propose également une fonction d'upload. | ||
==Créer votre première VM== | ==Créer votre première VM== | ||
Ligne 632 : | Ligne 665 : | ||
Vous pouvez faire de même pour l'ipv6. Dans l'exemple suivant, seul le bloc ipv6 <code>2a01:d4h:123b:100::/56</code> est utilisable par la vm : | Vous pouvez faire de même pour l'ipv6. Dans l'exemple suivant, seul le bloc ipv6 <code>2a01:d4h:123b:100::/56</code> est utilisable par la vm : | ||
<pre>ebtables -A FORWARD -p IPv6 --ip6-src 2a01:d4h:123b:100::/56 -s ! 52:54:00:00:08:b1 -j DROP</pre> | <pre>ebtables -A FORWARD -p IPv6 --ip6-src 2a01:d4h:123b:100::/56 -s ! 52:54:00:00:08:b1 -j DROP</pre> | ||
==Importer une VM depuis vmware ESXi== | ==Importer une VM depuis vmware ESXi== | ||
==qm et modification des VMs en ligne de commande== | ==qm et modification des VMs en ligne de commande== | ||
==Monter les partitions d'une VM depuis l'host== | ==Monter les partitions d'une VM depuis l'host== | ||
<pre> | <pre> | ||
# losetup /dev/loop0 /dev/main/vm-101-disk-1 | |||
# fdisk -lu /dev/loop0 | # fdisk -lu /dev/loop0 | ||
Ligne 663 : | Ligne 688 : | ||
pour la partition 1 : start*blocksize = offset | pour la partition 1 : start*blocksize = offset | ||
donc 2048*512 = | donc 2048*512 = 1048576 | ||
<pre>losetup /dev/loop1 -o 1048576 /dev/main/vm-101-disk-1 </pre> | <pre>losetup /dev/loop1 -o 1048576 /dev/main/vm-101-disk-1 </pre> | ||
Ligne 677 : | Ligne 702 : | ||
</pre> | </pre> | ||
===Si la partition que vous voulez monter est un | ===Si la partition que vous voulez monter est un LVM=== | ||
Scannez les nouveaux volumes : | Scannez les nouveaux volumes : | ||
Ligne 721 : | Ligne 746 : | ||
Sur votre nouveau serveur, créez une VM identique à celle de votre premier serveur (surtout en qui concerne la taille de disque). | Sur votre nouveau serveur, créez une VM identique à celle de votre premier serveur (surtout en qui concerne la taille de disque). | ||
Depuis server1, copiez avec un dd over ssh le disque d'origine de votre vm vers votre nouveau serveur. | Depuis server1, copiez avec un dd over ssh le disque d'origine de votre vm vers votre nouveau serveur. | ||
<pre>dd if=/dev/main/vm-102-disk-1 | pv -ptrb | ssh | <pre>dd if=/dev/main/vm-102-disk-1 | pv -ptrb | ssh -o "Compression no" root@server2.domain.tld "dd of=/dev/main/vm-102-disk-1 bs=100M"</pre> | ||
Note : sur un réseauu 100Mbps utilisez plutôt <code>-o "Compressionlevel 1"</code> | Note : sur un réseauu 100Mbps utilisez plutôt <code>-o "Compressionlevel 1"</code> | ||
Ligne 733 : | Ligne 758 : | ||
<pre>lvconvert --merge /dev/main/102-lvmsync</pre> | <pre>lvconvert --merge /dev/main/102-lvmsync</pre> | ||
= | =Conteneur LXC= | ||
== | ==Empêcher la mise à jour automatique de certains fichiers de configuration système du conteneur== | ||
Certains fichiers de configuration du conteneur sont mis à jour automatiquement à chaque démarrage (voir https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_guest_operating_system_configuration) | |||
On peut empêcher la mise à jour de ces fichiers en créant un fichier <code>.pve-ignore.NOM</code> <br> | |||
Par exemple, <code>/etc/.pve-ignore.resolv.conf</code> empêchera le fichier <code>/etc/resolv.conf</code> d'être mis à jour à chaque démarrage. | |||
=Annexes= | |||
==Problème de layout dans la console vnc== | ==Problème de layout dans la console vnc== | ||
Ligne 759 : | Ligne 775 : | ||
Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64. | Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64. | ||
Ajouter les lignes suivantes dans | Ajouter les lignes suivantes dans un fichier <code>/etc/sysctl.d/local.conf</code> : | ||
<pre> | <pre> | ||
net.ipv6.conf.all.autoconf = 0 | net.ipv6.conf.all.autoconf = 0 | ||
net.ipv6.conf.default.autoconf = 0 | net.ipv6.conf.default.autoconf = 0 | ||
net.ipv6.conf. | net.ipv6.conf.eno3.autoconf = 0 | ||
net.ipv6.conf.vmbr0.autoconf = 0 | net.ipv6.conf.vmbr0.autoconf = 0 | ||
</pre> | </pre> | ||
Terminez par relancer procps : | Terminez par relancer procps : | ||
Ligne 786 : | Ligne 797 : | ||
</pre> | </pre> | ||
==L'interface web ne fonctionne pas | ==L'interface web ne fonctionne pas et la commande qm retourne une erreur ipcc_send_rec failed: Connection refused== | ||
Vérifiez la présence de fichiers et dossiers dans <code>/etc/pve/</code>. Si ce dossier est vide, c'est probablement que votre fichier <code>/etc/hosts</code> est mal configuré. | Vérifiez la présence de fichiers et dossiers dans <code>/etc/pve/</code>. Si ce dossier est vide, c'est probablement que votre fichier <code>/etc/hosts</code> est mal configuré.<br> | ||
Essayez de relancer <code>pve-cluster</code> : | Essayez de relancer <code>pve-cluster</code> : | ||
<pre>/etc/init.d/pve-cluster restart</pre> | <pre>/etc/init.d/pve-cluster restart</pre> | ||
Ligne 802 : | Ligne 813 : | ||
Si par exemple <code>/etc/hostname</code> contient <code>proxmox.domain.tld</code> vous devriez avoir la ligne suivante dans <code>/etc/hosts</code> : | Si par exemple <code>/etc/hostname</code> contient <code>proxmox.domain.tld</code> vous devriez avoir la ligne suivante dans <code>/etc/hosts</code> : | ||
<pre>VOTREIP proxmox.domain.tld proxmox</pre> | <pre>VOTREIP proxmox.domain.tld proxmox</pre> | ||
==Pas assez d'interfaces loopback== | ==Pas assez d'interfaces loopback== |