<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.unscdf.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pfoo</id>
	<title>Linux Server Wiki - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.unscdf.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pfoo"/>
	<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Sp%C3%A9cial:Contributions/Pfoo"/>
	<updated>2026-05-25T22:10:46Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Installation_de_configuration_du_serveur_web_Apache_2.4_sous_Debian_Bullseye&amp;diff=4432</id>
		<title>Installation de configuration du serveur web Apache 2.4 sous Debian Bullseye</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Installation_de_configuration_du_serveur_web_Apache_2.4_sous_Debian_Bullseye&amp;diff=4432"/>
		<updated>2026-04-18T16:54:21Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* http2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
&lt;br /&gt;
=Les différents mpm=&lt;br /&gt;
&lt;br /&gt;
Les différents mpm de apache sont fournis sous forme de modules et ce dès l&#039;installation du paquet &amp;lt;code&amp;gt;apache2&amp;lt;/code&amp;gt;. La seule exception reste le mpm ITK qui nécessite l&#039;installation du paquet &amp;lt;code&amp;gt;libapache2-mpm-itk&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install apache2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Considérations de sécurité=&lt;br /&gt;
&lt;br /&gt;
* Même si les directives sont lues dans l&#039;ordre dans lequel vous les inscrivez, certaines restent appliqués avant les autres (cf https://httpd.apache.org/docs/2.4/sections.html#merging). L&#039;ordre d&#039;application de apache est  &amp;lt;Directory&amp;gt; -&amp;gt; htaccess -&amp;gt; &amp;lt;DirectoryMatch&amp;gt; -&amp;gt; &amp;lt;files&amp;gt; et &amp;lt;filesmatch&amp;gt; -&amp;gt; &amp;lt;Location&amp;gt; et &amp;lt;LocationMatch&amp;gt;. La dernière directive appliquée prendra le dessus sur les autres.&lt;br /&gt;
* Encore une fois, prenez garder à la manière dont les directives se chaînent. Cela peut conduire à de graves défaut de sécurité étant donné que la directive [http://httpd.apache.org/docs/2.4/fr/mod/mod_authz_core.html#authmerging authmerging] est par défaut à off dans apache. En gros, si vous interdisez l&#039;accès au répertoire &amp;quot;config&amp;quot; avec une directive &amp;lt;Directory&amp;gt; puis que vous autorisez l&#039;accès au répertoire parent à l&#039;aide d&#039;une directive &amp;lt;Location&amp;gt;, le répertoire config deviendra accessible en lecture et ce pour deux raisons : l&#039;ordre d&#039;application des directives (Location appliqué après Directory) et le fait que les autorisations d&#039;accès s&#039;annulent les unes les autres (authmerging à off).&lt;br /&gt;
* &#039;&#039;&#039;De manière globale, préférez la directive &amp;lt;Directory&amp;gt; (et ses dérivés comme &amp;lt;files&amp;gt; &amp;lt;DirectoryMatch&amp;gt; ou &amp;lt;FilesMatch&amp;gt;) a la directive &amp;lt;Location&amp;gt; (et ses dérivés comme &amp;lt;LocationMatch&amp;gt;) quand vous sécurisez des chemins du système de fichier de votre machine.&#039;&#039;&#039; N&#039;utilisez &amp;lt;Location&amp;gt; que si vous définissez les règles d&#039;accès à une ressource qui ne se situe pas sur le système de fichier (page générée par une base de donnée par exemple)&lt;br /&gt;
* La configuration de apache sous debian est modulaire, pensez cependant à lire l&#039;ensemble de cette configuration, vous pourriez y trouver des surprises (y compris /etc/apache2/apache2.conf !). N&#039;oubliez pas non plus l&#039;ordre de lecture qui peut changer la manière dont les règles s&#039;appliquent : &amp;lt;code&amp;gt;/etc/apache2/apache2.conf&amp;lt;/code&amp;gt;, puis &amp;lt;code&amp;gt;conf-enabled/*.conf&amp;lt;/code&amp;gt; (ordre alphanumérique), puis &amp;lt;code&amp;gt;sites-enabled/*.conf&amp;lt;/code&amp;gt; (ordre alphanumérique).&lt;br /&gt;
* Faites attention aux directives Include fournies par certains paquets. Après installation, ils sont parfois automatiquement chargés, parfois il faudra passer par &amp;lt;code&amp;gt;a2enconf&amp;lt;/code&amp;gt;. Lisez toujours tout fichier que vous incluez à la configuration de apache ou d&#039;une vhost !&lt;br /&gt;
* De même, faites attentions à certains paquets qui ont tendance à ajouter par défaut un fichier de configuration et à l&#039;activer dans &amp;lt;code&amp;gt;conf-enabled/&amp;lt;/code&amp;gt;. C&#039;est par exemple le cas de phpmyadmin qui se retrouve activé par défaut via &amp;lt;code&amp;gt;conf-enabled/&amp;lt;/code&amp;gt; et qui est donc accessible globalement y compris si vous avez défini des virtualhosts avec des règles de sécurité pour phpmyadmin (qui seront donc caduques).&lt;br /&gt;
* Par défaut, debian autorise l&#039;accès à &amp;lt;code&amp;gt;/usr/share&amp;lt;/code&amp;gt;. Il peut être bon de désactiver globalement ce comportement en créant un fichier de configuration dans conf-enabled, quitte à réactiver l&#039;accès au cas par cas.&lt;br /&gt;
&lt;br /&gt;
== Exemple d&#039;erreur a ne pas faire ==&lt;br /&gt;
&lt;br /&gt;
* Dans cet exemple, on autorise l&#039;accès a /srv/http/, puis on interdit l&#039;accès a /srv/http/admin, puis on réautorise l&#039;accès a l&#039;ensemble de l&#039;arborescence avec la dernière directive Location. Résultat : votre interface d&#039;admin est accessible de l&#039;extérieur.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DocumentRoot /srv/http/&lt;br /&gt;
&amp;lt;Directory /srv/http/&amp;gt;&lt;br /&gt;
    require all granted&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;Directory /srv/http/admin&amp;gt;&lt;br /&gt;
    require all denied&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;Location /&amp;gt;&lt;br /&gt;
  require all granted&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Dans cet exemple, l&#039;utilisation de la directive location rendra accessible le fichier /srv/http/.htaccess malgré l&#039;utilisation d&#039;un FilesMatch antérieur.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FilesMatch &amp;quot;.htaccess&amp;quot;&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
DocumentRoot /srv/http/&lt;br /&gt;
&amp;lt;Location /&amp;gt;&lt;br /&gt;
  require all granted&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
==Configuration par défaut de apache==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/apache2/apache2.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
Le fichier de configuration par défaut de apache. Il défini quelques variables dont vous ne devriez, dans la majorité des cas, pas avoir à vous soucier. Plus important, c&#039;est grâce a lui que les autres fichiers de configuration sont chargés.&amp;lt;br&amp;gt;&lt;br /&gt;
A noter cependant, ce fichier défini par défaut la variable &amp;lt;code&amp;gt;AllowOverride None&amp;lt;/code&amp;gt; pour la totalité de votre arborescence linux (ce qui empêche un éventuel fichier &amp;lt;code&amp;gt;htaccess&amp;lt;/code&amp;gt; quelque part dans votre arborescence de modifier la configuration de sécurité d&#039;un dossier) et interdit l&#039;accès à toute votre arborescence à l&#039;exception de &amp;lt;code&amp;gt;/usr/share&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Evitez de faire des modifications dans ce fichier, nous le feront plus loin dans les fichiers de configuration indépendants.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/apache2/ports.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
Ce fichier se charge de définir les ports sur lesquels apache écoutera. Si vous souhaitez utiliser apache sur d&#039;autres ports sur 80 et 443, il faudra jouter des lignes &amp;lt;code&amp;gt;Listen&amp;lt;/code&amp;gt; pour chaque port.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/apache2/mods-enabled/*.conf&amp;lt;/code&amp;gt; : fichiers chargés dans l&#039;ordre numérique puis alphabétique&lt;br /&gt;
Charge les différents modules installés ainsi que leur configuration. Dans la majorité des cas, la configuration par défaut des modules est tout à fait convenable d&#039;un point de vue sécurité. &amp;lt;br&amp;gt;&lt;br /&gt;
Gardez cependant en mémoire les fichiers &amp;lt;code&amp;gt;mpm_event.conf&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;mpm_prefork.conf&amp;lt;/code&amp;gt; qui peuvent vous permettre de d&#039;optimiser les performances de apache.&lt;br /&gt;
A noter le fichier &amp;lt;code&amp;gt;status.conf&amp;lt;/code&amp;gt; qui restreint l&#039;utilisation de module status a l&#039;ip locale du serveur.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/apache2/conf-enabled/*.conf&amp;lt;/code&amp;gt; : fichiers chargés dans l&#039;ordre numérique puis alphabétique&lt;br /&gt;
** &amp;lt;code&amp;gt;security.conf&amp;lt;/code&amp;gt; : passez principalement la variable &amp;lt;code&amp;gt;ServerTokens prod&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;javascript-common.conf&amp;lt;/code&amp;gt; : fichier à surveiller étant donné qu&#039;il créé un alias global /javascript, cependant, l&#039;accès ne sera pas autorisé par défaut (voir plus loin)&lt;br /&gt;
** &amp;lt;code&amp;gt;serve-cgi-bin.conf&amp;lt;/code&amp;gt; : un trou de sécurité à part entière qui active les scripts cgi installés dans toutes les vhosts ... je vous conseille rapidement de désactiver ce script tout simplement et d&#039;activer les scripts cgi a la demande dans les vhosts le necessitant. Attention cependant, désactiver ce script rendra potentiellement inutilisable les configurations par défaut fournis avec certains paquets (smokeping par exemple). Pour le désactiver, rien de plus simple : &amp;lt;pre&amp;gt;a2disconf serve-cgi-bin.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration de sécurité en sus==&lt;br /&gt;
&lt;br /&gt;
Nous allons créer un fichier afin d&#039;interdire l&#039;accès à certains dossiers qu&#039;apache autorise en général par défaut. Notez qu&#039;activer ces options empêchera la configuration par défaut de nombreux paquets debian de fonctionner.&amp;lt;br&amp;gt;&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/apache2/conf-available/zzz-local-security.conf&amp;lt;/code&amp;gt; (le faire commencer par zzz devrait vous assurer qu&#039;il soit lu en dernier) contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Disable access to / by default&lt;br /&gt;
&amp;lt;Directory /&amp;gt;&lt;br /&gt;
        Options -Includes -IncludesNOEXEC -ExecCGI -Indexes -FollowSymLinks -SymLinksIfOwnerMatch -MultiViews&lt;br /&gt;
        AllowOverride None&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Disable access to /usr/share by default&lt;br /&gt;
&amp;lt;Directory /usr/share/&amp;gt;&lt;br /&gt;
        Options -Includes -IncludesNOEXEC -ExecCGI -Indexes -FollowSymLinks -SymLinksIfOwnerMatch -MultiViews&lt;br /&gt;
        AllowOverride None&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Disable access to /usr/lib/cgi-bin/ by default (will override conf-enabled/serve-cgi-bin.conf if enabled)&lt;br /&gt;
&amp;lt;Directory /usr/lib/cgi-bin/&amp;gt;&lt;br /&gt;
        Options -Includes -IncludesNOEXEC -ExecCGI -Indexes -FollowSymLinks -SymLinksIfOwnerMatch -MultiViews&lt;br /&gt;
        AllowOverride None&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Disable access to svn tree&lt;br /&gt;
&amp;lt;DirectoryMatch &amp;quot;/\.svn&amp;quot;&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/DirectoryMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Disable access to git tree&lt;br /&gt;
&amp;lt;DirectoryMatch &amp;quot;/\.git&amp;quot;&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/DirectoryMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Disable access to .htaccess and .htpasswd files&lt;br /&gt;
&amp;lt;FilesMatch &amp;quot;^\.ht&amp;quot;&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Disable access to htpasswd and htdigest files as some users don&#039;t make them hidden&lt;br /&gt;
&amp;lt;Files htpasswd&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Files&amp;gt;&lt;br /&gt;
&amp;lt;Files htdigest&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Disable access to .user.ini (used by php for local config)&lt;br /&gt;
&amp;lt;Files .user.ini&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Deny access to most php project configuration files (localsettings.php, config.php but also things like config.anything.php&lt;br /&gt;
&amp;lt;FilesMatch &amp;quot;(?i)^(config-db|wp-config|commonsettings|localsettings|config)(\.([a-z]|[0-9])+)*\.ph(ar|p|tml)$&amp;quot;&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Enforce a restricted open_basedir if php7 module is loaded&lt;br /&gt;
&amp;lt;IfModule php7_module&amp;gt;&lt;br /&gt;
        php_admin_value open_basedir /var/www/&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Enforce mpm-itk security if mpm itk is loaded&lt;br /&gt;
&amp;lt;IfModule mpm_itk_module&amp;gt;&lt;br /&gt;
        # first uid need to be 33 for www-data (default uid/gid, can be tuned)&lt;br /&gt;
        LimitUIDRange 33 2000&lt;br /&gt;
        LimitGIDRange 33 2000&lt;br /&gt;
        # Drop most root capabilities in the parent process.&lt;br /&gt;
        #  Instead run as the user given by the User/Group directives with some extra capabilities &lt;br /&gt;
        #  Somewhat more secure.&lt;br /&gt;
        EnableCapabilities on&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez noter que les sections concernant &amp;lt;code&amp;gt;/usr/lib/cgi-bin/&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;/usr/share/&amp;lt;/code&amp;gt; sont superflues étant données que la section concernant &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; couvre déjà ces répertoires. Il est néanmoins pratique d&#039;avoir prédéfini des règles pour ces deux dossiers car ce sont ceux pour lesquels vous risquez le plus d&#039;avoir à assouplir les règles de sécurité à l&#039;échelle du serveur entier.&lt;br /&gt;
&lt;br /&gt;
Activez le fichier de configuration avec &amp;lt;code&amp;gt;a2enconf&amp;lt;/code&amp;gt; : &lt;br /&gt;
&amp;lt;pre&amp;gt;a2enconf zzz-local-security.conf&lt;br /&gt;
/etc/init.d/apache2 reload&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Imbrications des directives==&lt;br /&gt;
&lt;br /&gt;
Pour la directive &amp;lt;code&amp;gt;Location&amp;lt;/code&amp;gt;, le mappage se fait du moins spécifique au plus spécifique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Location &amp;quot;/foo&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;Location &amp;quot;/foo/bar&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour les &amp;lt;code&amp;gt;Alias&amp;lt;/code&amp;gt; et les proxy (&amp;lt;code&amp;gt;ProxyPass&amp;lt;/code&amp;gt;), le mappage se fait dans le sens inverse, du plus spécifique au moins spécifique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Alias &amp;quot;/foo/bar&amp;quot; &amp;quot;/srv/www/uncommon/bar&amp;quot;&lt;br /&gt;
Alias &amp;quot;/foo&amp;quot; &amp;quot;/srv/www/common/foo&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ProxyPass &amp;quot;/special-area&amp;quot; &amp;quot;http://special.example.com&amp;quot;&lt;br /&gt;
ProxyPass &amp;quot;/&amp;quot; &amp;quot;http://www.example.com&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifier la configuration de apache==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apache2ctl configtest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=php via mod-php=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install libapache2-mod-php&lt;br /&gt;
a2enmod php7*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seul les mpm prefork et itk sont compatibles avec ce module php. C&#039;est le plus simple à configurer, mais les performances sont limitées.&lt;br /&gt;
&lt;br /&gt;
==Sécurité recommandée==&lt;br /&gt;
&lt;br /&gt;
* open_basedir avec une règle par défaut définie dans [[#Configuration_de_sécurité_en_sus|/etc/apache2/mods-enabled/zzz_localsecurity.conf]]&lt;br /&gt;
** Vous pouvez ensuite appliquer pour chaque vhost une règle spécifique avec &amp;lt;code&amp;gt;php_admin_value open_basedir /var/www/path1/:/var/www/path2/&amp;lt;/code&amp;gt;&lt;br /&gt;
* le mpm itk afin de pouvoir lancer les scripts php avec les permissions utilisateurs&lt;br /&gt;
** Notez que me mpm-itk impose d&#039;activer le module mpm-prefork (et ne permet pas d&#039;utiliser mpm-worker ou mpm-event)&lt;br /&gt;
&lt;br /&gt;
=php via php-fpm=&lt;br /&gt;
&lt;br /&gt;
Ce mode de fonctionnement est plus complexe, mais augmente les performances et permet d&#039;utiliser les mpm worker et event (eux même plus performants que prefork et itk).&amp;lt;br&amp;gt;&lt;br /&gt;
Le principe est d&#039;avoir un daemon php-fpm exécutant les scripts php. Apache s&#039;y connecte en fcgi au moyen d&#039;un socket.&amp;lt;br&amp;gt;&lt;br /&gt;
Chaque daemon php-fpm existe au sein d&#039;un pool qui a son propre socket. Pour des raisons de sécurité, il est conseillé d&#039;utiliser un pool (donc un socket) différent pour chaque site. En effet, si un script malveillant est exécuté au sein d&#039;un pool, il a le potentiel de contaminer l&#039;ensemble du pool et donc l&#039;ensemble des sites utilisant le pool. Il est également possible d&#039;attribuer un utilisateur/groupe spécifique à chaque pool ce qui compense l&#039;impossibilité d&#039;utiliser mpm-itk.&lt;br /&gt;
&lt;br /&gt;
Pour installer et activer php-fpm :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install php-fpm&lt;br /&gt;
a2enmod proxy_fcgi setenvif&lt;br /&gt;
a2enconf php7.4-fpm&lt;br /&gt;
/etc/init.d/apache2 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB : sous buster il faut également installer &amp;lt;code&amp;gt;libapache2-mod-fastcgi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous aviez installé le module php classique, désactivez le (il est utilisé par défaut) et passez également sur le mpm worker :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2dismod php7.4&lt;br /&gt;
a2dismod mpm_prefork mpm_itk&lt;br /&gt;
a2enmod mpm_worker&lt;br /&gt;
apt remove libapache2-mod-php7.4  libapache2-mod-php&lt;br /&gt;
/etc/init.d/apache2 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous faites des modifications, il faudra selon le cas relancer apache2, fpm, ou les deux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/apache2 restart&lt;br /&gt;
/etc/init.d/php7.4-fpm restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Passer des options de configuration à php-fpm==&lt;br /&gt;
&lt;br /&gt;
Il existe 5 manières de passer des options/arguments à php avec FPM.&lt;br /&gt;
&lt;br /&gt;
===php.ini===&lt;br /&gt;
&lt;br /&gt;
La première méthode consiste à modifier directement le fichier de configuration principal de php/fpm : &amp;lt;code&amp;gt;/etc/php/7.4/fpm/php.ini&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Les options appliquées le seront à l&#039;ensemble des scripts lancé par php/fpm et ce quelque soit le pool utilisé. &#039;&#039;&#039;Cela n&#039;est donc viable que pour une configuration &amp;quot;par défaut&amp;quot; valable pour l&#039;ensemble de votre serveur et quelque soit le site (ou que vous modifierez par d&#039;autre méthode décrites plus bas).&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===php-fpm.conf===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cette méthode n&#039;est pas recommandée&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle consiste à éditer directement le fichier &amp;lt;code&amp;gt;/etc/php/7.4/fpm/php-fpm.conf&amp;lt;/code&amp;gt; afin d&#039;y ajouter les &amp;lt;code&amp;gt;php_flag&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;php_value&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;php_admin_value&amp;lt;/code&amp;gt; souhaitées. Ces valeurs s&#039;appliqueront à l&#039;ensemble des pools.&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php_flag[display_errors] = off&lt;br /&gt;
php_admin_value[open_basedir] = /srv/admin/&lt;br /&gt;
php_value[date.timezone] = Europe/Paris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Via la configuration de apache ou .htaccess===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cette méthode n&#039;est pas recommandée&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Le principe est d&#039;utiliser des variables d&#039;environnement avec &amp;lt;code&amp;gt;SetEnv&amp;lt;/code&amp;gt; pour définir des valeurs de configuration.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# attention à bien respecter l&#039;absence d&#039;absence avant et après le signe =&lt;br /&gt;
SetEnv PHP_ADMIN_VALUE &amp;quot;open_basedir=/srv/admin/&amp;quot;&lt;br /&gt;
SetEnv PHP_VALUE &amp;quot;date.timezone=Europe/Paris&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce mode de fonctionnement est risqué et imprévisible, car les variables d&#039;environnement restent actives longtemps au sein d&#039;un même pool. Or, vous pourriez être amené, au sein d&#039;un même site, de modifier différemment la configuration php selon le contexte.&lt;br /&gt;
&lt;br /&gt;
Par exemple : host1 et host2 ; host1 a pas de valeur date.timezone, host2 a une valeur date.timezone définie par SetEnv&lt;br /&gt;
* On visite host1 : date.timezone = default from php.ini (logique)&lt;br /&gt;
* On visite host2 : date.timezone = appliqué via SetEnv (logique)&lt;br /&gt;
* On re-visite host1 : date.timezone = appliqué via SetEnv ! (comportement non voulu)&lt;br /&gt;
Dans le cas présent, une &amp;quot;ancienne&amp;quot; valeur de date.timezone est utilisée alors qu&#039;elle ne devrait pas l&#039;être, parce que vous avez chargé le site host1 avec le même thread du même pool que host2. Si par chance vous changez de thread (sur un thread qui n&#039;a pas encore chargé host1) vous aurez la valeur par défaut a nouveau.&lt;br /&gt;
&lt;br /&gt;
===pool.d/www.conf===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C&#039;est la méthode préférée pour définir une valeur appliquée à un site spécifique sans modifier le fichier php.ini.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Le principe est de créer, pour chaque site, un fichier de configuration dans &amp;lt;code&amp;gt;/etc/php/7.4/fpm/pool.d/&amp;lt;/code&amp;gt; définissant un socket séparé.&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode permet également de faire tourner les scripts php sous un autre utilisateur/groupe.&lt;br /&gt;
&lt;br /&gt;
Par défaut, après avoir activé php-fpm, apache est configuré par &amp;lt;code&amp;gt;/etc/apache2/conf-enabled/php7.4-fpm.conf&amp;lt;/code&amp;gt; pour utiliser le socket &amp;lt;code&amp;gt;/run/php/php7.4-fpm.sock&amp;lt;/code&amp;gt; lui même défini par &amp;lt;code&amp;gt;/etc/php/7.4/fpm/pool.d/www.conf&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple, copiez &amp;lt;code&amp;gt;/etc/php/7.4/fpm/pool.d/www.conf&amp;lt;/code&amp;gt; en tant que &amp;lt;code&amp;gt;/etc/php/7.4/fpm/pool.d/test.conf&amp;lt;/code&amp;gt; en modifiant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; on remplace [www] par [test] (c&#039;est le nom du pool)&lt;br /&gt;
[test]&lt;br /&gt;
user = foo&lt;br /&gt;
group = bar&lt;br /&gt;
listen = /run/php/php7.4-fpm-test.sock&lt;br /&gt;
php_value[date.timezone] = Europe/Paris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Après avoir redémarré php-fpm (/etc/init.d/php7.4-fpm restart), vous aurez un socket spécifique dans &amp;lt;code&amp;gt;/run/php/php7.4-fpm-test.sock&amp;lt;/code&amp;gt; permettant d&#039;accéder à ce pool, qui lui même executera les scripts sous l&#039;utilisateur &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; et le groupe &amp;lt;code&amp;gt;bar&amp;lt;/code&amp;gt; et en définissant la valeur date.timezone = Europe/Paris&lt;br /&gt;
&lt;br /&gt;
Ensuite, modifiez la configuration de la VirtualHost dont vous souhaitez adapter les valeurs php ou l&#039;utilisateur en y ajoutant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FilesMatch &amp;quot;.+\.ph(ar|p|tml)$&amp;quot;&amp;gt;&lt;br /&gt;
    SetHandler &amp;quot;proxy:unix:/run/php/php7.4-fpm-test.sock|fcgi://localhost&amp;quot;&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que cette méthode définie à la fois les valeurs Local et Master de php, et s&#039;harmonise bien avec la méthode suivante (qui ne modifie que les valeurs Local).&lt;br /&gt;
&lt;br /&gt;
===fichier .user.ini===&lt;br /&gt;
&lt;br /&gt;
Cette dernière méthode permet de définir uniquement les valeurs Local de php, a l&#039;inverse de la précédente qui définie les valeurs Local et Master.&amp;lt;br&amp;gt;&lt;br /&gt;
Elle consiste à créer, dans le path de votre documentroot, un fichier &amp;lt;code&amp;gt;.user.ini&amp;lt;/code&amp;gt; dans lequel vous pouvez adapter les valeurs de php. Vous pouvez utiliser plusieurs de ces fichiers dans plusieurs répertoires de votre documentroot, en gardant à l&#039;esprit qu&#039;une valeur définie dans le répertoire parent est appliqué dans le répertoire enfant (mais peut être redéfinie autrement). N&#039;oubliez pas que ce fichier doit pouvoir être lu par l&#039;utilisateur de php-fpm (par défaut www-data).&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
* dans &amp;lt;code&amp;gt;/srv/admin/.user.ini&amp;lt;/code&amp;gt; : &amp;lt;code&amp;gt;date.timezone = Europe/London&amp;lt;/code&amp;gt;&lt;br /&gt;
* dans &amp;lt;code&amp;gt;/srv/admin/main/.user.ini&amp;lt;/code&amp;gt; : &amp;lt;code&amp;gt;date.timezone = Europe/Paris&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les fichiers php exécuté dans /srv/admin/ auront la timezone définie à Europe/London et ceux dans /srv/admin/main/ auront la timezone Europe/Paris.&lt;br /&gt;
&lt;br /&gt;
Si la même valeur est définie dans le pool.d et dans un .user.ini, c&#039;est celle de .user.ini qui sera appliquée. Attention quand même à quelques spécificités, par exemple, la valeur de open_basedir locale ne peut-être définie que dans des sous-dossiers de la valeur globale de pool.d.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez désactiver cette fonctionnalité (par sécurité et si vous n&#039;en avez pas besoin) en vidant la variable suivante dans &amp;lt;code&amp;gt;/etc/php/7.4/php.ini&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;user_ini.filename =&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Attribuer un pool a une vhost==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PHP-FPM admin sock&lt;br /&gt;
&amp;lt;FilesMatch &amp;quot;.+\.ph(ar|p|tml)$&amp;quot;&amp;gt;&lt;br /&gt;
        SetHandler &amp;quot;proxy:unix:/run/php/php7.4-fpm-poolname.sock|fcgi://localhost&amp;quot;&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Note on PHP=&lt;br /&gt;
&lt;br /&gt;
* php_value : peut-être utilisée dans la configuration apache, dans un virtualhost, dans un .htaccess. Ne peut que modifier les paramètres &amp;lt;code&amp;gt;PHP_INI_ALL&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;PHP_INI_PERDIR&amp;lt;/code&amp;gt; défini sur https://www.php.net/manual/en/ini.list.php&lt;br /&gt;
* php_admin_value : peut-être utilisée uniquement dans la configuration apache et virtualhost, pas en .htaccess. Peut modifier tous les paramètres php.&lt;br /&gt;
&lt;br /&gt;
=http2=&lt;br /&gt;
&lt;br /&gt;
Ne fonctionnera qu&#039;avec mpm_event (ou éventuellement mpm_worker) ce qui implique soit de ne pas utiliser php (ni mpm_itk), soit de passer par fcgi / php-fpm :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2dismod mpm_prefork&lt;br /&gt;
a2enmod mpm_event&lt;br /&gt;
a2enmod http2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez vérifier si http2 fonctionne bien avec :&lt;br /&gt;
&amp;lt;pre&amp;gt; curl --http2 -sI http://url.tld/ -o /dev/null -w &#039;%{http_version}\n&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=la gestion des virtualhosts=&lt;br /&gt;
&lt;br /&gt;
L&#039;architecture de configuration modulaire de apache sous debian propose de créer les fichiers de configuration des vhosts dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; puis de les activer avec &amp;lt;code&amp;gt;a2ensite&amp;lt;/code&amp;gt; afin qu&#039;ils soient lus via le dossier &amp;lt;code&amp;gt;/etc/apache2/sites-enabled&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Je vous conseille cependant de créer, en plus, un dossier &amp;lt;code&amp;gt;/etc/apache2/sites-config&amp;lt;/code&amp;gt; afin de créer des fichiers de configuration pouvant être utilisé dans plusieurs vhosts (par exemple, le même site, l&#039;un en https, l&#039;autre non) :&lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir /etc/apache2/sites-config&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration recommandée dans toute virtualhost==&lt;br /&gt;
&lt;br /&gt;
===open_basedir===&lt;br /&gt;
open_basedir permet de limiter le champ d&#039;action des fichiers php en terme de dossiers. Etant donné que nous avons défini un open_basedir restrictif un peu plus haut, si vous utilisez php, il est obligatoire de rédéfinir open_basedir pour correspondre aux dossiers auxquelles vos fichiers php doivent pouvoir accéder. En général, c&#039;est tout simplement le même dossier que votre DocumentRoot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php_admin_value open_basedir /votre/documentroot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez spécificer plusieurs path séparés par des &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Notez qu&#039;il est important de faire terminer le path par un &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; (le path &amp;lt;code&amp;gt;/votre/documentroot&amp;lt;/code&amp;gt; est considéré comme &amp;lt;code&amp;gt;/votre/documentroot*&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===AllowOverride et .htaccess===&lt;br /&gt;
&lt;br /&gt;
AllowOverride permet de définir les règles autorisées à être modifiées par un fichier &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Notez que cette directive doit obligatoirement être définie dans un champ &amp;lt;Directory&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La configuration apache que nous avons vu plus tôt désactive complètement les fichiers &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; dans la totalité du système de fichier. Le problème de ce comportement est que les fichiers htaccess seront tout simplement ignoré, or, de nombreux projets utilisent les fichiers htaccess pour protéger de la lecture certains répertoires sensibles (fichiers de configurations, etc).&amp;lt;br&amp;gt;&lt;br /&gt;
Plusieurs options s&#039;offrent à vous :&lt;br /&gt;
* &#039;&#039;&#039;Si vous êtes certain que votre projet n&#039;utilise pas de fichiers .htaccess, la question ne se pose même pas, gardez les fichiers htaccess désactivés&#039;&#039;&#039; ! Même s&#039;ils sont pratiques, ils restent des fichiers relativement faciles à modifier (un peu de code foireux dans un module externe d&#039;un CMS par exemple) et offrent donc une sécurité bien moindre que les directives définies directement dans la configuration de votre virtualhost apache ! Ils ont également un impact sur les performances de apache (nécessité pour apache de remonter l&#039;arborescence à la recherche d&#039;un .htaccess à chaque requête).&amp;lt;br&amp;gt;&lt;br /&gt;
* Si votre projet utilise des fichiers .htaccess, il est possible d&#039;intégrer leur contenu à la configuration de votre virtualhost. Vous y gagniez ainsi en sécurité et en performances tout en limitant un vecteur d&#039;attaque.&lt;br /&gt;
* Si votre projet utilise des fichiers .htaccess mais qu&#039;ils ne peuvent pas être intégrés à la configuration de votre virtualhost (fichiers générés par un client dans le cadre d&#039;une activité de hosting, fichier dynamique généré par le projet lui même, etc), l&#039;idéal est de restreindre les capacités des fichiers .htaccess, ce que vous allons voir plus loin.&lt;br /&gt;
&amp;lt;br \&amp;gt;&lt;br /&gt;
Dans tous les cas :&lt;br /&gt;
* Évitez absolument d&#039;allowoverride fileinfo (permet de modifier l&#039;handler par défaut d&#039;un fichier)&lt;br /&gt;
* Évitez si possible d&#039;allowoverride options (car permet principalement d&#039;activer l&#039;execution CGI)&lt;br /&gt;
* Si vous êtes certains que votre projet n&#039;utilise pas de fichiers .htaccess ou que vous pouvez les intégrer à la configuration de la virtualhost :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AllowOverride none&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Le cas échéant, la configuration minimale suivante est recommandée, étant donné que de nombreux projets utilisent des fichiers .htaccess afin de limiter l&#039;accès a des répertoires :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AllowOverride Limit&lt;br /&gt;
AllowOverrideList Require&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si jamais le projet en question nécessite les directives d&#039;authentifications, on pourra définir comme cela :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AllowOverride Limit AuthConfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si vous faites de l&#039;hosting, de nombreux utilisateurs auront besoin des directives AuthConfig, Indexes, mais aussi des règles de redirections et de rewrite :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AllowOverride AuthConfig Indexes Limit Options=Indexes&lt;br /&gt;
AllowOverrideList Redirect RedirectMatch RedirectTemp RedirectPermanent RewriteEngine RewriteOptions RewriteBase RewriteCond RewriteRule ErrorDocument&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Gestion des index et autoindex===&lt;br /&gt;
====DirectoryIndex====&lt;br /&gt;
DirectoryIndex, c&#039;est ce petit machin qui permet (à condition d&#039;avoir le module &amp;lt;code&amp;gt;dir&amp;lt;/code&amp;gt; activé) à apache de recherche automatiquement un fichier d&#039;index (index.html, index.php, ...) pour afficher la page si le client n&#039;en précise pas (quand vous chargez https://www.online.net/ c&#039;est https://www.online.net/index.php qui est affiché). Si vous ne souhaitez pas bénéficier de cette fonctionnalité (par exemple si le client doit de toute façon charge une page précise sans passer par un quelconque index, désactivez le :&lt;br /&gt;
&amp;lt;pre&amp;gt;DirectoryIndex disabled&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====autoindex====&lt;br /&gt;
&amp;lt;code&amp;gt;mod_autoindex&amp;lt;/code&amp;gt; est un petit module qui permet à apache d&#039;afficher l&#039;arborescence fichier. Cela peut être très pratique, mais aussi délétère et peut rendre votre site plus facile à scanner. Si vous n&#039;en avez pas besoin, pensez à le désactiver ou a ne l&#039;activer que dans les dossiers que vous voulez rendre visible totalement au publiques. Notez que la configuration par défaut de apache laisse le module désactivé.&lt;br /&gt;
&amp;lt;pre&amp;gt;Options -Indexes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===AssignUserId===&lt;br /&gt;
Si vous avez chargé le module &amp;lt;code&amp;gt;mpm_itk&amp;lt;/code&amp;gt;, la directive &amp;lt;code&amp;gt;AssignUserId&amp;lt;/code&amp;gt; permet de changer l&#039;utilisateur du processus apache.&lt;br /&gt;
Par exemple si dans une vhost vous définissez : &lt;br /&gt;
&amp;lt;pre&amp;gt;AssignUserId foo bar&amp;lt;/pre&amp;gt;&lt;br /&gt;
Les processus apache de cette vhost seront lancés avec l&#039;utilisateur foo et le groupe bar. Si cette vhost créé des fichiers (avec php par exemple), ils seront donc attribué à l&#039;utilisateur foo et le groupe bar. Même principe pour la gestion des droits de lecture et d’exécution.&lt;br /&gt;
&lt;br /&gt;
==Ip-based vs Named-based virtualhosts==&lt;br /&gt;
&lt;br /&gt;
===Ip-based===&lt;br /&gt;
&lt;br /&gt;
Les virtualhosts par IP utilisent l&#039;adresse IP afin de déterminer quelle virtualhost doit répondre à une requête. Par conséquent, il faut disposer d&#039;adresses IP différentes pour chaque virtualhost. Cela est tout à fait réalisable en IPv6 si vous avez accès à un bloc, beaucoup moins en IPv4 depuis la pénurie d’adresses.&amp;lt;br&amp;gt;&lt;br /&gt;
Cela garde néanmoins un intérêt si vous souhaitez par exemple ne rendre accessible une vhost que sur une adresse IP spécifique dans le cadre d&#039;un serveur disposant de plusieurs adresses IPs (cas par exemple d&#039;une virtualhost d&#039;administration qui n&#039;écouterait que sur un port local/vpn).&lt;br /&gt;
&lt;br /&gt;
Notez que par défaut, apache bind sur les ports 80 et 443 sans définir IP (cf &amp;lt;code&amp;gt;/etc/apache2/ports.conf&amp;lt;/code&amp;gt;), ce qui signifie que apache servira des requêtes sur toutes les adresses IPs attribuées au serveur, et que chacune de ces adresses IPs pourra servir à définir une virtualhost ip-based et/ou named-based.&lt;br /&gt;
&lt;br /&gt;
Par exemple, si votre serveur possède les adresses IPs 192.168.10.1 et 192.168.20.2 et que vous définissez la virtualhost suivante :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost 192.168.20.2:80&amp;gt;&lt;br /&gt;
    ServerName admin.server.localdomain&lt;br /&gt;
    DocumentRoot /srv/admin/&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette virtualhost ne sera accessible que si le client se connecte sur le couple IP:Port 192.168.20.2:80. S&#039;il se connecte sur 192.168.10.1:80, il ne pourra jamais atteindre cette virtualhost et ce même s&#039;il spécifie via une en-tête HTTP qu&#039;il souhaite atteindre le serveur admin.server.localdomain.&amp;lt;br&amp;gt;&lt;br /&gt;
Notez qu&#039;on défini la directive &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; qui est capitale pour les named-based virtualhost, mais qui est également importante ici pour donner un nom au serveur (dans les faits, cette virtualhost est à la fois Ip-based et named-based). Si on ne défini aucune directive ServerName, le serveur utilisera par défaut le FQDN déduit du nom d&#039;hôte du système. Cette configuration sans ServerName explicite peut conduire à des erreurs de choix virtualhost à utiliser et est déconseillée.&lt;br /&gt;
&lt;br /&gt;
===name-based===&lt;br /&gt;
&lt;br /&gt;
Les virtualhosts par nom s&#039;appuient sur les informations transmises par les en-têtes HTTP des requêtes du client (spécifiquement, le Header: Host). Cela permet de définir plusieurs virtualhosts sur la même adresse IP.&amp;lt;br&amp;gt;&lt;br /&gt;
La sélection de la bonne virtualhost en fonction du nom ne se fait que parmi les virtualhosts pour lesquelles la correspondance avec la paire IP/Port est la plus exacte (best-match). La résolution basée sur l&#039;IP n&#039;est pas effectuée si on utilise un caractère générique (*, *:80 ou *:443) pour l&#039;adresse IP dans &#039;&#039;&#039;toutes&#039;&#039;&#039; les directives VirtualHost du serveur.&lt;br /&gt;
&lt;br /&gt;
Quand une requête arrive, après avoir choisi la VirtualHost présentant la meilleure correspondance IP:Port, si plusieurs VirtualHosts possèdent cette même paire IP:port, apache va comparer les directives ServerName et ServerAlias avec le nom de serveur présent dans la requête.&lt;br /&gt;
&lt;br /&gt;
Notez que (encore une fois), l&#039;ordre dans lequel apache charge les VirtualHost a son importance : si aucune directive ServerName ou ServerAlias ne correspond dans la liste des VirtualHost présentant la meilleure correspondance du couple IP:port, c&#039;est le premier VirtualHost de cette liste qui sera utilisé (serveur par défaut).&lt;br /&gt;
&lt;br /&gt;
===Exemples===&lt;br /&gt;
Considérant un serveur ayant attribué les 2 couples ip:ports 192.168.10.1:80 et 192.168.20.2:80 avec la configuration suivante :&lt;br /&gt;
* sites-enabled/000-default.conf : VirtualHost *:80 + ServerName localhost&lt;br /&gt;
* sites-enabled/admin.domain.tld.conf : VirtualHost 192.168.20.2:80 + ServerName admin.domain.tld&lt;br /&gt;
* sites-enabled/other.domain.tld.conf : VirtualHost *:80 + ServerName other.domain.tld&lt;br /&gt;
* sites-enabled/www.domain.tld.conf : VirtualHost *:80 + ServerName www.domain.tld&lt;br /&gt;
&lt;br /&gt;
Cette configuration sera chargée par apache dans cet ordre (alphanumérique).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous vous connectez sur 192.168.10.1:80 :&lt;br /&gt;
* Sans spécifier un header Host : le serveur sert le contenu de 000-default.conf&lt;br /&gt;
* En spécifiant un header Host 192.168.10.10 : le serveur sert le contenu de 000-default.conf&lt;br /&gt;
* En spécifiant un header Host undefined.domain.tld : le serveur sert le contenu de 000-default.conf&lt;br /&gt;
* En spécifiant un header Host admin.domain.tld : le serveur sert le contenu de 000-default.conf&lt;br /&gt;
* En spécifiant un header Host other.domain.tld : le serveur sert le contenu de other.domain.tld.conf&lt;br /&gt;
* En spécifiant un header Host www.domain.tld : le serveur sert le contenu de www.domain.tld.conf&lt;br /&gt;
&lt;br /&gt;
Si vous vous connectez sur 192.168.20.2:80 :&lt;br /&gt;
* Sans spécifier un header Host : le serveur sert le contenu de admin.domain.tld.conf&lt;br /&gt;
* En spécifiant un header Host (n&#039;importe lequel) : le serveur sert le contenu de admin.domain.tld.conf&lt;br /&gt;
&lt;br /&gt;
==Activer la vhost par défaut==&lt;br /&gt;
&lt;br /&gt;
Cette vhost sera utilisé pour toute requête n&#039;en matchant aucune autre.&lt;br /&gt;
&amp;lt;pre&amp;gt;a2ensite 000-default&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour la vhost SSL, c&#039;est un peu plus complexe.&amp;lt;br&amp;gt;&lt;br /&gt;
Commencez par ré-générez votre certificat machine :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make-ssl-cert generate-default-snakeoil --force-overwrite&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis renommez le fichier de configuration de la vhost par défaut SSL, et ce afin qu&#039;il soit toujours lu en premier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/000-default-ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis chargez le :&lt;br /&gt;
&amp;lt;pre&amp;gt;a2ensite 000-default-ssl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après tout ça, relancez apache :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/apache2 restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que ces vhosts ne spécifient pas de &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt;, il sera donc déduit du nom d&#039;hôte FQDN de la machine (&amp;lt;code&amp;gt;hostname -f&amp;lt;/code&amp;gt;).&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Attention, cela implique que vous ne créez aucune autre virtualhost ayant &amp;quot;simplement&amp;quot; le nom d&#039;hôte de la machine comme ServerName&#039;&#039;&#039;, sinon vous aurez 2 virtualhost avec le même nom d&#039;hôte, et la première chargée en configuration (ordre alphamumérique) sera celle présentée au client (mais pas forcément celle que vous souhaitez).&lt;br /&gt;
&lt;br /&gt;
==Activer server-status / vhost d&#039;admin==&lt;br /&gt;
&lt;br /&gt;
===Création d&#039;une vhost d&#039;administration===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost 192.168.10.1:80&amp;gt;&lt;br /&gt;
        ServerName admin.server.localdomain&lt;br /&gt;
        ServerAlias admin_alt.server.localdomain&lt;br /&gt;
        DocumentRoot /path/to/admin/interface/&lt;br /&gt;
        #AssignUserId www-data www-data # Décommentez uniquement si vous utilisez mpm-itk&lt;br /&gt;
        ErrorLog ${APACHE_LOG_DIR}/admin.server.localdomain.error.log&lt;br /&gt;
        CustomLog /var/log/apache2/admin.server.localdomain.access.log vhost_combined&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour sécuriser l&#039;accès, et n&#039;autorisant par exemple que les IPs 192.168.50.0/24 :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Directory /path/to/admin/interface/&amp;gt;&lt;br /&gt;
        Options +Indexes&lt;br /&gt;
        IndexOptions FancyIndexing FoldersFirst IgnoreCase NameWidth=* Charset=UTF-8 XHTML&lt;br /&gt;
        # Allow only VPN and nancy-lan&lt;br /&gt;
        Require all denied&lt;br /&gt;
        Require ip 192.168.50.0/24&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PhpMyAdmin====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# phpmyadmin installed from package&lt;br /&gt;
include /etc/phpmyadmin/apache.conf&lt;br /&gt;
&amp;lt;Directory /usr/share/phpmyadmin/&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
        Require ip 192.168.50.0/24&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;Directory /usr/share/phpmyadmin/setup&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;Directory /usr/share/phpmyadmin/templates&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;Directory /usr/share/phpmyadmin/libraries&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que &amp;lt;code&amp;gt;/etc/phpmyadmin/apache.conf&amp;lt;/code&amp;gt; défini les valeurs php &amp;lt;code&amp;gt;open_basedir&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;upload_tmp_dir&amp;lt;/code&amp;gt; pour PhpMyAdmin. Cela ne fonctionnera néanmoins qu&#039;avec mod-php, pas avec php-fpm (pour cela il faudra créer un fichier .user.ini à la racine de phpmyadmin dans &amp;lt;code&amp;gt;/usr/share/phpmyadmin/&amp;lt;/code&amp;gt; contenant &amp;lt;code&amp;gt;open_basedir =&amp;lt;/code&amp;gt; suivi des mêmes arguments que dans &amp;lt;code&amp;gt;/etc/phpmyadmin/apache.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====phpsysinfo====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# phpsysinfo from packages&lt;br /&gt;
alias /phpsysinfo /usr/share/phpsysinfo/&lt;br /&gt;
&amp;lt;Directory /usr/share/phpsysinfo/&amp;gt;&lt;br /&gt;
        &amp;lt;IfModule php7_module&amp;gt;&lt;br /&gt;
            php_admin_value open_basedir none&lt;br /&gt;
        &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
        Require ip 192.168.50.0/24&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====apache Status====&lt;br /&gt;
&lt;br /&gt;
Activez le module status &lt;br /&gt;
&amp;lt;pre&amp;gt;a2enmode status&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Observez le fichier &amp;lt;code&amp;gt;mods-enabled/status.conf&amp;lt;/code&amp;gt;. Par défaut il active les options de status sur tous les sites (en dehors d&#039;un virtualhost), mais avec une sécurité suffisante (requière une IP locale pour y accéder). Cette configuration est également nécessaire pour permettre à certains binaires d&#039;accéder au status d&#039;apache (par exemple &amp;lt;code&amp;gt;apache2ctl status&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Afin d&#039;éviter de modifier directement ce fichier de configuration, nous allons réactiver le module status dans votre vhost d&#039;admin :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apache status page at /server-status&lt;br /&gt;
# ensure mods-enabled/status.conf does not allow an insecured /server-status&lt;br /&gt;
# mods-enabled/status.conf needs to be kept activated for apache local process like apache2ctl status&lt;br /&gt;
&amp;lt;Location /main/server-status&amp;gt;&lt;br /&gt;
        SetHandler server-status&lt;br /&gt;
        Require all denied&lt;br /&gt;
        Require local&lt;br /&gt;
        Require ip 192.168.50.0/24&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que les valeurs &amp;lt;code&amp;gt;ExtendedStatus On&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;ProxyStatus On&amp;lt;/code&amp;gt; issue de &amp;lt;code&amp;gt;mods-enabled/status.conf&amp;lt;/code&amp;gt; sont appliqués automatiquement dans cette vhost également (vous ne pouvez pas les re-préciser dans une vhost).&lt;br /&gt;
&lt;br /&gt;
====server info====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Je déconseille d&#039;activer le module info en prod, car il donne beaucoup d&#039;informations sur la configuration du serveur, et en cas de faille (si quelqu&#039;un peut y accéder) cela peut être délétère.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Pour information, pour activer le module info : &lt;br /&gt;
&amp;lt;pre&amp;gt;a2enmode info&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier &amp;lt;code&amp;gt;mods-enabled/info.conf/&amp;lt;/code&amp;gt; active les options d&#039;information sur tous les sites (en dehors d&#039;un virtualhost), mais avec une sécurité renforcée (requière une IP locale pour y accéder).&lt;br /&gt;
&lt;br /&gt;
====FPM Status====&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez php-fpm :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# fpm status page&lt;br /&gt;
&amp;lt;Location &amp;quot;/fpm-status&amp;quot;&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
        Require ip 192.168.50.0/24&lt;br /&gt;
        ProxyPass &amp;quot;unix:/run/php/php7.4-fpm.sock|fcgi://localhost/fpm-status&amp;quot;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et dans &amp;lt;code&amp;gt;/etc/php/7.4/fpm/pool.d/&amp;lt;votre pool&amp;gt;.conf&amp;lt;/code&amp;gt; (par défaut dans le cas présent ça devrait être le pool &amp;lt;code&amp;gt;www&amp;lt;/code&amp;gt; !&lt;br /&gt;
&amp;lt;pre&amp;gt;pm.status_path = /fpm-status&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que vous pouvez créer autant de page fpm-status que de pool. Il faudra juste veiller à ce que le chemin (ici &amp;lt;code&amp;gt;/fpm-status&amp;lt;/code&amp;gt; soit différent pour chaque pool (il faut donc éditer la configuration de apache et celle du pool).&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;information : https://www.php.net/manual/fr/fpm.status.php&lt;br /&gt;
&lt;br /&gt;
=Authentification=&lt;br /&gt;
&lt;br /&gt;
==Authentification Basic==&lt;br /&gt;
&lt;br /&gt;
* C&#039;est le mode d&#039;authentification HTTP le plus fréquement utilisé&lt;br /&gt;
* le mot-de-passe est stocké de manière cryptée sur le serveur&lt;br /&gt;
* le client envoi le mot-de-passe en clair au serveur (en base64 en fait, mais c&#039;est du pareil au même), ce qui rend ce mode non sécurisé si la connexion n&#039;est pas effectuée en HTTPS&lt;br /&gt;
* Préférez la création d&#039;un fichier nommé &amp;lt;code&amp;gt;.htpasswd&amp;lt;/code&amp;gt; étant donné que ces fichiers sont interdits de lecture par la configuration par défaut de apache (/etc/apache2/apache2.conf). Dans la mesure du possible, ne créez des fichiers &amp;lt;code&amp;gt;.htpasswd&amp;lt;/code&amp;gt; que dans un dossier de toute façon inaccessible au serveur web (donc en dehors du documentroot et de tout alias). En effet, les directives d&#039;autorisations de apache d&#039;une section supérieure annulent les directives d&#039;autorisations précédentes de apache (&amp;lt;code&amp;gt;AuthMerging&amp;lt;/code&amp;gt; à off par défaut), donc si vous autorisez l&#039;accès complet à un repertoire (require all granted), vous risquez de supplanter la directive interdisant l&#039;accès aux fichiers protégés&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Création du fichier contenant les mots-de-passe :&lt;br /&gt;
&amp;lt;pre&amp;gt;htpasswd -c .htpasswd pfoo&lt;br /&gt;
New password: &lt;br /&gt;
Re-type new password: &lt;br /&gt;
Adding password for user pfoo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un nouvel utilisateur, ou modifier le mot-de-passe d&#039;un utilisateur existant, la commande est la même sans l&#039;argument &amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;htpasswd .htpasswd pfoo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier &amp;lt;code&amp;gt;.htgroup&amp;lt;/code&amp;gt; permet de rassembler plusieurs utilisateurs dans un même groupe. Il suffit de créer un fichier (.htgroup) texte contenant par exemple (pour créer un groupe admin et un groupe user) :&lt;br /&gt;
&amp;lt;pre&amp;gt;admin: pfoo plop&lt;br /&gt;
user: blah&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour que tous les utilisateurs valides (qui sont présent dans le .htpasswd) aient accès au dossier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AuthUserFile /path/to/.htpasswd&lt;br /&gt;
AuthName &amp;quot;Accès Restreint&amp;quot;&lt;br /&gt;
AuthType Basic&lt;br /&gt;
require valid-user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Accès pour l&#039;utilisateur pfoo et l&#039;ensemble du groupe user uniquement :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AuthUserFile /path/to/.htpasswd&lt;br /&gt;
AuthGroupFile /path/to/.htgroup&lt;br /&gt;
AuthName &amp;quot;Accès Restreint&amp;quot;&lt;br /&gt;
AuthType Basic&lt;br /&gt;
require user pfoo&lt;br /&gt;
require group user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Authentification Digest==&lt;br /&gt;
* le mot-de-passe est stocké en clair sur le serveur ce qui le rend plus vulnérable à une fuite de données côté serveur (&amp;lt;small&amp;gt;en clair ou sous forme condensée, sans salage possible, donc un pirate obtenant l&#039;accès au fichier contenant la base de donnée digest aura un accès complet aux ressources du serveur et sans étape de décryptage)&amp;lt;/small&amp;gt;&lt;br /&gt;
* le client envoi le mot-de-passe hashé avec un nonce et un realm, ce qui assure que le mot-de-passe ne circule jamais en clair sur le réseau et ce même sans HTTPS&lt;br /&gt;
* Préférez la création d&#039;un fichier nommé .htpasswd étant donné que ces fichiers sont interdits de lecture par la configuration par défaut de apache (/etc/apache2/apache2.conf)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;outil htdigest permet de créer un fichier .htpasswd utilisant cette méthode d&#039;authentification. Vous pouvez entrer ce que vous voulez en realm.&lt;br /&gt;
&amp;lt;pre&amp;gt;htdigest -c .htpasswd &amp;quot;votre realm&amp;quot; username&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un nouvel utilisateur, ou modifier le mot-de-passe d&#039;un utilisateur existant, la commande est la même sans l&#039;argument &amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;htdigest .htpasswd &amp;quot;votre realm&amp;quot; pfoo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier &amp;lt;code&amp;gt;.htgroup&amp;lt;/code&amp;gt; permet de rassembler plusieurs utilisateurs dans un même groupe. Il suffit de créer un fichier (.htgroup) texte contenant par exemple (pour créer un groupe admin et un groupe user) :&lt;br /&gt;
&amp;lt;pre&amp;gt;admin: pfoo plop&lt;br /&gt;
user: blah&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour que tous les utilisateurs valides (qui sont présent dans le .htpasswd) aient accès au dossier : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AuthType Digest&lt;br /&gt;
AuthName &amp;quot;votre realm&amp;quot;&lt;br /&gt;
AuthDigestDomain /&lt;br /&gt;
AuthDigestProvider file&lt;br /&gt;
AuthUserFile /path/to/.htpasswd&lt;br /&gt;
AuthGroupFile /path/to/.htgroup&lt;br /&gt;
Require valid-user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Accès pour l&#039;utilisateur pfoo et l&#039;ensemble du groupe user uniquement : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AuthType Digest&lt;br /&gt;
AuthName &amp;quot;votre realm&amp;quot;&lt;br /&gt;
AuthDigestDomain /&lt;br /&gt;
AuthDigestProvider file&lt;br /&gt;
AuthUserFile /path/to/.htpasswd&lt;br /&gt;
AuthGroupFile /path/to/.htgroup&lt;br /&gt;
require user pfoo&lt;br /&gt;
require group user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=HTTPS=&lt;br /&gt;
&lt;br /&gt;
==Redirection HTTP vers HTTPs==&lt;br /&gt;
&lt;br /&gt;
* Solution avec le module Rewrite, applicable à la fois dans une vhost écoutant sur les port 80 ou 443 :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteCond %{HTTPS} off&lt;br /&gt;
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il peut être intéressant de ne pas rewrite certaine URLs. Dans l&#039;exemple ci dessous, les urls en lien avec les challenges letsencrypt :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Solution avec le module Alias, à ne surtout pas appliquer dans une vhost écoutant sur le port 443 (redirection infinie) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Redirect permanent / https://domain.tld/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tests de sécurité divers=&lt;br /&gt;
https://observatory.mozilla.org/ &amp;lt;br&amp;gt;&lt;br /&gt;
https://tls.imirhil.fr/ &amp;lt;br&amp;gt;&lt;br /&gt;
https://www.ssllabs.com/ssltest/&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Installation_de_configuration_du_serveur_web_Apache_2.4_sous_Debian_Bullseye&amp;diff=4431</id>
		<title>Installation de configuration du serveur web Apache 2.4 sous Debian Bullseye</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Installation_de_configuration_du_serveur_web_Apache_2.4_sous_Debian_Bullseye&amp;diff=4431"/>
		<updated>2026-04-18T15:06:00Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* http2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
&lt;br /&gt;
=Les différents mpm=&lt;br /&gt;
&lt;br /&gt;
Les différents mpm de apache sont fournis sous forme de modules et ce dès l&#039;installation du paquet &amp;lt;code&amp;gt;apache2&amp;lt;/code&amp;gt;. La seule exception reste le mpm ITK qui nécessite l&#039;installation du paquet &amp;lt;code&amp;gt;libapache2-mpm-itk&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install apache2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Considérations de sécurité=&lt;br /&gt;
&lt;br /&gt;
* Même si les directives sont lues dans l&#039;ordre dans lequel vous les inscrivez, certaines restent appliqués avant les autres (cf https://httpd.apache.org/docs/2.4/sections.html#merging). L&#039;ordre d&#039;application de apache est  &amp;lt;Directory&amp;gt; -&amp;gt; htaccess -&amp;gt; &amp;lt;DirectoryMatch&amp;gt; -&amp;gt; &amp;lt;files&amp;gt; et &amp;lt;filesmatch&amp;gt; -&amp;gt; &amp;lt;Location&amp;gt; et &amp;lt;LocationMatch&amp;gt;. La dernière directive appliquée prendra le dessus sur les autres.&lt;br /&gt;
* Encore une fois, prenez garder à la manière dont les directives se chaînent. Cela peut conduire à de graves défaut de sécurité étant donné que la directive [http://httpd.apache.org/docs/2.4/fr/mod/mod_authz_core.html#authmerging authmerging] est par défaut à off dans apache. En gros, si vous interdisez l&#039;accès au répertoire &amp;quot;config&amp;quot; avec une directive &amp;lt;Directory&amp;gt; puis que vous autorisez l&#039;accès au répertoire parent à l&#039;aide d&#039;une directive &amp;lt;Location&amp;gt;, le répertoire config deviendra accessible en lecture et ce pour deux raisons : l&#039;ordre d&#039;application des directives (Location appliqué après Directory) et le fait que les autorisations d&#039;accès s&#039;annulent les unes les autres (authmerging à off).&lt;br /&gt;
* &#039;&#039;&#039;De manière globale, préférez la directive &amp;lt;Directory&amp;gt; (et ses dérivés comme &amp;lt;files&amp;gt; &amp;lt;DirectoryMatch&amp;gt; ou &amp;lt;FilesMatch&amp;gt;) a la directive &amp;lt;Location&amp;gt; (et ses dérivés comme &amp;lt;LocationMatch&amp;gt;) quand vous sécurisez des chemins du système de fichier de votre machine.&#039;&#039;&#039; N&#039;utilisez &amp;lt;Location&amp;gt; que si vous définissez les règles d&#039;accès à une ressource qui ne se situe pas sur le système de fichier (page générée par une base de donnée par exemple)&lt;br /&gt;
* La configuration de apache sous debian est modulaire, pensez cependant à lire l&#039;ensemble de cette configuration, vous pourriez y trouver des surprises (y compris /etc/apache2/apache2.conf !). N&#039;oubliez pas non plus l&#039;ordre de lecture qui peut changer la manière dont les règles s&#039;appliquent : &amp;lt;code&amp;gt;/etc/apache2/apache2.conf&amp;lt;/code&amp;gt;, puis &amp;lt;code&amp;gt;conf-enabled/*.conf&amp;lt;/code&amp;gt; (ordre alphanumérique), puis &amp;lt;code&amp;gt;sites-enabled/*.conf&amp;lt;/code&amp;gt; (ordre alphanumérique).&lt;br /&gt;
* Faites attention aux directives Include fournies par certains paquets. Après installation, ils sont parfois automatiquement chargés, parfois il faudra passer par &amp;lt;code&amp;gt;a2enconf&amp;lt;/code&amp;gt;. Lisez toujours tout fichier que vous incluez à la configuration de apache ou d&#039;une vhost !&lt;br /&gt;
* De même, faites attentions à certains paquets qui ont tendance à ajouter par défaut un fichier de configuration et à l&#039;activer dans &amp;lt;code&amp;gt;conf-enabled/&amp;lt;/code&amp;gt;. C&#039;est par exemple le cas de phpmyadmin qui se retrouve activé par défaut via &amp;lt;code&amp;gt;conf-enabled/&amp;lt;/code&amp;gt; et qui est donc accessible globalement y compris si vous avez défini des virtualhosts avec des règles de sécurité pour phpmyadmin (qui seront donc caduques).&lt;br /&gt;
* Par défaut, debian autorise l&#039;accès à &amp;lt;code&amp;gt;/usr/share&amp;lt;/code&amp;gt;. Il peut être bon de désactiver globalement ce comportement en créant un fichier de configuration dans conf-enabled, quitte à réactiver l&#039;accès au cas par cas.&lt;br /&gt;
&lt;br /&gt;
== Exemple d&#039;erreur a ne pas faire ==&lt;br /&gt;
&lt;br /&gt;
* Dans cet exemple, on autorise l&#039;accès a /srv/http/, puis on interdit l&#039;accès a /srv/http/admin, puis on réautorise l&#039;accès a l&#039;ensemble de l&#039;arborescence avec la dernière directive Location. Résultat : votre interface d&#039;admin est accessible de l&#039;extérieur.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DocumentRoot /srv/http/&lt;br /&gt;
&amp;lt;Directory /srv/http/&amp;gt;&lt;br /&gt;
    require all granted&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;Directory /srv/http/admin&amp;gt;&lt;br /&gt;
    require all denied&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;Location /&amp;gt;&lt;br /&gt;
  require all granted&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Dans cet exemple, l&#039;utilisation de la directive location rendra accessible le fichier /srv/http/.htaccess malgré l&#039;utilisation d&#039;un FilesMatch antérieur.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FilesMatch &amp;quot;.htaccess&amp;quot;&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
DocumentRoot /srv/http/&lt;br /&gt;
&amp;lt;Location /&amp;gt;&lt;br /&gt;
  require all granted&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
==Configuration par défaut de apache==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/apache2/apache2.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
Le fichier de configuration par défaut de apache. Il défini quelques variables dont vous ne devriez, dans la majorité des cas, pas avoir à vous soucier. Plus important, c&#039;est grâce a lui que les autres fichiers de configuration sont chargés.&amp;lt;br&amp;gt;&lt;br /&gt;
A noter cependant, ce fichier défini par défaut la variable &amp;lt;code&amp;gt;AllowOverride None&amp;lt;/code&amp;gt; pour la totalité de votre arborescence linux (ce qui empêche un éventuel fichier &amp;lt;code&amp;gt;htaccess&amp;lt;/code&amp;gt; quelque part dans votre arborescence de modifier la configuration de sécurité d&#039;un dossier) et interdit l&#039;accès à toute votre arborescence à l&#039;exception de &amp;lt;code&amp;gt;/usr/share&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Evitez de faire des modifications dans ce fichier, nous le feront plus loin dans les fichiers de configuration indépendants.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/apache2/ports.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
Ce fichier se charge de définir les ports sur lesquels apache écoutera. Si vous souhaitez utiliser apache sur d&#039;autres ports sur 80 et 443, il faudra jouter des lignes &amp;lt;code&amp;gt;Listen&amp;lt;/code&amp;gt; pour chaque port.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/apache2/mods-enabled/*.conf&amp;lt;/code&amp;gt; : fichiers chargés dans l&#039;ordre numérique puis alphabétique&lt;br /&gt;
Charge les différents modules installés ainsi que leur configuration. Dans la majorité des cas, la configuration par défaut des modules est tout à fait convenable d&#039;un point de vue sécurité. &amp;lt;br&amp;gt;&lt;br /&gt;
Gardez cependant en mémoire les fichiers &amp;lt;code&amp;gt;mpm_event.conf&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;mpm_prefork.conf&amp;lt;/code&amp;gt; qui peuvent vous permettre de d&#039;optimiser les performances de apache.&lt;br /&gt;
A noter le fichier &amp;lt;code&amp;gt;status.conf&amp;lt;/code&amp;gt; qui restreint l&#039;utilisation de module status a l&#039;ip locale du serveur.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/apache2/conf-enabled/*.conf&amp;lt;/code&amp;gt; : fichiers chargés dans l&#039;ordre numérique puis alphabétique&lt;br /&gt;
** &amp;lt;code&amp;gt;security.conf&amp;lt;/code&amp;gt; : passez principalement la variable &amp;lt;code&amp;gt;ServerTokens prod&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;javascript-common.conf&amp;lt;/code&amp;gt; : fichier à surveiller étant donné qu&#039;il créé un alias global /javascript, cependant, l&#039;accès ne sera pas autorisé par défaut (voir plus loin)&lt;br /&gt;
** &amp;lt;code&amp;gt;serve-cgi-bin.conf&amp;lt;/code&amp;gt; : un trou de sécurité à part entière qui active les scripts cgi installés dans toutes les vhosts ... je vous conseille rapidement de désactiver ce script tout simplement et d&#039;activer les scripts cgi a la demande dans les vhosts le necessitant. Attention cependant, désactiver ce script rendra potentiellement inutilisable les configurations par défaut fournis avec certains paquets (smokeping par exemple). Pour le désactiver, rien de plus simple : &amp;lt;pre&amp;gt;a2disconf serve-cgi-bin.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration de sécurité en sus==&lt;br /&gt;
&lt;br /&gt;
Nous allons créer un fichier afin d&#039;interdire l&#039;accès à certains dossiers qu&#039;apache autorise en général par défaut. Notez qu&#039;activer ces options empêchera la configuration par défaut de nombreux paquets debian de fonctionner.&amp;lt;br&amp;gt;&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/apache2/conf-available/zzz-local-security.conf&amp;lt;/code&amp;gt; (le faire commencer par zzz devrait vous assurer qu&#039;il soit lu en dernier) contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Disable access to / by default&lt;br /&gt;
&amp;lt;Directory /&amp;gt;&lt;br /&gt;
        Options -Includes -IncludesNOEXEC -ExecCGI -Indexes -FollowSymLinks -SymLinksIfOwnerMatch -MultiViews&lt;br /&gt;
        AllowOverride None&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Disable access to /usr/share by default&lt;br /&gt;
&amp;lt;Directory /usr/share/&amp;gt;&lt;br /&gt;
        Options -Includes -IncludesNOEXEC -ExecCGI -Indexes -FollowSymLinks -SymLinksIfOwnerMatch -MultiViews&lt;br /&gt;
        AllowOverride None&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Disable access to /usr/lib/cgi-bin/ by default (will override conf-enabled/serve-cgi-bin.conf if enabled)&lt;br /&gt;
&amp;lt;Directory /usr/lib/cgi-bin/&amp;gt;&lt;br /&gt;
        Options -Includes -IncludesNOEXEC -ExecCGI -Indexes -FollowSymLinks -SymLinksIfOwnerMatch -MultiViews&lt;br /&gt;
        AllowOverride None&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Disable access to svn tree&lt;br /&gt;
&amp;lt;DirectoryMatch &amp;quot;/\.svn&amp;quot;&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/DirectoryMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Disable access to git tree&lt;br /&gt;
&amp;lt;DirectoryMatch &amp;quot;/\.git&amp;quot;&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/DirectoryMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Disable access to .htaccess and .htpasswd files&lt;br /&gt;
&amp;lt;FilesMatch &amp;quot;^\.ht&amp;quot;&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Disable access to htpasswd and htdigest files as some users don&#039;t make them hidden&lt;br /&gt;
&amp;lt;Files htpasswd&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Files&amp;gt;&lt;br /&gt;
&amp;lt;Files htdigest&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Disable access to .user.ini (used by php for local config)&lt;br /&gt;
&amp;lt;Files .user.ini&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Files&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Deny access to most php project configuration files (localsettings.php, config.php but also things like config.anything.php&lt;br /&gt;
&amp;lt;FilesMatch &amp;quot;(?i)^(config-db|wp-config|commonsettings|localsettings|config)(\.([a-z]|[0-9])+)*\.ph(ar|p|tml)$&amp;quot;&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Enforce a restricted open_basedir if php7 module is loaded&lt;br /&gt;
&amp;lt;IfModule php7_module&amp;gt;&lt;br /&gt;
        php_admin_value open_basedir /var/www/&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Enforce mpm-itk security if mpm itk is loaded&lt;br /&gt;
&amp;lt;IfModule mpm_itk_module&amp;gt;&lt;br /&gt;
        # first uid need to be 33 for www-data (default uid/gid, can be tuned)&lt;br /&gt;
        LimitUIDRange 33 2000&lt;br /&gt;
        LimitGIDRange 33 2000&lt;br /&gt;
        # Drop most root capabilities in the parent process.&lt;br /&gt;
        #  Instead run as the user given by the User/Group directives with some extra capabilities &lt;br /&gt;
        #  Somewhat more secure.&lt;br /&gt;
        EnableCapabilities on&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez noter que les sections concernant &amp;lt;code&amp;gt;/usr/lib/cgi-bin/&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;/usr/share/&amp;lt;/code&amp;gt; sont superflues étant données que la section concernant &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; couvre déjà ces répertoires. Il est néanmoins pratique d&#039;avoir prédéfini des règles pour ces deux dossiers car ce sont ceux pour lesquels vous risquez le plus d&#039;avoir à assouplir les règles de sécurité à l&#039;échelle du serveur entier.&lt;br /&gt;
&lt;br /&gt;
Activez le fichier de configuration avec &amp;lt;code&amp;gt;a2enconf&amp;lt;/code&amp;gt; : &lt;br /&gt;
&amp;lt;pre&amp;gt;a2enconf zzz-local-security.conf&lt;br /&gt;
/etc/init.d/apache2 reload&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Imbrications des directives==&lt;br /&gt;
&lt;br /&gt;
Pour la directive &amp;lt;code&amp;gt;Location&amp;lt;/code&amp;gt;, le mappage se fait du moins spécifique au plus spécifique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Location &amp;quot;/foo&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;Location &amp;quot;/foo/bar&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour les &amp;lt;code&amp;gt;Alias&amp;lt;/code&amp;gt; et les proxy (&amp;lt;code&amp;gt;ProxyPass&amp;lt;/code&amp;gt;), le mappage se fait dans le sens inverse, du plus spécifique au moins spécifique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Alias &amp;quot;/foo/bar&amp;quot; &amp;quot;/srv/www/uncommon/bar&amp;quot;&lt;br /&gt;
Alias &amp;quot;/foo&amp;quot; &amp;quot;/srv/www/common/foo&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ProxyPass &amp;quot;/special-area&amp;quot; &amp;quot;http://special.example.com&amp;quot;&lt;br /&gt;
ProxyPass &amp;quot;/&amp;quot; &amp;quot;http://www.example.com&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifier la configuration de apache==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apache2ctl configtest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=php via mod-php=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install libapache2-mod-php&lt;br /&gt;
a2enmod php7*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Seul les mpm prefork et itk sont compatibles avec ce module php. C&#039;est le plus simple à configurer, mais les performances sont limitées.&lt;br /&gt;
&lt;br /&gt;
==Sécurité recommandée==&lt;br /&gt;
&lt;br /&gt;
* open_basedir avec une règle par défaut définie dans [[#Configuration_de_sécurité_en_sus|/etc/apache2/mods-enabled/zzz_localsecurity.conf]]&lt;br /&gt;
** Vous pouvez ensuite appliquer pour chaque vhost une règle spécifique avec &amp;lt;code&amp;gt;php_admin_value open_basedir /var/www/path1/:/var/www/path2/&amp;lt;/code&amp;gt;&lt;br /&gt;
* le mpm itk afin de pouvoir lancer les scripts php avec les permissions utilisateurs&lt;br /&gt;
** Notez que me mpm-itk impose d&#039;activer le module mpm-prefork (et ne permet pas d&#039;utiliser mpm-worker ou mpm-event)&lt;br /&gt;
&lt;br /&gt;
=php via php-fpm=&lt;br /&gt;
&lt;br /&gt;
Ce mode de fonctionnement est plus complexe, mais augmente les performances et permet d&#039;utiliser les mpm worker et event (eux même plus performants que prefork et itk).&amp;lt;br&amp;gt;&lt;br /&gt;
Le principe est d&#039;avoir un daemon php-fpm exécutant les scripts php. Apache s&#039;y connecte en fcgi au moyen d&#039;un socket.&amp;lt;br&amp;gt;&lt;br /&gt;
Chaque daemon php-fpm existe au sein d&#039;un pool qui a son propre socket. Pour des raisons de sécurité, il est conseillé d&#039;utiliser un pool (donc un socket) différent pour chaque site. En effet, si un script malveillant est exécuté au sein d&#039;un pool, il a le potentiel de contaminer l&#039;ensemble du pool et donc l&#039;ensemble des sites utilisant le pool. Il est également possible d&#039;attribuer un utilisateur/groupe spécifique à chaque pool ce qui compense l&#039;impossibilité d&#039;utiliser mpm-itk.&lt;br /&gt;
&lt;br /&gt;
Pour installer et activer php-fpm :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install php-fpm&lt;br /&gt;
a2enmod proxy_fcgi setenvif&lt;br /&gt;
a2enconf php7.4-fpm&lt;br /&gt;
/etc/init.d/apache2 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NB : sous buster il faut également installer &amp;lt;code&amp;gt;libapache2-mod-fastcgi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous aviez installé le module php classique, désactivez le (il est utilisé par défaut) et passez également sur le mpm worker :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2dismod php7.4&lt;br /&gt;
a2dismod mpm_prefork mpm_itk&lt;br /&gt;
a2enmod mpm_worker&lt;br /&gt;
apt remove libapache2-mod-php7.4  libapache2-mod-php&lt;br /&gt;
/etc/init.d/apache2 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous faites des modifications, il faudra selon le cas relancer apache2, fpm, ou les deux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/apache2 restart&lt;br /&gt;
/etc/init.d/php7.4-fpm restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Passer des options de configuration à php-fpm==&lt;br /&gt;
&lt;br /&gt;
Il existe 5 manières de passer des options/arguments à php avec FPM.&lt;br /&gt;
&lt;br /&gt;
===php.ini===&lt;br /&gt;
&lt;br /&gt;
La première méthode consiste à modifier directement le fichier de configuration principal de php/fpm : &amp;lt;code&amp;gt;/etc/php/7.4/fpm/php.ini&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Les options appliquées le seront à l&#039;ensemble des scripts lancé par php/fpm et ce quelque soit le pool utilisé. &#039;&#039;&#039;Cela n&#039;est donc viable que pour une configuration &amp;quot;par défaut&amp;quot; valable pour l&#039;ensemble de votre serveur et quelque soit le site (ou que vous modifierez par d&#039;autre méthode décrites plus bas).&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===php-fpm.conf===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cette méthode n&#039;est pas recommandée&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Elle consiste à éditer directement le fichier &amp;lt;code&amp;gt;/etc/php/7.4/fpm/php-fpm.conf&amp;lt;/code&amp;gt; afin d&#039;y ajouter les &amp;lt;code&amp;gt;php_flag&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;php_value&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;php_admin_value&amp;lt;/code&amp;gt; souhaitées. Ces valeurs s&#039;appliqueront à l&#039;ensemble des pools.&lt;br /&gt;
&lt;br /&gt;
Exemples :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php_flag[display_errors] = off&lt;br /&gt;
php_admin_value[open_basedir] = /srv/admin/&lt;br /&gt;
php_value[date.timezone] = Europe/Paris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Via la configuration de apache ou .htaccess===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cette méthode n&#039;est pas recommandée&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Le principe est d&#039;utiliser des variables d&#039;environnement avec &amp;lt;code&amp;gt;SetEnv&amp;lt;/code&amp;gt; pour définir des valeurs de configuration.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# attention à bien respecter l&#039;absence d&#039;absence avant et après le signe =&lt;br /&gt;
SetEnv PHP_ADMIN_VALUE &amp;quot;open_basedir=/srv/admin/&amp;quot;&lt;br /&gt;
SetEnv PHP_VALUE &amp;quot;date.timezone=Europe/Paris&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce mode de fonctionnement est risqué et imprévisible, car les variables d&#039;environnement restent actives longtemps au sein d&#039;un même pool. Or, vous pourriez être amené, au sein d&#039;un même site, de modifier différemment la configuration php selon le contexte.&lt;br /&gt;
&lt;br /&gt;
Par exemple : host1 et host2 ; host1 a pas de valeur date.timezone, host2 a une valeur date.timezone définie par SetEnv&lt;br /&gt;
* On visite host1 : date.timezone = default from php.ini (logique)&lt;br /&gt;
* On visite host2 : date.timezone = appliqué via SetEnv (logique)&lt;br /&gt;
* On re-visite host1 : date.timezone = appliqué via SetEnv ! (comportement non voulu)&lt;br /&gt;
Dans le cas présent, une &amp;quot;ancienne&amp;quot; valeur de date.timezone est utilisée alors qu&#039;elle ne devrait pas l&#039;être, parce que vous avez chargé le site host1 avec le même thread du même pool que host2. Si par chance vous changez de thread (sur un thread qui n&#039;a pas encore chargé host1) vous aurez la valeur par défaut a nouveau.&lt;br /&gt;
&lt;br /&gt;
===pool.d/www.conf===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C&#039;est la méthode préférée pour définir une valeur appliquée à un site spécifique sans modifier le fichier php.ini.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Le principe est de créer, pour chaque site, un fichier de configuration dans &amp;lt;code&amp;gt;/etc/php/7.4/fpm/pool.d/&amp;lt;/code&amp;gt; définissant un socket séparé.&amp;lt;br&amp;gt;&lt;br /&gt;
Cette méthode permet également de faire tourner les scripts php sous un autre utilisateur/groupe.&lt;br /&gt;
&lt;br /&gt;
Par défaut, après avoir activé php-fpm, apache est configuré par &amp;lt;code&amp;gt;/etc/apache2/conf-enabled/php7.4-fpm.conf&amp;lt;/code&amp;gt; pour utiliser le socket &amp;lt;code&amp;gt;/run/php/php7.4-fpm.sock&amp;lt;/code&amp;gt; lui même défini par &amp;lt;code&amp;gt;/etc/php/7.4/fpm/pool.d/www.conf&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple, copiez &amp;lt;code&amp;gt;/etc/php/7.4/fpm/pool.d/www.conf&amp;lt;/code&amp;gt; en tant que &amp;lt;code&amp;gt;/etc/php/7.4/fpm/pool.d/test.conf&amp;lt;/code&amp;gt; en modifiant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; on remplace [www] par [test] (c&#039;est le nom du pool)&lt;br /&gt;
[test]&lt;br /&gt;
user = foo&lt;br /&gt;
group = bar&lt;br /&gt;
listen = /run/php/php7.4-fpm-test.sock&lt;br /&gt;
php_value[date.timezone] = Europe/Paris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Après avoir redémarré php-fpm (/etc/init.d/php7.4-fpm restart), vous aurez un socket spécifique dans &amp;lt;code&amp;gt;/run/php/php7.4-fpm-test.sock&amp;lt;/code&amp;gt; permettant d&#039;accéder à ce pool, qui lui même executera les scripts sous l&#039;utilisateur &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; et le groupe &amp;lt;code&amp;gt;bar&amp;lt;/code&amp;gt; et en définissant la valeur date.timezone = Europe/Paris&lt;br /&gt;
&lt;br /&gt;
Ensuite, modifiez la configuration de la VirtualHost dont vous souhaitez adapter les valeurs php ou l&#039;utilisateur en y ajoutant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FilesMatch &amp;quot;.+\.ph(ar|p|tml)$&amp;quot;&amp;gt;&lt;br /&gt;
    SetHandler &amp;quot;proxy:unix:/run/php/php7.4-fpm-test.sock|fcgi://localhost&amp;quot;&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que cette méthode définie à la fois les valeurs Local et Master de php, et s&#039;harmonise bien avec la méthode suivante (qui ne modifie que les valeurs Local).&lt;br /&gt;
&lt;br /&gt;
===fichier .user.ini===&lt;br /&gt;
&lt;br /&gt;
Cette dernière méthode permet de définir uniquement les valeurs Local de php, a l&#039;inverse de la précédente qui définie les valeurs Local et Master.&amp;lt;br&amp;gt;&lt;br /&gt;
Elle consiste à créer, dans le path de votre documentroot, un fichier &amp;lt;code&amp;gt;.user.ini&amp;lt;/code&amp;gt; dans lequel vous pouvez adapter les valeurs de php. Vous pouvez utiliser plusieurs de ces fichiers dans plusieurs répertoires de votre documentroot, en gardant à l&#039;esprit qu&#039;une valeur définie dans le répertoire parent est appliqué dans le répertoire enfant (mais peut être redéfinie autrement). N&#039;oubliez pas que ce fichier doit pouvoir être lu par l&#039;utilisateur de php-fpm (par défaut www-data).&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
* dans &amp;lt;code&amp;gt;/srv/admin/.user.ini&amp;lt;/code&amp;gt; : &amp;lt;code&amp;gt;date.timezone = Europe/London&amp;lt;/code&amp;gt;&lt;br /&gt;
* dans &amp;lt;code&amp;gt;/srv/admin/main/.user.ini&amp;lt;/code&amp;gt; : &amp;lt;code&amp;gt;date.timezone = Europe/Paris&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les fichiers php exécuté dans /srv/admin/ auront la timezone définie à Europe/London et ceux dans /srv/admin/main/ auront la timezone Europe/Paris.&lt;br /&gt;
&lt;br /&gt;
Si la même valeur est définie dans le pool.d et dans un .user.ini, c&#039;est celle de .user.ini qui sera appliquée. Attention quand même à quelques spécificités, par exemple, la valeur de open_basedir locale ne peut-être définie que dans des sous-dossiers de la valeur globale de pool.d.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez désactiver cette fonctionnalité (par sécurité et si vous n&#039;en avez pas besoin) en vidant la variable suivante dans &amp;lt;code&amp;gt;/etc/php/7.4/php.ini&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;user_ini.filename =&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Attribuer un pool a une vhost==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PHP-FPM admin sock&lt;br /&gt;
&amp;lt;FilesMatch &amp;quot;.+\.ph(ar|p|tml)$&amp;quot;&amp;gt;&lt;br /&gt;
        SetHandler &amp;quot;proxy:unix:/run/php/php7.4-fpm-poolname.sock|fcgi://localhost&amp;quot;&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Note on PHP=&lt;br /&gt;
&lt;br /&gt;
* php_value : peut-être utilisée dans la configuration apache, dans un virtualhost, dans un .htaccess. Ne peut que modifier les paramètres &amp;lt;code&amp;gt;PHP_INI_ALL&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;PHP_INI_PERDIR&amp;lt;/code&amp;gt; défini sur https://www.php.net/manual/en/ini.list.php&lt;br /&gt;
* php_admin_value : peut-être utilisée uniquement dans la configuration apache et virtualhost, pas en .htaccess. Peut modifier tous les paramètres php.&lt;br /&gt;
&lt;br /&gt;
=http2=&lt;br /&gt;
&lt;br /&gt;
Ne fonctionnera qu&#039;avec mpm_event (ou éventuellement mpm_worker) ce qui implique soit de ne pas utiliser php (ni mpm_itk), soit de passer par fcgi / php-fpm :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2dismod mpm_prefork&lt;br /&gt;
a2enmod mpm_event&lt;br /&gt;
a2enmod http2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=la gestion des virtualhosts=&lt;br /&gt;
&lt;br /&gt;
L&#039;architecture de configuration modulaire de apache sous debian propose de créer les fichiers de configuration des vhosts dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; puis de les activer avec &amp;lt;code&amp;gt;a2ensite&amp;lt;/code&amp;gt; afin qu&#039;ils soient lus via le dossier &amp;lt;code&amp;gt;/etc/apache2/sites-enabled&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Je vous conseille cependant de créer, en plus, un dossier &amp;lt;code&amp;gt;/etc/apache2/sites-config&amp;lt;/code&amp;gt; afin de créer des fichiers de configuration pouvant être utilisé dans plusieurs vhosts (par exemple, le même site, l&#039;un en https, l&#039;autre non) :&lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir /etc/apache2/sites-config&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration recommandée dans toute virtualhost==&lt;br /&gt;
&lt;br /&gt;
===open_basedir===&lt;br /&gt;
open_basedir permet de limiter le champ d&#039;action des fichiers php en terme de dossiers. Etant donné que nous avons défini un open_basedir restrictif un peu plus haut, si vous utilisez php, il est obligatoire de rédéfinir open_basedir pour correspondre aux dossiers auxquelles vos fichiers php doivent pouvoir accéder. En général, c&#039;est tout simplement le même dossier que votre DocumentRoot&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
php_admin_value open_basedir /votre/documentroot/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez spécificer plusieurs path séparés par des &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Notez qu&#039;il est important de faire terminer le path par un &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; (le path &amp;lt;code&amp;gt;/votre/documentroot&amp;lt;/code&amp;gt; est considéré comme &amp;lt;code&amp;gt;/votre/documentroot*&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===AllowOverride et .htaccess===&lt;br /&gt;
&lt;br /&gt;
AllowOverride permet de définir les règles autorisées à être modifiées par un fichier &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Notez que cette directive doit obligatoirement être définie dans un champ &amp;lt;Directory&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
La configuration apache que nous avons vu plus tôt désactive complètement les fichiers &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt; dans la totalité du système de fichier. Le problème de ce comportement est que les fichiers htaccess seront tout simplement ignoré, or, de nombreux projets utilisent les fichiers htaccess pour protéger de la lecture certains répertoires sensibles (fichiers de configurations, etc).&amp;lt;br&amp;gt;&lt;br /&gt;
Plusieurs options s&#039;offrent à vous :&lt;br /&gt;
* &#039;&#039;&#039;Si vous êtes certain que votre projet n&#039;utilise pas de fichiers .htaccess, la question ne se pose même pas, gardez les fichiers htaccess désactivés&#039;&#039;&#039; ! Même s&#039;ils sont pratiques, ils restent des fichiers relativement faciles à modifier (un peu de code foireux dans un module externe d&#039;un CMS par exemple) et offrent donc une sécurité bien moindre que les directives définies directement dans la configuration de votre virtualhost apache ! Ils ont également un impact sur les performances de apache (nécessité pour apache de remonter l&#039;arborescence à la recherche d&#039;un .htaccess à chaque requête).&amp;lt;br&amp;gt;&lt;br /&gt;
* Si votre projet utilise des fichiers .htaccess, il est possible d&#039;intégrer leur contenu à la configuration de votre virtualhost. Vous y gagniez ainsi en sécurité et en performances tout en limitant un vecteur d&#039;attaque.&lt;br /&gt;
* Si votre projet utilise des fichiers .htaccess mais qu&#039;ils ne peuvent pas être intégrés à la configuration de votre virtualhost (fichiers générés par un client dans le cadre d&#039;une activité de hosting, fichier dynamique généré par le projet lui même, etc), l&#039;idéal est de restreindre les capacités des fichiers .htaccess, ce que vous allons voir plus loin.&lt;br /&gt;
&amp;lt;br \&amp;gt;&lt;br /&gt;
Dans tous les cas :&lt;br /&gt;
* Évitez absolument d&#039;allowoverride fileinfo (permet de modifier l&#039;handler par défaut d&#039;un fichier)&lt;br /&gt;
* Évitez si possible d&#039;allowoverride options (car permet principalement d&#039;activer l&#039;execution CGI)&lt;br /&gt;
* Si vous êtes certains que votre projet n&#039;utilise pas de fichiers .htaccess ou que vous pouvez les intégrer à la configuration de la virtualhost :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AllowOverride none&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Le cas échéant, la configuration minimale suivante est recommandée, étant donné que de nombreux projets utilisent des fichiers .htaccess afin de limiter l&#039;accès a des répertoires :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AllowOverride Limit&lt;br /&gt;
AllowOverrideList Require&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si jamais le projet en question nécessite les directives d&#039;authentifications, on pourra définir comme cela :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AllowOverride Limit AuthConfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si vous faites de l&#039;hosting, de nombreux utilisateurs auront besoin des directives AuthConfig, Indexes, mais aussi des règles de redirections et de rewrite :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AllowOverride AuthConfig Indexes Limit Options=Indexes&lt;br /&gt;
AllowOverrideList Redirect RedirectMatch RedirectTemp RedirectPermanent RewriteEngine RewriteOptions RewriteBase RewriteCond RewriteRule ErrorDocument&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Gestion des index et autoindex===&lt;br /&gt;
====DirectoryIndex====&lt;br /&gt;
DirectoryIndex, c&#039;est ce petit machin qui permet (à condition d&#039;avoir le module &amp;lt;code&amp;gt;dir&amp;lt;/code&amp;gt; activé) à apache de recherche automatiquement un fichier d&#039;index (index.html, index.php, ...) pour afficher la page si le client n&#039;en précise pas (quand vous chargez https://www.online.net/ c&#039;est https://www.online.net/index.php qui est affiché). Si vous ne souhaitez pas bénéficier de cette fonctionnalité (par exemple si le client doit de toute façon charge une page précise sans passer par un quelconque index, désactivez le :&lt;br /&gt;
&amp;lt;pre&amp;gt;DirectoryIndex disabled&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====autoindex====&lt;br /&gt;
&amp;lt;code&amp;gt;mod_autoindex&amp;lt;/code&amp;gt; est un petit module qui permet à apache d&#039;afficher l&#039;arborescence fichier. Cela peut être très pratique, mais aussi délétère et peut rendre votre site plus facile à scanner. Si vous n&#039;en avez pas besoin, pensez à le désactiver ou a ne l&#039;activer que dans les dossiers que vous voulez rendre visible totalement au publiques. Notez que la configuration par défaut de apache laisse le module désactivé.&lt;br /&gt;
&amp;lt;pre&amp;gt;Options -Indexes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===AssignUserId===&lt;br /&gt;
Si vous avez chargé le module &amp;lt;code&amp;gt;mpm_itk&amp;lt;/code&amp;gt;, la directive &amp;lt;code&amp;gt;AssignUserId&amp;lt;/code&amp;gt; permet de changer l&#039;utilisateur du processus apache.&lt;br /&gt;
Par exemple si dans une vhost vous définissez : &lt;br /&gt;
&amp;lt;pre&amp;gt;AssignUserId foo bar&amp;lt;/pre&amp;gt;&lt;br /&gt;
Les processus apache de cette vhost seront lancés avec l&#039;utilisateur foo et le groupe bar. Si cette vhost créé des fichiers (avec php par exemple), ils seront donc attribué à l&#039;utilisateur foo et le groupe bar. Même principe pour la gestion des droits de lecture et d’exécution.&lt;br /&gt;
&lt;br /&gt;
==Ip-based vs Named-based virtualhosts==&lt;br /&gt;
&lt;br /&gt;
===Ip-based===&lt;br /&gt;
&lt;br /&gt;
Les virtualhosts par IP utilisent l&#039;adresse IP afin de déterminer quelle virtualhost doit répondre à une requête. Par conséquent, il faut disposer d&#039;adresses IP différentes pour chaque virtualhost. Cela est tout à fait réalisable en IPv6 si vous avez accès à un bloc, beaucoup moins en IPv4 depuis la pénurie d’adresses.&amp;lt;br&amp;gt;&lt;br /&gt;
Cela garde néanmoins un intérêt si vous souhaitez par exemple ne rendre accessible une vhost que sur une adresse IP spécifique dans le cadre d&#039;un serveur disposant de plusieurs adresses IPs (cas par exemple d&#039;une virtualhost d&#039;administration qui n&#039;écouterait que sur un port local/vpn).&lt;br /&gt;
&lt;br /&gt;
Notez que par défaut, apache bind sur les ports 80 et 443 sans définir IP (cf &amp;lt;code&amp;gt;/etc/apache2/ports.conf&amp;lt;/code&amp;gt;), ce qui signifie que apache servira des requêtes sur toutes les adresses IPs attribuées au serveur, et que chacune de ces adresses IPs pourra servir à définir une virtualhost ip-based et/ou named-based.&lt;br /&gt;
&lt;br /&gt;
Par exemple, si votre serveur possède les adresses IPs 192.168.10.1 et 192.168.20.2 et que vous définissez la virtualhost suivante :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost 192.168.20.2:80&amp;gt;&lt;br /&gt;
    ServerName admin.server.localdomain&lt;br /&gt;
    DocumentRoot /srv/admin/&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cette virtualhost ne sera accessible que si le client se connecte sur le couple IP:Port 192.168.20.2:80. S&#039;il se connecte sur 192.168.10.1:80, il ne pourra jamais atteindre cette virtualhost et ce même s&#039;il spécifie via une en-tête HTTP qu&#039;il souhaite atteindre le serveur admin.server.localdomain.&amp;lt;br&amp;gt;&lt;br /&gt;
Notez qu&#039;on défini la directive &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt; qui est capitale pour les named-based virtualhost, mais qui est également importante ici pour donner un nom au serveur (dans les faits, cette virtualhost est à la fois Ip-based et named-based). Si on ne défini aucune directive ServerName, le serveur utilisera par défaut le FQDN déduit du nom d&#039;hôte du système. Cette configuration sans ServerName explicite peut conduire à des erreurs de choix virtualhost à utiliser et est déconseillée.&lt;br /&gt;
&lt;br /&gt;
===name-based===&lt;br /&gt;
&lt;br /&gt;
Les virtualhosts par nom s&#039;appuient sur les informations transmises par les en-têtes HTTP des requêtes du client (spécifiquement, le Header: Host). Cela permet de définir plusieurs virtualhosts sur la même adresse IP.&amp;lt;br&amp;gt;&lt;br /&gt;
La sélection de la bonne virtualhost en fonction du nom ne se fait que parmi les virtualhosts pour lesquelles la correspondance avec la paire IP/Port est la plus exacte (best-match). La résolution basée sur l&#039;IP n&#039;est pas effectuée si on utilise un caractère générique (*, *:80 ou *:443) pour l&#039;adresse IP dans &#039;&#039;&#039;toutes&#039;&#039;&#039; les directives VirtualHost du serveur.&lt;br /&gt;
&lt;br /&gt;
Quand une requête arrive, après avoir choisi la VirtualHost présentant la meilleure correspondance IP:Port, si plusieurs VirtualHosts possèdent cette même paire IP:port, apache va comparer les directives ServerName et ServerAlias avec le nom de serveur présent dans la requête.&lt;br /&gt;
&lt;br /&gt;
Notez que (encore une fois), l&#039;ordre dans lequel apache charge les VirtualHost a son importance : si aucune directive ServerName ou ServerAlias ne correspond dans la liste des VirtualHost présentant la meilleure correspondance du couple IP:port, c&#039;est le premier VirtualHost de cette liste qui sera utilisé (serveur par défaut).&lt;br /&gt;
&lt;br /&gt;
===Exemples===&lt;br /&gt;
Considérant un serveur ayant attribué les 2 couples ip:ports 192.168.10.1:80 et 192.168.20.2:80 avec la configuration suivante :&lt;br /&gt;
* sites-enabled/000-default.conf : VirtualHost *:80 + ServerName localhost&lt;br /&gt;
* sites-enabled/admin.domain.tld.conf : VirtualHost 192.168.20.2:80 + ServerName admin.domain.tld&lt;br /&gt;
* sites-enabled/other.domain.tld.conf : VirtualHost *:80 + ServerName other.domain.tld&lt;br /&gt;
* sites-enabled/www.domain.tld.conf : VirtualHost *:80 + ServerName www.domain.tld&lt;br /&gt;
&lt;br /&gt;
Cette configuration sera chargée par apache dans cet ordre (alphanumérique).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous vous connectez sur 192.168.10.1:80 :&lt;br /&gt;
* Sans spécifier un header Host : le serveur sert le contenu de 000-default.conf&lt;br /&gt;
* En spécifiant un header Host 192.168.10.10 : le serveur sert le contenu de 000-default.conf&lt;br /&gt;
* En spécifiant un header Host undefined.domain.tld : le serveur sert le contenu de 000-default.conf&lt;br /&gt;
* En spécifiant un header Host admin.domain.tld : le serveur sert le contenu de 000-default.conf&lt;br /&gt;
* En spécifiant un header Host other.domain.tld : le serveur sert le contenu de other.domain.tld.conf&lt;br /&gt;
* En spécifiant un header Host www.domain.tld : le serveur sert le contenu de www.domain.tld.conf&lt;br /&gt;
&lt;br /&gt;
Si vous vous connectez sur 192.168.20.2:80 :&lt;br /&gt;
* Sans spécifier un header Host : le serveur sert le contenu de admin.domain.tld.conf&lt;br /&gt;
* En spécifiant un header Host (n&#039;importe lequel) : le serveur sert le contenu de admin.domain.tld.conf&lt;br /&gt;
&lt;br /&gt;
==Activer la vhost par défaut==&lt;br /&gt;
&lt;br /&gt;
Cette vhost sera utilisé pour toute requête n&#039;en matchant aucune autre.&lt;br /&gt;
&amp;lt;pre&amp;gt;a2ensite 000-default&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour la vhost SSL, c&#039;est un peu plus complexe.&amp;lt;br&amp;gt;&lt;br /&gt;
Commencez par ré-générez votre certificat machine :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
make-ssl-cert generate-default-snakeoil --force-overwrite&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis renommez le fichier de configuration de la vhost par défaut SSL, et ce afin qu&#039;il soit toujours lu en premier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/000-default-ssl.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis chargez le :&lt;br /&gt;
&amp;lt;pre&amp;gt;a2ensite 000-default-ssl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après tout ça, relancez apache :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/apache2 restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que ces vhosts ne spécifient pas de &amp;lt;code&amp;gt;ServerName&amp;lt;/code&amp;gt;, il sera donc déduit du nom d&#039;hôte FQDN de la machine (&amp;lt;code&amp;gt;hostname -f&amp;lt;/code&amp;gt;).&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Attention, cela implique que vous ne créez aucune autre virtualhost ayant &amp;quot;simplement&amp;quot; le nom d&#039;hôte de la machine comme ServerName&#039;&#039;&#039;, sinon vous aurez 2 virtualhost avec le même nom d&#039;hôte, et la première chargée en configuration (ordre alphamumérique) sera celle présentée au client (mais pas forcément celle que vous souhaitez).&lt;br /&gt;
&lt;br /&gt;
==Activer server-status / vhost d&#039;admin==&lt;br /&gt;
&lt;br /&gt;
===Création d&#039;une vhost d&#039;administration===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost 192.168.10.1:80&amp;gt;&lt;br /&gt;
        ServerName admin.server.localdomain&lt;br /&gt;
        ServerAlias admin_alt.server.localdomain&lt;br /&gt;
        DocumentRoot /path/to/admin/interface/&lt;br /&gt;
        #AssignUserId www-data www-data # Décommentez uniquement si vous utilisez mpm-itk&lt;br /&gt;
        ErrorLog ${APACHE_LOG_DIR}/admin.server.localdomain.error.log&lt;br /&gt;
        CustomLog /var/log/apache2/admin.server.localdomain.access.log vhost_combined&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour sécuriser l&#039;accès, et n&#039;autorisant par exemple que les IPs 192.168.50.0/24 :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Directory /path/to/admin/interface/&amp;gt;&lt;br /&gt;
        Options +Indexes&lt;br /&gt;
        IndexOptions FancyIndexing FoldersFirst IgnoreCase NameWidth=* Charset=UTF-8 XHTML&lt;br /&gt;
        # Allow only VPN and nancy-lan&lt;br /&gt;
        Require all denied&lt;br /&gt;
        Require ip 192.168.50.0/24&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PhpMyAdmin====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# phpmyadmin installed from package&lt;br /&gt;
include /etc/phpmyadmin/apache.conf&lt;br /&gt;
&amp;lt;Directory /usr/share/phpmyadmin/&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
        Require ip 192.168.50.0/24&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;Directory /usr/share/phpmyadmin/setup&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;Directory /usr/share/phpmyadmin/templates&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;Directory /usr/share/phpmyadmin/libraries&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que &amp;lt;code&amp;gt;/etc/phpmyadmin/apache.conf&amp;lt;/code&amp;gt; défini les valeurs php &amp;lt;code&amp;gt;open_basedir&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;upload_tmp_dir&amp;lt;/code&amp;gt; pour PhpMyAdmin. Cela ne fonctionnera néanmoins qu&#039;avec mod-php, pas avec php-fpm (pour cela il faudra créer un fichier .user.ini à la racine de phpmyadmin dans &amp;lt;code&amp;gt;/usr/share/phpmyadmin/&amp;lt;/code&amp;gt; contenant &amp;lt;code&amp;gt;open_basedir =&amp;lt;/code&amp;gt; suivi des mêmes arguments que dans &amp;lt;code&amp;gt;/etc/phpmyadmin/apache.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====phpsysinfo====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# phpsysinfo from packages&lt;br /&gt;
alias /phpsysinfo /usr/share/phpsysinfo/&lt;br /&gt;
&amp;lt;Directory /usr/share/phpsysinfo/&amp;gt;&lt;br /&gt;
        &amp;lt;IfModule php7_module&amp;gt;&lt;br /&gt;
            php_admin_value open_basedir none&lt;br /&gt;
        &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
        Require ip 192.168.50.0/24&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====apache Status====&lt;br /&gt;
&lt;br /&gt;
Activez le module status &lt;br /&gt;
&amp;lt;pre&amp;gt;a2enmode status&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Observez le fichier &amp;lt;code&amp;gt;mods-enabled/status.conf&amp;lt;/code&amp;gt;. Par défaut il active les options de status sur tous les sites (en dehors d&#039;un virtualhost), mais avec une sécurité suffisante (requière une IP locale pour y accéder). Cette configuration est également nécessaire pour permettre à certains binaires d&#039;accéder au status d&#039;apache (par exemple &amp;lt;code&amp;gt;apache2ctl status&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Afin d&#039;éviter de modifier directement ce fichier de configuration, nous allons réactiver le module status dans votre vhost d&#039;admin :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apache status page at /server-status&lt;br /&gt;
# ensure mods-enabled/status.conf does not allow an insecured /server-status&lt;br /&gt;
# mods-enabled/status.conf needs to be kept activated for apache local process like apache2ctl status&lt;br /&gt;
&amp;lt;Location /main/server-status&amp;gt;&lt;br /&gt;
        SetHandler server-status&lt;br /&gt;
        Require all denied&lt;br /&gt;
        Require local&lt;br /&gt;
        Require ip 192.168.50.0/24&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que les valeurs &amp;lt;code&amp;gt;ExtendedStatus On&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;ProxyStatus On&amp;lt;/code&amp;gt; issue de &amp;lt;code&amp;gt;mods-enabled/status.conf&amp;lt;/code&amp;gt; sont appliqués automatiquement dans cette vhost également (vous ne pouvez pas les re-préciser dans une vhost).&lt;br /&gt;
&lt;br /&gt;
====server info====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Je déconseille d&#039;activer le module info en prod, car il donne beaucoup d&#039;informations sur la configuration du serveur, et en cas de faille (si quelqu&#039;un peut y accéder) cela peut être délétère.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Pour information, pour activer le module info : &lt;br /&gt;
&amp;lt;pre&amp;gt;a2enmode info&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier &amp;lt;code&amp;gt;mods-enabled/info.conf/&amp;lt;/code&amp;gt; active les options d&#039;information sur tous les sites (en dehors d&#039;un virtualhost), mais avec une sécurité renforcée (requière une IP locale pour y accéder).&lt;br /&gt;
&lt;br /&gt;
====FPM Status====&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez php-fpm :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# fpm status page&lt;br /&gt;
&amp;lt;Location &amp;quot;/fpm-status&amp;quot;&amp;gt;&lt;br /&gt;
        Require all denied&lt;br /&gt;
        Require ip 192.168.50.0/24&lt;br /&gt;
        ProxyPass &amp;quot;unix:/run/php/php7.4-fpm.sock|fcgi://localhost/fpm-status&amp;quot;&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et dans &amp;lt;code&amp;gt;/etc/php/7.4/fpm/pool.d/&amp;lt;votre pool&amp;gt;.conf&amp;lt;/code&amp;gt; (par défaut dans le cas présent ça devrait être le pool &amp;lt;code&amp;gt;www&amp;lt;/code&amp;gt; !&lt;br /&gt;
&amp;lt;pre&amp;gt;pm.status_path = /fpm-status&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que vous pouvez créer autant de page fpm-status que de pool. Il faudra juste veiller à ce que le chemin (ici &amp;lt;code&amp;gt;/fpm-status&amp;lt;/code&amp;gt; soit différent pour chaque pool (il faut donc éditer la configuration de apache et celle du pool).&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;information : https://www.php.net/manual/fr/fpm.status.php&lt;br /&gt;
&lt;br /&gt;
=Authentification=&lt;br /&gt;
&lt;br /&gt;
==Authentification Basic==&lt;br /&gt;
&lt;br /&gt;
* C&#039;est le mode d&#039;authentification HTTP le plus fréquement utilisé&lt;br /&gt;
* le mot-de-passe est stocké de manière cryptée sur le serveur&lt;br /&gt;
* le client envoi le mot-de-passe en clair au serveur (en base64 en fait, mais c&#039;est du pareil au même), ce qui rend ce mode non sécurisé si la connexion n&#039;est pas effectuée en HTTPS&lt;br /&gt;
* Préférez la création d&#039;un fichier nommé &amp;lt;code&amp;gt;.htpasswd&amp;lt;/code&amp;gt; étant donné que ces fichiers sont interdits de lecture par la configuration par défaut de apache (/etc/apache2/apache2.conf). Dans la mesure du possible, ne créez des fichiers &amp;lt;code&amp;gt;.htpasswd&amp;lt;/code&amp;gt; que dans un dossier de toute façon inaccessible au serveur web (donc en dehors du documentroot et de tout alias). En effet, les directives d&#039;autorisations de apache d&#039;une section supérieure annulent les directives d&#039;autorisations précédentes de apache (&amp;lt;code&amp;gt;AuthMerging&amp;lt;/code&amp;gt; à off par défaut), donc si vous autorisez l&#039;accès complet à un repertoire (require all granted), vous risquez de supplanter la directive interdisant l&#039;accès aux fichiers protégés&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Création du fichier contenant les mots-de-passe :&lt;br /&gt;
&amp;lt;pre&amp;gt;htpasswd -c .htpasswd pfoo&lt;br /&gt;
New password: &lt;br /&gt;
Re-type new password: &lt;br /&gt;
Adding password for user pfoo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un nouvel utilisateur, ou modifier le mot-de-passe d&#039;un utilisateur existant, la commande est la même sans l&#039;argument &amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;htpasswd .htpasswd pfoo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier &amp;lt;code&amp;gt;.htgroup&amp;lt;/code&amp;gt; permet de rassembler plusieurs utilisateurs dans un même groupe. Il suffit de créer un fichier (.htgroup) texte contenant par exemple (pour créer un groupe admin et un groupe user) :&lt;br /&gt;
&amp;lt;pre&amp;gt;admin: pfoo plop&lt;br /&gt;
user: blah&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour que tous les utilisateurs valides (qui sont présent dans le .htpasswd) aient accès au dossier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AuthUserFile /path/to/.htpasswd&lt;br /&gt;
AuthName &amp;quot;Accès Restreint&amp;quot;&lt;br /&gt;
AuthType Basic&lt;br /&gt;
require valid-user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Accès pour l&#039;utilisateur pfoo et l&#039;ensemble du groupe user uniquement :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AuthUserFile /path/to/.htpasswd&lt;br /&gt;
AuthGroupFile /path/to/.htgroup&lt;br /&gt;
AuthName &amp;quot;Accès Restreint&amp;quot;&lt;br /&gt;
AuthType Basic&lt;br /&gt;
require user pfoo&lt;br /&gt;
require group user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Authentification Digest==&lt;br /&gt;
* le mot-de-passe est stocké en clair sur le serveur ce qui le rend plus vulnérable à une fuite de données côté serveur (&amp;lt;small&amp;gt;en clair ou sous forme condensée, sans salage possible, donc un pirate obtenant l&#039;accès au fichier contenant la base de donnée digest aura un accès complet aux ressources du serveur et sans étape de décryptage)&amp;lt;/small&amp;gt;&lt;br /&gt;
* le client envoi le mot-de-passe hashé avec un nonce et un realm, ce qui assure que le mot-de-passe ne circule jamais en clair sur le réseau et ce même sans HTTPS&lt;br /&gt;
* Préférez la création d&#039;un fichier nommé .htpasswd étant donné que ces fichiers sont interdits de lecture par la configuration par défaut de apache (/etc/apache2/apache2.conf)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;outil htdigest permet de créer un fichier .htpasswd utilisant cette méthode d&#039;authentification. Vous pouvez entrer ce que vous voulez en realm.&lt;br /&gt;
&amp;lt;pre&amp;gt;htdigest -c .htpasswd &amp;quot;votre realm&amp;quot; username&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour ajouter un nouvel utilisateur, ou modifier le mot-de-passe d&#039;un utilisateur existant, la commande est la même sans l&#039;argument &amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;htdigest .htpasswd &amp;quot;votre realm&amp;quot; pfoo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le fichier &amp;lt;code&amp;gt;.htgroup&amp;lt;/code&amp;gt; permet de rassembler plusieurs utilisateurs dans un même groupe. Il suffit de créer un fichier (.htgroup) texte contenant par exemple (pour créer un groupe admin et un groupe user) :&lt;br /&gt;
&amp;lt;pre&amp;gt;admin: pfoo plop&lt;br /&gt;
user: blah&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour que tous les utilisateurs valides (qui sont présent dans le .htpasswd) aient accès au dossier : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AuthType Digest&lt;br /&gt;
AuthName &amp;quot;votre realm&amp;quot;&lt;br /&gt;
AuthDigestDomain /&lt;br /&gt;
AuthDigestProvider file&lt;br /&gt;
AuthUserFile /path/to/.htpasswd&lt;br /&gt;
AuthGroupFile /path/to/.htgroup&lt;br /&gt;
Require valid-user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Accès pour l&#039;utilisateur pfoo et l&#039;ensemble du groupe user uniquement : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AuthType Digest&lt;br /&gt;
AuthName &amp;quot;votre realm&amp;quot;&lt;br /&gt;
AuthDigestDomain /&lt;br /&gt;
AuthDigestProvider file&lt;br /&gt;
AuthUserFile /path/to/.htpasswd&lt;br /&gt;
AuthGroupFile /path/to/.htgroup&lt;br /&gt;
require user pfoo&lt;br /&gt;
require group user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=HTTPS=&lt;br /&gt;
&lt;br /&gt;
==Redirection HTTP vers HTTPs==&lt;br /&gt;
&lt;br /&gt;
* Solution avec le module Rewrite, applicable à la fois dans une vhost écoutant sur les port 80 ou 443 :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RewriteEngine on&lt;br /&gt;
RewriteCond %{HTTPS} off&lt;br /&gt;
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il peut être intéressant de ne pas rewrite certaine URLs. Dans l&#039;exemple ci dessous, les urls en lien avec les challenges letsencrypt :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Solution avec le module Alias, à ne surtout pas appliquer dans une vhost écoutant sur le port 443 (redirection infinie) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Redirect permanent / https://domain.tld/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Tests de sécurité divers=&lt;br /&gt;
https://observatory.mozilla.org/ &amp;lt;br&amp;gt;&lt;br /&gt;
https://tls.imirhil.fr/ &amp;lt;br&amp;gt;&lt;br /&gt;
https://www.ssllabs.com/ssltest/&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Exiftool&amp;diff=4430</id>
		<title>Exiftool</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Exiftool&amp;diff=4430"/>
		<updated>2026-04-05T00:54:17Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;exiftool -p &#039;$filename has date $filemodifydate and $dateTimeOriginal and $CreateDate and $ModifyDate&#039; -q -f *&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enlever 1h au metadata Modify Date, Create Date et Date/Time Original :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -AllDates-=1 file.jpg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définir les metadata Modify Date, Create Date et Date/Time Original à la date de dernière modification du fichier (File Modification Date/Time) :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -preserve &#039;-alldates&amp;lt;filemodifydate&#039; *.jpg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définir les metadata Modify Date, Create Date et Date/Time Original à la date de dernière modification du fichier (File Modification Date/Time), uniquement si DateTimeOriginal est absent ou a 0 :&lt;br /&gt;
exiftool -preserve &#039;-alldates&amp;lt;filemodifydate&#039; -if &#039;(not $DateTimeOriginal or ($DateTimeOriginal eq &amp;quot;0000:00:00 00:00:00&amp;quot;&amp;quot;))&#039; *.jpg&lt;br /&gt;
&lt;br /&gt;
Définir les metadata Modify Date, Create Date et Date/Time Original à la même valeur que Date/Time Original :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -preserve &#039;-alldates&amp;lt;datetimeoriginal&#039; *.jpg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définir les metadata Modify Date, Create Date et Date/Time Original fonction du nom du fichier en tronquant le prefixe IMG- et le suffixe -WA* puis en ajoutant une heure à 00:00:00 :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -preserve &#039;-alldates&amp;lt;${filename;s/IMG-//;s/-WA.*//} 00:00:00&#039; *.jpg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-alldates est un alias pour -CreateDate -DateTimeOriginal -ModifyDate&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Exiftool&amp;diff=4429</id>
		<title>Exiftool</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Exiftool&amp;diff=4429"/>
		<updated>2026-04-05T00:51:40Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;exiftool -p &#039;$filename has date $filemodifydate and $dateTimeOriginal and $CreateDate and $ModifyDate&#039; -q -f *&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enlever 1h au metadata Modify Date, Create Date et Date/Time Original :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -AllDates-=1 file.jpg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définir les metadata Modify Date, Create Date et Date/Time Original à la date de dernière modification du fichier (File Modification Date/Time) :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -preserve &#039;-alldates&amp;lt;filemodifydate&#039; *.jpg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définir les metadata Modify Date, Create Date et Date/Time Original à la même valeur que Date/Time Original :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -preserve &#039;-alldates&amp;lt;datetimeoriginal&#039; *.jpg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définir les metadata Modify Date, Create Date et Date/Time Original fonction du nom du fichier en tronquant le prefixe IMG- et le suffixe -WA* puis en ajoutant une heure à 00:00:00 :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -preserve &#039;-alldates&amp;lt;${filename;s/IMG-//;s/-WA.*//} 00:00:00&#039; *.jpg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-alldates est un alias pour -CreateDate -DateTimeOriginal -ModifyDate&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Exiftool&amp;diff=4428</id>
		<title>Exiftool</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Exiftool&amp;diff=4428"/>
		<updated>2026-04-05T00:50:33Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;exiftool -p &#039;$filename has date $filemodifydate and $dateTimeOriginal and $CreateDate and $ModifyDate&#039; -q -f *&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enlever 1h au metadata Modify Date, Create Date et Date/Time Original :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -AllDates-=1 file.jpg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définir les metadata Modify Date, Create Date et Date/Time Original à la date de dernière modification du fichier (File Modification Date/Time) :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -preserve &#039;-alldates&amp;lt;filemodifydate&#039; *.jpg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définir les metadata Modify Date, Create Date et Date/Time Original à la même valeur que Date/Time Original :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -preserve &#039;-alldates&amp;lt;datetimeoriginal&#039; *.jpg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définir les metadata Modify Date, Create Date et Date/Time Original fonction du nom du fichier en tronquant le prefixe IMG- et le suffixe -WA* puis en ajoutant une heure à 00:00:00 :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -preserve &#039;-alldates&amp;lt;${filename;s/IMG-//;s/-WA.*//} 00:00:00&#039; *.jpg&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Exiftool&amp;diff=4427</id>
		<title>Exiftool</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Exiftool&amp;diff=4427"/>
		<updated>2026-04-05T00:47:03Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;exiftool -p &#039;$filename has date $filemodifydate and $dateTimeOriginal and $CreateDate and $ModifyDate&#039; -q -f *&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enlever 1h au metadata Modify Date, Create Date et Date/Time Original :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -AllDates-=1 file.jpg&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définir les metadata Modify Date, Create Date et Date/Time Original à la date de dernière modification du fichier (File Modification Date/Time) :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -preserve &#039;-alldates&amp;lt;filemodifydate&#039; *.jpg&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Exiftool&amp;diff=4426</id>
		<title>Exiftool</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Exiftool&amp;diff=4426"/>
		<updated>2026-04-05T00:45:24Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;exiftool -p &#039;$filename has date $filemodifydate and $dateTimeOriginal and $CreateDate and $ModifyDate&#039; -q -f *&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enlever 1h au metadata Modify Date, Create Date et Date/Time Original :&lt;br /&gt;
&amp;lt;pre&amp;gt;exiftool -AllDates-=1 file.jpg&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Exiftool&amp;diff=4425</id>
		<title>Exiftool</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Exiftool&amp;diff=4425"/>
		<updated>2026-04-05T00:42:50Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : Page créée avec « &amp;lt;pre&amp;gt;exiftool -p &amp;#039;$filename has date $filemodifydate and $dateTimeOriginal and $CreateDate and $ModifyDate&amp;#039; -q -f *&amp;lt;/pre&amp;gt; »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;exiftool -p &#039;$filename has date $filemodifydate and $dateTimeOriginal and $CreateDate and $ModifyDate&#039; -q -f *&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Accueil&amp;diff=4424</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Accueil&amp;diff=4424"/>
		<updated>2026-01-02T15:30:00Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : Annulation des modifications 4423 de Pfoo (discussion)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{|style=&amp;quot;width:100%; background:#F5F5F5;&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
!style=&amp;quot;font-size:200%; color:#056FFA;&amp;quot;|Bienvenu sur ce wiki&lt;br /&gt;
|-&lt;br /&gt;
|Ce wiki est dédié aux différentes distributions linux et aux logiciels libres qui les accompagnent.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width:100%; border:1px solid #FFFFFF; background:#FFFFFF; color:#FFFFFF;&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;font-size:115%; background:#056FFA;&amp;quot;|Rechercher par&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[Special:Categories|Catégories]] &amp;amp;#149; [[:Catégorie:Distributions|Distributions]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Généralités=&lt;br /&gt;
[[Généralités sur linux]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Création du tableau --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Colonne haut gauche --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Serveur =&lt;br /&gt;
; [[:Category:serveur|Liste des pages]]&lt;br /&gt;
: &lt;br /&gt;
; [[Sécuriser_ses_sites_avec_letsencrypt_et_acme-tiny|letsencrypt]]&lt;br /&gt;
; [[:Category:monitoring|Monitoring]]&lt;br /&gt;
: Tutoriels détaillants des outils de supervision et de métrologie&lt;br /&gt;
;[[Proxmox 8]]&lt;br /&gt;
:Tutoriel détaillant l&#039;installation de proxmox 8.x sous debian&lt;br /&gt;
;[[Sécurisation d&#039;un serveur linux]]&lt;br /&gt;
:Guideline basique de propositions de sécurisation d&#039;un serveur linux&lt;br /&gt;
; [[:Category:security|Sécurité]]&lt;br /&gt;
: outils de sécurité&lt;br /&gt;
; [[:Category:virtualisation|virtualisation]]&lt;br /&gt;
: proxmox principalement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Colonne haut droite --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Bureautique =&lt;br /&gt;
; [[:Category:desktop|Liste des pages]]&lt;br /&gt;
:&lt;br /&gt;
;[[Kubuntu / KDE : login ssh automatique par clé]]&lt;br /&gt;
:&lt;br /&gt;
;[[ssh : le client libre de OpenSSH]]&lt;br /&gt;
:&lt;br /&gt;
;[[Court-circuiter la vérification dns]]&lt;br /&gt;
:&lt;br /&gt;
;[[Graver un iso bootable sur une clé usb]]&lt;br /&gt;
:Vos CDRW ne marchent plus ? Vous n&#039;avez pas de lecteur cd sur votre netbook ? &lt;br /&gt;
:&lt;br /&gt;
;[[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
:&lt;br /&gt;
;[[Fibre orange en DHCP avec routeur pfsense]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Colonne invisible (fixe la largeur) --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Colonne bas gauche --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Développement =&lt;br /&gt;
; [[:Category:développement|Liste des pages]]&lt;br /&gt;
:&lt;br /&gt;
; [[Auto-complétion_avec_Vim|Auto-complétion avec Vim]]&lt;br /&gt;
: Configurer l&#039;auto-complétion C++ dans l&#039;editeur de texte Vim&lt;br /&gt;
;[[Git]]&lt;br /&gt;
:Gestionnaire de version décentralisé&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Colonne bas droite --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Divers =&lt;br /&gt;
; [[:Category:Tools|Outils]]&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- fin du tableau --&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Accueil&amp;diff=4423</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Accueil&amp;diff=4423"/>
		<updated>2026-01-02T15:29:40Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{|style=&amp;quot;width:100%; background:#F5F5F5;&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
!style=&amp;quot;font-size:200%; color:#056FFA;&amp;quot;|Bienvenu sur ce wiki&lt;br /&gt;
|-&lt;br /&gt;
|Ce wiki est dédié aux différentes distributions linux et aux logiciels libres qui les accompagnent.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width:100%; border:1px solid #FFFFFF; background:#FFFFFF; color:#FFFFFF;&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;font-size:115%; background:#056FFA;&amp;quot;|Rechercher par&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[Special:Categories|Catégories]] &amp;amp;#149; [[:Catégorie:Distributions|Distributions]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Généralités=&lt;br /&gt;
[[Généralités sur linux]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Création du tableau --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Colonne haut gauche --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:25%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Serveur =&lt;br /&gt;
; [[:Category:serveur|Liste des pages]]&lt;br /&gt;
: &lt;br /&gt;
; [[Sécuriser_ses_sites_avec_letsencrypt_et_acme-tiny|letsencrypt]]&lt;br /&gt;
; [[:Category:monitoring|Monitoring]]&lt;br /&gt;
: Tutoriels détaillants des outils de supervision et de métrologie&lt;br /&gt;
;[[Proxmox 8]]&lt;br /&gt;
:Tutoriel détaillant l&#039;installation de proxmox 8.x sous debian&lt;br /&gt;
;[[Sécurisation d&#039;un serveur linux]]&lt;br /&gt;
:Guideline basique de propositions de sécurisation d&#039;un serveur linux&lt;br /&gt;
; [[:Category:security|Sécurité]]&lt;br /&gt;
: outils de sécurité&lt;br /&gt;
; [[:Category:virtualisation|virtualisation]]&lt;br /&gt;
: proxmox principalement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Colonne haut droite --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:25%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Bureautique =&lt;br /&gt;
; [[:Category:desktop|Liste des pages]]&lt;br /&gt;
:&lt;br /&gt;
;[[Kubuntu / KDE : login ssh automatique par clé]]&lt;br /&gt;
:&lt;br /&gt;
;[[ssh : le client libre de OpenSSH]]&lt;br /&gt;
:&lt;br /&gt;
;[[Court-circuiter la vérification dns]]&lt;br /&gt;
:&lt;br /&gt;
;[[Graver un iso bootable sur une clé usb]]&lt;br /&gt;
:Vos CDRW ne marchent plus ? Vous n&#039;avez pas de lecteur cd sur votre netbook ? &lt;br /&gt;
:&lt;br /&gt;
;[[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
:&lt;br /&gt;
;[[Fibre orange en DHCP avec routeur pfsense]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Colonne bas gauche --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:25%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Développement =&lt;br /&gt;
; [[:Category:développement|Liste des pages]]&lt;br /&gt;
:&lt;br /&gt;
; [[Auto-complétion_avec_Vim|Auto-complétion avec Vim]]&lt;br /&gt;
: Configurer l&#039;auto-complétion C++ dans l&#039;editeur de texte Vim&lt;br /&gt;
;[[Git]]&lt;br /&gt;
:Gestionnaire de version décentralisé&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Colonne bas droite --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:25%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Divers =&lt;br /&gt;
; [[:Category:Tools|Outils]]&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- fin du tableau --&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Accueil&amp;diff=4422</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Accueil&amp;diff=4422"/>
		<updated>2026-01-02T15:27:27Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{|style=&amp;quot;width:100%; background:#F5F5F5;&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
!style=&amp;quot;font-size:200%; color:#056FFA;&amp;quot;|Bienvenu sur ce wiki&lt;br /&gt;
|-&lt;br /&gt;
|Ce wiki est dédié aux différentes distributions linux et aux logiciels libres qui les accompagnent.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width:100%; border:1px solid #FFFFFF; background:#FFFFFF; color:#FFFFFF;&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;font-size:115%; background:#056FFA;&amp;quot;|Rechercher par&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[Special:Categories|Catégories]] &amp;amp;#149; [[:Catégorie:Distributions|Distributions]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Généralités=&lt;br /&gt;
[[Généralités sur linux]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Création du tableau --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;background:transparent;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Colonne haut gauche --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Serveur =&lt;br /&gt;
; [[:Category:serveur|Liste des pages]]&lt;br /&gt;
: &lt;br /&gt;
; [[Sécuriser_ses_sites_avec_letsencrypt_et_acme-tiny|letsencrypt]]&lt;br /&gt;
; [[:Category:monitoring|Monitoring]]&lt;br /&gt;
: Tutoriels détaillants des outils de supervision et de métrologie&lt;br /&gt;
;[[Proxmox 8]]&lt;br /&gt;
:Tutoriel détaillant l&#039;installation de proxmox 8.x sous debian&lt;br /&gt;
;[[Sécurisation d&#039;un serveur linux]]&lt;br /&gt;
:Guideline basique de propositions de sécurisation d&#039;un serveur linux&lt;br /&gt;
; [[:Category:security|Sécurité]]&lt;br /&gt;
: outils de sécurité&lt;br /&gt;
; [[:Category:virtualisation|virtualisation]]&lt;br /&gt;
: proxmox principalement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Colonne haut droite --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Bureautique =&lt;br /&gt;
; [[:Category:desktop|Liste des pages]]&lt;br /&gt;
:&lt;br /&gt;
;[[Kubuntu / KDE : login ssh automatique par clé]]&lt;br /&gt;
:&lt;br /&gt;
;[[ssh : le client libre de OpenSSH]]&lt;br /&gt;
:&lt;br /&gt;
;[[Court-circuiter la vérification dns]]&lt;br /&gt;
:&lt;br /&gt;
;[[Graver un iso bootable sur une clé usb]]&lt;br /&gt;
:Vos CDRW ne marchent plus ? Vous n&#039;avez pas de lecteur cd sur votre netbook ? &lt;br /&gt;
:&lt;br /&gt;
;[[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
:&lt;br /&gt;
;[[Fibre orange en DHCP avec routeur pfsense]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Colonne invisible (fixe la largeur) --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Colonne bas gauche --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Développement =&lt;br /&gt;
; [[:Category:développement|Liste des pages]]&lt;br /&gt;
:&lt;br /&gt;
; [[Auto-complétion_avec_Vim|Auto-complétion avec Vim]]&lt;br /&gt;
: Configurer l&#039;auto-complétion C++ dans l&#039;editeur de texte Vim&lt;br /&gt;
;[[Git]]&lt;br /&gt;
:Gestionnaire de version décentralisé&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Colonne bas droite --&amp;gt;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Divers =&lt;br /&gt;
; [[:Category:Tools|Outils]]&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- fin du tableau --&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Accueil&amp;diff=4421</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Accueil&amp;diff=4421"/>
		<updated>2026-01-02T15:24:47Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{|style=&amp;quot;width:100%; background:#F5F5F5;&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
!style=&amp;quot;font-size:200%; color:#056FFA;&amp;quot;|Bienvenu sur ce wiki&lt;br /&gt;
|-&lt;br /&gt;
|Ce wiki est dédié aux différentes distributions linux et aux logiciels libres qui les accompagnent.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width:100%; border:1px solid #FFFFFF; background:#FFFFFF; color:#FFFFFF;&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;font-size:115%; background:#056FFA;&amp;quot;|Rechercher par&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[Special:Categories|Catégories]] &amp;amp;#149; [[:Catégorie:Distributions|Distributions]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Généralités=&lt;br /&gt;
[[Généralités sur linux]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:transparent;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Serveur =&lt;br /&gt;
; [[:Category:serveur|Liste des pages]]&lt;br /&gt;
: &lt;br /&gt;
; [[Sécuriser_ses_sites_avec_letsencrypt_et_acme-tiny|letsencrypt]]&lt;br /&gt;
; [[:Category:monitoring|Monitoring]]&lt;br /&gt;
: Tutoriels détaillants des outils de supervision et de métrologie&lt;br /&gt;
;[[Proxmox 8]]&lt;br /&gt;
:Tutoriel détaillant l&#039;installation de proxmox 8.x sous debian&lt;br /&gt;
;[[Sécurisation d&#039;un serveur linux]]&lt;br /&gt;
:Guideline basique de propositions de sécurisation d&#039;un serveur linux&lt;br /&gt;
; [[:Category:security|Sécurité]]&lt;br /&gt;
: outils de sécurité&lt;br /&gt;
; [[:Category:virtualisation|virtualisation]]&lt;br /&gt;
: proxmox principalement&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Bureautique =&lt;br /&gt;
; [[:Category:desktop|Liste des pages]]&lt;br /&gt;
:&lt;br /&gt;
;[[Kubuntu / KDE : login ssh automatique par clé]]&lt;br /&gt;
:&lt;br /&gt;
;[[ssh : le client libre de OpenSSH]]&lt;br /&gt;
:&lt;br /&gt;
;[[Court-circuiter la vérification dns]]&lt;br /&gt;
:&lt;br /&gt;
;[[Graver un iso bootable sur une clé usb]]&lt;br /&gt;
:Vos CDRW ne marchent plus ? Vous n&#039;avez pas de lecteur cd sur votre netbook ? &lt;br /&gt;
:&lt;br /&gt;
;[[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
:&lt;br /&gt;
;[[Fibre orange en DHCP avec routeur pfsense]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Développement =&lt;br /&gt;
; [[:Category:développement|Liste des pages]]&lt;br /&gt;
:&lt;br /&gt;
; [[Auto-complétion_avec_Vim|Auto-complétion avec Vim]]&lt;br /&gt;
: Configurer l&#039;auto-complétion C++ dans l&#039;editeur de texte Vim&lt;br /&gt;
;[[Git]]&lt;br /&gt;
:Gestionnaire de version décentralisé&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
= Divers =&lt;br /&gt;
; [[:Category:Tools|Outils]]&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Find&amp;diff=4420</id>
		<title>Find</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Find&amp;diff=4420"/>
		<updated>2025-12-31T21:24:48Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rechercher des fichiers et dossier avec la permission d&#039;écriture pour le groupe. Dans cet exemple on ignore les liens symboliques (qui sont forcément en mode 777) :&lt;br /&gt;
&amp;lt;pre&amp;gt;find ./ ! -type l -perm -g=w&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Find&amp;diff=4419</id>
		<title>Find</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Find&amp;diff=4419"/>
		<updated>2025-12-31T21:05:26Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rechercher des fichiers et dossier avec la permission d&#039;écriture pour le groupe. Dans cet exemple on ignore les liens symboliques (qui sont forcément en mode 777) :&lt;br /&gt;
&amp;lt;pre&amp;gt;find ./ -type l -perm -g=w&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Find&amp;diff=4418</id>
		<title>Find</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Find&amp;diff=4418"/>
		<updated>2025-12-29T23:24:08Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : Page créée avec « Rechercher des fichiers et dossier avec la permission d&amp;#039;écriture pour le groupe : &amp;lt;pre&amp;gt;find ./ -perm -g=w&amp;lt;/pre&amp;gt; »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rechercher des fichiers et dossier avec la permission d&#039;écriture pour le groupe :&lt;br /&gt;
&amp;lt;pre&amp;gt;find ./ -perm -g=w&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4417</id>
		<title>Migration de Debian Bookworm vers Trixie</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4417"/>
		<updated>2025-12-29T00:58:39Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Modifications du umask par défaut / permissions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:bookworm]]&lt;br /&gt;
[[Category:trixie]]&lt;br /&gt;
&lt;br /&gt;
=Préparation=&lt;br /&gt;
&lt;br /&gt;
==Assurez vous que vous êtes à la dernière version de debian==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&lt;br /&gt;
apt full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence d&#039;action en attente si vous utilisez aptitude==&lt;br /&gt;
&lt;br /&gt;
Lancez &amp;lt;code&amp;gt;aptitude&amp;lt;/code&amp;gt; puis tapez &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;~o&#039;&lt;br /&gt;
apt purge &#039;~o&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les paquets non-debian qui pourraient poser soucis lors de la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Tous les paquets non fournis par debian peuvent poser problème. A vos risques et péril. &amp;lt;br&amp;gt;&lt;br /&gt;
Pour les identifier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;?narrow(?installed, ?not(?origin(Debian)))&#039;&lt;br /&gt;
apt-forktracer | sort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vous de décider ou non de les supprimer avant la mise à niveau, certains paquets peuvent néanmoins gêner la mise à niveau.&lt;br /&gt;
&lt;br /&gt;
==Supprimez les fichiers de configuration non utilisés==&lt;br /&gt;
&amp;lt;pre&amp;gt;find /etc -name &#039;*.dpkg-*&#039; -o -name &#039;*.ucf-*&#039; -o -name &#039;*.merge-error&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez le pinning==&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;code&amp;gt;/etc/apt/preferences&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;/etc/apt/preferences.d/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence de paquets cassés==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dpkg --audit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enlevez les éventuels holds qui pourraient faire échouer la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Pour identifier les paquets en hold :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-mark showhold&lt;br /&gt;
aptitude search &amp;quot;~ahold&amp;quot; &lt;br /&gt;
dpkg --get-selections | grep &#039;hold$&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour supprimer un hold :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-mark unhold package_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez les entrées backports de votre sources.list==&lt;br /&gt;
&lt;br /&gt;
==Sources non officielles==&lt;br /&gt;
Assurez vous que ces sources possèdent des paquets compilés pour la nouvelle version de debian&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Mariadb==&lt;br /&gt;
&lt;br /&gt;
MariaDB ne supporte pas une récupération d&#039;erreur entre deux versions majeurs, il faut donc s&#039;assurer que vos bases de données sont propres et que les données et buffers sont bien écrit sur le disque avant de mettre à jour debian. Pour cela :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service mariadb stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis vérifiez dans les logs la présence d&#039;une ligne &amp;lt;code&amp;gt;Shutdown complete&amp;lt;/code&amp;gt;. Si ce n&#039;est pas le cas, relancez mariadb pour lancer la récupération automatique des tables, attendez, puis stoppez à nouveau mariadb et vérifiez dans les logs que le nouvel arrêt s&#039;est fait proprement.&lt;br /&gt;
&lt;br /&gt;
=Mise à jour=&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de /etc/apt/sources.list==&lt;br /&gt;
&lt;br /&gt;
Debian Trixie utilise la nouvelle version deb822-style pour les sources apt.&lt;br /&gt;
&lt;br /&gt;
Il faut transformer le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; et tout fichier &amp;lt;code&amp;gt;*.list&amp;lt;/code&amp;gt; situé dans &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt; en un fichier &amp;lt;code&amp;gt;/etc/apt/sources.list.d/debian.sources&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de fichier &amp;lt;code&amp;gt;debian.sources&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main and updates&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de la liste des paquets==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assure vous d&#039;avoir assez d&#039;espace libre==&lt;br /&gt;
&lt;br /&gt;
La commande suivante permet de voir l&#039;espace nécessaire pour la mise à jour :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt -o APT::Get::Trivial-Only=true full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enregistrez les actions effectuées==&lt;br /&gt;
&lt;br /&gt;
apt loguera les packets modifiés dans &amp;lt;code&amp;gt;/var/log/apt/history.log&amp;lt;/code&amp;gt; et la sortie du terminal dans &amp;lt;code&amp;gt;/var/log/apt/term.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt upgrade --without-new-pkgs&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si un prompt vous demande s&#039;il doit installer une nouvelle version d&#039;un fichier, répondez de préférence oui puis faites les adaptations nécessaires à votre configuration après la fin de la mise à jour. L&#039;ancien fichier restera disponible, suffixé de .dpkg-old&lt;br /&gt;
&lt;br /&gt;
=Cleanup=&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt autoremove&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les configurations et fichier résiduels des paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Purgez ces paquets===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez et supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
Ce sont des paquets qui ne sont plus maintenu par debian.&lt;br /&gt;
&lt;br /&gt;
* Pour les lister :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour les supprimer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Risque de modification du nom des interfaces réseaux==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#network-interface-names-may-change&lt;br /&gt;
&lt;br /&gt;
==Modifications du umask par défaut / permissions==&lt;br /&gt;
&lt;br /&gt;
Si l&#039;utilisateur n&#039;est pas root, et que que le nom d&#039;utilisateur est le même que le nom du groupe primaire de l&#039;utilisateur, l&#039;umask groupe sera forcé à celui de l&#039;umask utilisateur (exemple : 022 -&amp;gt; 002, 077 -&amp;gt; 007). Pour remettre le comportement antérieur et ne pas interférer avec l&#039;umask groupe :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed -i -E &#039;/^session optional[[:blank:]]+pam_umask.so$/ s/$/ nousergroups/&#039; /etc/pam.d/common-session&lt;br /&gt;
sed -i -E &#039;/^session optional[[:blank:]]+pam_umask.so$/ s/$/ nousergroups/&#039; /etc/pam.d/common-session-noninteractive&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cf https://wiki.debian.org/UserPrivateGroups &amp;amp; https://wiki.debian.org/Permissions#System-wide_umask_configuration&lt;br /&gt;
&lt;br /&gt;
==Le dossier des fichiers temporaires /tmp est maintenant un tmpfs==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer ou supprimer les anciens fichiers du dossier /tmp il faut faire un bind mount :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount --bind / /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les anciens fichiers tmp seront dans &amp;lt;code&amp;gt;/mnt/tmp/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par défaut, le dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; disposera de 50% de la mémoire du système. Vous pouvez modifier l&#039;espace alloué avec &amp;lt;code&amp;gt;systemctl edit tmp.mount&amp;lt;/code&amp;gt; et modifier par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mount]&lt;br /&gt;
Options=mode=1777,nosuid,nodev,size=2G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez retrouver un dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; classique (sans tmpfs) :&lt;br /&gt;
&amp;lt;pre&amp;gt;systemctl mask tmp.mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis redémarrer&lt;br /&gt;
&lt;br /&gt;
==Les dossiers /tmp et /var/tmp sont purgés automatiquement==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#the-directories-tmp-and-var-tmp-are-now-regularly-cleaned&lt;br /&gt;
&lt;br /&gt;
Cette fonctionnalité n&#039;est pas activé automatiquement après l&#039;upgrade. Pour l&#039;activer supprimez le fichier &amp;lt;code&amp;gt;/etc/tmpfiles.d/tmp.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;rm -f /etc/tmpfiles.d/tmp.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après cela, les fichiers dans &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; seront automatiquement supprimé après 10 jours et les fichiers dans &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; après 30 jours&lt;br /&gt;
&lt;br /&gt;
==Le fichier /etc/sysctl.conf n&#039;est plus appliqué==&lt;br /&gt;
&lt;br /&gt;
A partir de debian trixie, le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; n&#039;est plus lu, en faveur du fichier &amp;lt;code&amp;gt;/usr/lib/sysctl.d/50-default.conf&amp;lt;/code&amp;gt; fournit par le paquet &amp;lt;code&amp;gt;linux-sysctl-defaults&amp;lt;/code&amp;gt;. Si vous souhaitez éditer les sysctl, il faudra désormais créer un fichier &amp;lt;code&amp;gt; /etc/sysctl.d/*.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Les paquets isc-dhcp sont dépréciés==&lt;br /&gt;
Si vous utilisez NetworkManager ou systemd-networkd : rien à faire et vous pouvez supprimer le paquet &amp;lt;code&amp;gt;isc-dhcp-client&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez ifupdown, le paquet &amp;lt;code&amp;gt;dhcpcd-base&amp;lt;/code&amp;gt; fourni un client dhcp de remplacement (dans ce cas, supprimez les lignes &amp;lt;code&amp;gt;inet6 dhcp&amp;lt;/code&amp;gt; de votre fichier &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
A noter un bug IPv6 avec isc-dhcp-client : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1088852&lt;br /&gt;
&lt;br /&gt;
==si la commande ping ne fonctionne plus pour les utilisateurs==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#ping-no-longer-runs-with-elevated-privileges&lt;br /&gt;
&lt;br /&gt;
=Appendice=&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/upgrading.en.html&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4416</id>
		<title>Migration de Debian Bookworm vers Trixie</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4416"/>
		<updated>2025-12-29T00:58:13Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Modifications du umask par défaut / permissions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:bookworm]]&lt;br /&gt;
[[Category:trixie]]&lt;br /&gt;
&lt;br /&gt;
=Préparation=&lt;br /&gt;
&lt;br /&gt;
==Assurez vous que vous êtes à la dernière version de debian==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&lt;br /&gt;
apt full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence d&#039;action en attente si vous utilisez aptitude==&lt;br /&gt;
&lt;br /&gt;
Lancez &amp;lt;code&amp;gt;aptitude&amp;lt;/code&amp;gt; puis tapez &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;~o&#039;&lt;br /&gt;
apt purge &#039;~o&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les paquets non-debian qui pourraient poser soucis lors de la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Tous les paquets non fournis par debian peuvent poser problème. A vos risques et péril. &amp;lt;br&amp;gt;&lt;br /&gt;
Pour les identifier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;?narrow(?installed, ?not(?origin(Debian)))&#039;&lt;br /&gt;
apt-forktracer | sort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vous de décider ou non de les supprimer avant la mise à niveau, certains paquets peuvent néanmoins gêner la mise à niveau.&lt;br /&gt;
&lt;br /&gt;
==Supprimez les fichiers de configuration non utilisés==&lt;br /&gt;
&amp;lt;pre&amp;gt;find /etc -name &#039;*.dpkg-*&#039; -o -name &#039;*.ucf-*&#039; -o -name &#039;*.merge-error&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez le pinning==&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;code&amp;gt;/etc/apt/preferences&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;/etc/apt/preferences.d/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence de paquets cassés==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dpkg --audit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enlevez les éventuels holds qui pourraient faire échouer la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Pour identifier les paquets en hold :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-mark showhold&lt;br /&gt;
aptitude search &amp;quot;~ahold&amp;quot; &lt;br /&gt;
dpkg --get-selections | grep &#039;hold$&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour supprimer un hold :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-mark unhold package_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez les entrées backports de votre sources.list==&lt;br /&gt;
&lt;br /&gt;
==Sources non officielles==&lt;br /&gt;
Assurez vous que ces sources possèdent des paquets compilés pour la nouvelle version de debian&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Mariadb==&lt;br /&gt;
&lt;br /&gt;
MariaDB ne supporte pas une récupération d&#039;erreur entre deux versions majeurs, il faut donc s&#039;assurer que vos bases de données sont propres et que les données et buffers sont bien écrit sur le disque avant de mettre à jour debian. Pour cela :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service mariadb stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis vérifiez dans les logs la présence d&#039;une ligne &amp;lt;code&amp;gt;Shutdown complete&amp;lt;/code&amp;gt;. Si ce n&#039;est pas le cas, relancez mariadb pour lancer la récupération automatique des tables, attendez, puis stoppez à nouveau mariadb et vérifiez dans les logs que le nouvel arrêt s&#039;est fait proprement.&lt;br /&gt;
&lt;br /&gt;
=Mise à jour=&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de /etc/apt/sources.list==&lt;br /&gt;
&lt;br /&gt;
Debian Trixie utilise la nouvelle version deb822-style pour les sources apt.&lt;br /&gt;
&lt;br /&gt;
Il faut transformer le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; et tout fichier &amp;lt;code&amp;gt;*.list&amp;lt;/code&amp;gt; situé dans &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt; en un fichier &amp;lt;code&amp;gt;/etc/apt/sources.list.d/debian.sources&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de fichier &amp;lt;code&amp;gt;debian.sources&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main and updates&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de la liste des paquets==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assure vous d&#039;avoir assez d&#039;espace libre==&lt;br /&gt;
&lt;br /&gt;
La commande suivante permet de voir l&#039;espace nécessaire pour la mise à jour :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt -o APT::Get::Trivial-Only=true full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enregistrez les actions effectuées==&lt;br /&gt;
&lt;br /&gt;
apt loguera les packets modifiés dans &amp;lt;code&amp;gt;/var/log/apt/history.log&amp;lt;/code&amp;gt; et la sortie du terminal dans &amp;lt;code&amp;gt;/var/log/apt/term.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt upgrade --without-new-pkgs&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si un prompt vous demande s&#039;il doit installer une nouvelle version d&#039;un fichier, répondez de préférence oui puis faites les adaptations nécessaires à votre configuration après la fin de la mise à jour. L&#039;ancien fichier restera disponible, suffixé de .dpkg-old&lt;br /&gt;
&lt;br /&gt;
=Cleanup=&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt autoremove&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les configurations et fichier résiduels des paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Purgez ces paquets===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez et supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
Ce sont des paquets qui ne sont plus maintenu par debian.&lt;br /&gt;
&lt;br /&gt;
* Pour les lister :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour les supprimer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Risque de modification du nom des interfaces réseaux==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#network-interface-names-may-change&lt;br /&gt;
&lt;br /&gt;
==Modifications du umask par défaut / permissions==&lt;br /&gt;
&lt;br /&gt;
Si l&#039;utilisateur n&#039;est pas root, que que le nom d&#039;utilisateur est le même que le nom du groupe primaire de l&#039;utilisateur, l&#039;umask groupe sera forcé à celui de l&#039;umask utilisateur (exemple : 022 -&amp;gt; 002, 077 -&amp;gt; 007). Pour remettre le comportement antérieur et ne pas interférer avec l&#039;umask groupe :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed -i -E &#039;/^session optional[[:blank:]]+pam_umask.so$/ s/$/ nousergroups/&#039; /etc/pam.d/common-session&lt;br /&gt;
sed -i -E &#039;/^session optional[[:blank:]]+pam_umask.so$/ s/$/ nousergroups/&#039; /etc/pam.d/common-session-noninteractive&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cf https://wiki.debian.org/UserPrivateGroups &amp;amp; https://wiki.debian.org/Permissions#System-wide_umask_configuration&lt;br /&gt;
&lt;br /&gt;
==Le dossier des fichiers temporaires /tmp est maintenant un tmpfs==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer ou supprimer les anciens fichiers du dossier /tmp il faut faire un bind mount :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount --bind / /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les anciens fichiers tmp seront dans &amp;lt;code&amp;gt;/mnt/tmp/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par défaut, le dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; disposera de 50% de la mémoire du système. Vous pouvez modifier l&#039;espace alloué avec &amp;lt;code&amp;gt;systemctl edit tmp.mount&amp;lt;/code&amp;gt; et modifier par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mount]&lt;br /&gt;
Options=mode=1777,nosuid,nodev,size=2G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez retrouver un dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; classique (sans tmpfs) :&lt;br /&gt;
&amp;lt;pre&amp;gt;systemctl mask tmp.mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis redémarrer&lt;br /&gt;
&lt;br /&gt;
==Les dossiers /tmp et /var/tmp sont purgés automatiquement==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#the-directories-tmp-and-var-tmp-are-now-regularly-cleaned&lt;br /&gt;
&lt;br /&gt;
Cette fonctionnalité n&#039;est pas activé automatiquement après l&#039;upgrade. Pour l&#039;activer supprimez le fichier &amp;lt;code&amp;gt;/etc/tmpfiles.d/tmp.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;rm -f /etc/tmpfiles.d/tmp.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après cela, les fichiers dans &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; seront automatiquement supprimé après 10 jours et les fichiers dans &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; après 30 jours&lt;br /&gt;
&lt;br /&gt;
==Le fichier /etc/sysctl.conf n&#039;est plus appliqué==&lt;br /&gt;
&lt;br /&gt;
A partir de debian trixie, le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; n&#039;est plus lu, en faveur du fichier &amp;lt;code&amp;gt;/usr/lib/sysctl.d/50-default.conf&amp;lt;/code&amp;gt; fournit par le paquet &amp;lt;code&amp;gt;linux-sysctl-defaults&amp;lt;/code&amp;gt;. Si vous souhaitez éditer les sysctl, il faudra désormais créer un fichier &amp;lt;code&amp;gt; /etc/sysctl.d/*.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Les paquets isc-dhcp sont dépréciés==&lt;br /&gt;
Si vous utilisez NetworkManager ou systemd-networkd : rien à faire et vous pouvez supprimer le paquet &amp;lt;code&amp;gt;isc-dhcp-client&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez ifupdown, le paquet &amp;lt;code&amp;gt;dhcpcd-base&amp;lt;/code&amp;gt; fourni un client dhcp de remplacement (dans ce cas, supprimez les lignes &amp;lt;code&amp;gt;inet6 dhcp&amp;lt;/code&amp;gt; de votre fichier &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
A noter un bug IPv6 avec isc-dhcp-client : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1088852&lt;br /&gt;
&lt;br /&gt;
==si la commande ping ne fonctionne plus pour les utilisateurs==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#ping-no-longer-runs-with-elevated-privileges&lt;br /&gt;
&lt;br /&gt;
=Appendice=&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/upgrading.en.html&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4415</id>
		<title>Migration de Debian Bookworm vers Trixie</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4415"/>
		<updated>2025-12-29T00:18:58Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Modifications du umask par défaut / permissions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:bookworm]]&lt;br /&gt;
[[Category:trixie]]&lt;br /&gt;
&lt;br /&gt;
=Préparation=&lt;br /&gt;
&lt;br /&gt;
==Assurez vous que vous êtes à la dernière version de debian==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&lt;br /&gt;
apt full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence d&#039;action en attente si vous utilisez aptitude==&lt;br /&gt;
&lt;br /&gt;
Lancez &amp;lt;code&amp;gt;aptitude&amp;lt;/code&amp;gt; puis tapez &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;~o&#039;&lt;br /&gt;
apt purge &#039;~o&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les paquets non-debian qui pourraient poser soucis lors de la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Tous les paquets non fournis par debian peuvent poser problème. A vos risques et péril. &amp;lt;br&amp;gt;&lt;br /&gt;
Pour les identifier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;?narrow(?installed, ?not(?origin(Debian)))&#039;&lt;br /&gt;
apt-forktracer | sort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vous de décider ou non de les supprimer avant la mise à niveau, certains paquets peuvent néanmoins gêner la mise à niveau.&lt;br /&gt;
&lt;br /&gt;
==Supprimez les fichiers de configuration non utilisés==&lt;br /&gt;
&amp;lt;pre&amp;gt;find /etc -name &#039;*.dpkg-*&#039; -o -name &#039;*.ucf-*&#039; -o -name &#039;*.merge-error&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez le pinning==&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;code&amp;gt;/etc/apt/preferences&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;/etc/apt/preferences.d/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence de paquets cassés==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dpkg --audit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enlevez les éventuels holds qui pourraient faire échouer la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Pour identifier les paquets en hold :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-mark showhold&lt;br /&gt;
aptitude search &amp;quot;~ahold&amp;quot; &lt;br /&gt;
dpkg --get-selections | grep &#039;hold$&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour supprimer un hold :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-mark unhold package_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez les entrées backports de votre sources.list==&lt;br /&gt;
&lt;br /&gt;
==Sources non officielles==&lt;br /&gt;
Assurez vous que ces sources possèdent des paquets compilés pour la nouvelle version de debian&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Mariadb==&lt;br /&gt;
&lt;br /&gt;
MariaDB ne supporte pas une récupération d&#039;erreur entre deux versions majeurs, il faut donc s&#039;assurer que vos bases de données sont propres et que les données et buffers sont bien écrit sur le disque avant de mettre à jour debian. Pour cela :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service mariadb stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis vérifiez dans les logs la présence d&#039;une ligne &amp;lt;code&amp;gt;Shutdown complete&amp;lt;/code&amp;gt;. Si ce n&#039;est pas le cas, relancez mariadb pour lancer la récupération automatique des tables, attendez, puis stoppez à nouveau mariadb et vérifiez dans les logs que le nouvel arrêt s&#039;est fait proprement.&lt;br /&gt;
&lt;br /&gt;
=Mise à jour=&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de /etc/apt/sources.list==&lt;br /&gt;
&lt;br /&gt;
Debian Trixie utilise la nouvelle version deb822-style pour les sources apt.&lt;br /&gt;
&lt;br /&gt;
Il faut transformer le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; et tout fichier &amp;lt;code&amp;gt;*.list&amp;lt;/code&amp;gt; situé dans &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt; en un fichier &amp;lt;code&amp;gt;/etc/apt/sources.list.d/debian.sources&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de fichier &amp;lt;code&amp;gt;debian.sources&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main and updates&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de la liste des paquets==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assure vous d&#039;avoir assez d&#039;espace libre==&lt;br /&gt;
&lt;br /&gt;
La commande suivante permet de voir l&#039;espace nécessaire pour la mise à jour :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt -o APT::Get::Trivial-Only=true full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enregistrez les actions effectuées==&lt;br /&gt;
&lt;br /&gt;
apt loguera les packets modifiés dans &amp;lt;code&amp;gt;/var/log/apt/history.log&amp;lt;/code&amp;gt; et la sortie du terminal dans &amp;lt;code&amp;gt;/var/log/apt/term.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt upgrade --without-new-pkgs&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si un prompt vous demande s&#039;il doit installer une nouvelle version d&#039;un fichier, répondez de préférence oui puis faites les adaptations nécessaires à votre configuration après la fin de la mise à jour. L&#039;ancien fichier restera disponible, suffixé de .dpkg-old&lt;br /&gt;
&lt;br /&gt;
=Cleanup=&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt autoremove&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les configurations et fichier résiduels des paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Purgez ces paquets===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez et supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
Ce sont des paquets qui ne sont plus maintenu par debian.&lt;br /&gt;
&lt;br /&gt;
* Pour les lister :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour les supprimer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Risque de modification du nom des interfaces réseaux==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#network-interface-names-may-change&lt;br /&gt;
&lt;br /&gt;
==Modifications du umask par défaut / permissions==&lt;br /&gt;
&lt;br /&gt;
Si vos utilisateurs ont le même nom de groupe que le nom d&#039;utilisateur, l&#039;umask sera forcé à 0002 au lieu de 0022. Pour remettre le comportement antérieur :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed -i -E &#039;/^session optional[[:blank:]]+pam_umask.so$/ s/$/ nousergroups/&#039; /etc/pam.d/common-session&lt;br /&gt;
sed -i -E &#039;/^session optional[[:blank:]]+pam_umask.so$/ s/$/ nousergroups/&#039; /etc/pam.d/common-session-noninteractive&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cf https://wiki.debian.org/UserPrivateGroups&lt;br /&gt;
&lt;br /&gt;
==Le dossier des fichiers temporaires /tmp est maintenant un tmpfs==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer ou supprimer les anciens fichiers du dossier /tmp il faut faire un bind mount :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount --bind / /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les anciens fichiers tmp seront dans &amp;lt;code&amp;gt;/mnt/tmp/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par défaut, le dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; disposera de 50% de la mémoire du système. Vous pouvez modifier l&#039;espace alloué avec &amp;lt;code&amp;gt;systemctl edit tmp.mount&amp;lt;/code&amp;gt; et modifier par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mount]&lt;br /&gt;
Options=mode=1777,nosuid,nodev,size=2G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez retrouver un dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; classique (sans tmpfs) :&lt;br /&gt;
&amp;lt;pre&amp;gt;systemctl mask tmp.mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis redémarrer&lt;br /&gt;
&lt;br /&gt;
==Les dossiers /tmp et /var/tmp sont purgés automatiquement==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#the-directories-tmp-and-var-tmp-are-now-regularly-cleaned&lt;br /&gt;
&lt;br /&gt;
Cette fonctionnalité n&#039;est pas activé automatiquement après l&#039;upgrade. Pour l&#039;activer supprimez le fichier &amp;lt;code&amp;gt;/etc/tmpfiles.d/tmp.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;rm -f /etc/tmpfiles.d/tmp.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après cela, les fichiers dans &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; seront automatiquement supprimé après 10 jours et les fichiers dans &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; après 30 jours&lt;br /&gt;
&lt;br /&gt;
==Le fichier /etc/sysctl.conf n&#039;est plus appliqué==&lt;br /&gt;
&lt;br /&gt;
A partir de debian trixie, le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; n&#039;est plus lu, en faveur du fichier &amp;lt;code&amp;gt;/usr/lib/sysctl.d/50-default.conf&amp;lt;/code&amp;gt; fournit par le paquet &amp;lt;code&amp;gt;linux-sysctl-defaults&amp;lt;/code&amp;gt;. Si vous souhaitez éditer les sysctl, il faudra désormais créer un fichier &amp;lt;code&amp;gt; /etc/sysctl.d/*.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Les paquets isc-dhcp sont dépréciés==&lt;br /&gt;
Si vous utilisez NetworkManager ou systemd-networkd : rien à faire et vous pouvez supprimer le paquet &amp;lt;code&amp;gt;isc-dhcp-client&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez ifupdown, le paquet &amp;lt;code&amp;gt;dhcpcd-base&amp;lt;/code&amp;gt; fourni un client dhcp de remplacement (dans ce cas, supprimez les lignes &amp;lt;code&amp;gt;inet6 dhcp&amp;lt;/code&amp;gt; de votre fichier &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
A noter un bug IPv6 avec isc-dhcp-client : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1088852&lt;br /&gt;
&lt;br /&gt;
==si la commande ping ne fonctionne plus pour les utilisateurs==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#ping-no-longer-runs-with-elevated-privileges&lt;br /&gt;
&lt;br /&gt;
=Appendice=&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/upgrading.en.html&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4414</id>
		<title>Migration de Debian Bookworm vers Trixie</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4414"/>
		<updated>2025-12-29T00:06:53Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Risque de modification du nom des interfaces réseaux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:bookworm]]&lt;br /&gt;
[[Category:trixie]]&lt;br /&gt;
&lt;br /&gt;
=Préparation=&lt;br /&gt;
&lt;br /&gt;
==Assurez vous que vous êtes à la dernière version de debian==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&lt;br /&gt;
apt full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence d&#039;action en attente si vous utilisez aptitude==&lt;br /&gt;
&lt;br /&gt;
Lancez &amp;lt;code&amp;gt;aptitude&amp;lt;/code&amp;gt; puis tapez &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;~o&#039;&lt;br /&gt;
apt purge &#039;~o&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les paquets non-debian qui pourraient poser soucis lors de la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Tous les paquets non fournis par debian peuvent poser problème. A vos risques et péril. &amp;lt;br&amp;gt;&lt;br /&gt;
Pour les identifier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;?narrow(?installed, ?not(?origin(Debian)))&#039;&lt;br /&gt;
apt-forktracer | sort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vous de décider ou non de les supprimer avant la mise à niveau, certains paquets peuvent néanmoins gêner la mise à niveau.&lt;br /&gt;
&lt;br /&gt;
==Supprimez les fichiers de configuration non utilisés==&lt;br /&gt;
&amp;lt;pre&amp;gt;find /etc -name &#039;*.dpkg-*&#039; -o -name &#039;*.ucf-*&#039; -o -name &#039;*.merge-error&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez le pinning==&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;code&amp;gt;/etc/apt/preferences&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;/etc/apt/preferences.d/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence de paquets cassés==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dpkg --audit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enlevez les éventuels holds qui pourraient faire échouer la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Pour identifier les paquets en hold :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-mark showhold&lt;br /&gt;
aptitude search &amp;quot;~ahold&amp;quot; &lt;br /&gt;
dpkg --get-selections | grep &#039;hold$&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour supprimer un hold :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-mark unhold package_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez les entrées backports de votre sources.list==&lt;br /&gt;
&lt;br /&gt;
==Sources non officielles==&lt;br /&gt;
Assurez vous que ces sources possèdent des paquets compilés pour la nouvelle version de debian&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Mariadb==&lt;br /&gt;
&lt;br /&gt;
MariaDB ne supporte pas une récupération d&#039;erreur entre deux versions majeurs, il faut donc s&#039;assurer que vos bases de données sont propres et que les données et buffers sont bien écrit sur le disque avant de mettre à jour debian. Pour cela :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service mariadb stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis vérifiez dans les logs la présence d&#039;une ligne &amp;lt;code&amp;gt;Shutdown complete&amp;lt;/code&amp;gt;. Si ce n&#039;est pas le cas, relancez mariadb pour lancer la récupération automatique des tables, attendez, puis stoppez à nouveau mariadb et vérifiez dans les logs que le nouvel arrêt s&#039;est fait proprement.&lt;br /&gt;
&lt;br /&gt;
=Mise à jour=&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de /etc/apt/sources.list==&lt;br /&gt;
&lt;br /&gt;
Debian Trixie utilise la nouvelle version deb822-style pour les sources apt.&lt;br /&gt;
&lt;br /&gt;
Il faut transformer le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; et tout fichier &amp;lt;code&amp;gt;*.list&amp;lt;/code&amp;gt; situé dans &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt; en un fichier &amp;lt;code&amp;gt;/etc/apt/sources.list.d/debian.sources&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de fichier &amp;lt;code&amp;gt;debian.sources&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main and updates&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de la liste des paquets==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assure vous d&#039;avoir assez d&#039;espace libre==&lt;br /&gt;
&lt;br /&gt;
La commande suivante permet de voir l&#039;espace nécessaire pour la mise à jour :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt -o APT::Get::Trivial-Only=true full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enregistrez les actions effectuées==&lt;br /&gt;
&lt;br /&gt;
apt loguera les packets modifiés dans &amp;lt;code&amp;gt;/var/log/apt/history.log&amp;lt;/code&amp;gt; et la sortie du terminal dans &amp;lt;code&amp;gt;/var/log/apt/term.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt upgrade --without-new-pkgs&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si un prompt vous demande s&#039;il doit installer une nouvelle version d&#039;un fichier, répondez de préférence oui puis faites les adaptations nécessaires à votre configuration après la fin de la mise à jour. L&#039;ancien fichier restera disponible, suffixé de .dpkg-old&lt;br /&gt;
&lt;br /&gt;
=Cleanup=&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt autoremove&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les configurations et fichier résiduels des paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Purgez ces paquets===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez et supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
Ce sont des paquets qui ne sont plus maintenu par debian.&lt;br /&gt;
&lt;br /&gt;
* Pour les lister :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour les supprimer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Risque de modification du nom des interfaces réseaux==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#network-interface-names-may-change&lt;br /&gt;
&lt;br /&gt;
==Modifications du umask par défaut / permissions==&lt;br /&gt;
&lt;br /&gt;
Si vos utilisateurs ont le même nom de groupe que le nom d&#039;utilisateur, l&#039;umask sera forcé à 0002 au lieu de 0022. Pour remettre le comportement antérieur :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed -i -E &#039;/^session optional[[:blank:]]+pam_umask.so$/ s/$/ nousergroups/&#039; /etc/pam.d/common-session&lt;br /&gt;
sed -i -E &#039;/^session optional[[:blank:]]+pam_umask.so$/ s/$/ nousergroups/&#039; /etc/pam.d/common-session-noninteractive&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Le dossier des fichiers temporaires /tmp est maintenant un tmpfs==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer ou supprimer les anciens fichiers du dossier /tmp il faut faire un bind mount :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount --bind / /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les anciens fichiers tmp seront dans &amp;lt;code&amp;gt;/mnt/tmp/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par défaut, le dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; disposera de 50% de la mémoire du système. Vous pouvez modifier l&#039;espace alloué avec &amp;lt;code&amp;gt;systemctl edit tmp.mount&amp;lt;/code&amp;gt; et modifier par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mount]&lt;br /&gt;
Options=mode=1777,nosuid,nodev,size=2G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez retrouver un dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; classique (sans tmpfs) :&lt;br /&gt;
&amp;lt;pre&amp;gt;systemctl mask tmp.mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis redémarrer&lt;br /&gt;
&lt;br /&gt;
==Les dossiers /tmp et /var/tmp sont purgés automatiquement==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#the-directories-tmp-and-var-tmp-are-now-regularly-cleaned&lt;br /&gt;
&lt;br /&gt;
Cette fonctionnalité n&#039;est pas activé automatiquement après l&#039;upgrade. Pour l&#039;activer supprimez le fichier &amp;lt;code&amp;gt;/etc/tmpfiles.d/tmp.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;rm -f /etc/tmpfiles.d/tmp.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après cela, les fichiers dans &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; seront automatiquement supprimé après 10 jours et les fichiers dans &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; après 30 jours&lt;br /&gt;
&lt;br /&gt;
==Le fichier /etc/sysctl.conf n&#039;est plus appliqué==&lt;br /&gt;
&lt;br /&gt;
A partir de debian trixie, le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; n&#039;est plus lu, en faveur du fichier &amp;lt;code&amp;gt;/usr/lib/sysctl.d/50-default.conf&amp;lt;/code&amp;gt; fournit par le paquet &amp;lt;code&amp;gt;linux-sysctl-defaults&amp;lt;/code&amp;gt;. Si vous souhaitez éditer les sysctl, il faudra désormais créer un fichier &amp;lt;code&amp;gt; /etc/sysctl.d/*.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Les paquets isc-dhcp sont dépréciés==&lt;br /&gt;
Si vous utilisez NetworkManager ou systemd-networkd : rien à faire et vous pouvez supprimer le paquet &amp;lt;code&amp;gt;isc-dhcp-client&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez ifupdown, le paquet &amp;lt;code&amp;gt;dhcpcd-base&amp;lt;/code&amp;gt; fourni un client dhcp de remplacement (dans ce cas, supprimez les lignes &amp;lt;code&amp;gt;inet6 dhcp&amp;lt;/code&amp;gt; de votre fichier &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
A noter un bug IPv6 avec isc-dhcp-client : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1088852&lt;br /&gt;
&lt;br /&gt;
==si la commande ping ne fonctionne plus pour les utilisateurs==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#ping-no-longer-runs-with-elevated-privileges&lt;br /&gt;
&lt;br /&gt;
=Appendice=&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/upgrading.en.html&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Wireguard&amp;diff=4413</id>
		<title>Wireguard</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Wireguard&amp;diff=4413"/>
		<updated>2025-12-26T13:54:14Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:serveur]]&lt;br /&gt;
[[category:debian]]&lt;br /&gt;
[[Category:networking]]&lt;br /&gt;
[[Category:VPN]]&lt;br /&gt;
[[Category:wireguard]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install wireguard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sur node1=&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /etc/wireguard/&lt;br /&gt;
umask 077&lt;br /&gt;
wg genkey &amp;gt; wg0-private.key&lt;br /&gt;
wg pubkey &amp;lt; wg0-private.key &amp;gt; wg0-public.key&lt;br /&gt;
wg genpsk &amp;gt; wg0-psk.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; wg0.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
[Interface]&lt;br /&gt;
PrivateKey = $(cat wg0-private.key)&lt;br /&gt;
ListenPort = 51820&lt;br /&gt;
&lt;br /&gt;
[Peer]&lt;br /&gt;
PublicKey = &amp;lt;Public key du node2&amp;gt;&lt;br /&gt;
PresharedKey = $(cat wg0-psk.key)&lt;br /&gt;
Endpoint = &amp;lt;IP public du node2&amp;gt;&lt;br /&gt;
AllowedIPs = 10.99.99.2/32&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip link add dev wg0 type wireguard&lt;br /&gt;
ip address add dev wg0 10.99.99.1/24&lt;br /&gt;
wg setconf wg0 /etc/wireguard/wg0.conf&lt;br /&gt;
ip link set up dev wg0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sur node2=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /etc/wireguard/&lt;br /&gt;
umask 077&lt;br /&gt;
wg genkey &amp;gt; wg0-private.key&lt;br /&gt;
wg pubkey &amp;lt; wg0-private.key &amp;gt; wg0-public.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Transférer le fichier &amp;lt;code&amp;gt;wg0-psk.key&amp;lt;/code&amp;gt; de node1 à node2 et placez le dans &amp;lt;code/etc/wireguard/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; wg0.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
[Interface]&lt;br /&gt;
PrivateKey = $(cat wg0-private.key)&lt;br /&gt;
ListenPort = 51820&lt;br /&gt;
&lt;br /&gt;
[Peer]&lt;br /&gt;
PublicKey = &amp;lt;Public key du node1&amp;gt;&lt;br /&gt;
PresharedKey = $(cat wg0-psk.key)&lt;br /&gt;
Endpoint = &amp;lt;IP public du node1&amp;gt;&lt;br /&gt;
AllowedIPs = 10.99.99.1/32&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip link add dev wg0 type wireguard&lt;br /&gt;
ip address add dev wg0 10.99.99.2/24&lt;br /&gt;
wg setconf wg0 /etc/wireguard/wg0.conf&lt;br /&gt;
ip link set up dev wg0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Couper le lien=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip link del wg0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=AllowedIPs=&lt;br /&gt;
&lt;br /&gt;
Attention ! tout trafic destiné à une adresse de destination qui n&#039;est pas défini dans la directive &amp;quot;AllowedIPs&amp;quot; sera refusé.&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Wireguard&amp;diff=4412</id>
		<title>Wireguard</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Wireguard&amp;diff=4412"/>
		<updated>2025-12-26T12:37:15Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : Page créée avec « category:serveur category:debian Category:networking Category:VPN Category:wireguard  &amp;lt;pre&amp;gt;apt install wireguard&amp;lt;/pre&amp;gt;  =Sur node1= &amp;lt;pre&amp;gt;cd /etc/wireguard/ umask 077 wg genkey &amp;gt; wg0-private.key wg pubkey &amp;lt; wg0-private.key &amp;gt; wg0-public.key wg genpsk &amp;gt; wg0-psk.key &amp;lt;/pre&amp;gt;  &amp;lt;pre&amp;gt; cat &amp;gt; wg0.conf &amp;lt;&amp;lt;EOF [Interface] PrivateKey = $(cat wg0-private.key) ListenPort = 51820  [Peer] PublicKey = &amp;lt;Public key du node2&amp;gt; PresharedKey = $(cat wg0-psk.key) Endpoi... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:serveur]]&lt;br /&gt;
[[category:debian]]&lt;br /&gt;
[[Category:networking]]&lt;br /&gt;
[[Category:VPN]]&lt;br /&gt;
[[Category:wireguard]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install wireguard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sur node1=&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /etc/wireguard/&lt;br /&gt;
umask 077&lt;br /&gt;
wg genkey &amp;gt; wg0-private.key&lt;br /&gt;
wg pubkey &amp;lt; wg0-private.key &amp;gt; wg0-public.key&lt;br /&gt;
wg genpsk &amp;gt; wg0-psk.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; wg0.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
[Interface]&lt;br /&gt;
PrivateKey = $(cat wg0-private.key)&lt;br /&gt;
ListenPort = 51820&lt;br /&gt;
&lt;br /&gt;
[Peer]&lt;br /&gt;
PublicKey = &amp;lt;Public key du node2&amp;gt;&lt;br /&gt;
PresharedKey = $(cat wg0-psk.key)&lt;br /&gt;
Endpoint = &amp;lt;IP public du node2&amp;gt;&lt;br /&gt;
AllowedIPs = 10.99.99.2/32&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip link add dev wg0 type wireguard&lt;br /&gt;
ip address add dev wg0 10.99.99.1/24&lt;br /&gt;
wg setconf wg0 /etc/wireguard/wg0.conf&lt;br /&gt;
ip link set up dev wg0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sur node2=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /etc/wireguard/&lt;br /&gt;
umask 077&lt;br /&gt;
wg genkey &amp;gt; wg0-private.key&lt;br /&gt;
wg pubkey &amp;lt; wg0-private.key &amp;gt; wg0-public.key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Transférer le fichier &amp;lt;code&amp;gt;wg0-psk.key&amp;lt;/code&amp;gt; de node1 à node2 et placez le dans &amp;lt;code/etc/wireguard/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; wg0.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
[Interface]&lt;br /&gt;
PrivateKey = $(cat wg0-private.key)&lt;br /&gt;
ListenPort = 51820&lt;br /&gt;
&lt;br /&gt;
[Peer]&lt;br /&gt;
PublicKey = &amp;lt;Public key du node1&amp;gt;&lt;br /&gt;
PresharedKey = $(cat wg0-psk.key)&lt;br /&gt;
Endpoint = &amp;lt;IP public du node1&amp;gt;&lt;br /&gt;
AllowedIPs = 10.99.99.1/32&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip link add dev wg0 type wireguard&lt;br /&gt;
ip address add dev wg0 10.99.99.2/24&lt;br /&gt;
wg setconf wg0 /etc/wireguard/wg0.conf&lt;br /&gt;
ip link set up dev wg0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Couper le lien=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ip link del wg0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Shred&amp;diff=4411</id>
		<title>Shred</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Shred&amp;diff=4411"/>
		<updated>2025-12-22T08:56:27Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:documentation]]&lt;br /&gt;
&amp;lt;pre&amp;gt;find &amp;lt;dir&amp;gt; -type f -print0 | xargs -0 shred -fuzv&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Shred&amp;diff=4410</id>
		<title>Shred</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Shred&amp;diff=4410"/>
		<updated>2025-12-22T08:52:25Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:documentation]]&lt;br /&gt;
&amp;lt;pre&amp;gt;find &amp;lt;dir&amp;gt; -type f -print0 | xargs -0 shred -fuz&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Shred&amp;diff=4409</id>
		<title>Shred</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Shred&amp;diff=4409"/>
		<updated>2025-10-25T22:12:00Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:documentation]]&lt;br /&gt;
&amp;lt;pre&amp;gt;find &amp;lt;dir&amp;gt; -type f -print0 | xargs -0 shred&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Monitoring_UPS_Eaton_avec_Nut&amp;diff=4408</id>
		<title>Monitoring UPS Eaton avec Nut</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Monitoring_UPS_Eaton_avec_Nut&amp;diff=4408"/>
		<updated>2025-10-16T19:32:18Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Automatisation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:debian]]&lt;br /&gt;
[[category:monitoring]]&lt;br /&gt;
&lt;br /&gt;
=Eaton 3S=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#$ lsusb&lt;br /&gt;
...&lt;br /&gt;
Bus 003 Device 002: ID 0463:ffff MGE UPS Systems UPS&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez nut :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install nut&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/nut/ups.conf (vendorid basé sur la sortie de &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt;) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[eaton]&lt;br /&gt;
driver = usbhid-ups&lt;br /&gt;
port = auto&lt;br /&gt;
vendorid = 0463&lt;br /&gt;
pollfreq = 15&lt;br /&gt;
desc = &amp;quot;Eaton 3S&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans le fichier &amp;lt;code&amp;gt;/etc/nut/nut.conf&amp;lt;/code&amp;gt; modifier la valeur &amp;lt;code&amp;gt;MODE=none&amp;lt;/code&amp;gt; en :&lt;br /&gt;
&amp;lt;pre&amp;gt;MODE=standalone&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lancez le driver :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#$ upsdrvctl start&lt;br /&gt;
Network UPS Tools - UPS driver controller 2.8.1&lt;br /&gt;
Network UPS Tools - Generic HID driver 0.52 (2.8.1)&lt;br /&gt;
USB communication driver (libusb 1.0) 0.46&lt;br /&gt;
libusb1: Could not open any HID devices: insufficient permissions on everything&lt;br /&gt;
No matching HID UPS found&lt;br /&gt;
upsnotify: failed to notify about state 4: no notification tech defined, will not spam more about it&lt;br /&gt;
Driver failed to start (exit status=1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous terminez avec une erreur. C&#039;est lié au fait que le device usb n&#039;est accessible qu&#039;a root, alors que le démon upsd tourne sous l&#039;utilisateur ups.&amp;lt;br&amp;gt;&lt;br /&gt;
Notez l&#039;id vendeur (0463) et l&#039;id produit (ffff).&amp;lt;br&amp;gt;&lt;br /&gt;
Le fix est très simple : créer le fichier &amp;lt;code&amp;gt;/etc/udev/rules.d/90-nut-ups.rules&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Eaton 3S&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb&amp;quot;, ATTR{idVendor}==&amp;quot;0463&amp;quot;, ATTR{idProduct}==&amp;quot;ffff&amp;quot;, MODE=&amp;quot;0660&amp;quot;, GROUP=&amp;quot;nut&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite relancez udev, puis déconnetez/connectez le port usb de votre onduleur :&lt;br /&gt;
&amp;lt;pre&amp;gt;systemctl restart udev&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ca marche tout de suite mieux !&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#$ upsdrvctl start&lt;br /&gt;
Network UPS Tools - UPS driver controller 2.8.1&lt;br /&gt;
Network UPS Tools - Generic HID driver 0.52 (2.8.1)&lt;br /&gt;
USB communication driver (libusb 1.0) 0.46&lt;br /&gt;
Duplicate driver instance detected (PID file /run/nut/usbhid-ups-eaton.pid exists)! Terminating other driver!&lt;br /&gt;
Using subdriver: MGE HID 1.46&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Connectez vous :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
upsc -l&lt;br /&gt;
upsc eaton@localhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour voir la durée restante sur batterie :&lt;br /&gt;
&amp;lt;pre&amp;gt;upsc eaton@localhost battery.runtime&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatisation==&lt;br /&gt;
Créez un utilisateur dans &amp;lt;code&amp;gt;/etc/nut/upsd.users&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[upsmon]&lt;br /&gt;
    password = &amp;lt;Password&amp;gt;&lt;br /&gt;
    actions = SET&lt;br /&gt;
    instcmds = ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/nut/upsmon.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MONITOR eaton@localhost 1 upsmon &amp;lt;Password&amp;gt; primary&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez les services :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart nut-server.service&lt;br /&gt;
systemctl restart nut-monitor.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez a modifier la charge batterie minimale avant shutdown (20 par défaut) :&lt;br /&gt;
&amp;lt;pre&amp;gt;upsrw -s battery.charge.low=15 -u upsmon -p &amp;lt;Password&amp;gt; eaton@localhost&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Monitoring_UPS_Eaton_avec_Nut&amp;diff=4407</id>
		<title>Monitoring UPS Eaton avec Nut</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Monitoring_UPS_Eaton_avec_Nut&amp;diff=4407"/>
		<updated>2025-10-16T19:04:59Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Eaton 3S */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:debian]]&lt;br /&gt;
[[category:monitoring]]&lt;br /&gt;
&lt;br /&gt;
=Eaton 3S=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#$ lsusb&lt;br /&gt;
...&lt;br /&gt;
Bus 003 Device 002: ID 0463:ffff MGE UPS Systems UPS&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez nut :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install nut&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/nut/ups.conf (vendorid basé sur la sortie de &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt;) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[eaton]&lt;br /&gt;
driver = usbhid-ups&lt;br /&gt;
port = auto&lt;br /&gt;
vendorid = 0463&lt;br /&gt;
pollfreq = 15&lt;br /&gt;
desc = &amp;quot;Eaton 3S&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans le fichier &amp;lt;code&amp;gt;/etc/nut/nut.conf&amp;lt;/code&amp;gt; modifier la valeur &amp;lt;code&amp;gt;MODE=none&amp;lt;/code&amp;gt; en :&lt;br /&gt;
&amp;lt;pre&amp;gt;MODE=standalone&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lancez le driver :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#$ upsdrvctl start&lt;br /&gt;
Network UPS Tools - UPS driver controller 2.8.1&lt;br /&gt;
Network UPS Tools - Generic HID driver 0.52 (2.8.1)&lt;br /&gt;
USB communication driver (libusb 1.0) 0.46&lt;br /&gt;
libusb1: Could not open any HID devices: insufficient permissions on everything&lt;br /&gt;
No matching HID UPS found&lt;br /&gt;
upsnotify: failed to notify about state 4: no notification tech defined, will not spam more about it&lt;br /&gt;
Driver failed to start (exit status=1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous terminez avec une erreur. C&#039;est lié au fait que le device usb n&#039;est accessible qu&#039;a root, alors que le démon upsd tourne sous l&#039;utilisateur ups.&amp;lt;br&amp;gt;&lt;br /&gt;
Notez l&#039;id vendeur (0463) et l&#039;id produit (ffff).&amp;lt;br&amp;gt;&lt;br /&gt;
Le fix est très simple : créer le fichier &amp;lt;code&amp;gt;/etc/udev/rules.d/90-nut-ups.rules&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Eaton 3S&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb&amp;quot;, ATTR{idVendor}==&amp;quot;0463&amp;quot;, ATTR{idProduct}==&amp;quot;ffff&amp;quot;, MODE=&amp;quot;0660&amp;quot;, GROUP=&amp;quot;nut&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite relancez udev, puis déconnetez/connectez le port usb de votre onduleur :&lt;br /&gt;
&amp;lt;pre&amp;gt;systemctl restart udev&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ca marche tout de suite mieux !&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#$ upsdrvctl start&lt;br /&gt;
Network UPS Tools - UPS driver controller 2.8.1&lt;br /&gt;
Network UPS Tools - Generic HID driver 0.52 (2.8.1)&lt;br /&gt;
USB communication driver (libusb 1.0) 0.46&lt;br /&gt;
Duplicate driver instance detected (PID file /run/nut/usbhid-ups-eaton.pid exists)! Terminating other driver!&lt;br /&gt;
Using subdriver: MGE HID 1.46&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Connectez vous :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
upsc -l&lt;br /&gt;
upsc eaton@localhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour voir la durée restante sur batterie :&lt;br /&gt;
&amp;lt;pre&amp;gt;upsc eaton@localhost battery.runtime&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Automatisation==&lt;br /&gt;
Créez un utilisateur dans &amp;lt;code&amp;gt;/etc/nut/upsd.users&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[upsmon]&lt;br /&gt;
    password = &amp;lt;Password&amp;gt;&lt;br /&gt;
    actions = SET&lt;br /&gt;
    instcmds = ALL&lt;br /&gt;
MONITOR eaton@localhost 1 upsmon &amp;lt;Password&amp;gt; slave&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez les services :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart nut-server.service&lt;br /&gt;
systemctl restart nut-monitor.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez a modifier la charge batterie minimale avant shutdown (20 par défaut) :&lt;br /&gt;
&amp;lt;pre&amp;gt;upsrw -s battery.charge.low=15 -u upsmon -p &amp;lt;Password&amp;gt; eaton@localhost&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4406</id>
		<title>Proxmox 8</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4406"/>
		<updated>2025-10-04T10:33:08Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:virtualisation]]&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment installer proxmox 8.x sur un raid 1 logiciel (md / mdadm) avec debootstrap.&lt;br /&gt;
&lt;br /&gt;
=Prérequis=&lt;br /&gt;
&lt;br /&gt;
Ce tutoriel se base sur l&#039;utilisation de debootstrap pour installer une base de système d&#039;exploitation debian. La plupart des hébergeurs proposent un système de &amp;quot;rescue&amp;quot; permettant l&#039;installation de debian par ce moyen.&lt;br /&gt;
Si vous ne disposez pas de mode rescue, vous pouvez toujours utiliser l&#039;installeur proposé par votre hébergeur, ou encore passer par un kvm pour installer vous même le système avec l&#039;iso de debian.&lt;br /&gt;
&lt;br /&gt;
=Pour les débutants=&lt;br /&gt;
&lt;br /&gt;
Si vous êtes débutant en administration linux, je vous conseil de sauvegarder quelque part les fichier suivant issu d&#039;une précédente installation de debian ou de proxmox&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/networks&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt; si vous disposez d&#039;un raid logiciel&lt;br /&gt;
* tout fichier de personnalisation de grub (&amp;lt;code&amp;gt;/etc/grub.d/&amp;lt;/code&amp;gt; par exemple)&lt;br /&gt;
&lt;br /&gt;
Cela vous permettra de vous faire une idée plus précise de ce qui doit figurer dans ces différents fichiers.&lt;br /&gt;
&lt;br /&gt;
=Partitionnement et système de fichier=&lt;br /&gt;
&lt;br /&gt;
Voici le partitionnement que je vais utiliser :&lt;br /&gt;
* Partition root (/) de 20 Go (/) en raid 1 sur les disques sda et sdb&lt;br /&gt;
* Partitions swap de 4096 Go chacune réparties sur sda et sdb&lt;br /&gt;
* Le reste de l&#039;espace sera utilisé plus tard pour un LVM dédié aux VMs&lt;br /&gt;
&lt;br /&gt;
==Partitionnement==&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitionnement GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions EFI (ESP), obligatoire pour le démarrage EFI/UEFI. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF00&amp;lt;/code&amp;gt;. 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).&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour les partitions EFI, nous créons un système de fichier FAT32 avec le label (nom) &amp;lt;code&amp;gt;EFI_SYSPART&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sda1&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sdb1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitionnement GPT pour BIOS===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions pour le bootloader. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF02&amp;lt;/code&amp;gt;. On peut la créer idéalement du secteur 34 au secteur 2047 du disque.&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notez que la partition du bootloader ne doit pas être formatée.&lt;br /&gt;
&lt;br /&gt;
===Possibilité 3 : partitionnement MBR pour BIOS (non prise en charge dans ce wiki)===&lt;br /&gt;
&lt;br /&gt;
A titre informatif : création avec &amp;lt;code&amp;gt;parted&amp;lt;/code&amp;gt;, sans nécessité de créer une partition dédiée au bootloader/grub.&lt;br /&gt;
&lt;br /&gt;
==Création du RAID==&lt;br /&gt;
&lt;br /&gt;
Pour des raisons esthétiques, définissez l&#039;hostname de votre système de rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;hostname proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour créer votre raid 1 avec 2 disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que si vous souhaitez utiliser plus que 2 disques, il faut augmenter la valeur de &amp;lt;code&amp;gt;--raid-devices&amp;lt;/code&amp;gt; et ajouter les partitions des disques à la suite.&lt;br /&gt;
&lt;br /&gt;
Attendez que le raid soit synchronisé avant de continuer. Vous pouvez surveiller facilement cela avec la commande &amp;lt;code&amp;gt;watch cat /proc/mdstat&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Création des systèmes de fichiers==&lt;br /&gt;
&lt;br /&gt;
Créez un système de fichier ext4 pour le raid du root :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/md2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, initialisez les swaps :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkswap /dev/sda3&lt;br /&gt;
mkswap /dev/sdb3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Installation de proxmox=&lt;br /&gt;
&lt;br /&gt;
==Installation du système de base==&lt;br /&gt;
&lt;br /&gt;
Nous débutons par installer le système de base de Debian avec &amp;lt;code&amp;gt;debootstrap&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les paquets nécessaires dans votre rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install debootstrap debian-keyring debian-archive-keyring&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez votre partition raid root sur &amp;lt;code&amp;gt;/mnt&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/md2 /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez le système de base debian, version bookworm :&lt;br /&gt;
&amp;lt;pre&amp;gt;debootstrap --arch=amd64 bookworm /mnt http://ftp.fr.debian.org/debian&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration de Debian==&lt;br /&gt;
&lt;br /&gt;
Montez les vfs suivants, puis chrootez dans votre nouveau système debian :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount -o bind /proc /mnt/proc&lt;br /&gt;
mount -o bind /dev /mnt/dev&lt;br /&gt;
mount -o bind /dev/pts /mnt/dev/pts&lt;br /&gt;
mount -o bind /sys /mnt/sys&lt;br /&gt;
chroot /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les archives apt : éditez le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main archive&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# security updates&lt;br /&gt;
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# bookworm-updates, previously known as &#039;volatile&#039;&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# backports archive&lt;br /&gt;
deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour les paquets :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les locales et la configuration de console :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install locales &lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
apt install console-data console-setup-linux console-setup wget&lt;br /&gt;
dpkg-reconfigure console-data # from arch &amp;gt; french &amp;gt; latin9)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la zone horaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tzselect&lt;br /&gt;
dpkg-reconfigure tzdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez votre fichier &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Pour GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda1       /boot/efi       vfat    defaults                                  0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour GPT pour BIOS :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez la partition EFI / ESP dans le cas d&#039;un partitionnement GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /boot/efi&lt;br /&gt;
mount /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les interfaces réseaux dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The loopback network interface&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet static&lt;br /&gt;
        address XXXX/24&lt;br /&gt;
        gateway XXXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# local&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
::1             localhost ip6-localhost ip6-loopback&lt;br /&gt;
ff02::1         ip6-allnodes&lt;br /&gt;
ff02::2         ip6-allrouters&lt;br /&gt;
&lt;br /&gt;
# main&lt;br /&gt;
ipdelamachine   proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez les hostnames dans ces fichiers :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Pour celui la : non-fqdn&lt;br /&gt;
echo proxmox &amp;gt; /etc/hostname&lt;br /&gt;
# Pour celui la : fqdn&lt;br /&gt;
echo proxmox.domain.tld &amp;gt; /etc/mailname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION&#039;&#039;&#039; Le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; DOIT être cohérent avec le fichier &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, si le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est &amp;lt;code&amp;gt;proxmox&amp;lt;/code&amp;gt; et que l&#039;ip de votre proxmox est 225.182.54.9 il faudra veiller a avoir les informations suivantes dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1 localhost&lt;br /&gt;
225.182.54.9 proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attention : n&#039;utilisez pas 127.0.1.1 (comme le fait debian) mais bien la vrai ip (ici 225.182.54.9)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
N&#039;oubliez pas de configurer les dns (ceux de votre hébergeur dédié) dans &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;nameserver XX.XX.XX.XX&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez postfix :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install postfix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, comme nous installons notre partition de boot sur un raid software, il faut installer &amp;lt;code&amp;gt;madadm&amp;lt;/code&amp;gt; à ce stade :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install mdadm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez si votre array root s&#039;est bien défini automatiquement dans &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt;. Si ce n&#039;est pas me cas, ajoutez la configuration de l&#039;array manuellement :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - kernel==&lt;br /&gt;
&lt;br /&gt;
Ajoutez le dépot proxmox dans le fichier /etc/apt/source.list :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use&lt;br /&gt;
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajoutez la clé du dépôt proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour le système :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitions GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Vérifiez que &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt; est bien monté. Si ce n&#039;est pas le cas, faites le.&lt;br /&gt;
&lt;br /&gt;
Installez le kernel proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-efi-amd64 gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supprimez les paquets suivant si vous n&#039;avez pas besoin de secureboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed shim-signed-common shim-unsigned&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normalement tout doit se faire avec des promps. Si ce n&#039;était pas le cas :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si jamais vous utilisez un démarrage en PXE (c&#039;est le cas sur un serveur OVH par exemple), utilisez l&#039;argument &amp;lt;code&amp;gt;--no-nvram&amp;lt;/code&amp;gt; pour empêcher grub de mettre à jour la NVRAM et casser votre mécanique de démarrage PXE :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox --no-nvram&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Etant donné que seul &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; est monté sur &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt;, il faut transférer manuellement les données sur &amp;lt;code&amp;gt;/dev/sdb1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/sdb1 /mnt&lt;br /&gt;
rsync -av /boot/efi/ /mnt/&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si pour une raison quelconque, vous aviez besoin des headers du kernel :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install pve-headers-5.15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitions GPT pour BIOS OU Partitions MBR pour BIOS===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-pc gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on vous demandera où installer grub, choisissez &amp;lt;code&amp;gt;sda&amp;lt;/code&amp;gt; ET &amp;lt;code&amp;gt;sdb&amp;lt;/code&amp;gt;. Sinon :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-install /dev/sda&lt;br /&gt;
grub-install /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - OpenSSH==&lt;br /&gt;
&lt;br /&gt;
Installez openssh et définissez un password root. Autorisez le login root par password temporairement.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install openssh-server&lt;br /&gt;
passwd&lt;br /&gt;
sed -i &amp;quot;s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g&amp;quot; /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - Vérifications finales et redémarrage sur le kernel proxmox==&lt;br /&gt;
&lt;br /&gt;
Si vous avez une configuration particulière à entrer dans &amp;lt;code&amp;gt;/etc/default/grub&amp;lt;/code&amp;gt;, faites le maintenant. Par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;nomodeset iommu=pt&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis régénérez la configuration de grub :&lt;br /&gt;
&amp;lt;pre&amp;gt;update-grub&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez vérifier que votre fstab est valide avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;findmnt --verify --verbose&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /boot/efi/&lt;br /&gt;
exit&lt;br /&gt;
umount /mnt/sys&lt;br /&gt;
umount /mnt/dev/pts&lt;br /&gt;
umount /mnt/dev&lt;br /&gt;
umount /mnt/proc&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, redémarrez le serveur sur le disque dur.&lt;br /&gt;
&lt;br /&gt;
==Installation de ifupdown2==&lt;br /&gt;
&lt;br /&gt;
Le paquet &amp;lt;code&amp;gt;ifupdown2&amp;lt;/code&amp;gt; est en voie de devenir le remplaçant officiel de &amp;lt;code&amp;gt;ifupdown&amp;lt;/code&amp;gt; pour proxmox.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ifupdown2&lt;br /&gt;
apt purge ifupdown&lt;br /&gt;
systemctl enable networking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que votre configuration est fonctionnelle : lancez &amp;lt;code&amp;gt;ifquery -a&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrez à nouveau votre serveur&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - pve==&lt;br /&gt;
&lt;br /&gt;
Une fois le redémarrage effectué, vous allez enfin pouvoir installer pve :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install proxmox-ve ksm-control-daemon chrony&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;apt remove os-prober&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editez la configuration réseau &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; afin d&#039;y créer votre bridge :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet manual&lt;br /&gt;
&lt;br /&gt;
auto vmbr0&lt;br /&gt;
iface vmbr0 inet static&lt;br /&gt;
        address xxxxx/24&lt;br /&gt;
        gateway xxxx&lt;br /&gt;
        hwaddress AA:BB:CC:11:22:33&lt;br /&gt;
        bridge_ports eno3&lt;br /&gt;
        bridge_stp off&lt;br /&gt;
        bridge_fd 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la ligne &amp;lt;code&amp;gt;hwaddress&amp;lt;/code&amp;gt; avec l&#039;adresse MAC de l&#039;interface eno3.&lt;br /&gt;
&lt;br /&gt;
Installez votre clé SSH dans &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; puis désactivez le login root par password de OpenSSH dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois tout installé, je vous conseille de reconfigurer grub afin de mettre à jour la configuration interne de debian:&lt;br /&gt;
* Pour EFI : &amp;lt;code&amp;gt;dpkg-reconfigure grub-efi-amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pour BIOS : &amp;lt;code&amp;gt;dpkg-reconfigure grub-pc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrez une dernière fois pour appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
Votre proxmox sera accessible à l&#039;adresse https://ip:8006&lt;br /&gt;
&lt;br /&gt;
==Nettoyage des paquets==&lt;br /&gt;
&lt;br /&gt;
Si vous ne comptez pas utiliser ZFS, vous pouvez supprimer les paquets suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge zfs-zed libnvpair3linux libuutil3linux libzfs4linux libzpool5linux zfsutils-linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration réseau avancée==&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;une IPv6 sur vmbr0===&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;un réseau interne vmbr1===&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment créer un réseau interne avec proxmox, c&#039;est à dire, un réseau qui ne sera attaché à aucune interface réseau physique. L&#039;intérêt est d&#039;offrir un débit bien supérieur pour les communications entre les VMs.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto vmbr1&lt;br /&gt;
iface vmbr1 inet static&lt;br /&gt;
        address  192.168.0.1&lt;br /&gt;
        netmask  255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : vous pouvez faire de même en ipv6 :&lt;br /&gt;
* il faut utiliser le range Unique Local Address (ULA) fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address)&lt;br /&gt;
* pour générer votre ULA : http://pfoo.unscdf.org/ula/gen-ula.html&lt;br /&gt;
&lt;br /&gt;
==Sécurisation de base==&lt;br /&gt;
&lt;br /&gt;
Je vous conseil de commencer à sécuriser votre ssh :&lt;br /&gt;
* désactivez le login root (directive &amp;lt;code&amp;gt;PermitRootLogin no&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;). Pensez néanmoins à créer un utilisateur pour vous connecter en ssh avant de désactiver le login root.&lt;br /&gt;
* utilisez la directive &amp;lt;code&amp;gt;allowusers &amp;lt;user&amp;gt;&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; pour n&#039;autoriser que certains utilisateurs à se connecter en ssh.&lt;br /&gt;
&lt;br /&gt;
Il est aussi préférable d&#039;installer le serveur de temps NTP à la place de systemd-timesyncd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install chrony&lt;br /&gt;
apt purge systemd-timesyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configurer le serveur mail postfix=&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
==Certificats SSL==&lt;br /&gt;
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. Si ce n&#039;est pas le cas, vous pouvez toujours aller lire [http://wiki.unscdf.org/index.php?title=Installation_et_configuration_de_OpenSSL ceci] afin d&#039;apprendre à créer votre autorité ssl.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/ssl/openssl.cnf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[POSTFIX]&lt;br /&gt;
nsComment                       = &amp;quot;SMTP Server Certificate&amp;quot;&lt;br /&gt;
subjectKeyIdentifier            = hash&lt;br /&gt;
authorityKeyIdentifier          = keyid,issuer:always&lt;br /&gt;
issuerAltName                   = issuer:copy&lt;br /&gt;
basicConstraints                = critical,CA:FALSE&lt;br /&gt;
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment&lt;br /&gt;
nsCertType                      = server&lt;br /&gt;
extendedKeyUsage                = serverAuth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis générez la clé et le certificat, et signez le avec votre autorité (int_ca dans mon cas) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req&lt;br /&gt;
openssl ca -config /etc/ssl/openssl.cnf -name int_ca -extensions POSTFIX -in postfix.req -out postfix.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Déplacez les fichiers dans le répertoire &amp;lt;code&amp;gt;/etc/postfix/ssl&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/postfix/ssl&lt;br /&gt;
mv postfix.key /etc/postfix/ssl/&lt;br /&gt;
mv postfix.pem /etc/postfix/ssl/&lt;br /&gt;
chmod 600 /etc/postfix/ssl/*&lt;br /&gt;
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/int_ca/int_ca.pem &amp;gt; /etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut encore modifier &amp;lt;code&amp;gt;/etc/postfix/main.cf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smtpd_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtpd_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
smtpd_use_tls=yes&lt;br /&gt;
smtp_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtp_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&lt;br /&gt;
smtpd_tls_security_level=may&lt;br /&gt;
smtp_tls_security_level=may&lt;br /&gt;
smtpd_tls_loglevel = 1&lt;br /&gt;
smtp_tls_loglevel = 1&lt;br /&gt;
&lt;br /&gt;
#smtp_tls_policy_maps = hash:/etc/postfix/tls_policy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire=&lt;br /&gt;
&lt;br /&gt;
Depuis Proxmox 5.2, il n&#039;est plus recommandé d&#039;adapter manuellement les fichiers contenant les certificats et clés privés de proxmox.&amp;lt;br&amp;gt;&lt;br /&gt;
Cependant, vous pouvez placer directement votre clé privé dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.key&amp;lt;/code&amp;gt; et la chaîne de certification dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.pem&amp;lt;/code&amp;gt;. Vous pouvez également déposer ces fichiers via la webui de proxmox au niveau de chaque serveur.&lt;br /&gt;
&lt;br /&gt;
Si vous avez endommagé les certificats autogénérés par proxmox (&amp;lt;code&amp;gt;/etc/pve/pve-root-ca.pem&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/etc/pve/priv/pve-root-ca.key&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/etc/pve/nodes/&amp;lt;node&amp;gt;/pve-ssl.pem&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/etc/pve/nodes/&amp;lt;node&amp;gt;/pve-ssl.key&amp;lt;/code&amp;gt;), vous pouvez les régénérer avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;pvecm updatecerts -f&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Surveiller l&#039;état des disques avec SMART=&lt;br /&gt;
&lt;br /&gt;
Commencez par installer le paquet smartmontools :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install smartmontools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez que vos disques gèrent smart et qu&#039;il est activé :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -i /dev/sda&lt;br /&gt;
smartctl -i /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si smart n&#039;est pas activé, essayez de l&#039;activer comme ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -s on /dev/sda&lt;br /&gt;
smartctl -s on /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez le statut de santé de vos disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -H /dev/sda&lt;br /&gt;
smartctl -H /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
S&#039;il indique &amp;lt;code&amp;gt;PASSED&amp;lt;/code&amp;gt; c&#039;est bon de ce côté. S&#039;il vous indique &amp;lt;code&amp;gt;FAILED&amp;lt;/code&amp;gt;, sauvegardez immédiatement vos données !&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence d&#039;erreurs dans le log smart :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -l error /dev/sda&lt;br /&gt;
smartctl -l error /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez &amp;lt;code&amp;gt;No Errors Logged&amp;lt;/code&amp;gt; ou quelques erreurs, c&#039;est bon. S&#039;il y eu a beaucoup, il faut envisager de changer le disque.&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration de smartd est &amp;lt;code&amp;gt;/etc/smartd.conf&amp;lt;/code&amp;gt;. Commentez la ligne &amp;lt;code&amp;gt;DEVICESCAN&amp;lt;/code&amp;gt; puis ajoutez les lignes suivantes pour surveiller les deux disques durs :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
/dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous activons la surveillance globale (&amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt;), la vérification automatique offline, (&amp;lt;code&amp;gt;-o on&amp;lt;/code&amp;gt;), la sauvegarde automatique des attributs (&amp;lt;code&amp;gt;-S on&amp;lt;/code&amp;gt; et lançons un &amp;lt;code&amp;gt;short self test&amp;lt;/code&amp;gt; tous les jours à 2h du matin, et un &amp;lt;code&amp;gt;long self test&amp;lt;/code&amp;gt; tous les samedi à 3h du matin. Si des erreurs sont détectés, un email est envoyé à vous@domain.tld.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez smartd :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/smartmontools restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;information sur SMART et ses arguments : [[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
&lt;br /&gt;
=Protégez votre proxmox=&lt;br /&gt;
&lt;br /&gt;
==Désactiver le login root sur l&#039;interface proxmox==&lt;br /&gt;
Avant toute manipulation, n&#039;oubliez pas de créer un utilisateur ayant les droits d&#039;administration pour accéder à l&#039;interface de proxmox&lt;br /&gt;
&lt;br /&gt;
===Via l&#039;interface proxmox===&lt;br /&gt;
Dans Datacenter &amp;gt; Permissions &amp;gt; Users : Editez l&#039;utilisateur root et décochez la case &amp;lt;code&amp;gt;Enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Via les droits linux===&lt;br /&gt;
&amp;lt;pre&amp;gt;passwd --lock root&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 !&lt;br /&gt;
&lt;br /&gt;
===Via PAM===&lt;br /&gt;
Vous pouvez désactiver le login pam en éditant &amp;lt;code&amp;gt;/etc/pam.d/other&amp;lt;/code&amp;gt; et en y ajoutant, en début de fichier, les lignes suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth        required    pam_deny.so&lt;br /&gt;
auth        required    pam_warn.so&lt;br /&gt;
account     required    pam_deny.so&lt;br /&gt;
account     required    pam_warn.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attention, cette méthode peut avoir des effets de bord si d&#039;autres programmes utilisent l&#039;entité pam/other&lt;br /&gt;
&lt;br /&gt;
==Désactiver rpcbind==&lt;br /&gt;
&lt;br /&gt;
Si vous n&#039;utilisez pas de montage NFS vous pouvez désactiver rpcbind.&amp;lt;br&amp;gt;&lt;br /&gt;
Editez &amp;lt;code&amp;gt;/etc/default/nfs-common&amp;lt;/code&amp;gt; et passez l&#039;argument suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;NEED_STATD=no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis désactivez rpcbind :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable rpcbind.target&lt;br /&gt;
systemctl disable rpcbind.socket&lt;br /&gt;
systemctl disable rpcbind.service&lt;br /&gt;
systemctl stop rpcbind.target&lt;br /&gt;
systemctl stop rpcbind.socket&lt;br /&gt;
systemctl stop rpcbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eviter les reboots accidentels avec molly-gard==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install molly-guard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Protection SSH avec sshguard==&lt;br /&gt;
&lt;br /&gt;
[[Protéger SSH avec sshguard]]&lt;br /&gt;
&lt;br /&gt;
==Protéger l&#039;interface web avec fail2ban==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install fail2ban&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/jail.local&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
# &amp;quot;ignoreip&amp;quot; can be an IP address, a CIDR mask or a DNS host&lt;br /&gt;
ignoreip = 127.0.0.1&lt;br /&gt;
bantime  = 1800&lt;br /&gt;
maxretry = 3&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Destination email address used solely for the interpolations in&lt;br /&gt;
# jail.{conf,local} configuration files.&lt;br /&gt;
destemail = root@localhost&lt;br /&gt;
&lt;br /&gt;
action = %(action_mwl)s&lt;br /&gt;
&lt;br /&gt;
[ssh]&lt;br /&gt;
enabled = false&lt;br /&gt;
&lt;br /&gt;
[sshd]&lt;br /&gt;
enabled  = false&lt;br /&gt;
&lt;br /&gt;
[proxmox]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = https,http,8006&lt;br /&gt;
filter = proxmox&lt;br /&gt;
backend = systemd&lt;br /&gt;
maxretry = 4&lt;br /&gt;
findtime = 2d&lt;br /&gt;
bantime = 1h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/filter.d/proxmox.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Definition]&lt;br /&gt;
failregex = pvedaemon\[.*authentication failure; rhost=&amp;lt;HOST&amp;gt; user=.* msg=.*&lt;br /&gt;
ignoreregex =&lt;br /&gt;
journalmatch = _SYSTEMD_UNIT=pvedaemon.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez fail2ban :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/fail2ban restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==firewall iptables==&lt;br /&gt;
&lt;br /&gt;
=Création d&#039;un stockage pour les VMs=&lt;br /&gt;
&lt;br /&gt;
Créez les partitions sda4 et sdb4 au moyen de gdisk (EFI) ou parted (BIOS).&lt;br /&gt;
&lt;br /&gt;
Créez sur ces partitions un raid :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create --verbose /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenez à jour &amp;lt;code&amp;gt;mdadm.conf&amp;lt;/code&amp;gt; et votre initramfs afin de conserver le bon naming du raid après reboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
update-initramfs -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis initialisez-y un LVM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvcreate /dev/md4&lt;br /&gt;
vgcreate main /dev/md4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu&#039;a déclarer ce Volume Group LVM dans l&#039;interface proxmox.&lt;br /&gt;
&lt;br /&gt;
=VM qemu/kvm=&lt;br /&gt;
&lt;br /&gt;
==Télécharger vos images==&lt;br /&gt;
&lt;br /&gt;
Vous pouvez placer les iso dans &amp;lt;code&amp;gt;/var/lib/vz/template/iso/&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt; par exemple.&lt;br /&gt;
Notez que l&#039;interface graphique de proxmox propose également une fonction d&#039;upload.&lt;br /&gt;
&lt;br /&gt;
==Créer votre première VM==&lt;br /&gt;
&lt;br /&gt;
Une fois la VM crées dans l&#039;interface proxmox, je vous recommande d&#039;écrire des zero sur son disque afin de réduire la taille des futurs backups. Si votre vm porte le numéro 100 et possède un seul disque :&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/zero | pv -ptrb | dd of=/dev/main/vm-100-disk1 bs=1M&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr0 (ip public)===&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr1 (ip locale)===&lt;br /&gt;
&lt;br /&gt;
Configuration réseau de la VM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.0.2&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
gateway 192.168.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Règle iptables à ajouter sur l&#039;hôte :&lt;br /&gt;
&amp;lt;pre&amp;gt;iptables -t nat -A POSTROUTING -s 192.168.0.2 -o vmbr0 -j SNAT --to IP-PUBLIC-DE-VOTRE-HOTE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez rendre accessible l&#039;un des services de la VM depuis l&#039;ip de l&#039;hote sur un port sépcifique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -t nat -A PREROUTING -p tcp -d &amp;lt;ip de l&#039;hote&amp;gt; --dport &amp;lt;port souhaité&amp;gt; -i vmbr0 -j DNAT --to-destination 192.168.0.2:port&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bloquer le spoofing d&#039;adresse mac==&lt;br /&gt;
Sur l&#039;hyperviseur, installez &amp;lt;code&amp;gt;ebtables&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install ebtables&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Admettons ensuite que votre VM a comme adresse ip &amp;lt;code&amp;gt;84.93.26.3&amp;lt;/code&amp;gt; et que son adresse mac doit être &amp;lt;code&amp;gt;52:54:00:00:98:b6&amp;lt;/code&amp;gt; : &lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv4 --ip-src 84.93.26.3 -s ! 52:54:00:00:98:b6 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez faire de même pour l&#039;ipv6. Dans l&#039;exemple suivant, seul le bloc ipv6 &amp;lt;code&amp;gt;2a01:d4h:123b:100::/56&amp;lt;/code&amp;gt; est utilisable par la vm :&lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv6 --ip6-src 2a01:d4h:123b:100::/56 -s ! 52:54:00:00:08:b1 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Importer une VM depuis vmware ESXi==&lt;br /&gt;
&lt;br /&gt;
==qm et modification des VMs en ligne de commande==&lt;br /&gt;
&lt;br /&gt;
==Monter les partitions d&#039;une VM depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pour la partition 1 : start*blocksize = offset&lt;br /&gt;
donc 2048*512 = 1048576&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;losetup /dev/loop1 -o 1048576 /dev/main/vm-101-disk-1 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et enfin :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount /dev/loop1 /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé vos modifications :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /mnt&lt;br /&gt;
losetup -d /dev/loop1&lt;br /&gt;
losetup -d /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Si la partition que vous voulez monter est un LVM===&lt;br /&gt;
&lt;br /&gt;
Scannez les nouveaux volumes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm pvscan&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activez les groupes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm vgchange -ay&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
listez les lvms avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm lvs&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les LV devraient apparaître dans &amp;lt;code&amp;gt;/dev/mapper/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé :&lt;br /&gt;
* démontez les LV&lt;br /&gt;
* Désactivez le groupe avec &amp;lt;code&amp;gt;vgchange -an&amp;lt;/code&amp;gt;&lt;br /&gt;
* désactivez le loopback : &amp;lt;code&amp;gt;losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Augmenter la taille du disque d&#039;une VM==&lt;br /&gt;
&lt;br /&gt;
Coupez la VM.&lt;br /&gt;
&lt;br /&gt;
Sur l&#039;host pour modifier la taille du disque 1 de la vm 110 ) 140G :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvextend -L 140G /dev/main/vm-110-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut ensuite, sur la vm lancée, utiliser resize2fs&lt;br /&gt;
&lt;br /&gt;
==Migrer une VM vers un autre serveur manuellement (pas de cluster) avec un downtime minimum==&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment migrer une VM proxmox stockée sur un LVM d&#039;un serveur à un autre, et ce, en minimisant au maximum le downtime. Pour cela, nous allons coupler la fonctionnalité de snapshot de lvm avec un petit script (lvmsync) qui permet de ne transférer que les blocs modifiés d&#039;un snapshot.&lt;br /&gt;
&lt;br /&gt;
Installez dmsetup et ruby (1.8 minimum) sur le serveur d&#039;origine et de destination :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install dmsetup ruby&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Récupérez &amp;lt;code&amp;gt;lvmsync&amp;lt;/code&amp;gt; sur https://github.com/mpalmer/lvmsync et placez le dans /sbin/ sur les serveurs d&#039;origine et de destination.&lt;br /&gt;
&lt;br /&gt;
Dans cet exemple, nous allons migrer la vm 102 disposant d&#039;un seul disque virtuel nommé vm-102-disk-1 et stocké dans le vg main du serveur server1.domain.tld vers le serveur server2.domain.tld.&lt;br /&gt;
Pour commencer, créez un snapshot de votre vm sur server1 :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvcreate --snapshot -L200G -n 102-lvmsync main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Désormais, tous les io de cette vm seront stockés dans le snapshot 102-lvmsync.&lt;br /&gt;
&lt;br /&gt;
Sur votre nouveau serveur, créez une VM identique à celle de votre premier serveur (surtout en qui concerne la taille de disque).&lt;br /&gt;
Depuis server1, copiez avec un dd over ssh le disque d&#039;origine de votre vm vers votre nouveau serveur.&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/main/vm-102-disk-1 | pv -ptrb | ssh -o &amp;quot;Compression no&amp;quot; root@server2.domain.tld &amp;quot;dd of=/dev/main/vm-102-disk-1 bs=100M&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : sur un réseauu 100Mbps utilisez plutôt &amp;lt;code&amp;gt;-o &amp;quot;Compressionlevel 1&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois la copie terminée, coupez la vm 102 sur server1, puis lancez lvmsync sur le snapshot (toujours sur server1) :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvmsync /dev/main/102-lvmsync server2.domain.tld:/dev/main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois le travail de lvmsync achevé, il ne nous reste plus qu&#039;a relancer la vm sur server2&lt;br /&gt;
&lt;br /&gt;
A titre d&#039;information, si vous voulez merger le snapshot de la vm 102 sur server 1, tapez :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvconvert --merge /dev/main/102-lvmsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conteneur LXC=&lt;br /&gt;
&lt;br /&gt;
==Empêcher la mise à jour automatique de certains fichiers de configuration système du conteneur==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
On peut empêcher la mise à jour de ces fichiers en créant un fichier &amp;lt;code&amp;gt;.pve-ignore.NOM&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, &amp;lt;code&amp;gt;/etc/.pve-ignore.resolv.conf&amp;lt;/code&amp;gt; empêchera le fichier &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; d&#039;être mis à jour à chaque démarrage.&lt;br /&gt;
&lt;br /&gt;
=Annexes=&lt;br /&gt;
&lt;br /&gt;
==Problème de layout dans la console vnc==&lt;br /&gt;
Dans l&#039;interface web de proxmox : datacenter &amp;gt; option &amp;gt; passez Keyboard de &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; à &amp;lt;code&amp;gt;French&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Erreurs du type &amp;lt;code&amp;gt;IPv6 addrconf: prefix with wrong length 56&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64.&lt;br /&gt;
Ajouter les lignes suivantes dans un fichier &amp;lt;code&amp;gt;/etc/sysctl.d/local.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
net.ipv6.conf.all.autoconf = 0&lt;br /&gt;
net.ipv6.conf.default.autoconf = 0&lt;br /&gt;
net.ipv6.conf.eno3.autoconf = 0&lt;br /&gt;
net.ipv6.conf.vmbr0.autoconf = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Terminez par relancer procps :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/procps restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==paramètre sysctl ipv6 non appliqué au boot==&lt;br /&gt;
Ajoutez le module ipv6 dans /etc/modules afin d&#039;assurer le chargement d&#039;ipv6 avant l’exécution de sysctl :&lt;br /&gt;
&amp;lt;pre&amp;gt;echo ipv6 &amp;gt;&amp;gt; /etc/modules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LVM inaccessible depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lvm pvscan&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface web ne fonctionne pas et la commande qm retourne une erreur ipcc_send_rec failed: Connection refused==&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence de fichiers et dossiers dans &amp;lt;code&amp;gt;/etc/pve/&amp;lt;/code&amp;gt;. Si ce dossier est vide, c&#039;est probablement que votre fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; est mal configuré.&amp;lt;br&amp;gt;&lt;br /&gt;
Essayez de relancer &amp;lt;code&amp;gt;pve-cluster&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/pve-cluster restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez une erreur ou un warning, lancez la commande pmxcfs. Vous devriez obtenir ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$# pmxcfs &lt;br /&gt;
Jan 21 15:28:19 proxmox pmxcfs[1846]: Unable to get local IP address (pmxcfs.c:721:main)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez alors que le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est défini dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si par exemple &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; contient &amp;lt;code&amp;gt;proxmox.domain.tld&amp;lt;/code&amp;gt; vous devriez avoir la ligne suivante dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;VOTREIP proxmox.domain.tld proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pas assez d&#039;interfaces loopback==&lt;br /&gt;
&lt;br /&gt;
Créer le fichier &amp;lt;code&amp;gt;/etc/modprobe.d/local-loop.conf&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;options loop max_loop=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite redémarrer ou recharger le module loop :&lt;br /&gt;
&amp;lt;pre&amp;gt; rmmod loop &amp;amp;&amp;amp; modprobe loop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Défragmentation LVM : exemple==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hub:~# pvdisplay --maps&lt;br /&gt;
  --- Physical volume ---&lt;br /&gt;
  PV Name               /dev/sda4&lt;br /&gt;
  VG Name               main&lt;br /&gt;
  PV Size               1.76 TB / not usable 456.00 KB&lt;br /&gt;
  Allocatable           yes &lt;br /&gt;
  PE Size (KByte)       4096&lt;br /&gt;
  Total PE              461649&lt;br /&gt;
  Free PE               208721&lt;br /&gt;
  Allocated PE          252928&lt;br /&gt;
  PV UUID               PUqV5Q-WRW2-n20t-eFVM-CA1r-RhDl-2RTJHq&lt;br /&gt;
   &lt;br /&gt;
  --- Physical Segments ---&lt;br /&gt;
  Physical extent 0 to 7935:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-1&lt;br /&gt;
    Logical extents     0 to 7935&lt;br /&gt;
  Physical extent 7936 to 72191:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 72192 to 136703:&lt;br /&gt;
    Logical volume      /dev/main/vm-102-disk-1&lt;br /&gt;
    Logical extents     0 to 64511&lt;br /&gt;
  Physical extent 136704 to 144895:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-1&lt;br /&gt;
    Logical extents     0 to 8191&lt;br /&gt;
  Physical extent 144896 to 209151:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 209152 to 214271:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-1&lt;br /&gt;
    Logical extents     0 to 5119&lt;br /&gt;
  Physical extent 214272 to 227327:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-2&lt;br /&gt;
    Logical extents     0 to 13055&lt;br /&gt;
  Physical extent 227328 to 282111:&lt;br /&gt;
    FREE&lt;br /&gt;
  Physical extent 282112 to 307711:&lt;br /&gt;
    Logical volume      /dev/main/vm-108-disk-1&lt;br /&gt;
    Logical extents     0 to 25599&lt;br /&gt;
  Physical extent 307712 to 461648:&lt;br /&gt;
    FREE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir, on a un trou &amp;quot;vide&amp;quot; entre l&#039;extent &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; et 282111, puis à nouveau des données entre l&#039;extent &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour combler ce trou, nous allons déplacer les données des  /dev/main/vm-108-disk-1 situés entre les extents &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; (soit 25599 extents au total) vers l&#039;espace libre avec &amp;lt;code&amp;gt;pvmove&amp;lt;/code&amp;gt; :&amp;lt;br&amp;gt;&lt;br /&gt;
pvmove /dev/sda4:&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; /dev/sda4:&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt; --alloc anywhere&lt;br /&gt;
&lt;br /&gt;
Notez qu&#039;il faut attribuer exactement le même nombre d&#039;extents à la destination qu&#039;à l&#039;origine : &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; + 25599 = &amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Oups: j&#039;ai supprimé le mauvais lvm==&lt;br /&gt;
&lt;br /&gt;
Pas de panique, mais ne bougez plus ! Pour l&#039;instant, seul les métadonnées du lvm sont impactés.&lt;br /&gt;
Et comme c&#039;est bien foutu, lvm conserve un backup des anciennes metadonnées après chaque modification. Ces archives sont situés dans &amp;lt;code&amp;gt;/etc/lvm/archive/&amp;lt;/code&amp;gt;. Les fichiers y sont nommés sous la forme vg_XXXX-YYYYYYY.vg. Normalement, le fichier ayant le XXXX le plus élevé sera celui de l&#039;état précédent votre erreur.&lt;br /&gt;
Pour vérifier que vous avez sélectionné le bon fichier, vous pouvez l&#039;ouvrir avec nano et regarder si l&#039;état du lvm dans cette archive correspond a ce que vous attendez.&lt;br /&gt;
&lt;br /&gt;
Pour restaurer l&#039;archive des métadonnées main_00007-587941649.vg pour le vg main :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vgcfgrestore -f /etc/lvm/archive/main_00007-587941649.vg main&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Votre volume devrait être de retour.&lt;br /&gt;
&lt;br /&gt;
Il faut encore vérifier que la table de partition contenu sur ce lvm n&#039;a pas morphlé. En admettant que /dev/main/vm-101-disk-1 est la lvm que vous venez de restaurer :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez ça, c&#039;est bon, vous êtes sauvés ! Si ce n&#039;est pas le cas, continuez à lire ;)&lt;br /&gt;
&lt;br /&gt;
===Récupération de la table de partition===&lt;br /&gt;
&lt;br /&gt;
Si fdisk vous envois chier avec un message du style &amp;lt;code&amp;gt;Disk /dev/loop0 doesn&#039;t contain a valid partition table&amp;lt;/code&amp;gt;, il va falloir récupérer la table de partition.&lt;br /&gt;
&lt;br /&gt;
Installez testdisk :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install testdisk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lancez le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# testdisk /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selectionez le media &amp;lt;code&amp;gt;/dev/loop0&amp;lt;/code&amp;gt; et validez avec &amp;lt;code&amp;gt;enter&amp;lt;/code&amp;gt;.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;intel&amp;lt;/code&amp;gt; comme type de table de partition.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;analyse&amp;lt;/code&amp;gt;&lt;br /&gt;
A l&#039;écran suivant, tapez enter.&lt;br /&gt;
Avec de la chance, testdisk retrouvera vos partitions. Une fois qu&#039;il aura terminé de travailler, il ne restera plus qu&#039;à taper sur enter encore une fois, puis demander à testdisk de sauvegarder la table de partition&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface proxmox n&#039;affiche pas les disques de certaines VMs==&lt;br /&gt;
&lt;br /&gt;
Ceci arrive typiquement si vous avez créé un volume logique à la main sans y ajouter le bon tag.&lt;br /&gt;
Vérifiez la présence des tags sur vos LV avec la commande &amp;lt;code&amp;gt;lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  20.00g &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous le voyez, le lv de la vm 101 n&#039;est pas tagué. Vous pouvez ajouter le tag avec &amp;lt;code&amp;gt;lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  16.00g pve-vm-101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas,  essayez de passer un petit coup de &amp;lt;code&amp;gt;qm rescan&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4405</id>
		<title>Proxmox 8</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4405"/>
		<updated>2025-10-04T10:28:00Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:virtualisation]]&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment installer proxmox 8.x sur un raid 1 logiciel (md / mdadm) avec debootstrap.&lt;br /&gt;
&lt;br /&gt;
=Prérequis=&lt;br /&gt;
&lt;br /&gt;
Ce tutoriel se base sur l&#039;utilisation de debootstrap pour installer une base de système d&#039;exploitation debian. La plupart des hébergeurs proposent un système de &amp;quot;rescue&amp;quot; permettant l&#039;installation de debian par ce moyen.&lt;br /&gt;
Si vous ne disposez pas de mode rescue, vous pouvez toujours utiliser l&#039;installeur proposé par votre hébergeur, ou encore passer par un kvm pour installer vous même le système avec l&#039;iso de debian.&lt;br /&gt;
&lt;br /&gt;
=Pour les débutants=&lt;br /&gt;
&lt;br /&gt;
Si vous êtes débutant en administration linux, je vous conseil de sauvegarder quelque part les fichier suivant issu d&#039;une précédente installation de debian ou de proxmox&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/networks&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt; si vous disposez d&#039;un raid logiciel&lt;br /&gt;
* tout fichier de personnalisation de grub (&amp;lt;code&amp;gt;/etc/grub.d/&amp;lt;/code&amp;gt; par exemple)&lt;br /&gt;
&lt;br /&gt;
Cela vous permettra de vous faire une idée plus précise de ce qui doit figurer dans ces différents fichiers.&lt;br /&gt;
&lt;br /&gt;
=Partitionnement et système de fichier=&lt;br /&gt;
&lt;br /&gt;
Voici le partitionnement que je vais utiliser :&lt;br /&gt;
* Partition root (/) de 20 Go (/) en raid 1 sur les disques sda et sdb&lt;br /&gt;
* Partitions swap de 4096 Go chacune réparties sur sda et sdb&lt;br /&gt;
* Le reste de l&#039;espace sera utilisé plus tard pour un LVM dédié aux VMs&lt;br /&gt;
&lt;br /&gt;
==Partitionnement==&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitionnement GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions EFI (ESP), obligatoire pour le démarrage EFI/UEFI. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF00&amp;lt;/code&amp;gt;. 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).&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour les partitions EFI, nous créons un système de fichier FAT32 avec le label (nom) &amp;lt;code&amp;gt;EFI_SYSPART&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sda1&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sdb1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitionnement GPT pour BIOS===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions pour le bootloader. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF02&amp;lt;/code&amp;gt;. On peut la créer idéalement du secteur 34 au secteur 2047 du disque.&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notez que la partition du bootloader ne doit pas être formatée.&lt;br /&gt;
&lt;br /&gt;
===Possibilité 3 : partitionnement MBR pour BIOS (non prise en charge dans ce wiki)===&lt;br /&gt;
&lt;br /&gt;
A titre informatif : création avec &amp;lt;code&amp;gt;parted&amp;lt;/code&amp;gt;, sans nécessité de créer une partition dédiée au bootloader/grub.&lt;br /&gt;
&lt;br /&gt;
==Création du RAID==&lt;br /&gt;
&lt;br /&gt;
Pour des raisons esthétiques, définissez l&#039;hostname de votre système de rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;hostname proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour créer votre raid 1 avec 2 disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que si vous souhaitez utiliser plus que 2 disques, il faut augmenter la valeur de &amp;lt;code&amp;gt;--raid-devices&amp;lt;/code&amp;gt; et ajouter les partitions des disques à la suite.&lt;br /&gt;
&lt;br /&gt;
Attendez que le raid soit synchronisé avant de continuer. Vous pouvez surveiller facilement cela avec la commande &amp;lt;code&amp;gt;watch cat /proc/mdstat&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Création des systèmes de fichiers==&lt;br /&gt;
&lt;br /&gt;
Créez un système de fichier ext4 pour le raid du root :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/md2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, initialisez les swaps :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkswap /dev/sda3&lt;br /&gt;
mkswap /dev/sdb3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Installation de proxmox=&lt;br /&gt;
&lt;br /&gt;
==Installation du système de base==&lt;br /&gt;
&lt;br /&gt;
Nous débutons par installer le système de base de Debian avec &amp;lt;code&amp;gt;debootstrap&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les paquets nécessaires dans votre rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install debootstrap debian-keyring debian-archive-keyring&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez votre partition raid root sur &amp;lt;code&amp;gt;/mnt&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/md2 /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez le système de base debian, version bookworm :&lt;br /&gt;
&amp;lt;pre&amp;gt;debootstrap --arch=amd64 bookworm /mnt http://ftp.fr.debian.org/debian&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration de Debian==&lt;br /&gt;
&lt;br /&gt;
Montez les vfs suivants, puis chrootez dans votre nouveau système debian :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount -o bind /proc /mnt/proc&lt;br /&gt;
mount -o bind /dev /mnt/dev&lt;br /&gt;
mount -o bind /dev/pts /mnt/dev/pts&lt;br /&gt;
mount -o bind /sys /mnt/sys&lt;br /&gt;
chroot /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les archives apt : éditez le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main archive&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# security updates&lt;br /&gt;
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# bookworm-updates, previously known as &#039;volatile&#039;&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# backports archive&lt;br /&gt;
deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour les paquets :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les locales et la configuration de console :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install locales &lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
apt install console-data console-setup-linux console-setup wget&lt;br /&gt;
dpkg-reconfigure console-data # from arch &amp;gt; french &amp;gt; latin9)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la zone horaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tzselect&lt;br /&gt;
dpkg-reconfigure tzdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez votre fichier &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Pour GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda1       /boot/efi       vfat    defaults                                  0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour GPT pour BIOS :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez la partition EFI / ESP dans le cas d&#039;un partitionnement GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /boot/efi&lt;br /&gt;
mount /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les interfaces réseaux dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The loopback network interface&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet static&lt;br /&gt;
        address XXXX/24&lt;br /&gt;
        gateway XXXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# local&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
::1             localhost ip6-localhost ip6-loopback&lt;br /&gt;
ff02::1         ip6-allnodes&lt;br /&gt;
ff02::2         ip6-allrouters&lt;br /&gt;
&lt;br /&gt;
# main&lt;br /&gt;
ipdelamachine   proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez les hostnames dans ces fichiers :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Pour celui la : non-fqdn&lt;br /&gt;
echo proxmox &amp;gt; /etc/hostname&lt;br /&gt;
# Pour celui la : fqdn&lt;br /&gt;
echo proxmox.domain.tld &amp;gt; /etc/mailname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION&#039;&#039;&#039; Le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; DOIT être cohérent avec le fichier &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, si le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est &amp;lt;code&amp;gt;proxmox&amp;lt;/code&amp;gt; et que l&#039;ip de votre proxmox est 225.182.54.9 il faudra veiller a avoir les informations suivantes dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1 localhost&lt;br /&gt;
225.182.54.9 proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attention : n&#039;utilisez pas 127.0.1.1 (comme le fait debian) mais bien la vrai ip (ici 225.182.54.9)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
N&#039;oubliez pas de configurer les dns (ceux de votre hébergeur dédié) dans &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;nameserver XX.XX.XX.XX&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez postfix :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install postfix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, comme nous installons notre partition de boot sur un raid software, il faut installer &amp;lt;code&amp;gt;madadm&amp;lt;/code&amp;gt; à ce stade :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install mdadm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez si votre array root s&#039;est bien défini automatiquement dans &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt;. Si ce n&#039;est pas me cas, ajoutez la configuration de l&#039;array manuellement :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - kernel==&lt;br /&gt;
&lt;br /&gt;
Ajoutez le dépot proxmox dans le fichier /etc/apt/source.list :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use&lt;br /&gt;
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajoutez la clé du dépôt proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour le système :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitions GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Vérifiez que &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt; est bien monté. Si ce n&#039;est pas le cas, faites le.&lt;br /&gt;
&lt;br /&gt;
Installez le kernel proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-efi-amd64 gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supprimez les paquets suivant si vous n&#039;avez pas besoin de secureboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed shim-signed-common shim-unsigned&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normalement tout doit se faire avec des promps. Si ce n&#039;était pas le cas :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si jamais vous utilisez un démarrage en PXE (c&#039;est le cas sur un serveur OVH par exemple), utilisez l&#039;argument &amp;lt;code&amp;gt;--no-nvram&amp;lt;/code&amp;gt; pour empêcher grub de mettre à jour la NVRAM et casser votre mécanique de démarrage PXE :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox --no-nvram&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Etant donné que seul &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; est monté sur &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt;, il faut transférer manuellement les données sur &amp;lt;code&amp;gt;/dev/sdb1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/sdb1 /mnt&lt;br /&gt;
rsync -av /boot/efi/ /mnt/&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si pour une raison quelconque, vous aviez besoin des headers du kernel :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install pve-headers-5.15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitions GPT pour BIOS OU Partitions MBR pour BIOS===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-pc gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on vous demandera où installer grub, choisissez &amp;lt;code&amp;gt;sda&amp;lt;/code&amp;gt; ET &amp;lt;code&amp;gt;sdb&amp;lt;/code&amp;gt;. Sinon :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-install /dev/sda&lt;br /&gt;
grub-install /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - OpenSSH==&lt;br /&gt;
&lt;br /&gt;
Installez openssh et définissez un password root. Autorisez le login root par password temporairement.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install openssh-server&lt;br /&gt;
passwd&lt;br /&gt;
sed -i &amp;quot;s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g&amp;quot; /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - Vérifications finales et redémarrage sur le kernel proxmox==&lt;br /&gt;
&lt;br /&gt;
Si vous avez une configuration particulière à entrer dans &amp;lt;code&amp;gt;/etc/default/grub&amp;lt;/code&amp;gt;, faites le maintenant. Par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;nomodeset iommu=pt&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis régénérez la configuration de grub :&lt;br /&gt;
&amp;lt;pre&amp;gt;update-grub&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez vérifier que votre fstab est valide avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;findmnt --verify --verbose&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /boot/efi/&lt;br /&gt;
exit&lt;br /&gt;
umount /mnt/sys&lt;br /&gt;
umount /mnt/dev/pts&lt;br /&gt;
umount /mnt/dev&lt;br /&gt;
umount /mnt/proc&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, redémarrez le serveur sur le disque dur.&lt;br /&gt;
&lt;br /&gt;
==Installation de ifupdown2==&lt;br /&gt;
&lt;br /&gt;
Le paquet &amp;lt;code&amp;gt;ifupdown2&amp;lt;/code&amp;gt; est en voie de devenir le remplaçant officiel de &amp;lt;code&amp;gt;ifupdown&amp;lt;/code&amp;gt; pour proxmox.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ifupdown2&lt;br /&gt;
apt purge ifupdown&lt;br /&gt;
systemctl enable networking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que votre configuration est fonctionnelle : lancez &amp;lt;code&amp;gt;ifquery -a&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrez à nouveau votre serveur&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - pve==&lt;br /&gt;
&lt;br /&gt;
Une fois le redémarrage effectué, vous allez enfin pouvoir installer pve :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install proxmox-ve ksm-control-daemon chrony&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;apt remove os-prober&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editez la configuration réseau &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; afin d&#039;y créer votre bridge :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet manual&lt;br /&gt;
&lt;br /&gt;
auto vmbr0&lt;br /&gt;
iface vmbr0 inet static&lt;br /&gt;
        address xxxxx/24&lt;br /&gt;
        gateway xxxx&lt;br /&gt;
        hwaddress AA:BB:CC:11:22:33&lt;br /&gt;
        bridge_ports eno3&lt;br /&gt;
        bridge_stp off&lt;br /&gt;
        bridge_fd 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la ligne &amp;lt;code&amp;gt;hwaddress&amp;lt;/code&amp;gt; avec l&#039;adresse MAC de l&#039;interface eno3.&lt;br /&gt;
&lt;br /&gt;
Installez votre clé SSH dans &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; puis désactivez le login root par password de OpenSSH dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois tout installé, je vous conseille de reconfigurer grub afin de mettre à jour la configuration interne de debian:&lt;br /&gt;
* Pour EFI : &amp;lt;code&amp;gt;dpkg-reconfigure grub-efi-amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pour BIOS : &amp;lt;code&amp;gt;dpkg-reconfigure grub-pc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrez une dernière fois pour appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
Votre proxmox sera accessible à l&#039;adresse https://ip:8006&lt;br /&gt;
&lt;br /&gt;
==Nettoyage des paquets==&lt;br /&gt;
&lt;br /&gt;
Si vous ne comptez pas utiliser ZFS, vous pouvez supprimer les paquets suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge zfs-zed libnvpair3linux libuutil3linux libzfs4linux libzpool5linux zfsutils-linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration réseau avancée==&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;une IPv6 sur vmbr0===&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;un réseau interne vmbr1===&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment créer un réseau interne avec proxmox, c&#039;est à dire, un réseau qui ne sera attaché à aucune interface réseau physique. L&#039;intérêt est d&#039;offrir un débit bien supérieur pour les communications entre les VMs.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto vmbr1&lt;br /&gt;
iface vmbr1 inet static&lt;br /&gt;
        address  192.168.0.1&lt;br /&gt;
        netmask  255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : vous pouvez faire de même en ipv6 :&lt;br /&gt;
* il faut utiliser le range Unique Local Address (ULA) fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address)&lt;br /&gt;
* pour générer votre ULA : http://pfoo.unscdf.org/ula/gen-ula.html&lt;br /&gt;
&lt;br /&gt;
==Sécurisation de base==&lt;br /&gt;
&lt;br /&gt;
Je vous conseil de commencer à sécuriser votre ssh :&lt;br /&gt;
* désactivez le login root (directive &amp;lt;code&amp;gt;PermitRootLogin no&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;). Pensez néanmoins à créer un utilisateur pour vous connecter en ssh avant de désactiver le login root.&lt;br /&gt;
* utilisez la directive &amp;lt;code&amp;gt;allowusers &amp;lt;user&amp;gt;&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; pour n&#039;autoriser que certains utilisateurs à se connecter en ssh.&lt;br /&gt;
&lt;br /&gt;
Il est aussi préférable d&#039;installer le serveur de temps NTP à la place de systemd-timesyncd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install chrony&lt;br /&gt;
apt purge systemd-timesyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configurer le serveur mail postfix=&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
==Certificats SSL==&lt;br /&gt;
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. Si ce n&#039;est pas le cas, vous pouvez toujours aller lire [http://wiki.unscdf.org/index.php?title=Installation_et_configuration_de_OpenSSL ceci] afin d&#039;apprendre à créer votre autorité ssl.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/ssl/openssl.cnf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[POSTFIX]&lt;br /&gt;
nsComment                       = &amp;quot;SMTP Server Certificate&amp;quot;&lt;br /&gt;
subjectKeyIdentifier            = hash&lt;br /&gt;
authorityKeyIdentifier          = keyid,issuer:always&lt;br /&gt;
issuerAltName                   = issuer:copy&lt;br /&gt;
basicConstraints                = critical,CA:FALSE&lt;br /&gt;
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment&lt;br /&gt;
nsCertType                      = server&lt;br /&gt;
extendedKeyUsage                = serverAuth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis générez la clé et le certificat, et signez le avec votre autorité (int_ca dans mon cas) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req&lt;br /&gt;
openssl ca -config /etc/ssl/openssl.cnf -name int_ca -extensions POSTFIX -in postfix.req -out postfix.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Déplacez les fichiers dans le répertoire &amp;lt;code&amp;gt;/etc/postfix/ssl&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/postfix/ssl&lt;br /&gt;
mv postfix.key /etc/postfix/ssl/&lt;br /&gt;
mv postfix.pem /etc/postfix/ssl/&lt;br /&gt;
chmod 600 /etc/postfix/ssl/*&lt;br /&gt;
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/int_ca/int_ca.pem &amp;gt; /etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut encore modifier &amp;lt;code&amp;gt;/etc/postfix/main.cf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smtpd_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtpd_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
smtpd_use_tls=yes&lt;br /&gt;
smtp_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtp_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&lt;br /&gt;
smtpd_tls_security_level=may&lt;br /&gt;
smtp_tls_security_level=may&lt;br /&gt;
smtpd_tls_loglevel = 1&lt;br /&gt;
smtp_tls_loglevel = 1&lt;br /&gt;
&lt;br /&gt;
#smtp_tls_policy_maps = hash:/etc/postfix/tls_policy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire=&lt;br /&gt;
&lt;br /&gt;
Depuis Proxmox 5.2, il n&#039;est plus recommandé d&#039;adapter manuellement les fichiers contenant les certificats et clés privés de proxmox.&amp;lt;br&amp;gt;&lt;br /&gt;
Cependant, vous pouvez placer directement votre clé privé dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.key&amp;lt;/code&amp;gt; et la chaîne de certification dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.pem&amp;lt;/code&amp;gt;. Vous pouvez également déposer ces fichiers via la webui de proxmox au niveau de chaque serveur.&lt;br /&gt;
&lt;br /&gt;
Si vous avez endommagé les certificats autogénérés par proxmox, vous pouvez les régénérer avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;pvecm updatecerts -f&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Surveiller l&#039;état des disques avec SMART=&lt;br /&gt;
&lt;br /&gt;
Commencez par installer le paquet smartmontools :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install smartmontools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez que vos disques gèrent smart et qu&#039;il est activé :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -i /dev/sda&lt;br /&gt;
smartctl -i /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si smart n&#039;est pas activé, essayez de l&#039;activer comme ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -s on /dev/sda&lt;br /&gt;
smartctl -s on /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez le statut de santé de vos disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -H /dev/sda&lt;br /&gt;
smartctl -H /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
S&#039;il indique &amp;lt;code&amp;gt;PASSED&amp;lt;/code&amp;gt; c&#039;est bon de ce côté. S&#039;il vous indique &amp;lt;code&amp;gt;FAILED&amp;lt;/code&amp;gt;, sauvegardez immédiatement vos données !&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence d&#039;erreurs dans le log smart :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -l error /dev/sda&lt;br /&gt;
smartctl -l error /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez &amp;lt;code&amp;gt;No Errors Logged&amp;lt;/code&amp;gt; ou quelques erreurs, c&#039;est bon. S&#039;il y eu a beaucoup, il faut envisager de changer le disque.&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration de smartd est &amp;lt;code&amp;gt;/etc/smartd.conf&amp;lt;/code&amp;gt;. Commentez la ligne &amp;lt;code&amp;gt;DEVICESCAN&amp;lt;/code&amp;gt; puis ajoutez les lignes suivantes pour surveiller les deux disques durs :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
/dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous activons la surveillance globale (&amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt;), la vérification automatique offline, (&amp;lt;code&amp;gt;-o on&amp;lt;/code&amp;gt;), la sauvegarde automatique des attributs (&amp;lt;code&amp;gt;-S on&amp;lt;/code&amp;gt; et lançons un &amp;lt;code&amp;gt;short self test&amp;lt;/code&amp;gt; tous les jours à 2h du matin, et un &amp;lt;code&amp;gt;long self test&amp;lt;/code&amp;gt; tous les samedi à 3h du matin. Si des erreurs sont détectés, un email est envoyé à vous@domain.tld.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez smartd :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/smartmontools restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;information sur SMART et ses arguments : [[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
&lt;br /&gt;
=Protégez votre proxmox=&lt;br /&gt;
&lt;br /&gt;
==Désactiver le login root sur l&#039;interface proxmox==&lt;br /&gt;
Avant toute manipulation, n&#039;oubliez pas de créer un utilisateur ayant les droits d&#039;administration pour accéder à l&#039;interface de proxmox&lt;br /&gt;
&lt;br /&gt;
===Via l&#039;interface proxmox===&lt;br /&gt;
Dans Datacenter &amp;gt; Permissions &amp;gt; Users : Editez l&#039;utilisateur root et décochez la case &amp;lt;code&amp;gt;Enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Via les droits linux===&lt;br /&gt;
&amp;lt;pre&amp;gt;passwd --lock root&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 !&lt;br /&gt;
&lt;br /&gt;
===Via PAM===&lt;br /&gt;
Vous pouvez désactiver le login pam en éditant &amp;lt;code&amp;gt;/etc/pam.d/other&amp;lt;/code&amp;gt; et en y ajoutant, en début de fichier, les lignes suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth        required    pam_deny.so&lt;br /&gt;
auth        required    pam_warn.so&lt;br /&gt;
account     required    pam_deny.so&lt;br /&gt;
account     required    pam_warn.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attention, cette méthode peut avoir des effets de bord si d&#039;autres programmes utilisent l&#039;entité pam/other&lt;br /&gt;
&lt;br /&gt;
==Désactiver rpcbind==&lt;br /&gt;
&lt;br /&gt;
Si vous n&#039;utilisez pas de montage NFS vous pouvez désactiver rpcbind.&amp;lt;br&amp;gt;&lt;br /&gt;
Editez &amp;lt;code&amp;gt;/etc/default/nfs-common&amp;lt;/code&amp;gt; et passez l&#039;argument suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;NEED_STATD=no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis désactivez rpcbind :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable rpcbind.target&lt;br /&gt;
systemctl disable rpcbind.socket&lt;br /&gt;
systemctl disable rpcbind.service&lt;br /&gt;
systemctl stop rpcbind.target&lt;br /&gt;
systemctl stop rpcbind.socket&lt;br /&gt;
systemctl stop rpcbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eviter les reboots accidentels avec molly-gard==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install molly-guard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Protection SSH avec sshguard==&lt;br /&gt;
&lt;br /&gt;
[[Protéger SSH avec sshguard]]&lt;br /&gt;
&lt;br /&gt;
==Protéger l&#039;interface web avec fail2ban==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install fail2ban&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/jail.local&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
# &amp;quot;ignoreip&amp;quot; can be an IP address, a CIDR mask or a DNS host&lt;br /&gt;
ignoreip = 127.0.0.1&lt;br /&gt;
bantime  = 1800&lt;br /&gt;
maxretry = 3&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Destination email address used solely for the interpolations in&lt;br /&gt;
# jail.{conf,local} configuration files.&lt;br /&gt;
destemail = root@localhost&lt;br /&gt;
&lt;br /&gt;
action = %(action_mwl)s&lt;br /&gt;
&lt;br /&gt;
[ssh]&lt;br /&gt;
enabled = false&lt;br /&gt;
&lt;br /&gt;
[sshd]&lt;br /&gt;
enabled  = false&lt;br /&gt;
&lt;br /&gt;
[proxmox]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = https,http,8006&lt;br /&gt;
filter = proxmox&lt;br /&gt;
backend = systemd&lt;br /&gt;
maxretry = 4&lt;br /&gt;
findtime = 2d&lt;br /&gt;
bantime = 1h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/filter.d/proxmox.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Definition]&lt;br /&gt;
failregex = pvedaemon\[.*authentication failure; rhost=&amp;lt;HOST&amp;gt; user=.* msg=.*&lt;br /&gt;
ignoreregex =&lt;br /&gt;
journalmatch = _SYSTEMD_UNIT=pvedaemon.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez fail2ban :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/fail2ban restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==firewall iptables==&lt;br /&gt;
&lt;br /&gt;
=Création d&#039;un stockage pour les VMs=&lt;br /&gt;
&lt;br /&gt;
Créez les partitions sda4 et sdb4 au moyen de gdisk (EFI) ou parted (BIOS).&lt;br /&gt;
&lt;br /&gt;
Créez sur ces partitions un raid :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create --verbose /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenez à jour &amp;lt;code&amp;gt;mdadm.conf&amp;lt;/code&amp;gt; et votre initramfs afin de conserver le bon naming du raid après reboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
update-initramfs -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis initialisez-y un LVM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvcreate /dev/md4&lt;br /&gt;
vgcreate main /dev/md4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu&#039;a déclarer ce Volume Group LVM dans l&#039;interface proxmox.&lt;br /&gt;
&lt;br /&gt;
=VM qemu/kvm=&lt;br /&gt;
&lt;br /&gt;
==Télécharger vos images==&lt;br /&gt;
&lt;br /&gt;
Vous pouvez placer les iso dans &amp;lt;code&amp;gt;/var/lib/vz/template/iso/&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt; par exemple.&lt;br /&gt;
Notez que l&#039;interface graphique de proxmox propose également une fonction d&#039;upload.&lt;br /&gt;
&lt;br /&gt;
==Créer votre première VM==&lt;br /&gt;
&lt;br /&gt;
Une fois la VM crées dans l&#039;interface proxmox, je vous recommande d&#039;écrire des zero sur son disque afin de réduire la taille des futurs backups. Si votre vm porte le numéro 100 et possède un seul disque :&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/zero | pv -ptrb | dd of=/dev/main/vm-100-disk1 bs=1M&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr0 (ip public)===&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr1 (ip locale)===&lt;br /&gt;
&lt;br /&gt;
Configuration réseau de la VM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.0.2&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
gateway 192.168.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Règle iptables à ajouter sur l&#039;hôte :&lt;br /&gt;
&amp;lt;pre&amp;gt;iptables -t nat -A POSTROUTING -s 192.168.0.2 -o vmbr0 -j SNAT --to IP-PUBLIC-DE-VOTRE-HOTE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez rendre accessible l&#039;un des services de la VM depuis l&#039;ip de l&#039;hote sur un port sépcifique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -t nat -A PREROUTING -p tcp -d &amp;lt;ip de l&#039;hote&amp;gt; --dport &amp;lt;port souhaité&amp;gt; -i vmbr0 -j DNAT --to-destination 192.168.0.2:port&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bloquer le spoofing d&#039;adresse mac==&lt;br /&gt;
Sur l&#039;hyperviseur, installez &amp;lt;code&amp;gt;ebtables&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install ebtables&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Admettons ensuite que votre VM a comme adresse ip &amp;lt;code&amp;gt;84.93.26.3&amp;lt;/code&amp;gt; et que son adresse mac doit être &amp;lt;code&amp;gt;52:54:00:00:98:b6&amp;lt;/code&amp;gt; : &lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv4 --ip-src 84.93.26.3 -s ! 52:54:00:00:98:b6 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez faire de même pour l&#039;ipv6. Dans l&#039;exemple suivant, seul le bloc ipv6 &amp;lt;code&amp;gt;2a01:d4h:123b:100::/56&amp;lt;/code&amp;gt; est utilisable par la vm :&lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv6 --ip6-src 2a01:d4h:123b:100::/56 -s ! 52:54:00:00:08:b1 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Importer une VM depuis vmware ESXi==&lt;br /&gt;
&lt;br /&gt;
==qm et modification des VMs en ligne de commande==&lt;br /&gt;
&lt;br /&gt;
==Monter les partitions d&#039;une VM depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pour la partition 1 : start*blocksize = offset&lt;br /&gt;
donc 2048*512 = 1048576&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;losetup /dev/loop1 -o 1048576 /dev/main/vm-101-disk-1 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et enfin :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount /dev/loop1 /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé vos modifications :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /mnt&lt;br /&gt;
losetup -d /dev/loop1&lt;br /&gt;
losetup -d /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Si la partition que vous voulez monter est un LVM===&lt;br /&gt;
&lt;br /&gt;
Scannez les nouveaux volumes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm pvscan&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activez les groupes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm vgchange -ay&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
listez les lvms avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm lvs&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les LV devraient apparaître dans &amp;lt;code&amp;gt;/dev/mapper/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé :&lt;br /&gt;
* démontez les LV&lt;br /&gt;
* Désactivez le groupe avec &amp;lt;code&amp;gt;vgchange -an&amp;lt;/code&amp;gt;&lt;br /&gt;
* désactivez le loopback : &amp;lt;code&amp;gt;losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Augmenter la taille du disque d&#039;une VM==&lt;br /&gt;
&lt;br /&gt;
Coupez la VM.&lt;br /&gt;
&lt;br /&gt;
Sur l&#039;host pour modifier la taille du disque 1 de la vm 110 ) 140G :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvextend -L 140G /dev/main/vm-110-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut ensuite, sur la vm lancée, utiliser resize2fs&lt;br /&gt;
&lt;br /&gt;
==Migrer une VM vers un autre serveur manuellement (pas de cluster) avec un downtime minimum==&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment migrer une VM proxmox stockée sur un LVM d&#039;un serveur à un autre, et ce, en minimisant au maximum le downtime. Pour cela, nous allons coupler la fonctionnalité de snapshot de lvm avec un petit script (lvmsync) qui permet de ne transférer que les blocs modifiés d&#039;un snapshot.&lt;br /&gt;
&lt;br /&gt;
Installez dmsetup et ruby (1.8 minimum) sur le serveur d&#039;origine et de destination :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install dmsetup ruby&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Récupérez &amp;lt;code&amp;gt;lvmsync&amp;lt;/code&amp;gt; sur https://github.com/mpalmer/lvmsync et placez le dans /sbin/ sur les serveurs d&#039;origine et de destination.&lt;br /&gt;
&lt;br /&gt;
Dans cet exemple, nous allons migrer la vm 102 disposant d&#039;un seul disque virtuel nommé vm-102-disk-1 et stocké dans le vg main du serveur server1.domain.tld vers le serveur server2.domain.tld.&lt;br /&gt;
Pour commencer, créez un snapshot de votre vm sur server1 :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvcreate --snapshot -L200G -n 102-lvmsync main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Désormais, tous les io de cette vm seront stockés dans le snapshot 102-lvmsync.&lt;br /&gt;
&lt;br /&gt;
Sur votre nouveau serveur, créez une VM identique à celle de votre premier serveur (surtout en qui concerne la taille de disque).&lt;br /&gt;
Depuis server1, copiez avec un dd over ssh le disque d&#039;origine de votre vm vers votre nouveau serveur.&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/main/vm-102-disk-1 | pv -ptrb | ssh -o &amp;quot;Compression no&amp;quot; root@server2.domain.tld &amp;quot;dd of=/dev/main/vm-102-disk-1 bs=100M&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : sur un réseauu 100Mbps utilisez plutôt &amp;lt;code&amp;gt;-o &amp;quot;Compressionlevel 1&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois la copie terminée, coupez la vm 102 sur server1, puis lancez lvmsync sur le snapshot (toujours sur server1) :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvmsync /dev/main/102-lvmsync server2.domain.tld:/dev/main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois le travail de lvmsync achevé, il ne nous reste plus qu&#039;a relancer la vm sur server2&lt;br /&gt;
&lt;br /&gt;
A titre d&#039;information, si vous voulez merger le snapshot de la vm 102 sur server 1, tapez :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvconvert --merge /dev/main/102-lvmsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conteneur LXC=&lt;br /&gt;
&lt;br /&gt;
==Empêcher la mise à jour automatique de certains fichiers de configuration système du conteneur==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
On peut empêcher la mise à jour de ces fichiers en créant un fichier &amp;lt;code&amp;gt;.pve-ignore.NOM&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, &amp;lt;code&amp;gt;/etc/.pve-ignore.resolv.conf&amp;lt;/code&amp;gt; empêchera le fichier &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; d&#039;être mis à jour à chaque démarrage.&lt;br /&gt;
&lt;br /&gt;
=Annexes=&lt;br /&gt;
&lt;br /&gt;
==Problème de layout dans la console vnc==&lt;br /&gt;
Dans l&#039;interface web de proxmox : datacenter &amp;gt; option &amp;gt; passez Keyboard de &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; à &amp;lt;code&amp;gt;French&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Erreurs du type &amp;lt;code&amp;gt;IPv6 addrconf: prefix with wrong length 56&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64.&lt;br /&gt;
Ajouter les lignes suivantes dans un fichier &amp;lt;code&amp;gt;/etc/sysctl.d/local.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
net.ipv6.conf.all.autoconf = 0&lt;br /&gt;
net.ipv6.conf.default.autoconf = 0&lt;br /&gt;
net.ipv6.conf.eno3.autoconf = 0&lt;br /&gt;
net.ipv6.conf.vmbr0.autoconf = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Terminez par relancer procps :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/procps restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==paramètre sysctl ipv6 non appliqué au boot==&lt;br /&gt;
Ajoutez le module ipv6 dans /etc/modules afin d&#039;assurer le chargement d&#039;ipv6 avant l’exécution de sysctl :&lt;br /&gt;
&amp;lt;pre&amp;gt;echo ipv6 &amp;gt;&amp;gt; /etc/modules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LVM inaccessible depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lvm pvscan&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface web ne fonctionne pas et la commande qm retourne une erreur ipcc_send_rec failed: Connection refused==&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence de fichiers et dossiers dans &amp;lt;code&amp;gt;/etc/pve/&amp;lt;/code&amp;gt;. Si ce dossier est vide, c&#039;est probablement que votre fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; est mal configuré.&amp;lt;br&amp;gt;&lt;br /&gt;
Essayez de relancer &amp;lt;code&amp;gt;pve-cluster&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/pve-cluster restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez une erreur ou un warning, lancez la commande pmxcfs. Vous devriez obtenir ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$# pmxcfs &lt;br /&gt;
Jan 21 15:28:19 proxmox pmxcfs[1846]: Unable to get local IP address (pmxcfs.c:721:main)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez alors que le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est défini dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si par exemple &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; contient &amp;lt;code&amp;gt;proxmox.domain.tld&amp;lt;/code&amp;gt; vous devriez avoir la ligne suivante dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;VOTREIP proxmox.domain.tld proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pas assez d&#039;interfaces loopback==&lt;br /&gt;
&lt;br /&gt;
Créer le fichier &amp;lt;code&amp;gt;/etc/modprobe.d/local-loop.conf&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;options loop max_loop=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite redémarrer ou recharger le module loop :&lt;br /&gt;
&amp;lt;pre&amp;gt; rmmod loop &amp;amp;&amp;amp; modprobe loop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Défragmentation LVM : exemple==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hub:~# pvdisplay --maps&lt;br /&gt;
  --- Physical volume ---&lt;br /&gt;
  PV Name               /dev/sda4&lt;br /&gt;
  VG Name               main&lt;br /&gt;
  PV Size               1.76 TB / not usable 456.00 KB&lt;br /&gt;
  Allocatable           yes &lt;br /&gt;
  PE Size (KByte)       4096&lt;br /&gt;
  Total PE              461649&lt;br /&gt;
  Free PE               208721&lt;br /&gt;
  Allocated PE          252928&lt;br /&gt;
  PV UUID               PUqV5Q-WRW2-n20t-eFVM-CA1r-RhDl-2RTJHq&lt;br /&gt;
   &lt;br /&gt;
  --- Physical Segments ---&lt;br /&gt;
  Physical extent 0 to 7935:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-1&lt;br /&gt;
    Logical extents     0 to 7935&lt;br /&gt;
  Physical extent 7936 to 72191:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 72192 to 136703:&lt;br /&gt;
    Logical volume      /dev/main/vm-102-disk-1&lt;br /&gt;
    Logical extents     0 to 64511&lt;br /&gt;
  Physical extent 136704 to 144895:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-1&lt;br /&gt;
    Logical extents     0 to 8191&lt;br /&gt;
  Physical extent 144896 to 209151:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 209152 to 214271:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-1&lt;br /&gt;
    Logical extents     0 to 5119&lt;br /&gt;
  Physical extent 214272 to 227327:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-2&lt;br /&gt;
    Logical extents     0 to 13055&lt;br /&gt;
  Physical extent 227328 to 282111:&lt;br /&gt;
    FREE&lt;br /&gt;
  Physical extent 282112 to 307711:&lt;br /&gt;
    Logical volume      /dev/main/vm-108-disk-1&lt;br /&gt;
    Logical extents     0 to 25599&lt;br /&gt;
  Physical extent 307712 to 461648:&lt;br /&gt;
    FREE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir, on a un trou &amp;quot;vide&amp;quot; entre l&#039;extent &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; et 282111, puis à nouveau des données entre l&#039;extent &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour combler ce trou, nous allons déplacer les données des  /dev/main/vm-108-disk-1 situés entre les extents &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; (soit 25599 extents au total) vers l&#039;espace libre avec &amp;lt;code&amp;gt;pvmove&amp;lt;/code&amp;gt; :&amp;lt;br&amp;gt;&lt;br /&gt;
pvmove /dev/sda4:&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; /dev/sda4:&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt; --alloc anywhere&lt;br /&gt;
&lt;br /&gt;
Notez qu&#039;il faut attribuer exactement le même nombre d&#039;extents à la destination qu&#039;à l&#039;origine : &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; + 25599 = &amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Oups: j&#039;ai supprimé le mauvais lvm==&lt;br /&gt;
&lt;br /&gt;
Pas de panique, mais ne bougez plus ! Pour l&#039;instant, seul les métadonnées du lvm sont impactés.&lt;br /&gt;
Et comme c&#039;est bien foutu, lvm conserve un backup des anciennes metadonnées après chaque modification. Ces archives sont situés dans &amp;lt;code&amp;gt;/etc/lvm/archive/&amp;lt;/code&amp;gt;. Les fichiers y sont nommés sous la forme vg_XXXX-YYYYYYY.vg. Normalement, le fichier ayant le XXXX le plus élevé sera celui de l&#039;état précédent votre erreur.&lt;br /&gt;
Pour vérifier que vous avez sélectionné le bon fichier, vous pouvez l&#039;ouvrir avec nano et regarder si l&#039;état du lvm dans cette archive correspond a ce que vous attendez.&lt;br /&gt;
&lt;br /&gt;
Pour restaurer l&#039;archive des métadonnées main_00007-587941649.vg pour le vg main :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vgcfgrestore -f /etc/lvm/archive/main_00007-587941649.vg main&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Votre volume devrait être de retour.&lt;br /&gt;
&lt;br /&gt;
Il faut encore vérifier que la table de partition contenu sur ce lvm n&#039;a pas morphlé. En admettant que /dev/main/vm-101-disk-1 est la lvm que vous venez de restaurer :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez ça, c&#039;est bon, vous êtes sauvés ! Si ce n&#039;est pas le cas, continuez à lire ;)&lt;br /&gt;
&lt;br /&gt;
===Récupération de la table de partition===&lt;br /&gt;
&lt;br /&gt;
Si fdisk vous envois chier avec un message du style &amp;lt;code&amp;gt;Disk /dev/loop0 doesn&#039;t contain a valid partition table&amp;lt;/code&amp;gt;, il va falloir récupérer la table de partition.&lt;br /&gt;
&lt;br /&gt;
Installez testdisk :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install testdisk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lancez le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# testdisk /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selectionez le media &amp;lt;code&amp;gt;/dev/loop0&amp;lt;/code&amp;gt; et validez avec &amp;lt;code&amp;gt;enter&amp;lt;/code&amp;gt;.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;intel&amp;lt;/code&amp;gt; comme type de table de partition.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;analyse&amp;lt;/code&amp;gt;&lt;br /&gt;
A l&#039;écran suivant, tapez enter.&lt;br /&gt;
Avec de la chance, testdisk retrouvera vos partitions. Une fois qu&#039;il aura terminé de travailler, il ne restera plus qu&#039;à taper sur enter encore une fois, puis demander à testdisk de sauvegarder la table de partition&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface proxmox n&#039;affiche pas les disques de certaines VMs==&lt;br /&gt;
&lt;br /&gt;
Ceci arrive typiquement si vous avez créé un volume logique à la main sans y ajouter le bon tag.&lt;br /&gt;
Vérifiez la présence des tags sur vos LV avec la commande &amp;lt;code&amp;gt;lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  20.00g &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous le voyez, le lv de la vm 101 n&#039;est pas tagué. Vous pouvez ajouter le tag avec &amp;lt;code&amp;gt;lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  16.00g pve-vm-101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas,  essayez de passer un petit coup de &amp;lt;code&amp;gt;qm rescan&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4404</id>
		<title>Proxmox 8</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4404"/>
		<updated>2025-10-04T10:27:52Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:virtualisation]]&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment installer proxmox 8.x sur un raid 1 logiciel (md / mdadm) avec debootstrap.&lt;br /&gt;
&lt;br /&gt;
=Prérequis=&lt;br /&gt;
&lt;br /&gt;
Ce tutoriel se base sur l&#039;utilisation de debootstrap pour installer une base de système d&#039;exploitation debian. La plupart des hébergeurs proposent un système de &amp;quot;rescue&amp;quot; permettant l&#039;installation de debian par ce moyen.&lt;br /&gt;
Si vous ne disposez pas de mode rescue, vous pouvez toujours utiliser l&#039;installeur proposé par votre hébergeur, ou encore passer par un kvm pour installer vous même le système avec l&#039;iso de debian.&lt;br /&gt;
&lt;br /&gt;
=Pour les débutants=&lt;br /&gt;
&lt;br /&gt;
Si vous êtes débutant en administration linux, je vous conseil de sauvegarder quelque part les fichier suivant issu d&#039;une précédente installation de debian ou de proxmox&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/networks&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt; si vous disposez d&#039;un raid logiciel&lt;br /&gt;
* tout fichier de personnalisation de grub (&amp;lt;code&amp;gt;/etc/grub.d/&amp;lt;/code&amp;gt; par exemple)&lt;br /&gt;
&lt;br /&gt;
Cela vous permettra de vous faire une idée plus précise de ce qui doit figurer dans ces différents fichiers.&lt;br /&gt;
&lt;br /&gt;
=Partitionnement et système de fichier=&lt;br /&gt;
&lt;br /&gt;
Voici le partitionnement que je vais utiliser :&lt;br /&gt;
* Partition root (/) de 20 Go (/) en raid 1 sur les disques sda et sdb&lt;br /&gt;
* Partitions swap de 4096 Go chacune réparties sur sda et sdb&lt;br /&gt;
* Le reste de l&#039;espace sera utilisé plus tard pour un LVM dédié aux VMs&lt;br /&gt;
&lt;br /&gt;
==Partitionnement==&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitionnement GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions EFI (ESP), obligatoire pour le démarrage EFI/UEFI. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF00&amp;lt;/code&amp;gt;. 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).&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour les partitions EFI, nous créons un système de fichier FAT32 avec le label (nom) &amp;lt;code&amp;gt;EFI_SYSPART&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sda1&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sdb1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitionnement GPT pour BIOS===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions pour le bootloader. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF02&amp;lt;/code&amp;gt;. On peut la créer idéalement du secteur 34 au secteur 2047 du disque.&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notez que la partition du bootloader ne doit pas être formatée.&lt;br /&gt;
&lt;br /&gt;
===Possibilité 3 : partitionnement MBR pour BIOS (non prise en charge dans ce wiki)===&lt;br /&gt;
&lt;br /&gt;
A titre informatif : création avec &amp;lt;code&amp;gt;parted&amp;lt;/code&amp;gt;, sans nécessité de créer une partition dédiée au bootloader/grub.&lt;br /&gt;
&lt;br /&gt;
==Création du RAID==&lt;br /&gt;
&lt;br /&gt;
Pour des raisons esthétiques, définissez l&#039;hostname de votre système de rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;hostname proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour créer votre raid 1 avec 2 disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que si vous souhaitez utiliser plus que 2 disques, il faut augmenter la valeur de &amp;lt;code&amp;gt;--raid-devices&amp;lt;/code&amp;gt; et ajouter les partitions des disques à la suite.&lt;br /&gt;
&lt;br /&gt;
Attendez que le raid soit synchronisé avant de continuer. Vous pouvez surveiller facilement cela avec la commande &amp;lt;code&amp;gt;watch cat /proc/mdstat&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Création des systèmes de fichiers==&lt;br /&gt;
&lt;br /&gt;
Créez un système de fichier ext4 pour le raid du root :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/md2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, initialisez les swaps :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkswap /dev/sda3&lt;br /&gt;
mkswap /dev/sdb3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Installation de proxmox=&lt;br /&gt;
&lt;br /&gt;
==Installation du système de base==&lt;br /&gt;
&lt;br /&gt;
Nous débutons par installer le système de base de Debian avec &amp;lt;code&amp;gt;debootstrap&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les paquets nécessaires dans votre rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install debootstrap debian-keyring debian-archive-keyring&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez votre partition raid root sur &amp;lt;code&amp;gt;/mnt&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/md2 /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez le système de base debian, version bookworm :&lt;br /&gt;
&amp;lt;pre&amp;gt;debootstrap --arch=amd64 bookworm /mnt http://ftp.fr.debian.org/debian&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration de Debian==&lt;br /&gt;
&lt;br /&gt;
Montez les vfs suivants, puis chrootez dans votre nouveau système debian :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount -o bind /proc /mnt/proc&lt;br /&gt;
mount -o bind /dev /mnt/dev&lt;br /&gt;
mount -o bind /dev/pts /mnt/dev/pts&lt;br /&gt;
mount -o bind /sys /mnt/sys&lt;br /&gt;
chroot /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les archives apt : éditez le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main archive&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# security updates&lt;br /&gt;
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# bookworm-updates, previously known as &#039;volatile&#039;&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# backports archive&lt;br /&gt;
deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour les paquets :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les locales et la configuration de console :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install locales &lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
apt install console-data console-setup-linux console-setup wget&lt;br /&gt;
dpkg-reconfigure console-data # from arch &amp;gt; french &amp;gt; latin9)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la zone horaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tzselect&lt;br /&gt;
dpkg-reconfigure tzdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez votre fichier &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Pour GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda1       /boot/efi       vfat    defaults                                  0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour GPT pour BIOS :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez la partition EFI / ESP dans le cas d&#039;un partitionnement GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /boot/efi&lt;br /&gt;
mount /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les interfaces réseaux dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The loopback network interface&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet static&lt;br /&gt;
        address XXXX/24&lt;br /&gt;
        gateway XXXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# local&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
::1             localhost ip6-localhost ip6-loopback&lt;br /&gt;
ff02::1         ip6-allnodes&lt;br /&gt;
ff02::2         ip6-allrouters&lt;br /&gt;
&lt;br /&gt;
# main&lt;br /&gt;
ipdelamachine   proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez les hostnames dans ces fichiers :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Pour celui la : non-fqdn&lt;br /&gt;
echo proxmox &amp;gt; /etc/hostname&lt;br /&gt;
# Pour celui la : fqdn&lt;br /&gt;
echo proxmox.domain.tld &amp;gt; /etc/mailname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION&#039;&#039;&#039; Le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; DOIT être cohérent avec le fichier &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, si le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est &amp;lt;code&amp;gt;proxmox&amp;lt;/code&amp;gt; et que l&#039;ip de votre proxmox est 225.182.54.9 il faudra veiller a avoir les informations suivantes dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1 localhost&lt;br /&gt;
225.182.54.9 proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attention : n&#039;utilisez pas 127.0.1.1 (comme le fait debian) mais bien la vrai ip (ici 225.182.54.9)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
N&#039;oubliez pas de configurer les dns (ceux de votre hébergeur dédié) dans &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;nameserver XX.XX.XX.XX&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez postfix :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install postfix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, comme nous installons notre partition de boot sur un raid software, il faut installer &amp;lt;code&amp;gt;madadm&amp;lt;/code&amp;gt; à ce stade :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install mdadm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez si votre array root s&#039;est bien défini automatiquement dans &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt;. Si ce n&#039;est pas me cas, ajoutez la configuration de l&#039;array manuellement :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - kernel==&lt;br /&gt;
&lt;br /&gt;
Ajoutez le dépot proxmox dans le fichier /etc/apt/source.list :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use&lt;br /&gt;
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajoutez la clé du dépôt proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour le système :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitions GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Vérifiez que &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt; est bien monté. Si ce n&#039;est pas le cas, faites le.&lt;br /&gt;
&lt;br /&gt;
Installez le kernel proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-efi-amd64 gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supprimez les paquets suivant si vous n&#039;avez pas besoin de secureboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed shim-signed-common shim-unsigned&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normalement tout doit se faire avec des promps. Si ce n&#039;était pas le cas :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si jamais vous utilisez un démarrage en PXE (c&#039;est le cas sur un serveur OVH par exemple), utilisez l&#039;argument &amp;lt;code&amp;gt;--no-nvram&amp;lt;/code&amp;gt; pour empêcher grub de mettre à jour la NVRAM et casser votre mécanique de démarrage PXE :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox --no-nvram&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Etant donné que seul &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; est monté sur &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt;, il faut transférer manuellement les données sur &amp;lt;code&amp;gt;/dev/sdb1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/sdb1 /mnt&lt;br /&gt;
rsync -av /boot/efi/ /mnt/&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si pour une raison quelconque, vous aviez besoin des headers du kernel :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install pve-headers-5.15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitions GPT pour BIOS OU Partitions MBR pour BIOS===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-pc gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on vous demandera où installer grub, choisissez &amp;lt;code&amp;gt;sda&amp;lt;/code&amp;gt; ET &amp;lt;code&amp;gt;sdb&amp;lt;/code&amp;gt;. Sinon :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-install /dev/sda&lt;br /&gt;
grub-install /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - OpenSSH==&lt;br /&gt;
&lt;br /&gt;
Installez openssh et définissez un password root. Autorisez le login root par password temporairement.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install openssh-server&lt;br /&gt;
passwd&lt;br /&gt;
sed -i &amp;quot;s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g&amp;quot; /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - Vérifications finales et redémarrage sur le kernel proxmox==&lt;br /&gt;
&lt;br /&gt;
Si vous avez une configuration particulière à entrer dans &amp;lt;code&amp;gt;/etc/default/grub&amp;lt;/code&amp;gt;, faites le maintenant. Par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;nomodeset iommu=pt&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis régénérez la configuration de grub :&lt;br /&gt;
&amp;lt;pre&amp;gt;update-grub&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez vérifier que votre fstab est valide avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;findmnt --verify --verbose&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /boot/efi/&lt;br /&gt;
exit&lt;br /&gt;
umount /mnt/sys&lt;br /&gt;
umount /mnt/dev/pts&lt;br /&gt;
umount /mnt/dev&lt;br /&gt;
umount /mnt/proc&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, redémarrez le serveur sur le disque dur.&lt;br /&gt;
&lt;br /&gt;
==Installation de ifupdown2==&lt;br /&gt;
&lt;br /&gt;
Le paquet &amp;lt;code&amp;gt;ifupdown2&amp;lt;/code&amp;gt; est en voie de devenir le remplaçant officiel de &amp;lt;code&amp;gt;ifupdown&amp;lt;/code&amp;gt; pour proxmox.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ifupdown2&lt;br /&gt;
apt purge ifupdown&lt;br /&gt;
systemctl enable networking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que votre configuration est fonctionnelle : lancez &amp;lt;code&amp;gt;ifquery -a&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrez à nouveau votre serveur&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - pve==&lt;br /&gt;
&lt;br /&gt;
Une fois le redémarrage effectué, vous allez enfin pouvoir installer pve :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install proxmox-ve ksm-control-daemon chrony&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;apt remove os-prober&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editez la configuration réseau &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; afin d&#039;y créer votre bridge :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet manual&lt;br /&gt;
&lt;br /&gt;
auto vmbr0&lt;br /&gt;
iface vmbr0 inet static&lt;br /&gt;
        address xxxxx/24&lt;br /&gt;
        gateway xxxx&lt;br /&gt;
        hwaddress AA:BB:CC:11:22:33&lt;br /&gt;
        bridge_ports eno3&lt;br /&gt;
        bridge_stp off&lt;br /&gt;
        bridge_fd 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la ligne &amp;lt;code&amp;gt;hwaddress&amp;lt;/code&amp;gt; avec l&#039;adresse MAC de l&#039;interface eno3.&lt;br /&gt;
&lt;br /&gt;
Installez votre clé SSH dans &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; puis désactivez le login root par password de OpenSSH dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois tout installé, je vous conseille de reconfigurer grub afin de mettre à jour la configuration interne de debian:&lt;br /&gt;
* Pour EFI : &amp;lt;code&amp;gt;dpkg-reconfigure grub-efi-amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pour BIOS : &amp;lt;code&amp;gt;dpkg-reconfigure grub-pc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrez une dernière fois pour appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
Votre proxmox sera accessible à l&#039;adresse https://ip:8006&lt;br /&gt;
&lt;br /&gt;
==Nettoyage des paquets==&lt;br /&gt;
&lt;br /&gt;
Si vous ne comptez pas utiliser ZFS, vous pouvez supprimer les paquets suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge zfs-zed libnvpair3linux libuutil3linux libzfs4linux libzpool5linux zfsutils-linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration réseau avancée==&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;une IPv6 sur vmbr0===&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;un réseau interne vmbr1===&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment créer un réseau interne avec proxmox, c&#039;est à dire, un réseau qui ne sera attaché à aucune interface réseau physique. L&#039;intérêt est d&#039;offrir un débit bien supérieur pour les communications entre les VMs.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto vmbr1&lt;br /&gt;
iface vmbr1 inet static&lt;br /&gt;
        address  192.168.0.1&lt;br /&gt;
        netmask  255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : vous pouvez faire de même en ipv6 :&lt;br /&gt;
* il faut utiliser le range Unique Local Address (ULA) fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address)&lt;br /&gt;
* pour générer votre ULA : http://pfoo.unscdf.org/ula/gen-ula.html&lt;br /&gt;
&lt;br /&gt;
==Sécurisation de base==&lt;br /&gt;
&lt;br /&gt;
Je vous conseil de commencer à sécuriser votre ssh :&lt;br /&gt;
* désactivez le login root (directive &amp;lt;code&amp;gt;PermitRootLogin no&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;). Pensez néanmoins à créer un utilisateur pour vous connecter en ssh avant de désactiver le login root.&lt;br /&gt;
* utilisez la directive &amp;lt;code&amp;gt;allowusers &amp;lt;user&amp;gt;&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; pour n&#039;autoriser que certains utilisateurs à se connecter en ssh.&lt;br /&gt;
&lt;br /&gt;
Il est aussi préférable d&#039;installer le serveur de temps NTP à la place de systemd-timesyncd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install chrony&lt;br /&gt;
apt purge systemd-timesyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configurer le serveur mail postfix=&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
==Certificats SSL==&lt;br /&gt;
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. Si ce n&#039;est pas le cas, vous pouvez toujours aller lire [http://wiki.unscdf.org/index.php?title=Installation_et_configuration_de_OpenSSL ceci] afin d&#039;apprendre à créer votre autorité ssl.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/ssl/openssl.cnf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[POSTFIX]&lt;br /&gt;
nsComment                       = &amp;quot;SMTP Server Certificate&amp;quot;&lt;br /&gt;
subjectKeyIdentifier            = hash&lt;br /&gt;
authorityKeyIdentifier          = keyid,issuer:always&lt;br /&gt;
issuerAltName                   = issuer:copy&lt;br /&gt;
basicConstraints                = critical,CA:FALSE&lt;br /&gt;
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment&lt;br /&gt;
nsCertType                      = server&lt;br /&gt;
extendedKeyUsage                = serverAuth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis générez la clé et le certificat, et signez le avec votre autorité (int_ca dans mon cas) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req&lt;br /&gt;
openssl ca -config /etc/ssl/openssl.cnf -name int_ca -extensions POSTFIX -in postfix.req -out postfix.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Déplacez les fichiers dans le répertoire &amp;lt;code&amp;gt;/etc/postfix/ssl&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/postfix/ssl&lt;br /&gt;
mv postfix.key /etc/postfix/ssl/&lt;br /&gt;
mv postfix.pem /etc/postfix/ssl/&lt;br /&gt;
chmod 600 /etc/postfix/ssl/*&lt;br /&gt;
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/int_ca/int_ca.pem &amp;gt; /etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut encore modifier &amp;lt;code&amp;gt;/etc/postfix/main.cf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smtpd_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtpd_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
smtpd_use_tls=yes&lt;br /&gt;
smtp_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtp_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&lt;br /&gt;
smtpd_tls_security_level=may&lt;br /&gt;
smtp_tls_security_level=may&lt;br /&gt;
smtpd_tls_loglevel = 1&lt;br /&gt;
smtp_tls_loglevel = 1&lt;br /&gt;
&lt;br /&gt;
#smtp_tls_policy_maps = hash:/etc/postfix/tls_policy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire=&lt;br /&gt;
&lt;br /&gt;
Depuis Proxmox 5.2, il n&#039;est plus recommandé d&#039;adapter manuellement les fichiers contenant les certificats et clés privés de proxmox.&amp;lt;br&amp;gt;&lt;br /&gt;
Cependant, vous pouvez placer directement votre clé privé dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.key&amp;lt;/code&amp;gt; et la chaîne de certification dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.pem&amp;lt;/code&amp;gt;. Vous pouvez également déposer ces fichiers via la webui de proxmox au niveau de chaque serveur.&lt;br /&gt;
&lt;br /&gt;
Si vous avez endommagé les certificats autogénérés par proxmox, vous pouvez les régénérer avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;pvecm updatecerts -f&amp;lt;:pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Surveiller l&#039;état des disques avec SMART=&lt;br /&gt;
&lt;br /&gt;
Commencez par installer le paquet smartmontools :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install smartmontools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez que vos disques gèrent smart et qu&#039;il est activé :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -i /dev/sda&lt;br /&gt;
smartctl -i /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si smart n&#039;est pas activé, essayez de l&#039;activer comme ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -s on /dev/sda&lt;br /&gt;
smartctl -s on /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez le statut de santé de vos disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -H /dev/sda&lt;br /&gt;
smartctl -H /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
S&#039;il indique &amp;lt;code&amp;gt;PASSED&amp;lt;/code&amp;gt; c&#039;est bon de ce côté. S&#039;il vous indique &amp;lt;code&amp;gt;FAILED&amp;lt;/code&amp;gt;, sauvegardez immédiatement vos données !&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence d&#039;erreurs dans le log smart :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -l error /dev/sda&lt;br /&gt;
smartctl -l error /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez &amp;lt;code&amp;gt;No Errors Logged&amp;lt;/code&amp;gt; ou quelques erreurs, c&#039;est bon. S&#039;il y eu a beaucoup, il faut envisager de changer le disque.&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration de smartd est &amp;lt;code&amp;gt;/etc/smartd.conf&amp;lt;/code&amp;gt;. Commentez la ligne &amp;lt;code&amp;gt;DEVICESCAN&amp;lt;/code&amp;gt; puis ajoutez les lignes suivantes pour surveiller les deux disques durs :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
/dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous activons la surveillance globale (&amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt;), la vérification automatique offline, (&amp;lt;code&amp;gt;-o on&amp;lt;/code&amp;gt;), la sauvegarde automatique des attributs (&amp;lt;code&amp;gt;-S on&amp;lt;/code&amp;gt; et lançons un &amp;lt;code&amp;gt;short self test&amp;lt;/code&amp;gt; tous les jours à 2h du matin, et un &amp;lt;code&amp;gt;long self test&amp;lt;/code&amp;gt; tous les samedi à 3h du matin. Si des erreurs sont détectés, un email est envoyé à vous@domain.tld.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez smartd :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/smartmontools restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;information sur SMART et ses arguments : [[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
&lt;br /&gt;
=Protégez votre proxmox=&lt;br /&gt;
&lt;br /&gt;
==Désactiver le login root sur l&#039;interface proxmox==&lt;br /&gt;
Avant toute manipulation, n&#039;oubliez pas de créer un utilisateur ayant les droits d&#039;administration pour accéder à l&#039;interface de proxmox&lt;br /&gt;
&lt;br /&gt;
===Via l&#039;interface proxmox===&lt;br /&gt;
Dans Datacenter &amp;gt; Permissions &amp;gt; Users : Editez l&#039;utilisateur root et décochez la case &amp;lt;code&amp;gt;Enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Via les droits linux===&lt;br /&gt;
&amp;lt;pre&amp;gt;passwd --lock root&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 !&lt;br /&gt;
&lt;br /&gt;
===Via PAM===&lt;br /&gt;
Vous pouvez désactiver le login pam en éditant &amp;lt;code&amp;gt;/etc/pam.d/other&amp;lt;/code&amp;gt; et en y ajoutant, en début de fichier, les lignes suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth        required    pam_deny.so&lt;br /&gt;
auth        required    pam_warn.so&lt;br /&gt;
account     required    pam_deny.so&lt;br /&gt;
account     required    pam_warn.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attention, cette méthode peut avoir des effets de bord si d&#039;autres programmes utilisent l&#039;entité pam/other&lt;br /&gt;
&lt;br /&gt;
==Désactiver rpcbind==&lt;br /&gt;
&lt;br /&gt;
Si vous n&#039;utilisez pas de montage NFS vous pouvez désactiver rpcbind.&amp;lt;br&amp;gt;&lt;br /&gt;
Editez &amp;lt;code&amp;gt;/etc/default/nfs-common&amp;lt;/code&amp;gt; et passez l&#039;argument suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;NEED_STATD=no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis désactivez rpcbind :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable rpcbind.target&lt;br /&gt;
systemctl disable rpcbind.socket&lt;br /&gt;
systemctl disable rpcbind.service&lt;br /&gt;
systemctl stop rpcbind.target&lt;br /&gt;
systemctl stop rpcbind.socket&lt;br /&gt;
systemctl stop rpcbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eviter les reboots accidentels avec molly-gard==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install molly-guard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Protection SSH avec sshguard==&lt;br /&gt;
&lt;br /&gt;
[[Protéger SSH avec sshguard]]&lt;br /&gt;
&lt;br /&gt;
==Protéger l&#039;interface web avec fail2ban==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install fail2ban&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/jail.local&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
# &amp;quot;ignoreip&amp;quot; can be an IP address, a CIDR mask or a DNS host&lt;br /&gt;
ignoreip = 127.0.0.1&lt;br /&gt;
bantime  = 1800&lt;br /&gt;
maxretry = 3&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Destination email address used solely for the interpolations in&lt;br /&gt;
# jail.{conf,local} configuration files.&lt;br /&gt;
destemail = root@localhost&lt;br /&gt;
&lt;br /&gt;
action = %(action_mwl)s&lt;br /&gt;
&lt;br /&gt;
[ssh]&lt;br /&gt;
enabled = false&lt;br /&gt;
&lt;br /&gt;
[sshd]&lt;br /&gt;
enabled  = false&lt;br /&gt;
&lt;br /&gt;
[proxmox]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = https,http,8006&lt;br /&gt;
filter = proxmox&lt;br /&gt;
backend = systemd&lt;br /&gt;
maxretry = 4&lt;br /&gt;
findtime = 2d&lt;br /&gt;
bantime = 1h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/filter.d/proxmox.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Definition]&lt;br /&gt;
failregex = pvedaemon\[.*authentication failure; rhost=&amp;lt;HOST&amp;gt; user=.* msg=.*&lt;br /&gt;
ignoreregex =&lt;br /&gt;
journalmatch = _SYSTEMD_UNIT=pvedaemon.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez fail2ban :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/fail2ban restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==firewall iptables==&lt;br /&gt;
&lt;br /&gt;
=Création d&#039;un stockage pour les VMs=&lt;br /&gt;
&lt;br /&gt;
Créez les partitions sda4 et sdb4 au moyen de gdisk (EFI) ou parted (BIOS).&lt;br /&gt;
&lt;br /&gt;
Créez sur ces partitions un raid :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create --verbose /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenez à jour &amp;lt;code&amp;gt;mdadm.conf&amp;lt;/code&amp;gt; et votre initramfs afin de conserver le bon naming du raid après reboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
update-initramfs -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis initialisez-y un LVM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvcreate /dev/md4&lt;br /&gt;
vgcreate main /dev/md4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu&#039;a déclarer ce Volume Group LVM dans l&#039;interface proxmox.&lt;br /&gt;
&lt;br /&gt;
=VM qemu/kvm=&lt;br /&gt;
&lt;br /&gt;
==Télécharger vos images==&lt;br /&gt;
&lt;br /&gt;
Vous pouvez placer les iso dans &amp;lt;code&amp;gt;/var/lib/vz/template/iso/&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt; par exemple.&lt;br /&gt;
Notez que l&#039;interface graphique de proxmox propose également une fonction d&#039;upload.&lt;br /&gt;
&lt;br /&gt;
==Créer votre première VM==&lt;br /&gt;
&lt;br /&gt;
Une fois la VM crées dans l&#039;interface proxmox, je vous recommande d&#039;écrire des zero sur son disque afin de réduire la taille des futurs backups. Si votre vm porte le numéro 100 et possède un seul disque :&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/zero | pv -ptrb | dd of=/dev/main/vm-100-disk1 bs=1M&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr0 (ip public)===&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr1 (ip locale)===&lt;br /&gt;
&lt;br /&gt;
Configuration réseau de la VM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.0.2&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
gateway 192.168.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Règle iptables à ajouter sur l&#039;hôte :&lt;br /&gt;
&amp;lt;pre&amp;gt;iptables -t nat -A POSTROUTING -s 192.168.0.2 -o vmbr0 -j SNAT --to IP-PUBLIC-DE-VOTRE-HOTE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez rendre accessible l&#039;un des services de la VM depuis l&#039;ip de l&#039;hote sur un port sépcifique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -t nat -A PREROUTING -p tcp -d &amp;lt;ip de l&#039;hote&amp;gt; --dport &amp;lt;port souhaité&amp;gt; -i vmbr0 -j DNAT --to-destination 192.168.0.2:port&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bloquer le spoofing d&#039;adresse mac==&lt;br /&gt;
Sur l&#039;hyperviseur, installez &amp;lt;code&amp;gt;ebtables&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install ebtables&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Admettons ensuite que votre VM a comme adresse ip &amp;lt;code&amp;gt;84.93.26.3&amp;lt;/code&amp;gt; et que son adresse mac doit être &amp;lt;code&amp;gt;52:54:00:00:98:b6&amp;lt;/code&amp;gt; : &lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv4 --ip-src 84.93.26.3 -s ! 52:54:00:00:98:b6 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez faire de même pour l&#039;ipv6. Dans l&#039;exemple suivant, seul le bloc ipv6 &amp;lt;code&amp;gt;2a01:d4h:123b:100::/56&amp;lt;/code&amp;gt; est utilisable par la vm :&lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv6 --ip6-src 2a01:d4h:123b:100::/56 -s ! 52:54:00:00:08:b1 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Importer une VM depuis vmware ESXi==&lt;br /&gt;
&lt;br /&gt;
==qm et modification des VMs en ligne de commande==&lt;br /&gt;
&lt;br /&gt;
==Monter les partitions d&#039;une VM depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pour la partition 1 : start*blocksize = offset&lt;br /&gt;
donc 2048*512 = 1048576&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;losetup /dev/loop1 -o 1048576 /dev/main/vm-101-disk-1 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et enfin :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount /dev/loop1 /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé vos modifications :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /mnt&lt;br /&gt;
losetup -d /dev/loop1&lt;br /&gt;
losetup -d /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Si la partition que vous voulez monter est un LVM===&lt;br /&gt;
&lt;br /&gt;
Scannez les nouveaux volumes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm pvscan&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activez les groupes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm vgchange -ay&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
listez les lvms avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm lvs&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les LV devraient apparaître dans &amp;lt;code&amp;gt;/dev/mapper/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé :&lt;br /&gt;
* démontez les LV&lt;br /&gt;
* Désactivez le groupe avec &amp;lt;code&amp;gt;vgchange -an&amp;lt;/code&amp;gt;&lt;br /&gt;
* désactivez le loopback : &amp;lt;code&amp;gt;losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Augmenter la taille du disque d&#039;une VM==&lt;br /&gt;
&lt;br /&gt;
Coupez la VM.&lt;br /&gt;
&lt;br /&gt;
Sur l&#039;host pour modifier la taille du disque 1 de la vm 110 ) 140G :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvextend -L 140G /dev/main/vm-110-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut ensuite, sur la vm lancée, utiliser resize2fs&lt;br /&gt;
&lt;br /&gt;
==Migrer une VM vers un autre serveur manuellement (pas de cluster) avec un downtime minimum==&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment migrer une VM proxmox stockée sur un LVM d&#039;un serveur à un autre, et ce, en minimisant au maximum le downtime. Pour cela, nous allons coupler la fonctionnalité de snapshot de lvm avec un petit script (lvmsync) qui permet de ne transférer que les blocs modifiés d&#039;un snapshot.&lt;br /&gt;
&lt;br /&gt;
Installez dmsetup et ruby (1.8 minimum) sur le serveur d&#039;origine et de destination :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install dmsetup ruby&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Récupérez &amp;lt;code&amp;gt;lvmsync&amp;lt;/code&amp;gt; sur https://github.com/mpalmer/lvmsync et placez le dans /sbin/ sur les serveurs d&#039;origine et de destination.&lt;br /&gt;
&lt;br /&gt;
Dans cet exemple, nous allons migrer la vm 102 disposant d&#039;un seul disque virtuel nommé vm-102-disk-1 et stocké dans le vg main du serveur server1.domain.tld vers le serveur server2.domain.tld.&lt;br /&gt;
Pour commencer, créez un snapshot de votre vm sur server1 :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvcreate --snapshot -L200G -n 102-lvmsync main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Désormais, tous les io de cette vm seront stockés dans le snapshot 102-lvmsync.&lt;br /&gt;
&lt;br /&gt;
Sur votre nouveau serveur, créez une VM identique à celle de votre premier serveur (surtout en qui concerne la taille de disque).&lt;br /&gt;
Depuis server1, copiez avec un dd over ssh le disque d&#039;origine de votre vm vers votre nouveau serveur.&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/main/vm-102-disk-1 | pv -ptrb | ssh -o &amp;quot;Compression no&amp;quot; root@server2.domain.tld &amp;quot;dd of=/dev/main/vm-102-disk-1 bs=100M&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : sur un réseauu 100Mbps utilisez plutôt &amp;lt;code&amp;gt;-o &amp;quot;Compressionlevel 1&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois la copie terminée, coupez la vm 102 sur server1, puis lancez lvmsync sur le snapshot (toujours sur server1) :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvmsync /dev/main/102-lvmsync server2.domain.tld:/dev/main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois le travail de lvmsync achevé, il ne nous reste plus qu&#039;a relancer la vm sur server2&lt;br /&gt;
&lt;br /&gt;
A titre d&#039;information, si vous voulez merger le snapshot de la vm 102 sur server 1, tapez :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvconvert --merge /dev/main/102-lvmsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conteneur LXC=&lt;br /&gt;
&lt;br /&gt;
==Empêcher la mise à jour automatique de certains fichiers de configuration système du conteneur==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
On peut empêcher la mise à jour de ces fichiers en créant un fichier &amp;lt;code&amp;gt;.pve-ignore.NOM&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, &amp;lt;code&amp;gt;/etc/.pve-ignore.resolv.conf&amp;lt;/code&amp;gt; empêchera le fichier &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; d&#039;être mis à jour à chaque démarrage.&lt;br /&gt;
&lt;br /&gt;
=Annexes=&lt;br /&gt;
&lt;br /&gt;
==Problème de layout dans la console vnc==&lt;br /&gt;
Dans l&#039;interface web de proxmox : datacenter &amp;gt; option &amp;gt; passez Keyboard de &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; à &amp;lt;code&amp;gt;French&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Erreurs du type &amp;lt;code&amp;gt;IPv6 addrconf: prefix with wrong length 56&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64.&lt;br /&gt;
Ajouter les lignes suivantes dans un fichier &amp;lt;code&amp;gt;/etc/sysctl.d/local.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
net.ipv6.conf.all.autoconf = 0&lt;br /&gt;
net.ipv6.conf.default.autoconf = 0&lt;br /&gt;
net.ipv6.conf.eno3.autoconf = 0&lt;br /&gt;
net.ipv6.conf.vmbr0.autoconf = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Terminez par relancer procps :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/procps restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==paramètre sysctl ipv6 non appliqué au boot==&lt;br /&gt;
Ajoutez le module ipv6 dans /etc/modules afin d&#039;assurer le chargement d&#039;ipv6 avant l’exécution de sysctl :&lt;br /&gt;
&amp;lt;pre&amp;gt;echo ipv6 &amp;gt;&amp;gt; /etc/modules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LVM inaccessible depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lvm pvscan&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface web ne fonctionne pas et la commande qm retourne une erreur ipcc_send_rec failed: Connection refused==&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence de fichiers et dossiers dans &amp;lt;code&amp;gt;/etc/pve/&amp;lt;/code&amp;gt;. Si ce dossier est vide, c&#039;est probablement que votre fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; est mal configuré.&amp;lt;br&amp;gt;&lt;br /&gt;
Essayez de relancer &amp;lt;code&amp;gt;pve-cluster&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/pve-cluster restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez une erreur ou un warning, lancez la commande pmxcfs. Vous devriez obtenir ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$# pmxcfs &lt;br /&gt;
Jan 21 15:28:19 proxmox pmxcfs[1846]: Unable to get local IP address (pmxcfs.c:721:main)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez alors que le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est défini dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si par exemple &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; contient &amp;lt;code&amp;gt;proxmox.domain.tld&amp;lt;/code&amp;gt; vous devriez avoir la ligne suivante dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;VOTREIP proxmox.domain.tld proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pas assez d&#039;interfaces loopback==&lt;br /&gt;
&lt;br /&gt;
Créer le fichier &amp;lt;code&amp;gt;/etc/modprobe.d/local-loop.conf&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;options loop max_loop=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite redémarrer ou recharger le module loop :&lt;br /&gt;
&amp;lt;pre&amp;gt; rmmod loop &amp;amp;&amp;amp; modprobe loop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Défragmentation LVM : exemple==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hub:~# pvdisplay --maps&lt;br /&gt;
  --- Physical volume ---&lt;br /&gt;
  PV Name               /dev/sda4&lt;br /&gt;
  VG Name               main&lt;br /&gt;
  PV Size               1.76 TB / not usable 456.00 KB&lt;br /&gt;
  Allocatable           yes &lt;br /&gt;
  PE Size (KByte)       4096&lt;br /&gt;
  Total PE              461649&lt;br /&gt;
  Free PE               208721&lt;br /&gt;
  Allocated PE          252928&lt;br /&gt;
  PV UUID               PUqV5Q-WRW2-n20t-eFVM-CA1r-RhDl-2RTJHq&lt;br /&gt;
   &lt;br /&gt;
  --- Physical Segments ---&lt;br /&gt;
  Physical extent 0 to 7935:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-1&lt;br /&gt;
    Logical extents     0 to 7935&lt;br /&gt;
  Physical extent 7936 to 72191:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 72192 to 136703:&lt;br /&gt;
    Logical volume      /dev/main/vm-102-disk-1&lt;br /&gt;
    Logical extents     0 to 64511&lt;br /&gt;
  Physical extent 136704 to 144895:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-1&lt;br /&gt;
    Logical extents     0 to 8191&lt;br /&gt;
  Physical extent 144896 to 209151:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 209152 to 214271:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-1&lt;br /&gt;
    Logical extents     0 to 5119&lt;br /&gt;
  Physical extent 214272 to 227327:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-2&lt;br /&gt;
    Logical extents     0 to 13055&lt;br /&gt;
  Physical extent 227328 to 282111:&lt;br /&gt;
    FREE&lt;br /&gt;
  Physical extent 282112 to 307711:&lt;br /&gt;
    Logical volume      /dev/main/vm-108-disk-1&lt;br /&gt;
    Logical extents     0 to 25599&lt;br /&gt;
  Physical extent 307712 to 461648:&lt;br /&gt;
    FREE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir, on a un trou &amp;quot;vide&amp;quot; entre l&#039;extent &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; et 282111, puis à nouveau des données entre l&#039;extent &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour combler ce trou, nous allons déplacer les données des  /dev/main/vm-108-disk-1 situés entre les extents &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; (soit 25599 extents au total) vers l&#039;espace libre avec &amp;lt;code&amp;gt;pvmove&amp;lt;/code&amp;gt; :&amp;lt;br&amp;gt;&lt;br /&gt;
pvmove /dev/sda4:&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; /dev/sda4:&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt; --alloc anywhere&lt;br /&gt;
&lt;br /&gt;
Notez qu&#039;il faut attribuer exactement le même nombre d&#039;extents à la destination qu&#039;à l&#039;origine : &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; + 25599 = &amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Oups: j&#039;ai supprimé le mauvais lvm==&lt;br /&gt;
&lt;br /&gt;
Pas de panique, mais ne bougez plus ! Pour l&#039;instant, seul les métadonnées du lvm sont impactés.&lt;br /&gt;
Et comme c&#039;est bien foutu, lvm conserve un backup des anciennes metadonnées après chaque modification. Ces archives sont situés dans &amp;lt;code&amp;gt;/etc/lvm/archive/&amp;lt;/code&amp;gt;. Les fichiers y sont nommés sous la forme vg_XXXX-YYYYYYY.vg. Normalement, le fichier ayant le XXXX le plus élevé sera celui de l&#039;état précédent votre erreur.&lt;br /&gt;
Pour vérifier que vous avez sélectionné le bon fichier, vous pouvez l&#039;ouvrir avec nano et regarder si l&#039;état du lvm dans cette archive correspond a ce que vous attendez.&lt;br /&gt;
&lt;br /&gt;
Pour restaurer l&#039;archive des métadonnées main_00007-587941649.vg pour le vg main :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vgcfgrestore -f /etc/lvm/archive/main_00007-587941649.vg main&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Votre volume devrait être de retour.&lt;br /&gt;
&lt;br /&gt;
Il faut encore vérifier que la table de partition contenu sur ce lvm n&#039;a pas morphlé. En admettant que /dev/main/vm-101-disk-1 est la lvm que vous venez de restaurer :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez ça, c&#039;est bon, vous êtes sauvés ! Si ce n&#039;est pas le cas, continuez à lire ;)&lt;br /&gt;
&lt;br /&gt;
===Récupération de la table de partition===&lt;br /&gt;
&lt;br /&gt;
Si fdisk vous envois chier avec un message du style &amp;lt;code&amp;gt;Disk /dev/loop0 doesn&#039;t contain a valid partition table&amp;lt;/code&amp;gt;, il va falloir récupérer la table de partition.&lt;br /&gt;
&lt;br /&gt;
Installez testdisk :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install testdisk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lancez le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# testdisk /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selectionez le media &amp;lt;code&amp;gt;/dev/loop0&amp;lt;/code&amp;gt; et validez avec &amp;lt;code&amp;gt;enter&amp;lt;/code&amp;gt;.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;intel&amp;lt;/code&amp;gt; comme type de table de partition.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;analyse&amp;lt;/code&amp;gt;&lt;br /&gt;
A l&#039;écran suivant, tapez enter.&lt;br /&gt;
Avec de la chance, testdisk retrouvera vos partitions. Une fois qu&#039;il aura terminé de travailler, il ne restera plus qu&#039;à taper sur enter encore une fois, puis demander à testdisk de sauvegarder la table de partition&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface proxmox n&#039;affiche pas les disques de certaines VMs==&lt;br /&gt;
&lt;br /&gt;
Ceci arrive typiquement si vous avez créé un volume logique à la main sans y ajouter le bon tag.&lt;br /&gt;
Vérifiez la présence des tags sur vos LV avec la commande &amp;lt;code&amp;gt;lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  20.00g &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous le voyez, le lv de la vm 101 n&#039;est pas tagué. Vous pouvez ajouter le tag avec &amp;lt;code&amp;gt;lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  16.00g pve-vm-101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas,  essayez de passer un petit coup de &amp;lt;code&amp;gt;qm rescan&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4403</id>
		<title>Proxmox 8</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4403"/>
		<updated>2025-10-03T11:27:03Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:virtualisation]]&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment installer proxmox 8.x sur un raid 1 logiciel (md / mdadm) avec debootstrap.&lt;br /&gt;
&lt;br /&gt;
=Prérequis=&lt;br /&gt;
&lt;br /&gt;
Ce tutoriel se base sur l&#039;utilisation de debootstrap pour installer une base de système d&#039;exploitation debian. La plupart des hébergeurs proposent un système de &amp;quot;rescue&amp;quot; permettant l&#039;installation de debian par ce moyen.&lt;br /&gt;
Si vous ne disposez pas de mode rescue, vous pouvez toujours utiliser l&#039;installeur proposé par votre hébergeur, ou encore passer par un kvm pour installer vous même le système avec l&#039;iso de debian.&lt;br /&gt;
&lt;br /&gt;
=Pour les débutants=&lt;br /&gt;
&lt;br /&gt;
Si vous êtes débutant en administration linux, je vous conseil de sauvegarder quelque part les fichier suivant issu d&#039;une précédente installation de debian ou de proxmox&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/networks&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt; si vous disposez d&#039;un raid logiciel&lt;br /&gt;
* tout fichier de personnalisation de grub (&amp;lt;code&amp;gt;/etc/grub.d/&amp;lt;/code&amp;gt; par exemple)&lt;br /&gt;
&lt;br /&gt;
Cela vous permettra de vous faire une idée plus précise de ce qui doit figurer dans ces différents fichiers.&lt;br /&gt;
&lt;br /&gt;
=Partitionnement et système de fichier=&lt;br /&gt;
&lt;br /&gt;
Voici le partitionnement que je vais utiliser :&lt;br /&gt;
* Partition root (/) de 20 Go (/) en raid 1 sur les disques sda et sdb&lt;br /&gt;
* Partitions swap de 4096 Go chacune réparties sur sda et sdb&lt;br /&gt;
* Le reste de l&#039;espace sera utilisé plus tard pour un LVM dédié aux VMs&lt;br /&gt;
&lt;br /&gt;
==Partitionnement==&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitionnement GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions EFI (ESP), obligatoire pour le démarrage EFI/UEFI. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF00&amp;lt;/code&amp;gt;. 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).&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour les partitions EFI, nous créons un système de fichier FAT32 avec le label (nom) &amp;lt;code&amp;gt;EFI_SYSPART&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sda1&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sdb1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitionnement GPT pour BIOS===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions pour le bootloader. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF02&amp;lt;/code&amp;gt;. On peut la créer idéalement du secteur 34 au secteur 2047 du disque.&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notez que la partition du bootloader ne doit pas être formatée.&lt;br /&gt;
&lt;br /&gt;
===Possibilité 3 : partitionnement MBR pour BIOS (non prise en charge dans ce wiki)===&lt;br /&gt;
&lt;br /&gt;
A titre informatif : création avec &amp;lt;code&amp;gt;parted&amp;lt;/code&amp;gt;, sans nécessité de créer une partition dédiée au bootloader/grub.&lt;br /&gt;
&lt;br /&gt;
==Création du RAID==&lt;br /&gt;
&lt;br /&gt;
Pour des raisons esthétiques, définissez l&#039;hostname de votre système de rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;hostname proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour créer votre raid 1 avec 2 disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que si vous souhaitez utiliser plus que 2 disques, il faut augmenter la valeur de &amp;lt;code&amp;gt;--raid-devices&amp;lt;/code&amp;gt; et ajouter les partitions des disques à la suite.&lt;br /&gt;
&lt;br /&gt;
Attendez que le raid soit synchronisé avant de continuer. Vous pouvez surveiller facilement cela avec la commande &amp;lt;code&amp;gt;watch cat /proc/mdstat&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Création des systèmes de fichiers==&lt;br /&gt;
&lt;br /&gt;
Créez un système de fichier ext4 pour le raid du root :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/md2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, initialisez les swaps :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkswap /dev/sda3&lt;br /&gt;
mkswap /dev/sdb3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Installation de proxmox=&lt;br /&gt;
&lt;br /&gt;
==Installation du système de base==&lt;br /&gt;
&lt;br /&gt;
Nous débutons par installer le système de base de Debian avec &amp;lt;code&amp;gt;debootstrap&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les paquets nécessaires dans votre rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install debootstrap debian-keyring debian-archive-keyring&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez votre partition raid root sur &amp;lt;code&amp;gt;/mnt&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/md2 /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez le système de base debian, version bookworm :&lt;br /&gt;
&amp;lt;pre&amp;gt;debootstrap --arch=amd64 bookworm /mnt http://ftp.fr.debian.org/debian&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration de Debian==&lt;br /&gt;
&lt;br /&gt;
Montez les vfs suivants, puis chrootez dans votre nouveau système debian :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount -o bind /proc /mnt/proc&lt;br /&gt;
mount -o bind /dev /mnt/dev&lt;br /&gt;
mount -o bind /dev/pts /mnt/dev/pts&lt;br /&gt;
mount -o bind /sys /mnt/sys&lt;br /&gt;
chroot /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les archives apt : éditez le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main archive&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# security updates&lt;br /&gt;
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# bookworm-updates, previously known as &#039;volatile&#039;&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# backports archive&lt;br /&gt;
deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour les paquets :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les locales et la configuration de console :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install locales &lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
apt install console-data console-setup-linux console-setup wget&lt;br /&gt;
dpkg-reconfigure console-data # from arch &amp;gt; french &amp;gt; latin9)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la zone horaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tzselect&lt;br /&gt;
dpkg-reconfigure tzdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez votre fichier &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Pour GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda1       /boot/efi       vfat    defaults                                  0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour GPT pour BIOS :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez la partition EFI / ESP dans le cas d&#039;un partitionnement GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /boot/efi&lt;br /&gt;
mount /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les interfaces réseaux dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The loopback network interface&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet static&lt;br /&gt;
        address XXXX/24&lt;br /&gt;
        gateway XXXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# local&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
::1             localhost ip6-localhost ip6-loopback&lt;br /&gt;
ff02::1         ip6-allnodes&lt;br /&gt;
ff02::2         ip6-allrouters&lt;br /&gt;
&lt;br /&gt;
# main&lt;br /&gt;
ipdelamachine   proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez les hostnames dans ces fichiers :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Pour celui la : non-fqdn&lt;br /&gt;
echo proxmox &amp;gt; /etc/hostname&lt;br /&gt;
# Pour celui la : fqdn&lt;br /&gt;
echo proxmox.domain.tld &amp;gt; /etc/mailname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION&#039;&#039;&#039; Le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; DOIT être cohérent avec le fichier &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, si le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est &amp;lt;code&amp;gt;proxmox&amp;lt;/code&amp;gt; et que l&#039;ip de votre proxmox est 225.182.54.9 il faudra veiller a avoir les informations suivantes dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1 localhost&lt;br /&gt;
225.182.54.9 proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attention : n&#039;utilisez pas 127.0.1.1 (comme le fait debian) mais bien la vrai ip (ici 225.182.54.9)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
N&#039;oubliez pas de configurer les dns (ceux de votre hébergeur dédié) dans &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;nameserver XX.XX.XX.XX&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez postfix :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install postfix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, comme nous installons notre partition de boot sur un raid software, il faut installer &amp;lt;code&amp;gt;madadm&amp;lt;/code&amp;gt; à ce stade :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install mdadm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez si votre array root s&#039;est bien défini automatiquement dans &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt;. Si ce n&#039;est pas me cas, ajoutez la configuration de l&#039;array manuellement :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - kernel==&lt;br /&gt;
&lt;br /&gt;
Ajoutez le dépot proxmox dans le fichier /etc/apt/source.list :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use&lt;br /&gt;
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajoutez la clé du dépôt proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour le système :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitions GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Vérifiez que &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt; est bien monté. Si ce n&#039;est pas le cas, faites le.&lt;br /&gt;
&lt;br /&gt;
Installez le kernel proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-efi-amd64 gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supprimez les paquets suivant si vous n&#039;avez pas besoin de secureboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed shim-signed-common shim-unsigned&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normalement tout doit se faire avec des promps. Si ce n&#039;était pas le cas :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si jamais vous utilisez un démarrage en PXE (c&#039;est le cas sur un serveur OVH par exemple), utilisez l&#039;argument &amp;lt;code&amp;gt;--no-nvram&amp;lt;/code&amp;gt; pour empêcher grub de mettre à jour la NVRAM et casser votre mécanique de démarrage PXE :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox --no-nvram&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Etant donné que seul &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; est monté sur &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt;, il faut transférer manuellement les données sur &amp;lt;code&amp;gt;/dev/sdb1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/sdb1 /mnt&lt;br /&gt;
rsync -av /boot/efi/ /mnt/&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si pour une raison quelconque, vous aviez besoin des headers du kernel :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install pve-headers-5.15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitions GPT pour BIOS OU Partitions MBR pour BIOS===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-pc gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on vous demandera où installer grub, choisissez &amp;lt;code&amp;gt;sda&amp;lt;/code&amp;gt; ET &amp;lt;code&amp;gt;sdb&amp;lt;/code&amp;gt;. Sinon :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-install /dev/sda&lt;br /&gt;
grub-install /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - OpenSSH==&lt;br /&gt;
&lt;br /&gt;
Installez openssh et définissez un password root. Autorisez le login root par password temporairement.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install openssh-server&lt;br /&gt;
passwd&lt;br /&gt;
sed -i &amp;quot;s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g&amp;quot; /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - Vérifications finales et redémarrage sur le kernel proxmox==&lt;br /&gt;
&lt;br /&gt;
Si vous avez une configuration particulière à entrer dans &amp;lt;code&amp;gt;/etc/default/grub&amp;lt;/code&amp;gt;, faites le maintenant. Par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;nomodeset iommu=pt&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis régénérez la configuration de grub :&lt;br /&gt;
&amp;lt;pre&amp;gt;update-grub&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez vérifier que votre fstab est valide avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;findmnt --verify --verbose&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /boot/efi/&lt;br /&gt;
exit&lt;br /&gt;
umount /mnt/sys&lt;br /&gt;
umount /mnt/dev/pts&lt;br /&gt;
umount /mnt/dev&lt;br /&gt;
umount /mnt/proc&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, redémarrez le serveur sur le disque dur.&lt;br /&gt;
&lt;br /&gt;
==Installation de ifupdown2==&lt;br /&gt;
&lt;br /&gt;
Le paquet &amp;lt;code&amp;gt;ifupdown2&amp;lt;/code&amp;gt; est en voie de devenir le remplaçant officiel de &amp;lt;code&amp;gt;ifupdown&amp;lt;/code&amp;gt; pour proxmox.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ifupdown2&lt;br /&gt;
apt purge ifupdown&lt;br /&gt;
systemctl enable networking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que votre configuration est fonctionnelle : lancez &amp;lt;code&amp;gt;ifquery -a&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrez à nouveau votre serveur&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - pve==&lt;br /&gt;
&lt;br /&gt;
Une fois le redémarrage effectué, vous allez enfin pouvoir installer pve :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install proxmox-ve ksm-control-daemon chrony&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;apt remove os-prober&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editez la configuration réseau &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; afin d&#039;y créer votre bridge :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet manual&lt;br /&gt;
&lt;br /&gt;
auto vmbr0&lt;br /&gt;
iface vmbr0 inet static&lt;br /&gt;
        address xxxxx/24&lt;br /&gt;
        gateway xxxx&lt;br /&gt;
        hwaddress AA:BB:CC:11:22:33&lt;br /&gt;
        bridge_ports eno3&lt;br /&gt;
        bridge_stp off&lt;br /&gt;
        bridge_fd 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la ligne &amp;lt;code&amp;gt;hwaddress&amp;lt;/code&amp;gt; avec l&#039;adresse MAC de l&#039;interface eno3.&lt;br /&gt;
&lt;br /&gt;
Installez votre clé SSH dans &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; puis désactivez le login root par password de OpenSSH dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois tout installé, je vous conseille de reconfigurer grub afin de mettre à jour la configuration interne de debian:&lt;br /&gt;
* Pour EFI : &amp;lt;code&amp;gt;dpkg-reconfigure grub-efi-amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pour BIOS : &amp;lt;code&amp;gt;dpkg-reconfigure grub-pc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrez une dernière fois pour appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
Votre proxmox sera accessible à l&#039;adresse https://ip:8006&lt;br /&gt;
&lt;br /&gt;
==Nettoyage des paquets==&lt;br /&gt;
&lt;br /&gt;
Si vous ne comptez pas utiliser ZFS, vous pouvez supprimer les paquets suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge zfs-zed libnvpair3linux libuutil3linux libzfs4linux libzpool5linux zfsutils-linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration réseau avancée==&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;une IPv6 sur vmbr0===&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;un réseau interne vmbr1===&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment créer un réseau interne avec proxmox, c&#039;est à dire, un réseau qui ne sera attaché à aucune interface réseau physique. L&#039;intérêt est d&#039;offrir un débit bien supérieur pour les communications entre les VMs.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto vmbr1&lt;br /&gt;
iface vmbr1 inet static&lt;br /&gt;
        address  192.168.0.1&lt;br /&gt;
        netmask  255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : vous pouvez faire de même en ipv6 :&lt;br /&gt;
* il faut utiliser le range Unique Local Address (ULA) fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address)&lt;br /&gt;
* pour générer votre ULA : http://pfoo.unscdf.org/ula/gen-ula.html&lt;br /&gt;
&lt;br /&gt;
==Sécurisation de base==&lt;br /&gt;
&lt;br /&gt;
Je vous conseil de commencer à sécuriser votre ssh :&lt;br /&gt;
* désactivez le login root (directive &amp;lt;code&amp;gt;PermitRootLogin no&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;). Pensez néanmoins à créer un utilisateur pour vous connecter en ssh avant de désactiver le login root.&lt;br /&gt;
* utilisez la directive &amp;lt;code&amp;gt;allowusers &amp;lt;user&amp;gt;&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; pour n&#039;autoriser que certains utilisateurs à se connecter en ssh.&lt;br /&gt;
&lt;br /&gt;
Il est aussi préférable d&#039;installer le serveur de temps NTP à la place de systemd-timesyncd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install chrony&lt;br /&gt;
apt purge systemd-timesyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configurer le serveur mail postfix=&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
==Certificats SSL==&lt;br /&gt;
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. Si ce n&#039;est pas le cas, vous pouvez toujours aller lire [http://wiki.unscdf.org/index.php?title=Installation_et_configuration_de_OpenSSL ceci] afin d&#039;apprendre à créer votre autorité ssl.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/ssl/openssl.cnf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[POSTFIX]&lt;br /&gt;
nsComment                       = &amp;quot;SMTP Server Certificate&amp;quot;&lt;br /&gt;
subjectKeyIdentifier            = hash&lt;br /&gt;
authorityKeyIdentifier          = keyid,issuer:always&lt;br /&gt;
issuerAltName                   = issuer:copy&lt;br /&gt;
basicConstraints                = critical,CA:FALSE&lt;br /&gt;
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment&lt;br /&gt;
nsCertType                      = server&lt;br /&gt;
extendedKeyUsage                = serverAuth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis générez la clé et le certificat, et signez le avec votre autorité (int_ca dans mon cas) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req&lt;br /&gt;
openssl ca -config /etc/ssl/openssl.cnf -name int_ca -extensions POSTFIX -in postfix.req -out postfix.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Déplacez les fichiers dans le répertoire &amp;lt;code&amp;gt;/etc/postfix/ssl&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/postfix/ssl&lt;br /&gt;
mv postfix.key /etc/postfix/ssl/&lt;br /&gt;
mv postfix.pem /etc/postfix/ssl/&lt;br /&gt;
chmod 600 /etc/postfix/ssl/*&lt;br /&gt;
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/int_ca/int_ca.pem &amp;gt; /etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut encore modifier &amp;lt;code&amp;gt;/etc/postfix/main.cf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smtpd_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtpd_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
smtpd_use_tls=yes&lt;br /&gt;
smtp_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtp_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&lt;br /&gt;
smtpd_tls_security_level=may&lt;br /&gt;
smtp_tls_security_level=may&lt;br /&gt;
smtpd_tls_loglevel = 1&lt;br /&gt;
smtp_tls_loglevel = 1&lt;br /&gt;
&lt;br /&gt;
#smtp_tls_policy_maps = hash:/etc/postfix/tls_policy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire=&lt;br /&gt;
&lt;br /&gt;
Depuis Proxmox 5.2, il n&#039;est plus recommandé d&#039;adapter manuellement les fichiers contenant les certificats et clés privés de proxmox.&amp;lt;br&amp;gt;&lt;br /&gt;
Cependant, vous pouvez placer directement votre clé privé dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.key&amp;lt;/code&amp;gt; et la chaîne de certification dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.pem&amp;lt;/code&amp;gt;. Vous pouvez également déposer ces fichiers via la webui de proxmox au niveau de chaque serveur.&lt;br /&gt;
&lt;br /&gt;
=Surveiller l&#039;état des disques avec SMART=&lt;br /&gt;
&lt;br /&gt;
Commencez par installer le paquet smartmontools :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install smartmontools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez que vos disques gèrent smart et qu&#039;il est activé :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -i /dev/sda&lt;br /&gt;
smartctl -i /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si smart n&#039;est pas activé, essayez de l&#039;activer comme ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -s on /dev/sda&lt;br /&gt;
smartctl -s on /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez le statut de santé de vos disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -H /dev/sda&lt;br /&gt;
smartctl -H /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
S&#039;il indique &amp;lt;code&amp;gt;PASSED&amp;lt;/code&amp;gt; c&#039;est bon de ce côté. S&#039;il vous indique &amp;lt;code&amp;gt;FAILED&amp;lt;/code&amp;gt;, sauvegardez immédiatement vos données !&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence d&#039;erreurs dans le log smart :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -l error /dev/sda&lt;br /&gt;
smartctl -l error /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez &amp;lt;code&amp;gt;No Errors Logged&amp;lt;/code&amp;gt; ou quelques erreurs, c&#039;est bon. S&#039;il y eu a beaucoup, il faut envisager de changer le disque.&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration de smartd est &amp;lt;code&amp;gt;/etc/smartd.conf&amp;lt;/code&amp;gt;. Commentez la ligne &amp;lt;code&amp;gt;DEVICESCAN&amp;lt;/code&amp;gt; puis ajoutez les lignes suivantes pour surveiller les deux disques durs :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
/dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous activons la surveillance globale (&amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt;), la vérification automatique offline, (&amp;lt;code&amp;gt;-o on&amp;lt;/code&amp;gt;), la sauvegarde automatique des attributs (&amp;lt;code&amp;gt;-S on&amp;lt;/code&amp;gt; et lançons un &amp;lt;code&amp;gt;short self test&amp;lt;/code&amp;gt; tous les jours à 2h du matin, et un &amp;lt;code&amp;gt;long self test&amp;lt;/code&amp;gt; tous les samedi à 3h du matin. Si des erreurs sont détectés, un email est envoyé à vous@domain.tld.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez smartd :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/smartmontools restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;information sur SMART et ses arguments : [[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
&lt;br /&gt;
=Protégez votre proxmox=&lt;br /&gt;
&lt;br /&gt;
==Désactiver le login root sur l&#039;interface proxmox==&lt;br /&gt;
Avant toute manipulation, n&#039;oubliez pas de créer un utilisateur ayant les droits d&#039;administration pour accéder à l&#039;interface de proxmox&lt;br /&gt;
&lt;br /&gt;
===Via l&#039;interface proxmox===&lt;br /&gt;
Dans Datacenter &amp;gt; Permissions &amp;gt; Users : Editez l&#039;utilisateur root et décochez la case &amp;lt;code&amp;gt;Enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Via les droits linux===&lt;br /&gt;
&amp;lt;pre&amp;gt;passwd --lock root&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 !&lt;br /&gt;
&lt;br /&gt;
===Via PAM===&lt;br /&gt;
Vous pouvez désactiver le login pam en éditant &amp;lt;code&amp;gt;/etc/pam.d/other&amp;lt;/code&amp;gt; et en y ajoutant, en début de fichier, les lignes suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth        required    pam_deny.so&lt;br /&gt;
auth        required    pam_warn.so&lt;br /&gt;
account     required    pam_deny.so&lt;br /&gt;
account     required    pam_warn.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attention, cette méthode peut avoir des effets de bord si d&#039;autres programmes utilisent l&#039;entité pam/other&lt;br /&gt;
&lt;br /&gt;
==Désactiver rpcbind==&lt;br /&gt;
&lt;br /&gt;
Si vous n&#039;utilisez pas de montage NFS vous pouvez désactiver rpcbind.&amp;lt;br&amp;gt;&lt;br /&gt;
Editez &amp;lt;code&amp;gt;/etc/default/nfs-common&amp;lt;/code&amp;gt; et passez l&#039;argument suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;NEED_STATD=no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis désactivez rpcbind :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable rpcbind.target&lt;br /&gt;
systemctl disable rpcbind.socket&lt;br /&gt;
systemctl disable rpcbind.service&lt;br /&gt;
systemctl stop rpcbind.target&lt;br /&gt;
systemctl stop rpcbind.socket&lt;br /&gt;
systemctl stop rpcbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eviter les reboots accidentels avec molly-gard==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install molly-guard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Protection SSH avec sshguard==&lt;br /&gt;
&lt;br /&gt;
[[Protéger SSH avec sshguard]]&lt;br /&gt;
&lt;br /&gt;
==Protéger l&#039;interface web avec fail2ban==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install fail2ban&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/jail.local&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
# &amp;quot;ignoreip&amp;quot; can be an IP address, a CIDR mask or a DNS host&lt;br /&gt;
ignoreip = 127.0.0.1&lt;br /&gt;
bantime  = 1800&lt;br /&gt;
maxretry = 3&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Destination email address used solely for the interpolations in&lt;br /&gt;
# jail.{conf,local} configuration files.&lt;br /&gt;
destemail = root@localhost&lt;br /&gt;
&lt;br /&gt;
action = %(action_mwl)s&lt;br /&gt;
&lt;br /&gt;
[ssh]&lt;br /&gt;
enabled = false&lt;br /&gt;
&lt;br /&gt;
[sshd]&lt;br /&gt;
enabled  = false&lt;br /&gt;
&lt;br /&gt;
[proxmox]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = https,http,8006&lt;br /&gt;
filter = proxmox&lt;br /&gt;
backend = systemd&lt;br /&gt;
maxretry = 4&lt;br /&gt;
findtime = 2d&lt;br /&gt;
bantime = 1h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/filter.d/proxmox.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Definition]&lt;br /&gt;
failregex = pvedaemon\[.*authentication failure; rhost=&amp;lt;HOST&amp;gt; user=.* msg=.*&lt;br /&gt;
ignoreregex =&lt;br /&gt;
journalmatch = _SYSTEMD_UNIT=pvedaemon.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez fail2ban :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/fail2ban restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==firewall iptables==&lt;br /&gt;
&lt;br /&gt;
=Création d&#039;un stockage pour les VMs=&lt;br /&gt;
&lt;br /&gt;
Créez les partitions sda4 et sdb4 au moyen de gdisk (EFI) ou parted (BIOS).&lt;br /&gt;
&lt;br /&gt;
Créez sur ces partitions un raid :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create --verbose /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenez à jour &amp;lt;code&amp;gt;mdadm.conf&amp;lt;/code&amp;gt; et votre initramfs afin de conserver le bon naming du raid après reboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
update-initramfs -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis initialisez-y un LVM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvcreate /dev/md4&lt;br /&gt;
vgcreate main /dev/md4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu&#039;a déclarer ce Volume Group LVM dans l&#039;interface proxmox.&lt;br /&gt;
&lt;br /&gt;
=VM qemu/kvm=&lt;br /&gt;
&lt;br /&gt;
==Télécharger vos images==&lt;br /&gt;
&lt;br /&gt;
Vous pouvez placer les iso dans &amp;lt;code&amp;gt;/var/lib/vz/template/iso/&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt; par exemple.&lt;br /&gt;
Notez que l&#039;interface graphique de proxmox propose également une fonction d&#039;upload.&lt;br /&gt;
&lt;br /&gt;
==Créer votre première VM==&lt;br /&gt;
&lt;br /&gt;
Une fois la VM crées dans l&#039;interface proxmox, je vous recommande d&#039;écrire des zero sur son disque afin de réduire la taille des futurs backups. Si votre vm porte le numéro 100 et possède un seul disque :&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/zero | pv -ptrb | dd of=/dev/main/vm-100-disk1 bs=1M&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr0 (ip public)===&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr1 (ip locale)===&lt;br /&gt;
&lt;br /&gt;
Configuration réseau de la VM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.0.2&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
gateway 192.168.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Règle iptables à ajouter sur l&#039;hôte :&lt;br /&gt;
&amp;lt;pre&amp;gt;iptables -t nat -A POSTROUTING -s 192.168.0.2 -o vmbr0 -j SNAT --to IP-PUBLIC-DE-VOTRE-HOTE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez rendre accessible l&#039;un des services de la VM depuis l&#039;ip de l&#039;hote sur un port sépcifique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -t nat -A PREROUTING -p tcp -d &amp;lt;ip de l&#039;hote&amp;gt; --dport &amp;lt;port souhaité&amp;gt; -i vmbr0 -j DNAT --to-destination 192.168.0.2:port&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bloquer le spoofing d&#039;adresse mac==&lt;br /&gt;
Sur l&#039;hyperviseur, installez &amp;lt;code&amp;gt;ebtables&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install ebtables&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Admettons ensuite que votre VM a comme adresse ip &amp;lt;code&amp;gt;84.93.26.3&amp;lt;/code&amp;gt; et que son adresse mac doit être &amp;lt;code&amp;gt;52:54:00:00:98:b6&amp;lt;/code&amp;gt; : &lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv4 --ip-src 84.93.26.3 -s ! 52:54:00:00:98:b6 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez faire de même pour l&#039;ipv6. Dans l&#039;exemple suivant, seul le bloc ipv6 &amp;lt;code&amp;gt;2a01:d4h:123b:100::/56&amp;lt;/code&amp;gt; est utilisable par la vm :&lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv6 --ip6-src 2a01:d4h:123b:100::/56 -s ! 52:54:00:00:08:b1 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Importer une VM depuis vmware ESXi==&lt;br /&gt;
&lt;br /&gt;
==qm et modification des VMs en ligne de commande==&lt;br /&gt;
&lt;br /&gt;
==Monter les partitions d&#039;une VM depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pour la partition 1 : start*blocksize = offset&lt;br /&gt;
donc 2048*512 = 1048576&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;losetup /dev/loop1 -o 1048576 /dev/main/vm-101-disk-1 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et enfin :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount /dev/loop1 /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé vos modifications :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /mnt&lt;br /&gt;
losetup -d /dev/loop1&lt;br /&gt;
losetup -d /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Si la partition que vous voulez monter est un LVM===&lt;br /&gt;
&lt;br /&gt;
Scannez les nouveaux volumes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm pvscan&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activez les groupes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm vgchange -ay&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
listez les lvms avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm lvs&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les LV devraient apparaître dans &amp;lt;code&amp;gt;/dev/mapper/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé :&lt;br /&gt;
* démontez les LV&lt;br /&gt;
* Désactivez le groupe avec &amp;lt;code&amp;gt;vgchange -an&amp;lt;/code&amp;gt;&lt;br /&gt;
* désactivez le loopback : &amp;lt;code&amp;gt;losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Augmenter la taille du disque d&#039;une VM==&lt;br /&gt;
&lt;br /&gt;
Coupez la VM.&lt;br /&gt;
&lt;br /&gt;
Sur l&#039;host pour modifier la taille du disque 1 de la vm 110 ) 140G :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvextend -L 140G /dev/main/vm-110-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut ensuite, sur la vm lancée, utiliser resize2fs&lt;br /&gt;
&lt;br /&gt;
==Migrer une VM vers un autre serveur manuellement (pas de cluster) avec un downtime minimum==&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment migrer une VM proxmox stockée sur un LVM d&#039;un serveur à un autre, et ce, en minimisant au maximum le downtime. Pour cela, nous allons coupler la fonctionnalité de snapshot de lvm avec un petit script (lvmsync) qui permet de ne transférer que les blocs modifiés d&#039;un snapshot.&lt;br /&gt;
&lt;br /&gt;
Installez dmsetup et ruby (1.8 minimum) sur le serveur d&#039;origine et de destination :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install dmsetup ruby&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Récupérez &amp;lt;code&amp;gt;lvmsync&amp;lt;/code&amp;gt; sur https://github.com/mpalmer/lvmsync et placez le dans /sbin/ sur les serveurs d&#039;origine et de destination.&lt;br /&gt;
&lt;br /&gt;
Dans cet exemple, nous allons migrer la vm 102 disposant d&#039;un seul disque virtuel nommé vm-102-disk-1 et stocké dans le vg main du serveur server1.domain.tld vers le serveur server2.domain.tld.&lt;br /&gt;
Pour commencer, créez un snapshot de votre vm sur server1 :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvcreate --snapshot -L200G -n 102-lvmsync main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Désormais, tous les io de cette vm seront stockés dans le snapshot 102-lvmsync.&lt;br /&gt;
&lt;br /&gt;
Sur votre nouveau serveur, créez une VM identique à celle de votre premier serveur (surtout en qui concerne la taille de disque).&lt;br /&gt;
Depuis server1, copiez avec un dd over ssh le disque d&#039;origine de votre vm vers votre nouveau serveur.&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/main/vm-102-disk-1 | pv -ptrb | ssh -o &amp;quot;Compression no&amp;quot; root@server2.domain.tld &amp;quot;dd of=/dev/main/vm-102-disk-1 bs=100M&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : sur un réseauu 100Mbps utilisez plutôt &amp;lt;code&amp;gt;-o &amp;quot;Compressionlevel 1&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois la copie terminée, coupez la vm 102 sur server1, puis lancez lvmsync sur le snapshot (toujours sur server1) :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvmsync /dev/main/102-lvmsync server2.domain.tld:/dev/main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois le travail de lvmsync achevé, il ne nous reste plus qu&#039;a relancer la vm sur server2&lt;br /&gt;
&lt;br /&gt;
A titre d&#039;information, si vous voulez merger le snapshot de la vm 102 sur server 1, tapez :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvconvert --merge /dev/main/102-lvmsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conteneur LXC=&lt;br /&gt;
&lt;br /&gt;
==Empêcher la mise à jour automatique de certains fichiers de configuration système du conteneur==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
On peut empêcher la mise à jour de ces fichiers en créant un fichier &amp;lt;code&amp;gt;.pve-ignore.NOM&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, &amp;lt;code&amp;gt;/etc/.pve-ignore.resolv.conf&amp;lt;/code&amp;gt; empêchera le fichier &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; d&#039;être mis à jour à chaque démarrage.&lt;br /&gt;
&lt;br /&gt;
=Annexes=&lt;br /&gt;
&lt;br /&gt;
==Problème de layout dans la console vnc==&lt;br /&gt;
Dans l&#039;interface web de proxmox : datacenter &amp;gt; option &amp;gt; passez Keyboard de &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; à &amp;lt;code&amp;gt;French&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Erreurs du type &amp;lt;code&amp;gt;IPv6 addrconf: prefix with wrong length 56&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64.&lt;br /&gt;
Ajouter les lignes suivantes dans un fichier &amp;lt;code&amp;gt;/etc/sysctl.d/local.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
net.ipv6.conf.all.autoconf = 0&lt;br /&gt;
net.ipv6.conf.default.autoconf = 0&lt;br /&gt;
net.ipv6.conf.eno3.autoconf = 0&lt;br /&gt;
net.ipv6.conf.vmbr0.autoconf = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Terminez par relancer procps :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/procps restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==paramètre sysctl ipv6 non appliqué au boot==&lt;br /&gt;
Ajoutez le module ipv6 dans /etc/modules afin d&#039;assurer le chargement d&#039;ipv6 avant l’exécution de sysctl :&lt;br /&gt;
&amp;lt;pre&amp;gt;echo ipv6 &amp;gt;&amp;gt; /etc/modules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LVM inaccessible depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lvm pvscan&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface web ne fonctionne pas et la commande qm retourne une erreur ipcc_send_rec failed: Connection refused==&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence de fichiers et dossiers dans &amp;lt;code&amp;gt;/etc/pve/&amp;lt;/code&amp;gt;. Si ce dossier est vide, c&#039;est probablement que votre fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; est mal configuré.&amp;lt;br&amp;gt;&lt;br /&gt;
Essayez de relancer &amp;lt;code&amp;gt;pve-cluster&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/pve-cluster restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez une erreur ou un warning, lancez la commande pmxcfs. Vous devriez obtenir ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$# pmxcfs &lt;br /&gt;
Jan 21 15:28:19 proxmox pmxcfs[1846]: Unable to get local IP address (pmxcfs.c:721:main)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez alors que le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est défini dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si par exemple &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; contient &amp;lt;code&amp;gt;proxmox.domain.tld&amp;lt;/code&amp;gt; vous devriez avoir la ligne suivante dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;VOTREIP proxmox.domain.tld proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pas assez d&#039;interfaces loopback==&lt;br /&gt;
&lt;br /&gt;
Créer le fichier &amp;lt;code&amp;gt;/etc/modprobe.d/local-loop.conf&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;options loop max_loop=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite redémarrer ou recharger le module loop :&lt;br /&gt;
&amp;lt;pre&amp;gt; rmmod loop &amp;amp;&amp;amp; modprobe loop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Défragmentation LVM : exemple==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hub:~# pvdisplay --maps&lt;br /&gt;
  --- Physical volume ---&lt;br /&gt;
  PV Name               /dev/sda4&lt;br /&gt;
  VG Name               main&lt;br /&gt;
  PV Size               1.76 TB / not usable 456.00 KB&lt;br /&gt;
  Allocatable           yes &lt;br /&gt;
  PE Size (KByte)       4096&lt;br /&gt;
  Total PE              461649&lt;br /&gt;
  Free PE               208721&lt;br /&gt;
  Allocated PE          252928&lt;br /&gt;
  PV UUID               PUqV5Q-WRW2-n20t-eFVM-CA1r-RhDl-2RTJHq&lt;br /&gt;
   &lt;br /&gt;
  --- Physical Segments ---&lt;br /&gt;
  Physical extent 0 to 7935:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-1&lt;br /&gt;
    Logical extents     0 to 7935&lt;br /&gt;
  Physical extent 7936 to 72191:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 72192 to 136703:&lt;br /&gt;
    Logical volume      /dev/main/vm-102-disk-1&lt;br /&gt;
    Logical extents     0 to 64511&lt;br /&gt;
  Physical extent 136704 to 144895:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-1&lt;br /&gt;
    Logical extents     0 to 8191&lt;br /&gt;
  Physical extent 144896 to 209151:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 209152 to 214271:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-1&lt;br /&gt;
    Logical extents     0 to 5119&lt;br /&gt;
  Physical extent 214272 to 227327:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-2&lt;br /&gt;
    Logical extents     0 to 13055&lt;br /&gt;
  Physical extent 227328 to 282111:&lt;br /&gt;
    FREE&lt;br /&gt;
  Physical extent 282112 to 307711:&lt;br /&gt;
    Logical volume      /dev/main/vm-108-disk-1&lt;br /&gt;
    Logical extents     0 to 25599&lt;br /&gt;
  Physical extent 307712 to 461648:&lt;br /&gt;
    FREE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir, on a un trou &amp;quot;vide&amp;quot; entre l&#039;extent &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; et 282111, puis à nouveau des données entre l&#039;extent &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour combler ce trou, nous allons déplacer les données des  /dev/main/vm-108-disk-1 situés entre les extents &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; (soit 25599 extents au total) vers l&#039;espace libre avec &amp;lt;code&amp;gt;pvmove&amp;lt;/code&amp;gt; :&amp;lt;br&amp;gt;&lt;br /&gt;
pvmove /dev/sda4:&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; /dev/sda4:&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt; --alloc anywhere&lt;br /&gt;
&lt;br /&gt;
Notez qu&#039;il faut attribuer exactement le même nombre d&#039;extents à la destination qu&#039;à l&#039;origine : &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; + 25599 = &amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Oups: j&#039;ai supprimé le mauvais lvm==&lt;br /&gt;
&lt;br /&gt;
Pas de panique, mais ne bougez plus ! Pour l&#039;instant, seul les métadonnées du lvm sont impactés.&lt;br /&gt;
Et comme c&#039;est bien foutu, lvm conserve un backup des anciennes metadonnées après chaque modification. Ces archives sont situés dans &amp;lt;code&amp;gt;/etc/lvm/archive/&amp;lt;/code&amp;gt;. Les fichiers y sont nommés sous la forme vg_XXXX-YYYYYYY.vg. Normalement, le fichier ayant le XXXX le plus élevé sera celui de l&#039;état précédent votre erreur.&lt;br /&gt;
Pour vérifier que vous avez sélectionné le bon fichier, vous pouvez l&#039;ouvrir avec nano et regarder si l&#039;état du lvm dans cette archive correspond a ce que vous attendez.&lt;br /&gt;
&lt;br /&gt;
Pour restaurer l&#039;archive des métadonnées main_00007-587941649.vg pour le vg main :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vgcfgrestore -f /etc/lvm/archive/main_00007-587941649.vg main&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Votre volume devrait être de retour.&lt;br /&gt;
&lt;br /&gt;
Il faut encore vérifier que la table de partition contenu sur ce lvm n&#039;a pas morphlé. En admettant que /dev/main/vm-101-disk-1 est la lvm que vous venez de restaurer :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez ça, c&#039;est bon, vous êtes sauvés ! Si ce n&#039;est pas le cas, continuez à lire ;)&lt;br /&gt;
&lt;br /&gt;
===Récupération de la table de partition===&lt;br /&gt;
&lt;br /&gt;
Si fdisk vous envois chier avec un message du style &amp;lt;code&amp;gt;Disk /dev/loop0 doesn&#039;t contain a valid partition table&amp;lt;/code&amp;gt;, il va falloir récupérer la table de partition.&lt;br /&gt;
&lt;br /&gt;
Installez testdisk :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install testdisk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lancez le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# testdisk /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selectionez le media &amp;lt;code&amp;gt;/dev/loop0&amp;lt;/code&amp;gt; et validez avec &amp;lt;code&amp;gt;enter&amp;lt;/code&amp;gt;.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;intel&amp;lt;/code&amp;gt; comme type de table de partition.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;analyse&amp;lt;/code&amp;gt;&lt;br /&gt;
A l&#039;écran suivant, tapez enter.&lt;br /&gt;
Avec de la chance, testdisk retrouvera vos partitions. Une fois qu&#039;il aura terminé de travailler, il ne restera plus qu&#039;à taper sur enter encore une fois, puis demander à testdisk de sauvegarder la table de partition&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface proxmox n&#039;affiche pas les disques de certaines VMs==&lt;br /&gt;
&lt;br /&gt;
Ceci arrive typiquement si vous avez créé un volume logique à la main sans y ajouter le bon tag.&lt;br /&gt;
Vérifiez la présence des tags sur vos LV avec la commande &amp;lt;code&amp;gt;lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  20.00g &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous le voyez, le lv de la vm 101 n&#039;est pas tagué. Vous pouvez ajouter le tag avec &amp;lt;code&amp;gt;lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  16.00g pve-vm-101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas,  essayez de passer un petit coup de &amp;lt;code&amp;gt;qm rescan&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Accueil&amp;diff=4402</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Accueil&amp;diff=4402"/>
		<updated>2025-10-03T11:26:52Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{|style=&amp;quot;width:100%; background:#F5F5F5;&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
!style=&amp;quot;font-size:200%; color:#056FFA;&amp;quot;|Bienvenu sur ce wiki&lt;br /&gt;
|-&lt;br /&gt;
|Ce wiki est dédié aux différentes distributions linux et aux logiciels libres qui les accompagnent.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width:100%; border:1px solid #FFFFFF; background:#FFFFFF; color:#FFFFFF;&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;font-size:115%; background:#056FFA;&amp;quot;|Rechercher par&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[Special:Categories|Catégories]] &amp;amp;#149; [[:Catégorie:Distributions|Distributions]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Généralités=&lt;br /&gt;
[[Généralités sur linux]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:transparent;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
= Serveur =&lt;br /&gt;
&lt;br /&gt;
; [[:Category:serveur|Liste des pages]]&lt;br /&gt;
: &lt;br /&gt;
; [[Sécuriser_ses_sites_avec_letsencrypt_et_acme-tiny|letsencrypt]]&lt;br /&gt;
; [[:Category:monitoring|Monitoring]]&lt;br /&gt;
: Tutoriels détaillants des outils de supervision et de métrologie&lt;br /&gt;
;[[Proxmox 8]]&lt;br /&gt;
:Tutoriel détaillant l&#039;installation de proxmox 8.x sous debian&lt;br /&gt;
;[[Sécurisation d&#039;un serveur linux]]&lt;br /&gt;
:Guideline basique de propositions de sécurisation d&#039;un serveur linux&lt;br /&gt;
; [[:Category:security|Sécurité]]&lt;br /&gt;
: outils de sécurité&lt;br /&gt;
; [[:Category:virtualisation|virtualisation]]&lt;br /&gt;
: proxmox principalement&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
= Bureautique =&lt;br /&gt;
&lt;br /&gt;
; [[:Category:desktop|Liste des pages]]&lt;br /&gt;
:&lt;br /&gt;
;[[Kubuntu / KDE : login ssh automatique par clé]]&lt;br /&gt;
:&lt;br /&gt;
;[[ssh : le client libre de OpenSSH]]&lt;br /&gt;
:&lt;br /&gt;
;[[Court-circuiter la vérification dns]]&lt;br /&gt;
:&lt;br /&gt;
;[[Graver un iso bootable sur une clé usb]]&lt;br /&gt;
:Vos CDRW ne marchent plus ? Vous n&#039;avez pas de lecteur cd sur votre netbook ? &lt;br /&gt;
:&lt;br /&gt;
;[[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
:&lt;br /&gt;
;[[Fibre orange en DHCP avec routeur pfsense]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
= Développement =&lt;br /&gt;
; [[:Category:développement|Liste des pages]]&lt;br /&gt;
:&lt;br /&gt;
; [[Auto-complétion_avec_Vim|Auto-complétion avec Vim]]&lt;br /&gt;
: Configurer l&#039;auto-complétion C++ dans l&#039;editeur de texte Vim&lt;br /&gt;
;[[Git]]&lt;br /&gt;
:Gestionnaire de version décentralisé&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
= Divers =&lt;br /&gt;
; [[:Category:Tools|Outils]]&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4401</id>
		<title>Proxmox 8</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4401"/>
		<updated>2025-10-03T11:19:58Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Récupération de la table de partition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:virtualisation]]&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment installer proxmox 7.x sur un raid 1 logiciel (md / mdadm) avec debootstrap.&lt;br /&gt;
&lt;br /&gt;
=Prérequis=&lt;br /&gt;
&lt;br /&gt;
Ce tutoriel se base sur l&#039;utilisation de debootstrap pour installer une base de système d&#039;exploitation debian. La plupart des hébergeurs proposent un système de &amp;quot;rescue&amp;quot; permettant l&#039;installation de debian par ce moyen.&lt;br /&gt;
Si vous ne disposez pas de mode rescue, vous pouvez toujours utiliser l&#039;installeur proposé par votre hébergeur, ou encore passer par un kvm pour installer vous même le système avec l&#039;iso de debian.&lt;br /&gt;
&lt;br /&gt;
=Pour les débutants=&lt;br /&gt;
&lt;br /&gt;
Si vous êtes débutant en administration linux, je vous conseil de sauvegarder quelque part les fichier suivant issu d&#039;une précédente installation de debian ou de proxmox&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/networks&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt; si vous disposez d&#039;un raid logiciel&lt;br /&gt;
* tout fichier de personnalisation de grub (&amp;lt;code&amp;gt;/etc/grub.d/&amp;lt;/code&amp;gt; par exemple)&lt;br /&gt;
&lt;br /&gt;
Cela vous permettra de vous faire une idée plus précise de ce qui doit figurer dans ces différents fichiers.&lt;br /&gt;
&lt;br /&gt;
=Partitionnement et système de fichier=&lt;br /&gt;
&lt;br /&gt;
Voici le partitionnement que je vais utiliser :&lt;br /&gt;
* Partition root (/) de 20 Go (/) en raid 1 sur les disques sda et sdb&lt;br /&gt;
* Partitions swap de 4096 Go chacune réparties sur sda et sdb&lt;br /&gt;
* Le reste de l&#039;espace sera utilisé plus tard pour un LVM dédié aux VMs&lt;br /&gt;
&lt;br /&gt;
==Partitionnement==&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitionnement GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions EFI (ESP), obligatoire pour le démarrage EFI/UEFI. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF00&amp;lt;/code&amp;gt;. 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).&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour les partitions EFI, nous créons un système de fichier FAT32 avec le label (nom) &amp;lt;code&amp;gt;EFI_SYSPART&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sda1&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sdb1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitionnement GPT pour BIOS===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions pour le bootloader. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF02&amp;lt;/code&amp;gt;. On peut la créer idéalement du secteur 34 au secteur 2047 du disque.&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notez que la partition du bootloader ne doit pas être formatée.&lt;br /&gt;
&lt;br /&gt;
===Possibilité 3 : partitionnement MBR pour BIOS (non prise en charge dans ce wiki)===&lt;br /&gt;
&lt;br /&gt;
A titre informatif : création avec &amp;lt;code&amp;gt;parted&amp;lt;/code&amp;gt;, sans nécessité de créer une partition dédiée au bootloader/grub.&lt;br /&gt;
&lt;br /&gt;
==Création du RAID==&lt;br /&gt;
&lt;br /&gt;
Pour des raisons esthétiques, définissez l&#039;hostname de votre système de rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;hostname proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour créer votre raid 1 avec 2 disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que si vous souhaitez utiliser plus que 2 disques, il faut augmenter la valeur de &amp;lt;code&amp;gt;--raid-devices&amp;lt;/code&amp;gt; et ajouter les partitions des disques à la suite.&lt;br /&gt;
&lt;br /&gt;
Attendez que le raid soit synchronisé avant de continuer. Vous pouvez surveiller facilement cela avec la commande &amp;lt;code&amp;gt;watch cat /proc/mdstat&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Création des systèmes de fichiers==&lt;br /&gt;
&lt;br /&gt;
Créez un système de fichier ext4 pour le raid du root :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/md2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, initialisez les swaps :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkswap /dev/sda3&lt;br /&gt;
mkswap /dev/sdb3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Installation de proxmox=&lt;br /&gt;
&lt;br /&gt;
==Installation du système de base==&lt;br /&gt;
&lt;br /&gt;
Nous débutons par installer le système de base de Debian avec &amp;lt;code&amp;gt;debootstrap&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les paquets nécessaires dans votre rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install debootstrap debian-keyring debian-archive-keyring&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez votre partition raid root sur &amp;lt;code&amp;gt;/mnt&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/md2 /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez le système de base debian, version bookworm :&lt;br /&gt;
&amp;lt;pre&amp;gt;debootstrap --arch=amd64 bookworm /mnt http://ftp.fr.debian.org/debian&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration de Debian==&lt;br /&gt;
&lt;br /&gt;
Montez les vfs suivants, puis chrootez dans votre nouveau système debian :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount -o bind /proc /mnt/proc&lt;br /&gt;
mount -o bind /dev /mnt/dev&lt;br /&gt;
mount -o bind /dev/pts /mnt/dev/pts&lt;br /&gt;
mount -o bind /sys /mnt/sys&lt;br /&gt;
chroot /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les archives apt : éditez le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main archive&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# security updates&lt;br /&gt;
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# bookworm-updates, previously known as &#039;volatile&#039;&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# backports archive&lt;br /&gt;
deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour les paquets :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les locales et la configuration de console :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install locales &lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
apt install console-data console-setup-linux console-setup wget&lt;br /&gt;
dpkg-reconfigure console-data # from arch &amp;gt; french &amp;gt; latin9)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la zone horaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tzselect&lt;br /&gt;
dpkg-reconfigure tzdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez votre fichier &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Pour GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda1       /boot/efi       vfat    defaults                                  0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour GPT pour BIOS :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez la partition EFI / ESP dans le cas d&#039;un partitionnement GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /boot/efi&lt;br /&gt;
mount /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les interfaces réseaux dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The loopback network interface&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet static&lt;br /&gt;
        address XXXX/24&lt;br /&gt;
        gateway XXXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# local&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
::1             localhost ip6-localhost ip6-loopback&lt;br /&gt;
ff02::1         ip6-allnodes&lt;br /&gt;
ff02::2         ip6-allrouters&lt;br /&gt;
&lt;br /&gt;
# main&lt;br /&gt;
ipdelamachine   proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez les hostnames dans ces fichiers :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Pour celui la : non-fqdn&lt;br /&gt;
echo proxmox &amp;gt; /etc/hostname&lt;br /&gt;
# Pour celui la : fqdn&lt;br /&gt;
echo proxmox.domain.tld &amp;gt; /etc/mailname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION&#039;&#039;&#039; Le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; DOIT être cohérent avec le fichier &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, si le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est &amp;lt;code&amp;gt;proxmox&amp;lt;/code&amp;gt; et que l&#039;ip de votre proxmox est 225.182.54.9 il faudra veiller a avoir les informations suivantes dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1 localhost&lt;br /&gt;
225.182.54.9 proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attention : n&#039;utilisez pas 127.0.1.1 (comme le fait debian) mais bien la vrai ip (ici 225.182.54.9)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
N&#039;oubliez pas de configurer les dns (ceux de votre hébergeur dédié) dans &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;nameserver XX.XX.XX.XX&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez postfix :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install postfix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, comme nous installons notre partition de boot sur un raid software, il faut installer &amp;lt;code&amp;gt;madadm&amp;lt;/code&amp;gt; à ce stade :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install mdadm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez si votre array root s&#039;est bien défini automatiquement dans &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt;. Si ce n&#039;est pas me cas, ajoutez la configuration de l&#039;array manuellement :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - kernel==&lt;br /&gt;
&lt;br /&gt;
Ajoutez le dépot proxmox dans le fichier /etc/apt/source.list :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use&lt;br /&gt;
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajoutez la clé du dépôt proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour le système :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitions GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Vérifiez que &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt; est bien monté. Si ce n&#039;est pas le cas, faites le.&lt;br /&gt;
&lt;br /&gt;
Installez le kernel proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-efi-amd64 gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supprimez les paquets suivant si vous n&#039;avez pas besoin de secureboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed shim-signed-common shim-unsigned&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normalement tout doit se faire avec des promps. Si ce n&#039;était pas le cas :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si jamais vous utilisez un démarrage en PXE (c&#039;est le cas sur un serveur OVH par exemple), utilisez l&#039;argument &amp;lt;code&amp;gt;--no-nvram&amp;lt;/code&amp;gt; pour empêcher grub de mettre à jour la NVRAM et casser votre mécanique de démarrage PXE :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox --no-nvram&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Etant donné que seul &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; est monté sur &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt;, il faut transférer manuellement les données sur &amp;lt;code&amp;gt;/dev/sdb1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/sdb1 /mnt&lt;br /&gt;
rsync -av /boot/efi/ /mnt/&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si pour une raison quelconque, vous aviez besoin des headers du kernel :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install pve-headers-5.15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitions GPT pour BIOS OU Partitions MBR pour BIOS===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-pc gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on vous demandera où installer grub, choisissez &amp;lt;code&amp;gt;sda&amp;lt;/code&amp;gt; ET &amp;lt;code&amp;gt;sdb&amp;lt;/code&amp;gt;. Sinon :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-install /dev/sda&lt;br /&gt;
grub-install /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - OpenSSH==&lt;br /&gt;
&lt;br /&gt;
Installez openssh et définissez un password root. Autorisez le login root par password temporairement.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install openssh-server&lt;br /&gt;
passwd&lt;br /&gt;
sed -i &amp;quot;s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g&amp;quot; /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - Vérifications finales et redémarrage sur le kernel proxmox==&lt;br /&gt;
&lt;br /&gt;
Si vous avez une configuration particulière à entrer dans &amp;lt;code&amp;gt;/etc/default/grub&amp;lt;/code&amp;gt;, faites le maintenant. Par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;nomodeset iommu=pt&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis régénérez la configuration de grub :&lt;br /&gt;
&amp;lt;pre&amp;gt;update-grub&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez vérifier que votre fstab est valide avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;findmnt --verify --verbose&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /boot/efi/&lt;br /&gt;
exit&lt;br /&gt;
umount /mnt/sys&lt;br /&gt;
umount /mnt/dev/pts&lt;br /&gt;
umount /mnt/dev&lt;br /&gt;
umount /mnt/proc&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, redémarrez le serveur sur le disque dur.&lt;br /&gt;
&lt;br /&gt;
==Installation de ifupdown2==&lt;br /&gt;
&lt;br /&gt;
Le paquet &amp;lt;code&amp;gt;ifupdown2&amp;lt;/code&amp;gt; est en voie de devenir le remplaçant officiel de &amp;lt;code&amp;gt;ifupdown&amp;lt;/code&amp;gt; pour proxmox.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ifupdown2&lt;br /&gt;
apt purge ifupdown&lt;br /&gt;
systemctl enable networking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que votre configuration est fonctionnelle : lancez &amp;lt;code&amp;gt;ifquery -a&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrez à nouveau votre serveur&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - pve==&lt;br /&gt;
&lt;br /&gt;
Une fois le redémarrage effectué, vous allez enfin pouvoir installer pve :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install proxmox-ve ksm-control-daemon chrony&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;apt remove os-prober&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editez la configuration réseau &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; afin d&#039;y créer votre bridge :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet manual&lt;br /&gt;
&lt;br /&gt;
auto vmbr0&lt;br /&gt;
iface vmbr0 inet static&lt;br /&gt;
        address xxxxx/24&lt;br /&gt;
        gateway xxxx&lt;br /&gt;
        hwaddress AA:BB:CC:11:22:33&lt;br /&gt;
        bridge_ports eno3&lt;br /&gt;
        bridge_stp off&lt;br /&gt;
        bridge_fd 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la ligne &amp;lt;code&amp;gt;hwaddress&amp;lt;/code&amp;gt; avec l&#039;adresse MAC de l&#039;interface eno3.&lt;br /&gt;
&lt;br /&gt;
Installez votre clé SSH dans &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; puis désactivez le login root par password de OpenSSH dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois tout installé, je vous conseille de reconfigurer grub afin de mettre à jour la configuration interne de debian:&lt;br /&gt;
* Pour EFI : &amp;lt;code&amp;gt;dpkg-reconfigure grub-efi-amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pour BIOS : &amp;lt;code&amp;gt;dpkg-reconfigure grub-pc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrez une dernière fois pour appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
Votre proxmox sera accessible à l&#039;adresse https://ip:8006&lt;br /&gt;
&lt;br /&gt;
==Nettoyage des paquets==&lt;br /&gt;
&lt;br /&gt;
Si vous ne comptez pas utiliser ZFS, vous pouvez supprimer les paquets suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge zfs-zed libnvpair3linux libuutil3linux libzfs4linux libzpool5linux zfsutils-linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration réseau avancée==&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;une IPv6 sur vmbr0===&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;un réseau interne vmbr1===&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment créer un réseau interne avec proxmox, c&#039;est à dire, un réseau qui ne sera attaché à aucune interface réseau physique. L&#039;intérêt est d&#039;offrir un débit bien supérieur pour les communications entre les VMs.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto vmbr1&lt;br /&gt;
iface vmbr1 inet static&lt;br /&gt;
        address  192.168.0.1&lt;br /&gt;
        netmask  255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : vous pouvez faire de même en ipv6 :&lt;br /&gt;
* il faut utiliser le range Unique Local Address (ULA) fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address)&lt;br /&gt;
* pour générer votre ULA : http://pfoo.unscdf.org/ula/gen-ula.html&lt;br /&gt;
&lt;br /&gt;
==Sécurisation de base==&lt;br /&gt;
&lt;br /&gt;
Je vous conseil de commencer à sécuriser votre ssh :&lt;br /&gt;
* désactivez le login root (directive &amp;lt;code&amp;gt;PermitRootLogin no&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;). Pensez néanmoins à créer un utilisateur pour vous connecter en ssh avant de désactiver le login root.&lt;br /&gt;
* utilisez la directive &amp;lt;code&amp;gt;allowusers &amp;lt;user&amp;gt;&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; pour n&#039;autoriser que certains utilisateurs à se connecter en ssh.&lt;br /&gt;
&lt;br /&gt;
Il est aussi préférable d&#039;installer le serveur de temps NTP à la place de systemd-timesyncd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install chrony&lt;br /&gt;
apt purge systemd-timesyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configurer le serveur mail postfix=&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
==Certificats SSL==&lt;br /&gt;
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. Si ce n&#039;est pas le cas, vous pouvez toujours aller lire [http://wiki.unscdf.org/index.php?title=Installation_et_configuration_de_OpenSSL ceci] afin d&#039;apprendre à créer votre autorité ssl.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/ssl/openssl.cnf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[POSTFIX]&lt;br /&gt;
nsComment                       = &amp;quot;SMTP Server Certificate&amp;quot;&lt;br /&gt;
subjectKeyIdentifier            = hash&lt;br /&gt;
authorityKeyIdentifier          = keyid,issuer:always&lt;br /&gt;
issuerAltName                   = issuer:copy&lt;br /&gt;
basicConstraints                = critical,CA:FALSE&lt;br /&gt;
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment&lt;br /&gt;
nsCertType                      = server&lt;br /&gt;
extendedKeyUsage                = serverAuth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis générez la clé et le certificat, et signez le avec votre autorité (int_ca dans mon cas) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req&lt;br /&gt;
openssl ca -config /etc/ssl/openssl.cnf -name int_ca -extensions POSTFIX -in postfix.req -out postfix.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Déplacez les fichiers dans le répertoire &amp;lt;code&amp;gt;/etc/postfix/ssl&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/postfix/ssl&lt;br /&gt;
mv postfix.key /etc/postfix/ssl/&lt;br /&gt;
mv postfix.pem /etc/postfix/ssl/&lt;br /&gt;
chmod 600 /etc/postfix/ssl/*&lt;br /&gt;
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/int_ca/int_ca.pem &amp;gt; /etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut encore modifier &amp;lt;code&amp;gt;/etc/postfix/main.cf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smtpd_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtpd_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
smtpd_use_tls=yes&lt;br /&gt;
smtp_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtp_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&lt;br /&gt;
smtpd_tls_security_level=may&lt;br /&gt;
smtp_tls_security_level=may&lt;br /&gt;
smtpd_tls_loglevel = 1&lt;br /&gt;
smtp_tls_loglevel = 1&lt;br /&gt;
&lt;br /&gt;
#smtp_tls_policy_maps = hash:/etc/postfix/tls_policy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire=&lt;br /&gt;
&lt;br /&gt;
Depuis Proxmox 5.2, il n&#039;est plus recommandé d&#039;adapter manuellement les fichiers contenant les certificats et clés privés de proxmox.&amp;lt;br&amp;gt;&lt;br /&gt;
Cependant, vous pouvez placer directement votre clé privé dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.key&amp;lt;/code&amp;gt; et la chaîne de certification dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.pem&amp;lt;/code&amp;gt;. Vous pouvez également déposer ces fichiers via la webui de proxmox au niveau de chaque serveur.&lt;br /&gt;
&lt;br /&gt;
=Surveiller l&#039;état des disques avec SMART=&lt;br /&gt;
&lt;br /&gt;
Commencez par installer le paquet smartmontools :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install smartmontools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez que vos disques gèrent smart et qu&#039;il est activé :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -i /dev/sda&lt;br /&gt;
smartctl -i /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si smart n&#039;est pas activé, essayez de l&#039;activer comme ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -s on /dev/sda&lt;br /&gt;
smartctl -s on /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez le statut de santé de vos disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -H /dev/sda&lt;br /&gt;
smartctl -H /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
S&#039;il indique &amp;lt;code&amp;gt;PASSED&amp;lt;/code&amp;gt; c&#039;est bon de ce côté. S&#039;il vous indique &amp;lt;code&amp;gt;FAILED&amp;lt;/code&amp;gt;, sauvegardez immédiatement vos données !&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence d&#039;erreurs dans le log smart :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -l error /dev/sda&lt;br /&gt;
smartctl -l error /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez &amp;lt;code&amp;gt;No Errors Logged&amp;lt;/code&amp;gt; ou quelques erreurs, c&#039;est bon. S&#039;il y eu a beaucoup, il faut envisager de changer le disque.&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration de smartd est &amp;lt;code&amp;gt;/etc/smartd.conf&amp;lt;/code&amp;gt;. Commentez la ligne &amp;lt;code&amp;gt;DEVICESCAN&amp;lt;/code&amp;gt; puis ajoutez les lignes suivantes pour surveiller les deux disques durs :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
/dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous activons la surveillance globale (&amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt;), la vérification automatique offline, (&amp;lt;code&amp;gt;-o on&amp;lt;/code&amp;gt;), la sauvegarde automatique des attributs (&amp;lt;code&amp;gt;-S on&amp;lt;/code&amp;gt; et lançons un &amp;lt;code&amp;gt;short self test&amp;lt;/code&amp;gt; tous les jours à 2h du matin, et un &amp;lt;code&amp;gt;long self test&amp;lt;/code&amp;gt; tous les samedi à 3h du matin. Si des erreurs sont détectés, un email est envoyé à vous@domain.tld.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez smartd :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/smartmontools restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;information sur SMART et ses arguments : [[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
&lt;br /&gt;
=Protégez votre proxmox=&lt;br /&gt;
&lt;br /&gt;
==Désactiver le login root sur l&#039;interface proxmox==&lt;br /&gt;
Avant toute manipulation, n&#039;oubliez pas de créer un utilisateur ayant les droits d&#039;administration pour accéder à l&#039;interface de proxmox&lt;br /&gt;
&lt;br /&gt;
===Via l&#039;interface proxmox===&lt;br /&gt;
Dans Datacenter &amp;gt; Permissions &amp;gt; Users : Editez l&#039;utilisateur root et décochez la case &amp;lt;code&amp;gt;Enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Via les droits linux===&lt;br /&gt;
&amp;lt;pre&amp;gt;passwd --lock root&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 !&lt;br /&gt;
&lt;br /&gt;
===Via PAM===&lt;br /&gt;
Vous pouvez désactiver le login pam en éditant &amp;lt;code&amp;gt;/etc/pam.d/other&amp;lt;/code&amp;gt; et en y ajoutant, en début de fichier, les lignes suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth        required    pam_deny.so&lt;br /&gt;
auth        required    pam_warn.so&lt;br /&gt;
account     required    pam_deny.so&lt;br /&gt;
account     required    pam_warn.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attention, cette méthode peut avoir des effets de bord si d&#039;autres programmes utilisent l&#039;entité pam/other&lt;br /&gt;
&lt;br /&gt;
==Désactiver rpcbind==&lt;br /&gt;
&lt;br /&gt;
Si vous n&#039;utilisez pas de montage NFS vous pouvez désactiver rpcbind.&amp;lt;br&amp;gt;&lt;br /&gt;
Editez &amp;lt;code&amp;gt;/etc/default/nfs-common&amp;lt;/code&amp;gt; et passez l&#039;argument suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;NEED_STATD=no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis désactivez rpcbind :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable rpcbind.target&lt;br /&gt;
systemctl disable rpcbind.socket&lt;br /&gt;
systemctl disable rpcbind.service&lt;br /&gt;
systemctl stop rpcbind.target&lt;br /&gt;
systemctl stop rpcbind.socket&lt;br /&gt;
systemctl stop rpcbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eviter les reboots accidentels avec molly-gard==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install molly-guard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Protection SSH avec sshguard==&lt;br /&gt;
&lt;br /&gt;
[[Protéger SSH avec sshguard]]&lt;br /&gt;
&lt;br /&gt;
==Protéger l&#039;interface web avec fail2ban==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install fail2ban&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/jail.local&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
# &amp;quot;ignoreip&amp;quot; can be an IP address, a CIDR mask or a DNS host&lt;br /&gt;
ignoreip = 127.0.0.1&lt;br /&gt;
bantime  = 1800&lt;br /&gt;
maxretry = 3&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Destination email address used solely for the interpolations in&lt;br /&gt;
# jail.{conf,local} configuration files.&lt;br /&gt;
destemail = root@localhost&lt;br /&gt;
&lt;br /&gt;
action = %(action_mwl)s&lt;br /&gt;
&lt;br /&gt;
[ssh]&lt;br /&gt;
enabled = false&lt;br /&gt;
&lt;br /&gt;
[sshd]&lt;br /&gt;
enabled  = false&lt;br /&gt;
&lt;br /&gt;
[proxmox]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = https,http,8006&lt;br /&gt;
filter = proxmox&lt;br /&gt;
backend = systemd&lt;br /&gt;
maxretry = 4&lt;br /&gt;
findtime = 2d&lt;br /&gt;
bantime = 1h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/filter.d/proxmox.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Definition]&lt;br /&gt;
failregex = pvedaemon\[.*authentication failure; rhost=&amp;lt;HOST&amp;gt; user=.* msg=.*&lt;br /&gt;
ignoreregex =&lt;br /&gt;
journalmatch = _SYSTEMD_UNIT=pvedaemon.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez fail2ban :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/fail2ban restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==firewall iptables==&lt;br /&gt;
&lt;br /&gt;
=Création d&#039;un stockage pour les VMs=&lt;br /&gt;
&lt;br /&gt;
Créez les partitions sda4 et sdb4 au moyen de gdisk (EFI) ou parted (BIOS).&lt;br /&gt;
&lt;br /&gt;
Créez sur ces partitions un raid :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create --verbose /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenez à jour &amp;lt;code&amp;gt;mdadm.conf&amp;lt;/code&amp;gt; et votre initramfs afin de conserver le bon naming du raid après reboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
update-initramfs -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis initialisez-y un LVM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvcreate /dev/md4&lt;br /&gt;
vgcreate main /dev/md4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu&#039;a déclarer ce Volume Group LVM dans l&#039;interface proxmox.&lt;br /&gt;
&lt;br /&gt;
=VM qemu/kvm=&lt;br /&gt;
&lt;br /&gt;
==Télécharger vos images==&lt;br /&gt;
&lt;br /&gt;
Vous pouvez placer les iso dans &amp;lt;code&amp;gt;/var/lib/vz/template/iso/&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt; par exemple.&lt;br /&gt;
Notez que l&#039;interface graphique de proxmox propose également une fonction d&#039;upload.&lt;br /&gt;
&lt;br /&gt;
==Créer votre première VM==&lt;br /&gt;
&lt;br /&gt;
Une fois la VM crées dans l&#039;interface proxmox, je vous recommande d&#039;écrire des zero sur son disque afin de réduire la taille des futurs backups. Si votre vm porte le numéro 100 et possède un seul disque :&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/zero | pv -ptrb | dd of=/dev/main/vm-100-disk1 bs=1M&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr0 (ip public)===&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr1 (ip locale)===&lt;br /&gt;
&lt;br /&gt;
Configuration réseau de la VM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.0.2&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
gateway 192.168.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Règle iptables à ajouter sur l&#039;hôte :&lt;br /&gt;
&amp;lt;pre&amp;gt;iptables -t nat -A POSTROUTING -s 192.168.0.2 -o vmbr0 -j SNAT --to IP-PUBLIC-DE-VOTRE-HOTE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez rendre accessible l&#039;un des services de la VM depuis l&#039;ip de l&#039;hote sur un port sépcifique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -t nat -A PREROUTING -p tcp -d &amp;lt;ip de l&#039;hote&amp;gt; --dport &amp;lt;port souhaité&amp;gt; -i vmbr0 -j DNAT --to-destination 192.168.0.2:port&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bloquer le spoofing d&#039;adresse mac==&lt;br /&gt;
Sur l&#039;hyperviseur, installez &amp;lt;code&amp;gt;ebtables&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install ebtables&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Admettons ensuite que votre VM a comme adresse ip &amp;lt;code&amp;gt;84.93.26.3&amp;lt;/code&amp;gt; et que son adresse mac doit être &amp;lt;code&amp;gt;52:54:00:00:98:b6&amp;lt;/code&amp;gt; : &lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv4 --ip-src 84.93.26.3 -s ! 52:54:00:00:98:b6 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez faire de même pour l&#039;ipv6. Dans l&#039;exemple suivant, seul le bloc ipv6 &amp;lt;code&amp;gt;2a01:d4h:123b:100::/56&amp;lt;/code&amp;gt; est utilisable par la vm :&lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv6 --ip6-src 2a01:d4h:123b:100::/56 -s ! 52:54:00:00:08:b1 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Importer une VM depuis vmware ESXi==&lt;br /&gt;
&lt;br /&gt;
==qm et modification des VMs en ligne de commande==&lt;br /&gt;
&lt;br /&gt;
==Monter les partitions d&#039;une VM depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pour la partition 1 : start*blocksize = offset&lt;br /&gt;
donc 2048*512 = 1048576&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;losetup /dev/loop1 -o 1048576 /dev/main/vm-101-disk-1 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et enfin :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount /dev/loop1 /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé vos modifications :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /mnt&lt;br /&gt;
losetup -d /dev/loop1&lt;br /&gt;
losetup -d /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Si la partition que vous voulez monter est un LVM===&lt;br /&gt;
&lt;br /&gt;
Scannez les nouveaux volumes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm pvscan&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activez les groupes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm vgchange -ay&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
listez les lvms avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm lvs&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les LV devraient apparaître dans &amp;lt;code&amp;gt;/dev/mapper/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé :&lt;br /&gt;
* démontez les LV&lt;br /&gt;
* Désactivez le groupe avec &amp;lt;code&amp;gt;vgchange -an&amp;lt;/code&amp;gt;&lt;br /&gt;
* désactivez le loopback : &amp;lt;code&amp;gt;losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Augmenter la taille du disque d&#039;une VM==&lt;br /&gt;
&lt;br /&gt;
Coupez la VM.&lt;br /&gt;
&lt;br /&gt;
Sur l&#039;host pour modifier la taille du disque 1 de la vm 110 ) 140G :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvextend -L 140G /dev/main/vm-110-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut ensuite, sur la vm lancée, utiliser resize2fs&lt;br /&gt;
&lt;br /&gt;
==Migrer une VM vers un autre serveur manuellement (pas de cluster) avec un downtime minimum==&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment migrer une VM proxmox stockée sur un LVM d&#039;un serveur à un autre, et ce, en minimisant au maximum le downtime. Pour cela, nous allons coupler la fonctionnalité de snapshot de lvm avec un petit script (lvmsync) qui permet de ne transférer que les blocs modifiés d&#039;un snapshot.&lt;br /&gt;
&lt;br /&gt;
Installez dmsetup et ruby (1.8 minimum) sur le serveur d&#039;origine et de destination :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install dmsetup ruby&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Récupérez &amp;lt;code&amp;gt;lvmsync&amp;lt;/code&amp;gt; sur https://github.com/mpalmer/lvmsync et placez le dans /sbin/ sur les serveurs d&#039;origine et de destination.&lt;br /&gt;
&lt;br /&gt;
Dans cet exemple, nous allons migrer la vm 102 disposant d&#039;un seul disque virtuel nommé vm-102-disk-1 et stocké dans le vg main du serveur server1.domain.tld vers le serveur server2.domain.tld.&lt;br /&gt;
Pour commencer, créez un snapshot de votre vm sur server1 :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvcreate --snapshot -L200G -n 102-lvmsync main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Désormais, tous les io de cette vm seront stockés dans le snapshot 102-lvmsync.&lt;br /&gt;
&lt;br /&gt;
Sur votre nouveau serveur, créez une VM identique à celle de votre premier serveur (surtout en qui concerne la taille de disque).&lt;br /&gt;
Depuis server1, copiez avec un dd over ssh le disque d&#039;origine de votre vm vers votre nouveau serveur.&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/main/vm-102-disk-1 | pv -ptrb | ssh -o &amp;quot;Compression no&amp;quot; root@server2.domain.tld &amp;quot;dd of=/dev/main/vm-102-disk-1 bs=100M&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : sur un réseauu 100Mbps utilisez plutôt &amp;lt;code&amp;gt;-o &amp;quot;Compressionlevel 1&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois la copie terminée, coupez la vm 102 sur server1, puis lancez lvmsync sur le snapshot (toujours sur server1) :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvmsync /dev/main/102-lvmsync server2.domain.tld:/dev/main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois le travail de lvmsync achevé, il ne nous reste plus qu&#039;a relancer la vm sur server2&lt;br /&gt;
&lt;br /&gt;
A titre d&#039;information, si vous voulez merger le snapshot de la vm 102 sur server 1, tapez :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvconvert --merge /dev/main/102-lvmsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conteneur LXC=&lt;br /&gt;
&lt;br /&gt;
==Empêcher la mise à jour automatique de certains fichiers de configuration système du conteneur==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
On peut empêcher la mise à jour de ces fichiers en créant un fichier &amp;lt;code&amp;gt;.pve-ignore.NOM&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, &amp;lt;code&amp;gt;/etc/.pve-ignore.resolv.conf&amp;lt;/code&amp;gt; empêchera le fichier &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; d&#039;être mis à jour à chaque démarrage.&lt;br /&gt;
&lt;br /&gt;
=Annexes=&lt;br /&gt;
&lt;br /&gt;
==Problème de layout dans la console vnc==&lt;br /&gt;
Dans l&#039;interface web de proxmox : datacenter &amp;gt; option &amp;gt; passez Keyboard de &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; à &amp;lt;code&amp;gt;French&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Erreurs du type &amp;lt;code&amp;gt;IPv6 addrconf: prefix with wrong length 56&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64.&lt;br /&gt;
Ajouter les lignes suivantes dans un fichier &amp;lt;code&amp;gt;/etc/sysctl.d/local.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
net.ipv6.conf.all.autoconf = 0&lt;br /&gt;
net.ipv6.conf.default.autoconf = 0&lt;br /&gt;
net.ipv6.conf.eno3.autoconf = 0&lt;br /&gt;
net.ipv6.conf.vmbr0.autoconf = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Terminez par relancer procps :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/procps restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==paramètre sysctl ipv6 non appliqué au boot==&lt;br /&gt;
Ajoutez le module ipv6 dans /etc/modules afin d&#039;assurer le chargement d&#039;ipv6 avant l’exécution de sysctl :&lt;br /&gt;
&amp;lt;pre&amp;gt;echo ipv6 &amp;gt;&amp;gt; /etc/modules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LVM inaccessible depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lvm pvscan&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface web ne fonctionne pas et la commande qm retourne une erreur ipcc_send_rec failed: Connection refused==&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence de fichiers et dossiers dans &amp;lt;code&amp;gt;/etc/pve/&amp;lt;/code&amp;gt;. Si ce dossier est vide, c&#039;est probablement que votre fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; est mal configuré.&amp;lt;br&amp;gt;&lt;br /&gt;
Essayez de relancer &amp;lt;code&amp;gt;pve-cluster&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/pve-cluster restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez une erreur ou un warning, lancez la commande pmxcfs. Vous devriez obtenir ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$# pmxcfs &lt;br /&gt;
Jan 21 15:28:19 proxmox pmxcfs[1846]: Unable to get local IP address (pmxcfs.c:721:main)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez alors que le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est défini dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si par exemple &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; contient &amp;lt;code&amp;gt;proxmox.domain.tld&amp;lt;/code&amp;gt; vous devriez avoir la ligne suivante dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;VOTREIP proxmox.domain.tld proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pas assez d&#039;interfaces loopback==&lt;br /&gt;
&lt;br /&gt;
Créer le fichier &amp;lt;code&amp;gt;/etc/modprobe.d/local-loop.conf&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;options loop max_loop=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite redémarrer ou recharger le module loop :&lt;br /&gt;
&amp;lt;pre&amp;gt; rmmod loop &amp;amp;&amp;amp; modprobe loop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Défragmentation LVM : exemple==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hub:~# pvdisplay --maps&lt;br /&gt;
  --- Physical volume ---&lt;br /&gt;
  PV Name               /dev/sda4&lt;br /&gt;
  VG Name               main&lt;br /&gt;
  PV Size               1.76 TB / not usable 456.00 KB&lt;br /&gt;
  Allocatable           yes &lt;br /&gt;
  PE Size (KByte)       4096&lt;br /&gt;
  Total PE              461649&lt;br /&gt;
  Free PE               208721&lt;br /&gt;
  Allocated PE          252928&lt;br /&gt;
  PV UUID               PUqV5Q-WRW2-n20t-eFVM-CA1r-RhDl-2RTJHq&lt;br /&gt;
   &lt;br /&gt;
  --- Physical Segments ---&lt;br /&gt;
  Physical extent 0 to 7935:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-1&lt;br /&gt;
    Logical extents     0 to 7935&lt;br /&gt;
  Physical extent 7936 to 72191:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 72192 to 136703:&lt;br /&gt;
    Logical volume      /dev/main/vm-102-disk-1&lt;br /&gt;
    Logical extents     0 to 64511&lt;br /&gt;
  Physical extent 136704 to 144895:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-1&lt;br /&gt;
    Logical extents     0 to 8191&lt;br /&gt;
  Physical extent 144896 to 209151:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 209152 to 214271:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-1&lt;br /&gt;
    Logical extents     0 to 5119&lt;br /&gt;
  Physical extent 214272 to 227327:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-2&lt;br /&gt;
    Logical extents     0 to 13055&lt;br /&gt;
  Physical extent 227328 to 282111:&lt;br /&gt;
    FREE&lt;br /&gt;
  Physical extent 282112 to 307711:&lt;br /&gt;
    Logical volume      /dev/main/vm-108-disk-1&lt;br /&gt;
    Logical extents     0 to 25599&lt;br /&gt;
  Physical extent 307712 to 461648:&lt;br /&gt;
    FREE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir, on a un trou &amp;quot;vide&amp;quot; entre l&#039;extent &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; et 282111, puis à nouveau des données entre l&#039;extent &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour combler ce trou, nous allons déplacer les données des  /dev/main/vm-108-disk-1 situés entre les extents &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; (soit 25599 extents au total) vers l&#039;espace libre avec &amp;lt;code&amp;gt;pvmove&amp;lt;/code&amp;gt; :&amp;lt;br&amp;gt;&lt;br /&gt;
pvmove /dev/sda4:&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; /dev/sda4:&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt; --alloc anywhere&lt;br /&gt;
&lt;br /&gt;
Notez qu&#039;il faut attribuer exactement le même nombre d&#039;extents à la destination qu&#039;à l&#039;origine : &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; + 25599 = &amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Oups: j&#039;ai supprimé le mauvais lvm==&lt;br /&gt;
&lt;br /&gt;
Pas de panique, mais ne bougez plus ! Pour l&#039;instant, seul les métadonnées du lvm sont impactés.&lt;br /&gt;
Et comme c&#039;est bien foutu, lvm conserve un backup des anciennes metadonnées après chaque modification. Ces archives sont situés dans &amp;lt;code&amp;gt;/etc/lvm/archive/&amp;lt;/code&amp;gt;. Les fichiers y sont nommés sous la forme vg_XXXX-YYYYYYY.vg. Normalement, le fichier ayant le XXXX le plus élevé sera celui de l&#039;état précédent votre erreur.&lt;br /&gt;
Pour vérifier que vous avez sélectionné le bon fichier, vous pouvez l&#039;ouvrir avec nano et regarder si l&#039;état du lvm dans cette archive correspond a ce que vous attendez.&lt;br /&gt;
&lt;br /&gt;
Pour restaurer l&#039;archive des métadonnées main_00007-587941649.vg pour le vg main :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vgcfgrestore -f /etc/lvm/archive/main_00007-587941649.vg main&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Votre volume devrait être de retour.&lt;br /&gt;
&lt;br /&gt;
Il faut encore vérifier que la table de partition contenu sur ce lvm n&#039;a pas morphlé. En admettant que /dev/main/vm-101-disk-1 est la lvm que vous venez de restaurer :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez ça, c&#039;est bon, vous êtes sauvés ! Si ce n&#039;est pas le cas, continuez à lire ;)&lt;br /&gt;
&lt;br /&gt;
===Récupération de la table de partition===&lt;br /&gt;
&lt;br /&gt;
Si fdisk vous envois chier avec un message du style &amp;lt;code&amp;gt;Disk /dev/loop0 doesn&#039;t contain a valid partition table&amp;lt;/code&amp;gt;, il va falloir récupérer la table de partition.&lt;br /&gt;
&lt;br /&gt;
Installez testdisk :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install testdisk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lancez le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# testdisk /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selectionez le media &amp;lt;code&amp;gt;/dev/loop0&amp;lt;/code&amp;gt; et validez avec &amp;lt;code&amp;gt;enter&amp;lt;/code&amp;gt;.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;intel&amp;lt;/code&amp;gt; comme type de table de partition.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;analyse&amp;lt;/code&amp;gt;&lt;br /&gt;
A l&#039;écran suivant, tapez enter.&lt;br /&gt;
Avec de la chance, testdisk retrouvera vos partitions. Une fois qu&#039;il aura terminé de travailler, il ne restera plus qu&#039;à taper sur enter encore une fois, puis demander à testdisk de sauvegarder la table de partition&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface proxmox n&#039;affiche pas les disques de certaines VMs==&lt;br /&gt;
&lt;br /&gt;
Ceci arrive typiquement si vous avez créé un volume logique à la main sans y ajouter le bon tag.&lt;br /&gt;
Vérifiez la présence des tags sur vos LV avec la commande &amp;lt;code&amp;gt;lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  20.00g &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous le voyez, le lv de la vm 101 n&#039;est pas tagué. Vous pouvez ajouter le tag avec &amp;lt;code&amp;gt;lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  16.00g pve-vm-101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas,  essayez de passer un petit coup de &amp;lt;code&amp;gt;qm rescan&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4400</id>
		<title>Proxmox 8</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4400"/>
		<updated>2025-10-03T11:19:51Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Migrer une VM vers un autre serveur manuellement (pas de cluster) avec un downtime minimum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:virtualisation]]&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment installer proxmox 7.x sur un raid 1 logiciel (md / mdadm) avec debootstrap.&lt;br /&gt;
&lt;br /&gt;
=Prérequis=&lt;br /&gt;
&lt;br /&gt;
Ce tutoriel se base sur l&#039;utilisation de debootstrap pour installer une base de système d&#039;exploitation debian. La plupart des hébergeurs proposent un système de &amp;quot;rescue&amp;quot; permettant l&#039;installation de debian par ce moyen.&lt;br /&gt;
Si vous ne disposez pas de mode rescue, vous pouvez toujours utiliser l&#039;installeur proposé par votre hébergeur, ou encore passer par un kvm pour installer vous même le système avec l&#039;iso de debian.&lt;br /&gt;
&lt;br /&gt;
=Pour les débutants=&lt;br /&gt;
&lt;br /&gt;
Si vous êtes débutant en administration linux, je vous conseil de sauvegarder quelque part les fichier suivant issu d&#039;une précédente installation de debian ou de proxmox&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/networks&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt; si vous disposez d&#039;un raid logiciel&lt;br /&gt;
* tout fichier de personnalisation de grub (&amp;lt;code&amp;gt;/etc/grub.d/&amp;lt;/code&amp;gt; par exemple)&lt;br /&gt;
&lt;br /&gt;
Cela vous permettra de vous faire une idée plus précise de ce qui doit figurer dans ces différents fichiers.&lt;br /&gt;
&lt;br /&gt;
=Partitionnement et système de fichier=&lt;br /&gt;
&lt;br /&gt;
Voici le partitionnement que je vais utiliser :&lt;br /&gt;
* Partition root (/) de 20 Go (/) en raid 1 sur les disques sda et sdb&lt;br /&gt;
* Partitions swap de 4096 Go chacune réparties sur sda et sdb&lt;br /&gt;
* Le reste de l&#039;espace sera utilisé plus tard pour un LVM dédié aux VMs&lt;br /&gt;
&lt;br /&gt;
==Partitionnement==&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitionnement GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions EFI (ESP), obligatoire pour le démarrage EFI/UEFI. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF00&amp;lt;/code&amp;gt;. 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).&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour les partitions EFI, nous créons un système de fichier FAT32 avec le label (nom) &amp;lt;code&amp;gt;EFI_SYSPART&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sda1&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sdb1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitionnement GPT pour BIOS===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions pour le bootloader. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF02&amp;lt;/code&amp;gt;. On peut la créer idéalement du secteur 34 au secteur 2047 du disque.&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notez que la partition du bootloader ne doit pas être formatée.&lt;br /&gt;
&lt;br /&gt;
===Possibilité 3 : partitionnement MBR pour BIOS (non prise en charge dans ce wiki)===&lt;br /&gt;
&lt;br /&gt;
A titre informatif : création avec &amp;lt;code&amp;gt;parted&amp;lt;/code&amp;gt;, sans nécessité de créer une partition dédiée au bootloader/grub.&lt;br /&gt;
&lt;br /&gt;
==Création du RAID==&lt;br /&gt;
&lt;br /&gt;
Pour des raisons esthétiques, définissez l&#039;hostname de votre système de rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;hostname proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour créer votre raid 1 avec 2 disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que si vous souhaitez utiliser plus que 2 disques, il faut augmenter la valeur de &amp;lt;code&amp;gt;--raid-devices&amp;lt;/code&amp;gt; et ajouter les partitions des disques à la suite.&lt;br /&gt;
&lt;br /&gt;
Attendez que le raid soit synchronisé avant de continuer. Vous pouvez surveiller facilement cela avec la commande &amp;lt;code&amp;gt;watch cat /proc/mdstat&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Création des systèmes de fichiers==&lt;br /&gt;
&lt;br /&gt;
Créez un système de fichier ext4 pour le raid du root :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/md2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, initialisez les swaps :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkswap /dev/sda3&lt;br /&gt;
mkswap /dev/sdb3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Installation de proxmox=&lt;br /&gt;
&lt;br /&gt;
==Installation du système de base==&lt;br /&gt;
&lt;br /&gt;
Nous débutons par installer le système de base de Debian avec &amp;lt;code&amp;gt;debootstrap&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les paquets nécessaires dans votre rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install debootstrap debian-keyring debian-archive-keyring&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez votre partition raid root sur &amp;lt;code&amp;gt;/mnt&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/md2 /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez le système de base debian, version bookworm :&lt;br /&gt;
&amp;lt;pre&amp;gt;debootstrap --arch=amd64 bookworm /mnt http://ftp.fr.debian.org/debian&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration de Debian==&lt;br /&gt;
&lt;br /&gt;
Montez les vfs suivants, puis chrootez dans votre nouveau système debian :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount -o bind /proc /mnt/proc&lt;br /&gt;
mount -o bind /dev /mnt/dev&lt;br /&gt;
mount -o bind /dev/pts /mnt/dev/pts&lt;br /&gt;
mount -o bind /sys /mnt/sys&lt;br /&gt;
chroot /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les archives apt : éditez le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main archive&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# security updates&lt;br /&gt;
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# bookworm-updates, previously known as &#039;volatile&#039;&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# backports archive&lt;br /&gt;
deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour les paquets :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les locales et la configuration de console :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install locales &lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
apt install console-data console-setup-linux console-setup wget&lt;br /&gt;
dpkg-reconfigure console-data # from arch &amp;gt; french &amp;gt; latin9)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la zone horaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tzselect&lt;br /&gt;
dpkg-reconfigure tzdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez votre fichier &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Pour GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda1       /boot/efi       vfat    defaults                                  0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour GPT pour BIOS :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez la partition EFI / ESP dans le cas d&#039;un partitionnement GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /boot/efi&lt;br /&gt;
mount /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les interfaces réseaux dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The loopback network interface&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet static&lt;br /&gt;
        address XXXX/24&lt;br /&gt;
        gateway XXXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# local&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
::1             localhost ip6-localhost ip6-loopback&lt;br /&gt;
ff02::1         ip6-allnodes&lt;br /&gt;
ff02::2         ip6-allrouters&lt;br /&gt;
&lt;br /&gt;
# main&lt;br /&gt;
ipdelamachine   proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez les hostnames dans ces fichiers :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Pour celui la : non-fqdn&lt;br /&gt;
echo proxmox &amp;gt; /etc/hostname&lt;br /&gt;
# Pour celui la : fqdn&lt;br /&gt;
echo proxmox.domain.tld &amp;gt; /etc/mailname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION&#039;&#039;&#039; Le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; DOIT être cohérent avec le fichier &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, si le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est &amp;lt;code&amp;gt;proxmox&amp;lt;/code&amp;gt; et que l&#039;ip de votre proxmox est 225.182.54.9 il faudra veiller a avoir les informations suivantes dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1 localhost&lt;br /&gt;
225.182.54.9 proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attention : n&#039;utilisez pas 127.0.1.1 (comme le fait debian) mais bien la vrai ip (ici 225.182.54.9)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
N&#039;oubliez pas de configurer les dns (ceux de votre hébergeur dédié) dans &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;nameserver XX.XX.XX.XX&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez postfix :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install postfix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, comme nous installons notre partition de boot sur un raid software, il faut installer &amp;lt;code&amp;gt;madadm&amp;lt;/code&amp;gt; à ce stade :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install mdadm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez si votre array root s&#039;est bien défini automatiquement dans &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt;. Si ce n&#039;est pas me cas, ajoutez la configuration de l&#039;array manuellement :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - kernel==&lt;br /&gt;
&lt;br /&gt;
Ajoutez le dépot proxmox dans le fichier /etc/apt/source.list :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use&lt;br /&gt;
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajoutez la clé du dépôt proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour le système :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitions GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Vérifiez que &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt; est bien monté. Si ce n&#039;est pas le cas, faites le.&lt;br /&gt;
&lt;br /&gt;
Installez le kernel proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-efi-amd64 gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supprimez les paquets suivant si vous n&#039;avez pas besoin de secureboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed shim-signed-common shim-unsigned&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normalement tout doit se faire avec des promps. Si ce n&#039;était pas le cas :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si jamais vous utilisez un démarrage en PXE (c&#039;est le cas sur un serveur OVH par exemple), utilisez l&#039;argument &amp;lt;code&amp;gt;--no-nvram&amp;lt;/code&amp;gt; pour empêcher grub de mettre à jour la NVRAM et casser votre mécanique de démarrage PXE :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox --no-nvram&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Etant donné que seul &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; est monté sur &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt;, il faut transférer manuellement les données sur &amp;lt;code&amp;gt;/dev/sdb1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/sdb1 /mnt&lt;br /&gt;
rsync -av /boot/efi/ /mnt/&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si pour une raison quelconque, vous aviez besoin des headers du kernel :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install pve-headers-5.15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitions GPT pour BIOS OU Partitions MBR pour BIOS===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-pc gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on vous demandera où installer grub, choisissez &amp;lt;code&amp;gt;sda&amp;lt;/code&amp;gt; ET &amp;lt;code&amp;gt;sdb&amp;lt;/code&amp;gt;. Sinon :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-install /dev/sda&lt;br /&gt;
grub-install /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - OpenSSH==&lt;br /&gt;
&lt;br /&gt;
Installez openssh et définissez un password root. Autorisez le login root par password temporairement.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install openssh-server&lt;br /&gt;
passwd&lt;br /&gt;
sed -i &amp;quot;s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g&amp;quot; /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - Vérifications finales et redémarrage sur le kernel proxmox==&lt;br /&gt;
&lt;br /&gt;
Si vous avez une configuration particulière à entrer dans &amp;lt;code&amp;gt;/etc/default/grub&amp;lt;/code&amp;gt;, faites le maintenant. Par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;nomodeset iommu=pt&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis régénérez la configuration de grub :&lt;br /&gt;
&amp;lt;pre&amp;gt;update-grub&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez vérifier que votre fstab est valide avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;findmnt --verify --verbose&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /boot/efi/&lt;br /&gt;
exit&lt;br /&gt;
umount /mnt/sys&lt;br /&gt;
umount /mnt/dev/pts&lt;br /&gt;
umount /mnt/dev&lt;br /&gt;
umount /mnt/proc&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, redémarrez le serveur sur le disque dur.&lt;br /&gt;
&lt;br /&gt;
==Installation de ifupdown2==&lt;br /&gt;
&lt;br /&gt;
Le paquet &amp;lt;code&amp;gt;ifupdown2&amp;lt;/code&amp;gt; est en voie de devenir le remplaçant officiel de &amp;lt;code&amp;gt;ifupdown&amp;lt;/code&amp;gt; pour proxmox.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ifupdown2&lt;br /&gt;
apt purge ifupdown&lt;br /&gt;
systemctl enable networking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que votre configuration est fonctionnelle : lancez &amp;lt;code&amp;gt;ifquery -a&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrez à nouveau votre serveur&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - pve==&lt;br /&gt;
&lt;br /&gt;
Une fois le redémarrage effectué, vous allez enfin pouvoir installer pve :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install proxmox-ve ksm-control-daemon chrony&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;apt remove os-prober&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editez la configuration réseau &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; afin d&#039;y créer votre bridge :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet manual&lt;br /&gt;
&lt;br /&gt;
auto vmbr0&lt;br /&gt;
iface vmbr0 inet static&lt;br /&gt;
        address xxxxx/24&lt;br /&gt;
        gateway xxxx&lt;br /&gt;
        hwaddress AA:BB:CC:11:22:33&lt;br /&gt;
        bridge_ports eno3&lt;br /&gt;
        bridge_stp off&lt;br /&gt;
        bridge_fd 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la ligne &amp;lt;code&amp;gt;hwaddress&amp;lt;/code&amp;gt; avec l&#039;adresse MAC de l&#039;interface eno3.&lt;br /&gt;
&lt;br /&gt;
Installez votre clé SSH dans &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; puis désactivez le login root par password de OpenSSH dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois tout installé, je vous conseille de reconfigurer grub afin de mettre à jour la configuration interne de debian:&lt;br /&gt;
* Pour EFI : &amp;lt;code&amp;gt;dpkg-reconfigure grub-efi-amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pour BIOS : &amp;lt;code&amp;gt;dpkg-reconfigure grub-pc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrez une dernière fois pour appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
Votre proxmox sera accessible à l&#039;adresse https://ip:8006&lt;br /&gt;
&lt;br /&gt;
==Nettoyage des paquets==&lt;br /&gt;
&lt;br /&gt;
Si vous ne comptez pas utiliser ZFS, vous pouvez supprimer les paquets suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge zfs-zed libnvpair3linux libuutil3linux libzfs4linux libzpool5linux zfsutils-linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration réseau avancée==&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;une IPv6 sur vmbr0===&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;un réseau interne vmbr1===&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment créer un réseau interne avec proxmox, c&#039;est à dire, un réseau qui ne sera attaché à aucune interface réseau physique. L&#039;intérêt est d&#039;offrir un débit bien supérieur pour les communications entre les VMs.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto vmbr1&lt;br /&gt;
iface vmbr1 inet static&lt;br /&gt;
        address  192.168.0.1&lt;br /&gt;
        netmask  255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : vous pouvez faire de même en ipv6 :&lt;br /&gt;
* il faut utiliser le range Unique Local Address (ULA) fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address)&lt;br /&gt;
* pour générer votre ULA : http://pfoo.unscdf.org/ula/gen-ula.html&lt;br /&gt;
&lt;br /&gt;
==Sécurisation de base==&lt;br /&gt;
&lt;br /&gt;
Je vous conseil de commencer à sécuriser votre ssh :&lt;br /&gt;
* désactivez le login root (directive &amp;lt;code&amp;gt;PermitRootLogin no&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;). Pensez néanmoins à créer un utilisateur pour vous connecter en ssh avant de désactiver le login root.&lt;br /&gt;
* utilisez la directive &amp;lt;code&amp;gt;allowusers &amp;lt;user&amp;gt;&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; pour n&#039;autoriser que certains utilisateurs à se connecter en ssh.&lt;br /&gt;
&lt;br /&gt;
Il est aussi préférable d&#039;installer le serveur de temps NTP à la place de systemd-timesyncd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install chrony&lt;br /&gt;
apt purge systemd-timesyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configurer le serveur mail postfix=&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
==Certificats SSL==&lt;br /&gt;
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. Si ce n&#039;est pas le cas, vous pouvez toujours aller lire [http://wiki.unscdf.org/index.php?title=Installation_et_configuration_de_OpenSSL ceci] afin d&#039;apprendre à créer votre autorité ssl.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/ssl/openssl.cnf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[POSTFIX]&lt;br /&gt;
nsComment                       = &amp;quot;SMTP Server Certificate&amp;quot;&lt;br /&gt;
subjectKeyIdentifier            = hash&lt;br /&gt;
authorityKeyIdentifier          = keyid,issuer:always&lt;br /&gt;
issuerAltName                   = issuer:copy&lt;br /&gt;
basicConstraints                = critical,CA:FALSE&lt;br /&gt;
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment&lt;br /&gt;
nsCertType                      = server&lt;br /&gt;
extendedKeyUsage                = serverAuth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis générez la clé et le certificat, et signez le avec votre autorité (int_ca dans mon cas) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req&lt;br /&gt;
openssl ca -config /etc/ssl/openssl.cnf -name int_ca -extensions POSTFIX -in postfix.req -out postfix.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Déplacez les fichiers dans le répertoire &amp;lt;code&amp;gt;/etc/postfix/ssl&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/postfix/ssl&lt;br /&gt;
mv postfix.key /etc/postfix/ssl/&lt;br /&gt;
mv postfix.pem /etc/postfix/ssl/&lt;br /&gt;
chmod 600 /etc/postfix/ssl/*&lt;br /&gt;
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/int_ca/int_ca.pem &amp;gt; /etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut encore modifier &amp;lt;code&amp;gt;/etc/postfix/main.cf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smtpd_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtpd_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
smtpd_use_tls=yes&lt;br /&gt;
smtp_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtp_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&lt;br /&gt;
smtpd_tls_security_level=may&lt;br /&gt;
smtp_tls_security_level=may&lt;br /&gt;
smtpd_tls_loglevel = 1&lt;br /&gt;
smtp_tls_loglevel = 1&lt;br /&gt;
&lt;br /&gt;
#smtp_tls_policy_maps = hash:/etc/postfix/tls_policy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire=&lt;br /&gt;
&lt;br /&gt;
Depuis Proxmox 5.2, il n&#039;est plus recommandé d&#039;adapter manuellement les fichiers contenant les certificats et clés privés de proxmox.&amp;lt;br&amp;gt;&lt;br /&gt;
Cependant, vous pouvez placer directement votre clé privé dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.key&amp;lt;/code&amp;gt; et la chaîne de certification dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.pem&amp;lt;/code&amp;gt;. Vous pouvez également déposer ces fichiers via la webui de proxmox au niveau de chaque serveur.&lt;br /&gt;
&lt;br /&gt;
=Surveiller l&#039;état des disques avec SMART=&lt;br /&gt;
&lt;br /&gt;
Commencez par installer le paquet smartmontools :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install smartmontools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez que vos disques gèrent smart et qu&#039;il est activé :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -i /dev/sda&lt;br /&gt;
smartctl -i /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si smart n&#039;est pas activé, essayez de l&#039;activer comme ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -s on /dev/sda&lt;br /&gt;
smartctl -s on /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez le statut de santé de vos disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -H /dev/sda&lt;br /&gt;
smartctl -H /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
S&#039;il indique &amp;lt;code&amp;gt;PASSED&amp;lt;/code&amp;gt; c&#039;est bon de ce côté. S&#039;il vous indique &amp;lt;code&amp;gt;FAILED&amp;lt;/code&amp;gt;, sauvegardez immédiatement vos données !&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence d&#039;erreurs dans le log smart :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -l error /dev/sda&lt;br /&gt;
smartctl -l error /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez &amp;lt;code&amp;gt;No Errors Logged&amp;lt;/code&amp;gt; ou quelques erreurs, c&#039;est bon. S&#039;il y eu a beaucoup, il faut envisager de changer le disque.&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration de smartd est &amp;lt;code&amp;gt;/etc/smartd.conf&amp;lt;/code&amp;gt;. Commentez la ligne &amp;lt;code&amp;gt;DEVICESCAN&amp;lt;/code&amp;gt; puis ajoutez les lignes suivantes pour surveiller les deux disques durs :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
/dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous activons la surveillance globale (&amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt;), la vérification automatique offline, (&amp;lt;code&amp;gt;-o on&amp;lt;/code&amp;gt;), la sauvegarde automatique des attributs (&amp;lt;code&amp;gt;-S on&amp;lt;/code&amp;gt; et lançons un &amp;lt;code&amp;gt;short self test&amp;lt;/code&amp;gt; tous les jours à 2h du matin, et un &amp;lt;code&amp;gt;long self test&amp;lt;/code&amp;gt; tous les samedi à 3h du matin. Si des erreurs sont détectés, un email est envoyé à vous@domain.tld.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez smartd :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/smartmontools restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;information sur SMART et ses arguments : [[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
&lt;br /&gt;
=Protégez votre proxmox=&lt;br /&gt;
&lt;br /&gt;
==Désactiver le login root sur l&#039;interface proxmox==&lt;br /&gt;
Avant toute manipulation, n&#039;oubliez pas de créer un utilisateur ayant les droits d&#039;administration pour accéder à l&#039;interface de proxmox&lt;br /&gt;
&lt;br /&gt;
===Via l&#039;interface proxmox===&lt;br /&gt;
Dans Datacenter &amp;gt; Permissions &amp;gt; Users : Editez l&#039;utilisateur root et décochez la case &amp;lt;code&amp;gt;Enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Via les droits linux===&lt;br /&gt;
&amp;lt;pre&amp;gt;passwd --lock root&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 !&lt;br /&gt;
&lt;br /&gt;
===Via PAM===&lt;br /&gt;
Vous pouvez désactiver le login pam en éditant &amp;lt;code&amp;gt;/etc/pam.d/other&amp;lt;/code&amp;gt; et en y ajoutant, en début de fichier, les lignes suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth        required    pam_deny.so&lt;br /&gt;
auth        required    pam_warn.so&lt;br /&gt;
account     required    pam_deny.so&lt;br /&gt;
account     required    pam_warn.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attention, cette méthode peut avoir des effets de bord si d&#039;autres programmes utilisent l&#039;entité pam/other&lt;br /&gt;
&lt;br /&gt;
==Désactiver rpcbind==&lt;br /&gt;
&lt;br /&gt;
Si vous n&#039;utilisez pas de montage NFS vous pouvez désactiver rpcbind.&amp;lt;br&amp;gt;&lt;br /&gt;
Editez &amp;lt;code&amp;gt;/etc/default/nfs-common&amp;lt;/code&amp;gt; et passez l&#039;argument suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;NEED_STATD=no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis désactivez rpcbind :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable rpcbind.target&lt;br /&gt;
systemctl disable rpcbind.socket&lt;br /&gt;
systemctl disable rpcbind.service&lt;br /&gt;
systemctl stop rpcbind.target&lt;br /&gt;
systemctl stop rpcbind.socket&lt;br /&gt;
systemctl stop rpcbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eviter les reboots accidentels avec molly-gard==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install molly-guard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Protection SSH avec sshguard==&lt;br /&gt;
&lt;br /&gt;
[[Protéger SSH avec sshguard]]&lt;br /&gt;
&lt;br /&gt;
==Protéger l&#039;interface web avec fail2ban==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install fail2ban&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/jail.local&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
# &amp;quot;ignoreip&amp;quot; can be an IP address, a CIDR mask or a DNS host&lt;br /&gt;
ignoreip = 127.0.0.1&lt;br /&gt;
bantime  = 1800&lt;br /&gt;
maxretry = 3&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Destination email address used solely for the interpolations in&lt;br /&gt;
# jail.{conf,local} configuration files.&lt;br /&gt;
destemail = root@localhost&lt;br /&gt;
&lt;br /&gt;
action = %(action_mwl)s&lt;br /&gt;
&lt;br /&gt;
[ssh]&lt;br /&gt;
enabled = false&lt;br /&gt;
&lt;br /&gt;
[sshd]&lt;br /&gt;
enabled  = false&lt;br /&gt;
&lt;br /&gt;
[proxmox]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = https,http,8006&lt;br /&gt;
filter = proxmox&lt;br /&gt;
backend = systemd&lt;br /&gt;
maxretry = 4&lt;br /&gt;
findtime = 2d&lt;br /&gt;
bantime = 1h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/filter.d/proxmox.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Definition]&lt;br /&gt;
failregex = pvedaemon\[.*authentication failure; rhost=&amp;lt;HOST&amp;gt; user=.* msg=.*&lt;br /&gt;
ignoreregex =&lt;br /&gt;
journalmatch = _SYSTEMD_UNIT=pvedaemon.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez fail2ban :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/fail2ban restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==firewall iptables==&lt;br /&gt;
&lt;br /&gt;
=Création d&#039;un stockage pour les VMs=&lt;br /&gt;
&lt;br /&gt;
Créez les partitions sda4 et sdb4 au moyen de gdisk (EFI) ou parted (BIOS).&lt;br /&gt;
&lt;br /&gt;
Créez sur ces partitions un raid :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create --verbose /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenez à jour &amp;lt;code&amp;gt;mdadm.conf&amp;lt;/code&amp;gt; et votre initramfs afin de conserver le bon naming du raid après reboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
update-initramfs -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis initialisez-y un LVM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvcreate /dev/md4&lt;br /&gt;
vgcreate main /dev/md4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu&#039;a déclarer ce Volume Group LVM dans l&#039;interface proxmox.&lt;br /&gt;
&lt;br /&gt;
=VM qemu/kvm=&lt;br /&gt;
&lt;br /&gt;
==Télécharger vos images==&lt;br /&gt;
&lt;br /&gt;
Vous pouvez placer les iso dans &amp;lt;code&amp;gt;/var/lib/vz/template/iso/&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt; par exemple.&lt;br /&gt;
Notez que l&#039;interface graphique de proxmox propose également une fonction d&#039;upload.&lt;br /&gt;
&lt;br /&gt;
==Créer votre première VM==&lt;br /&gt;
&lt;br /&gt;
Une fois la VM crées dans l&#039;interface proxmox, je vous recommande d&#039;écrire des zero sur son disque afin de réduire la taille des futurs backups. Si votre vm porte le numéro 100 et possède un seul disque :&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/zero | pv -ptrb | dd of=/dev/main/vm-100-disk1 bs=1M&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr0 (ip public)===&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr1 (ip locale)===&lt;br /&gt;
&lt;br /&gt;
Configuration réseau de la VM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.0.2&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
gateway 192.168.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Règle iptables à ajouter sur l&#039;hôte :&lt;br /&gt;
&amp;lt;pre&amp;gt;iptables -t nat -A POSTROUTING -s 192.168.0.2 -o vmbr0 -j SNAT --to IP-PUBLIC-DE-VOTRE-HOTE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez rendre accessible l&#039;un des services de la VM depuis l&#039;ip de l&#039;hote sur un port sépcifique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -t nat -A PREROUTING -p tcp -d &amp;lt;ip de l&#039;hote&amp;gt; --dport &amp;lt;port souhaité&amp;gt; -i vmbr0 -j DNAT --to-destination 192.168.0.2:port&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bloquer le spoofing d&#039;adresse mac==&lt;br /&gt;
Sur l&#039;hyperviseur, installez &amp;lt;code&amp;gt;ebtables&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install ebtables&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Admettons ensuite que votre VM a comme adresse ip &amp;lt;code&amp;gt;84.93.26.3&amp;lt;/code&amp;gt; et que son adresse mac doit être &amp;lt;code&amp;gt;52:54:00:00:98:b6&amp;lt;/code&amp;gt; : &lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv4 --ip-src 84.93.26.3 -s ! 52:54:00:00:98:b6 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez faire de même pour l&#039;ipv6. Dans l&#039;exemple suivant, seul le bloc ipv6 &amp;lt;code&amp;gt;2a01:d4h:123b:100::/56&amp;lt;/code&amp;gt; est utilisable par la vm :&lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv6 --ip6-src 2a01:d4h:123b:100::/56 -s ! 52:54:00:00:08:b1 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Importer une VM depuis vmware ESXi==&lt;br /&gt;
&lt;br /&gt;
==qm et modification des VMs en ligne de commande==&lt;br /&gt;
&lt;br /&gt;
==Monter les partitions d&#039;une VM depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pour la partition 1 : start*blocksize = offset&lt;br /&gt;
donc 2048*512 = 1048576&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;losetup /dev/loop1 -o 1048576 /dev/main/vm-101-disk-1 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et enfin :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount /dev/loop1 /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé vos modifications :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /mnt&lt;br /&gt;
losetup -d /dev/loop1&lt;br /&gt;
losetup -d /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Si la partition que vous voulez monter est un LVM===&lt;br /&gt;
&lt;br /&gt;
Scannez les nouveaux volumes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm pvscan&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activez les groupes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm vgchange -ay&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
listez les lvms avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm lvs&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les LV devraient apparaître dans &amp;lt;code&amp;gt;/dev/mapper/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé :&lt;br /&gt;
* démontez les LV&lt;br /&gt;
* Désactivez le groupe avec &amp;lt;code&amp;gt;vgchange -an&amp;lt;/code&amp;gt;&lt;br /&gt;
* désactivez le loopback : &amp;lt;code&amp;gt;losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Augmenter la taille du disque d&#039;une VM==&lt;br /&gt;
&lt;br /&gt;
Coupez la VM.&lt;br /&gt;
&lt;br /&gt;
Sur l&#039;host pour modifier la taille du disque 1 de la vm 110 ) 140G :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvextend -L 140G /dev/main/vm-110-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut ensuite, sur la vm lancée, utiliser resize2fs&lt;br /&gt;
&lt;br /&gt;
==Migrer une VM vers un autre serveur manuellement (pas de cluster) avec un downtime minimum==&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment migrer une VM proxmox stockée sur un LVM d&#039;un serveur à un autre, et ce, en minimisant au maximum le downtime. Pour cela, nous allons coupler la fonctionnalité de snapshot de lvm avec un petit script (lvmsync) qui permet de ne transférer que les blocs modifiés d&#039;un snapshot.&lt;br /&gt;
&lt;br /&gt;
Installez dmsetup et ruby (1.8 minimum) sur le serveur d&#039;origine et de destination :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install dmsetup ruby&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Récupérez &amp;lt;code&amp;gt;lvmsync&amp;lt;/code&amp;gt; sur https://github.com/mpalmer/lvmsync et placez le dans /sbin/ sur les serveurs d&#039;origine et de destination.&lt;br /&gt;
&lt;br /&gt;
Dans cet exemple, nous allons migrer la vm 102 disposant d&#039;un seul disque virtuel nommé vm-102-disk-1 et stocké dans le vg main du serveur server1.domain.tld vers le serveur server2.domain.tld.&lt;br /&gt;
Pour commencer, créez un snapshot de votre vm sur server1 :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvcreate --snapshot -L200G -n 102-lvmsync main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Désormais, tous les io de cette vm seront stockés dans le snapshot 102-lvmsync.&lt;br /&gt;
&lt;br /&gt;
Sur votre nouveau serveur, créez une VM identique à celle de votre premier serveur (surtout en qui concerne la taille de disque).&lt;br /&gt;
Depuis server1, copiez avec un dd over ssh le disque d&#039;origine de votre vm vers votre nouveau serveur.&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/main/vm-102-disk-1 | pv -ptrb | ssh -o &amp;quot;Compression no&amp;quot; root@server2.domain.tld &amp;quot;dd of=/dev/main/vm-102-disk-1 bs=100M&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : sur un réseauu 100Mbps utilisez plutôt &amp;lt;code&amp;gt;-o &amp;quot;Compressionlevel 1&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois la copie terminée, coupez la vm 102 sur server1, puis lancez lvmsync sur le snapshot (toujours sur server1) :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvmsync /dev/main/102-lvmsync server2.domain.tld:/dev/main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois le travail de lvmsync achevé, il ne nous reste plus qu&#039;a relancer la vm sur server2&lt;br /&gt;
&lt;br /&gt;
A titre d&#039;information, si vous voulez merger le snapshot de la vm 102 sur server 1, tapez :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvconvert --merge /dev/main/102-lvmsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conteneur LXC=&lt;br /&gt;
&lt;br /&gt;
==Empêcher la mise à jour automatique de certains fichiers de configuration système du conteneur==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
On peut empêcher la mise à jour de ces fichiers en créant un fichier &amp;lt;code&amp;gt;.pve-ignore.NOM&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, &amp;lt;code&amp;gt;/etc/.pve-ignore.resolv.conf&amp;lt;/code&amp;gt; empêchera le fichier &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; d&#039;être mis à jour à chaque démarrage.&lt;br /&gt;
&lt;br /&gt;
=Annexes=&lt;br /&gt;
&lt;br /&gt;
==Problème de layout dans la console vnc==&lt;br /&gt;
Dans l&#039;interface web de proxmox : datacenter &amp;gt; option &amp;gt; passez Keyboard de &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; à &amp;lt;code&amp;gt;French&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Erreurs du type &amp;lt;code&amp;gt;IPv6 addrconf: prefix with wrong length 56&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64.&lt;br /&gt;
Ajouter les lignes suivantes dans un fichier &amp;lt;code&amp;gt;/etc/sysctl.d/local.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
net.ipv6.conf.all.autoconf = 0&lt;br /&gt;
net.ipv6.conf.default.autoconf = 0&lt;br /&gt;
net.ipv6.conf.eno3.autoconf = 0&lt;br /&gt;
net.ipv6.conf.vmbr0.autoconf = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Terminez par relancer procps :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/procps restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==paramètre sysctl ipv6 non appliqué au boot==&lt;br /&gt;
Ajoutez le module ipv6 dans /etc/modules afin d&#039;assurer le chargement d&#039;ipv6 avant l’exécution de sysctl :&lt;br /&gt;
&amp;lt;pre&amp;gt;echo ipv6 &amp;gt;&amp;gt; /etc/modules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LVM inaccessible depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lvm pvscan&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface web ne fonctionne pas et la commande qm retourne une erreur ipcc_send_rec failed: Connection refused==&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence de fichiers et dossiers dans &amp;lt;code&amp;gt;/etc/pve/&amp;lt;/code&amp;gt;. Si ce dossier est vide, c&#039;est probablement que votre fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; est mal configuré.&amp;lt;br&amp;gt;&lt;br /&gt;
Essayez de relancer &amp;lt;code&amp;gt;pve-cluster&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/pve-cluster restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez une erreur ou un warning, lancez la commande pmxcfs. Vous devriez obtenir ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$# pmxcfs &lt;br /&gt;
Jan 21 15:28:19 proxmox pmxcfs[1846]: Unable to get local IP address (pmxcfs.c:721:main)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez alors que le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est défini dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si par exemple &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; contient &amp;lt;code&amp;gt;proxmox.domain.tld&amp;lt;/code&amp;gt; vous devriez avoir la ligne suivante dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;VOTREIP proxmox.domain.tld proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pas assez d&#039;interfaces loopback==&lt;br /&gt;
&lt;br /&gt;
Créer le fichier &amp;lt;code&amp;gt;/etc/modprobe.d/local-loop.conf&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;options loop max_loop=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite redémarrer ou recharger le module loop :&lt;br /&gt;
&amp;lt;pre&amp;gt; rmmod loop &amp;amp;&amp;amp; modprobe loop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Défragmentation LVM : exemple==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hub:~# pvdisplay --maps&lt;br /&gt;
  --- Physical volume ---&lt;br /&gt;
  PV Name               /dev/sda4&lt;br /&gt;
  VG Name               main&lt;br /&gt;
  PV Size               1.76 TB / not usable 456.00 KB&lt;br /&gt;
  Allocatable           yes &lt;br /&gt;
  PE Size (KByte)       4096&lt;br /&gt;
  Total PE              461649&lt;br /&gt;
  Free PE               208721&lt;br /&gt;
  Allocated PE          252928&lt;br /&gt;
  PV UUID               PUqV5Q-WRW2-n20t-eFVM-CA1r-RhDl-2RTJHq&lt;br /&gt;
   &lt;br /&gt;
  --- Physical Segments ---&lt;br /&gt;
  Physical extent 0 to 7935:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-1&lt;br /&gt;
    Logical extents     0 to 7935&lt;br /&gt;
  Physical extent 7936 to 72191:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 72192 to 136703:&lt;br /&gt;
    Logical volume      /dev/main/vm-102-disk-1&lt;br /&gt;
    Logical extents     0 to 64511&lt;br /&gt;
  Physical extent 136704 to 144895:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-1&lt;br /&gt;
    Logical extents     0 to 8191&lt;br /&gt;
  Physical extent 144896 to 209151:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 209152 to 214271:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-1&lt;br /&gt;
    Logical extents     0 to 5119&lt;br /&gt;
  Physical extent 214272 to 227327:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-2&lt;br /&gt;
    Logical extents     0 to 13055&lt;br /&gt;
  Physical extent 227328 to 282111:&lt;br /&gt;
    FREE&lt;br /&gt;
  Physical extent 282112 to 307711:&lt;br /&gt;
    Logical volume      /dev/main/vm-108-disk-1&lt;br /&gt;
    Logical extents     0 to 25599&lt;br /&gt;
  Physical extent 307712 to 461648:&lt;br /&gt;
    FREE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir, on a un trou &amp;quot;vide&amp;quot; entre l&#039;extent &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; et 282111, puis à nouveau des données entre l&#039;extent &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour combler ce trou, nous allons déplacer les données des  /dev/main/vm-108-disk-1 situés entre les extents &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; (soit 25599 extents au total) vers l&#039;espace libre avec &amp;lt;code&amp;gt;pvmove&amp;lt;/code&amp;gt; :&amp;lt;br&amp;gt;&lt;br /&gt;
pvmove /dev/sda4:&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; /dev/sda4:&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt; --alloc anywhere&lt;br /&gt;
&lt;br /&gt;
Notez qu&#039;il faut attribuer exactement le même nombre d&#039;extents à la destination qu&#039;à l&#039;origine : &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; + 25599 = &amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Oups: j&#039;ai supprimé le mauvais lvm==&lt;br /&gt;
&lt;br /&gt;
Pas de panique, mais ne bougez plus ! Pour l&#039;instant, seul les métadonnées du lvm sont impactés.&lt;br /&gt;
Et comme c&#039;est bien foutu, lvm conserve un backup des anciennes metadonnées après chaque modification. Ces archives sont situés dans &amp;lt;code&amp;gt;/etc/lvm/archive/&amp;lt;/code&amp;gt;. Les fichiers y sont nommés sous la forme vg_XXXX-YYYYYYY.vg. Normalement, le fichier ayant le XXXX le plus élevé sera celui de l&#039;état précédent votre erreur.&lt;br /&gt;
Pour vérifier que vous avez sélectionné le bon fichier, vous pouvez l&#039;ouvrir avec nano et regarder si l&#039;état du lvm dans cette archive correspond a ce que vous attendez.&lt;br /&gt;
&lt;br /&gt;
Pour restaurer l&#039;archive des métadonnées main_00007-587941649.vg pour le vg main :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vgcfgrestore -f /etc/lvm/archive/main_00007-587941649.vg main&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Votre volume devrait être de retour.&lt;br /&gt;
&lt;br /&gt;
Il faut encore vérifier que la table de partition contenu sur ce lvm n&#039;a pas morphlé. En admettant que /dev/main/vm-101-disk-1 est la lvm que vous venez de restaurer :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez ça, c&#039;est bon, vous êtes sauvés ! Si ce n&#039;est pas le cas, continuez à lire ;)&lt;br /&gt;
&lt;br /&gt;
===Récupération de la table de partition===&lt;br /&gt;
&lt;br /&gt;
Si fdisk vous envois chier avec un message du style &amp;lt;code&amp;gt;Disk /dev/loop0 doesn&#039;t contain a valid partition table&amp;lt;/code&amp;gt;, il va falloir récupérer la table de partition.&lt;br /&gt;
&lt;br /&gt;
Installez testdisk :&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install testdisk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lancez le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# testdisk /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selectionez le media &amp;lt;code&amp;gt;/dev/loop0&amp;lt;/code&amp;gt; et validez avec &amp;lt;code&amp;gt;enter&amp;lt;/code&amp;gt;.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;intel&amp;lt;/code&amp;gt; comme type de table de partition.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;analyse&amp;lt;/code&amp;gt;&lt;br /&gt;
A l&#039;écran suivant, tapez enter.&lt;br /&gt;
Avec de la chance, testdisk retrouvera vos partitions. Une fois qu&#039;il aura terminé de travailler, il ne restera plus qu&#039;à taper sur enter encore une fois, puis demander à testdisk de sauvegarder la table de partition&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface proxmox n&#039;affiche pas les disques de certaines VMs==&lt;br /&gt;
&lt;br /&gt;
Ceci arrive typiquement si vous avez créé un volume logique à la main sans y ajouter le bon tag.&lt;br /&gt;
Vérifiez la présence des tags sur vos LV avec la commande &amp;lt;code&amp;gt;lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  20.00g &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous le voyez, le lv de la vm 101 n&#039;est pas tagué. Vous pouvez ajouter le tag avec &amp;lt;code&amp;gt;lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  16.00g pve-vm-101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas,  essayez de passer un petit coup de &amp;lt;code&amp;gt;qm rescan&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4399</id>
		<title>Proxmox 8</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4399"/>
		<updated>2025-10-03T11:19:41Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Bloquer le spoofing d&amp;#039;adresse mac */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:virtualisation]]&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment installer proxmox 7.x sur un raid 1 logiciel (md / mdadm) avec debootstrap.&lt;br /&gt;
&lt;br /&gt;
=Prérequis=&lt;br /&gt;
&lt;br /&gt;
Ce tutoriel se base sur l&#039;utilisation de debootstrap pour installer une base de système d&#039;exploitation debian. La plupart des hébergeurs proposent un système de &amp;quot;rescue&amp;quot; permettant l&#039;installation de debian par ce moyen.&lt;br /&gt;
Si vous ne disposez pas de mode rescue, vous pouvez toujours utiliser l&#039;installeur proposé par votre hébergeur, ou encore passer par un kvm pour installer vous même le système avec l&#039;iso de debian.&lt;br /&gt;
&lt;br /&gt;
=Pour les débutants=&lt;br /&gt;
&lt;br /&gt;
Si vous êtes débutant en administration linux, je vous conseil de sauvegarder quelque part les fichier suivant issu d&#039;une précédente installation de debian ou de proxmox&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/networks&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt; si vous disposez d&#039;un raid logiciel&lt;br /&gt;
* tout fichier de personnalisation de grub (&amp;lt;code&amp;gt;/etc/grub.d/&amp;lt;/code&amp;gt; par exemple)&lt;br /&gt;
&lt;br /&gt;
Cela vous permettra de vous faire une idée plus précise de ce qui doit figurer dans ces différents fichiers.&lt;br /&gt;
&lt;br /&gt;
=Partitionnement et système de fichier=&lt;br /&gt;
&lt;br /&gt;
Voici le partitionnement que je vais utiliser :&lt;br /&gt;
* Partition root (/) de 20 Go (/) en raid 1 sur les disques sda et sdb&lt;br /&gt;
* Partitions swap de 4096 Go chacune réparties sur sda et sdb&lt;br /&gt;
* Le reste de l&#039;espace sera utilisé plus tard pour un LVM dédié aux VMs&lt;br /&gt;
&lt;br /&gt;
==Partitionnement==&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitionnement GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions EFI (ESP), obligatoire pour le démarrage EFI/UEFI. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF00&amp;lt;/code&amp;gt;. 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).&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour les partitions EFI, nous créons un système de fichier FAT32 avec le label (nom) &amp;lt;code&amp;gt;EFI_SYSPART&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sda1&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sdb1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitionnement GPT pour BIOS===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions pour le bootloader. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF02&amp;lt;/code&amp;gt;. On peut la créer idéalement du secteur 34 au secteur 2047 du disque.&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notez que la partition du bootloader ne doit pas être formatée.&lt;br /&gt;
&lt;br /&gt;
===Possibilité 3 : partitionnement MBR pour BIOS (non prise en charge dans ce wiki)===&lt;br /&gt;
&lt;br /&gt;
A titre informatif : création avec &amp;lt;code&amp;gt;parted&amp;lt;/code&amp;gt;, sans nécessité de créer une partition dédiée au bootloader/grub.&lt;br /&gt;
&lt;br /&gt;
==Création du RAID==&lt;br /&gt;
&lt;br /&gt;
Pour des raisons esthétiques, définissez l&#039;hostname de votre système de rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;hostname proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour créer votre raid 1 avec 2 disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que si vous souhaitez utiliser plus que 2 disques, il faut augmenter la valeur de &amp;lt;code&amp;gt;--raid-devices&amp;lt;/code&amp;gt; et ajouter les partitions des disques à la suite.&lt;br /&gt;
&lt;br /&gt;
Attendez que le raid soit synchronisé avant de continuer. Vous pouvez surveiller facilement cela avec la commande &amp;lt;code&amp;gt;watch cat /proc/mdstat&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Création des systèmes de fichiers==&lt;br /&gt;
&lt;br /&gt;
Créez un système de fichier ext4 pour le raid du root :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/md2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, initialisez les swaps :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkswap /dev/sda3&lt;br /&gt;
mkswap /dev/sdb3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Installation de proxmox=&lt;br /&gt;
&lt;br /&gt;
==Installation du système de base==&lt;br /&gt;
&lt;br /&gt;
Nous débutons par installer le système de base de Debian avec &amp;lt;code&amp;gt;debootstrap&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les paquets nécessaires dans votre rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install debootstrap debian-keyring debian-archive-keyring&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez votre partition raid root sur &amp;lt;code&amp;gt;/mnt&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/md2 /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez le système de base debian, version bookworm :&lt;br /&gt;
&amp;lt;pre&amp;gt;debootstrap --arch=amd64 bookworm /mnt http://ftp.fr.debian.org/debian&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration de Debian==&lt;br /&gt;
&lt;br /&gt;
Montez les vfs suivants, puis chrootez dans votre nouveau système debian :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount -o bind /proc /mnt/proc&lt;br /&gt;
mount -o bind /dev /mnt/dev&lt;br /&gt;
mount -o bind /dev/pts /mnt/dev/pts&lt;br /&gt;
mount -o bind /sys /mnt/sys&lt;br /&gt;
chroot /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les archives apt : éditez le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main archive&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# security updates&lt;br /&gt;
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# bookworm-updates, previously known as &#039;volatile&#039;&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# backports archive&lt;br /&gt;
deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour les paquets :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les locales et la configuration de console :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install locales &lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
apt install console-data console-setup-linux console-setup wget&lt;br /&gt;
dpkg-reconfigure console-data # from arch &amp;gt; french &amp;gt; latin9)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la zone horaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tzselect&lt;br /&gt;
dpkg-reconfigure tzdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez votre fichier &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Pour GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda1       /boot/efi       vfat    defaults                                  0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour GPT pour BIOS :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez la partition EFI / ESP dans le cas d&#039;un partitionnement GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /boot/efi&lt;br /&gt;
mount /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les interfaces réseaux dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The loopback network interface&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet static&lt;br /&gt;
        address XXXX/24&lt;br /&gt;
        gateway XXXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# local&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
::1             localhost ip6-localhost ip6-loopback&lt;br /&gt;
ff02::1         ip6-allnodes&lt;br /&gt;
ff02::2         ip6-allrouters&lt;br /&gt;
&lt;br /&gt;
# main&lt;br /&gt;
ipdelamachine   proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez les hostnames dans ces fichiers :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Pour celui la : non-fqdn&lt;br /&gt;
echo proxmox &amp;gt; /etc/hostname&lt;br /&gt;
# Pour celui la : fqdn&lt;br /&gt;
echo proxmox.domain.tld &amp;gt; /etc/mailname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION&#039;&#039;&#039; Le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; DOIT être cohérent avec le fichier &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, si le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est &amp;lt;code&amp;gt;proxmox&amp;lt;/code&amp;gt; et que l&#039;ip de votre proxmox est 225.182.54.9 il faudra veiller a avoir les informations suivantes dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1 localhost&lt;br /&gt;
225.182.54.9 proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attention : n&#039;utilisez pas 127.0.1.1 (comme le fait debian) mais bien la vrai ip (ici 225.182.54.9)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
N&#039;oubliez pas de configurer les dns (ceux de votre hébergeur dédié) dans &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;nameserver XX.XX.XX.XX&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez postfix :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install postfix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, comme nous installons notre partition de boot sur un raid software, il faut installer &amp;lt;code&amp;gt;madadm&amp;lt;/code&amp;gt; à ce stade :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install mdadm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez si votre array root s&#039;est bien défini automatiquement dans &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt;. Si ce n&#039;est pas me cas, ajoutez la configuration de l&#039;array manuellement :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - kernel==&lt;br /&gt;
&lt;br /&gt;
Ajoutez le dépot proxmox dans le fichier /etc/apt/source.list :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use&lt;br /&gt;
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajoutez la clé du dépôt proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour le système :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitions GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Vérifiez que &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt; est bien monté. Si ce n&#039;est pas le cas, faites le.&lt;br /&gt;
&lt;br /&gt;
Installez le kernel proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-efi-amd64 gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supprimez les paquets suivant si vous n&#039;avez pas besoin de secureboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed shim-signed-common shim-unsigned&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normalement tout doit se faire avec des promps. Si ce n&#039;était pas le cas :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si jamais vous utilisez un démarrage en PXE (c&#039;est le cas sur un serveur OVH par exemple), utilisez l&#039;argument &amp;lt;code&amp;gt;--no-nvram&amp;lt;/code&amp;gt; pour empêcher grub de mettre à jour la NVRAM et casser votre mécanique de démarrage PXE :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox --no-nvram&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Etant donné que seul &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; est monté sur &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt;, il faut transférer manuellement les données sur &amp;lt;code&amp;gt;/dev/sdb1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/sdb1 /mnt&lt;br /&gt;
rsync -av /boot/efi/ /mnt/&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si pour une raison quelconque, vous aviez besoin des headers du kernel :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install pve-headers-5.15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitions GPT pour BIOS OU Partitions MBR pour BIOS===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-pc gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on vous demandera où installer grub, choisissez &amp;lt;code&amp;gt;sda&amp;lt;/code&amp;gt; ET &amp;lt;code&amp;gt;sdb&amp;lt;/code&amp;gt;. Sinon :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-install /dev/sda&lt;br /&gt;
grub-install /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - OpenSSH==&lt;br /&gt;
&lt;br /&gt;
Installez openssh et définissez un password root. Autorisez le login root par password temporairement.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install openssh-server&lt;br /&gt;
passwd&lt;br /&gt;
sed -i &amp;quot;s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g&amp;quot; /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - Vérifications finales et redémarrage sur le kernel proxmox==&lt;br /&gt;
&lt;br /&gt;
Si vous avez une configuration particulière à entrer dans &amp;lt;code&amp;gt;/etc/default/grub&amp;lt;/code&amp;gt;, faites le maintenant. Par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;nomodeset iommu=pt&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis régénérez la configuration de grub :&lt;br /&gt;
&amp;lt;pre&amp;gt;update-grub&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez vérifier que votre fstab est valide avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;findmnt --verify --verbose&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /boot/efi/&lt;br /&gt;
exit&lt;br /&gt;
umount /mnt/sys&lt;br /&gt;
umount /mnt/dev/pts&lt;br /&gt;
umount /mnt/dev&lt;br /&gt;
umount /mnt/proc&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, redémarrez le serveur sur le disque dur.&lt;br /&gt;
&lt;br /&gt;
==Installation de ifupdown2==&lt;br /&gt;
&lt;br /&gt;
Le paquet &amp;lt;code&amp;gt;ifupdown2&amp;lt;/code&amp;gt; est en voie de devenir le remplaçant officiel de &amp;lt;code&amp;gt;ifupdown&amp;lt;/code&amp;gt; pour proxmox.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ifupdown2&lt;br /&gt;
apt purge ifupdown&lt;br /&gt;
systemctl enable networking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que votre configuration est fonctionnelle : lancez &amp;lt;code&amp;gt;ifquery -a&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrez à nouveau votre serveur&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - pve==&lt;br /&gt;
&lt;br /&gt;
Une fois le redémarrage effectué, vous allez enfin pouvoir installer pve :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install proxmox-ve ksm-control-daemon chrony&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;apt remove os-prober&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editez la configuration réseau &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; afin d&#039;y créer votre bridge :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet manual&lt;br /&gt;
&lt;br /&gt;
auto vmbr0&lt;br /&gt;
iface vmbr0 inet static&lt;br /&gt;
        address xxxxx/24&lt;br /&gt;
        gateway xxxx&lt;br /&gt;
        hwaddress AA:BB:CC:11:22:33&lt;br /&gt;
        bridge_ports eno3&lt;br /&gt;
        bridge_stp off&lt;br /&gt;
        bridge_fd 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la ligne &amp;lt;code&amp;gt;hwaddress&amp;lt;/code&amp;gt; avec l&#039;adresse MAC de l&#039;interface eno3.&lt;br /&gt;
&lt;br /&gt;
Installez votre clé SSH dans &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; puis désactivez le login root par password de OpenSSH dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois tout installé, je vous conseille de reconfigurer grub afin de mettre à jour la configuration interne de debian:&lt;br /&gt;
* Pour EFI : &amp;lt;code&amp;gt;dpkg-reconfigure grub-efi-amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pour BIOS : &amp;lt;code&amp;gt;dpkg-reconfigure grub-pc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrez une dernière fois pour appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
Votre proxmox sera accessible à l&#039;adresse https://ip:8006&lt;br /&gt;
&lt;br /&gt;
==Nettoyage des paquets==&lt;br /&gt;
&lt;br /&gt;
Si vous ne comptez pas utiliser ZFS, vous pouvez supprimer les paquets suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge zfs-zed libnvpair3linux libuutil3linux libzfs4linux libzpool5linux zfsutils-linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration réseau avancée==&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;une IPv6 sur vmbr0===&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;un réseau interne vmbr1===&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment créer un réseau interne avec proxmox, c&#039;est à dire, un réseau qui ne sera attaché à aucune interface réseau physique. L&#039;intérêt est d&#039;offrir un débit bien supérieur pour les communications entre les VMs.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto vmbr1&lt;br /&gt;
iface vmbr1 inet static&lt;br /&gt;
        address  192.168.0.1&lt;br /&gt;
        netmask  255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : vous pouvez faire de même en ipv6 :&lt;br /&gt;
* il faut utiliser le range Unique Local Address (ULA) fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address)&lt;br /&gt;
* pour générer votre ULA : http://pfoo.unscdf.org/ula/gen-ula.html&lt;br /&gt;
&lt;br /&gt;
==Sécurisation de base==&lt;br /&gt;
&lt;br /&gt;
Je vous conseil de commencer à sécuriser votre ssh :&lt;br /&gt;
* désactivez le login root (directive &amp;lt;code&amp;gt;PermitRootLogin no&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;). Pensez néanmoins à créer un utilisateur pour vous connecter en ssh avant de désactiver le login root.&lt;br /&gt;
* utilisez la directive &amp;lt;code&amp;gt;allowusers &amp;lt;user&amp;gt;&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; pour n&#039;autoriser que certains utilisateurs à se connecter en ssh.&lt;br /&gt;
&lt;br /&gt;
Il est aussi préférable d&#039;installer le serveur de temps NTP à la place de systemd-timesyncd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install chrony&lt;br /&gt;
apt purge systemd-timesyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configurer le serveur mail postfix=&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
==Certificats SSL==&lt;br /&gt;
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. Si ce n&#039;est pas le cas, vous pouvez toujours aller lire [http://wiki.unscdf.org/index.php?title=Installation_et_configuration_de_OpenSSL ceci] afin d&#039;apprendre à créer votre autorité ssl.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/ssl/openssl.cnf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[POSTFIX]&lt;br /&gt;
nsComment                       = &amp;quot;SMTP Server Certificate&amp;quot;&lt;br /&gt;
subjectKeyIdentifier            = hash&lt;br /&gt;
authorityKeyIdentifier          = keyid,issuer:always&lt;br /&gt;
issuerAltName                   = issuer:copy&lt;br /&gt;
basicConstraints                = critical,CA:FALSE&lt;br /&gt;
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment&lt;br /&gt;
nsCertType                      = server&lt;br /&gt;
extendedKeyUsage                = serverAuth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis générez la clé et le certificat, et signez le avec votre autorité (int_ca dans mon cas) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req&lt;br /&gt;
openssl ca -config /etc/ssl/openssl.cnf -name int_ca -extensions POSTFIX -in postfix.req -out postfix.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Déplacez les fichiers dans le répertoire &amp;lt;code&amp;gt;/etc/postfix/ssl&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/postfix/ssl&lt;br /&gt;
mv postfix.key /etc/postfix/ssl/&lt;br /&gt;
mv postfix.pem /etc/postfix/ssl/&lt;br /&gt;
chmod 600 /etc/postfix/ssl/*&lt;br /&gt;
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/int_ca/int_ca.pem &amp;gt; /etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut encore modifier &amp;lt;code&amp;gt;/etc/postfix/main.cf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smtpd_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtpd_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
smtpd_use_tls=yes&lt;br /&gt;
smtp_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtp_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&lt;br /&gt;
smtpd_tls_security_level=may&lt;br /&gt;
smtp_tls_security_level=may&lt;br /&gt;
smtpd_tls_loglevel = 1&lt;br /&gt;
smtp_tls_loglevel = 1&lt;br /&gt;
&lt;br /&gt;
#smtp_tls_policy_maps = hash:/etc/postfix/tls_policy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire=&lt;br /&gt;
&lt;br /&gt;
Depuis Proxmox 5.2, il n&#039;est plus recommandé d&#039;adapter manuellement les fichiers contenant les certificats et clés privés de proxmox.&amp;lt;br&amp;gt;&lt;br /&gt;
Cependant, vous pouvez placer directement votre clé privé dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.key&amp;lt;/code&amp;gt; et la chaîne de certification dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.pem&amp;lt;/code&amp;gt;. Vous pouvez également déposer ces fichiers via la webui de proxmox au niveau de chaque serveur.&lt;br /&gt;
&lt;br /&gt;
=Surveiller l&#039;état des disques avec SMART=&lt;br /&gt;
&lt;br /&gt;
Commencez par installer le paquet smartmontools :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install smartmontools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez que vos disques gèrent smart et qu&#039;il est activé :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -i /dev/sda&lt;br /&gt;
smartctl -i /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si smart n&#039;est pas activé, essayez de l&#039;activer comme ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -s on /dev/sda&lt;br /&gt;
smartctl -s on /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez le statut de santé de vos disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -H /dev/sda&lt;br /&gt;
smartctl -H /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
S&#039;il indique &amp;lt;code&amp;gt;PASSED&amp;lt;/code&amp;gt; c&#039;est bon de ce côté. S&#039;il vous indique &amp;lt;code&amp;gt;FAILED&amp;lt;/code&amp;gt;, sauvegardez immédiatement vos données !&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence d&#039;erreurs dans le log smart :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -l error /dev/sda&lt;br /&gt;
smartctl -l error /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez &amp;lt;code&amp;gt;No Errors Logged&amp;lt;/code&amp;gt; ou quelques erreurs, c&#039;est bon. S&#039;il y eu a beaucoup, il faut envisager de changer le disque.&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration de smartd est &amp;lt;code&amp;gt;/etc/smartd.conf&amp;lt;/code&amp;gt;. Commentez la ligne &amp;lt;code&amp;gt;DEVICESCAN&amp;lt;/code&amp;gt; puis ajoutez les lignes suivantes pour surveiller les deux disques durs :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
/dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous activons la surveillance globale (&amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt;), la vérification automatique offline, (&amp;lt;code&amp;gt;-o on&amp;lt;/code&amp;gt;), la sauvegarde automatique des attributs (&amp;lt;code&amp;gt;-S on&amp;lt;/code&amp;gt; et lançons un &amp;lt;code&amp;gt;short self test&amp;lt;/code&amp;gt; tous les jours à 2h du matin, et un &amp;lt;code&amp;gt;long self test&amp;lt;/code&amp;gt; tous les samedi à 3h du matin. Si des erreurs sont détectés, un email est envoyé à vous@domain.tld.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez smartd :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/smartmontools restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;information sur SMART et ses arguments : [[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
&lt;br /&gt;
=Protégez votre proxmox=&lt;br /&gt;
&lt;br /&gt;
==Désactiver le login root sur l&#039;interface proxmox==&lt;br /&gt;
Avant toute manipulation, n&#039;oubliez pas de créer un utilisateur ayant les droits d&#039;administration pour accéder à l&#039;interface de proxmox&lt;br /&gt;
&lt;br /&gt;
===Via l&#039;interface proxmox===&lt;br /&gt;
Dans Datacenter &amp;gt; Permissions &amp;gt; Users : Editez l&#039;utilisateur root et décochez la case &amp;lt;code&amp;gt;Enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Via les droits linux===&lt;br /&gt;
&amp;lt;pre&amp;gt;passwd --lock root&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 !&lt;br /&gt;
&lt;br /&gt;
===Via PAM===&lt;br /&gt;
Vous pouvez désactiver le login pam en éditant &amp;lt;code&amp;gt;/etc/pam.d/other&amp;lt;/code&amp;gt; et en y ajoutant, en début de fichier, les lignes suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth        required    pam_deny.so&lt;br /&gt;
auth        required    pam_warn.so&lt;br /&gt;
account     required    pam_deny.so&lt;br /&gt;
account     required    pam_warn.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attention, cette méthode peut avoir des effets de bord si d&#039;autres programmes utilisent l&#039;entité pam/other&lt;br /&gt;
&lt;br /&gt;
==Désactiver rpcbind==&lt;br /&gt;
&lt;br /&gt;
Si vous n&#039;utilisez pas de montage NFS vous pouvez désactiver rpcbind.&amp;lt;br&amp;gt;&lt;br /&gt;
Editez &amp;lt;code&amp;gt;/etc/default/nfs-common&amp;lt;/code&amp;gt; et passez l&#039;argument suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;NEED_STATD=no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis désactivez rpcbind :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable rpcbind.target&lt;br /&gt;
systemctl disable rpcbind.socket&lt;br /&gt;
systemctl disable rpcbind.service&lt;br /&gt;
systemctl stop rpcbind.target&lt;br /&gt;
systemctl stop rpcbind.socket&lt;br /&gt;
systemctl stop rpcbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eviter les reboots accidentels avec molly-gard==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install molly-guard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Protection SSH avec sshguard==&lt;br /&gt;
&lt;br /&gt;
[[Protéger SSH avec sshguard]]&lt;br /&gt;
&lt;br /&gt;
==Protéger l&#039;interface web avec fail2ban==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install fail2ban&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/jail.local&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
# &amp;quot;ignoreip&amp;quot; can be an IP address, a CIDR mask or a DNS host&lt;br /&gt;
ignoreip = 127.0.0.1&lt;br /&gt;
bantime  = 1800&lt;br /&gt;
maxretry = 3&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Destination email address used solely for the interpolations in&lt;br /&gt;
# jail.{conf,local} configuration files.&lt;br /&gt;
destemail = root@localhost&lt;br /&gt;
&lt;br /&gt;
action = %(action_mwl)s&lt;br /&gt;
&lt;br /&gt;
[ssh]&lt;br /&gt;
enabled = false&lt;br /&gt;
&lt;br /&gt;
[sshd]&lt;br /&gt;
enabled  = false&lt;br /&gt;
&lt;br /&gt;
[proxmox]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = https,http,8006&lt;br /&gt;
filter = proxmox&lt;br /&gt;
backend = systemd&lt;br /&gt;
maxretry = 4&lt;br /&gt;
findtime = 2d&lt;br /&gt;
bantime = 1h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/filter.d/proxmox.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Definition]&lt;br /&gt;
failregex = pvedaemon\[.*authentication failure; rhost=&amp;lt;HOST&amp;gt; user=.* msg=.*&lt;br /&gt;
ignoreregex =&lt;br /&gt;
journalmatch = _SYSTEMD_UNIT=pvedaemon.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez fail2ban :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/fail2ban restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==firewall iptables==&lt;br /&gt;
&lt;br /&gt;
=Création d&#039;un stockage pour les VMs=&lt;br /&gt;
&lt;br /&gt;
Créez les partitions sda4 et sdb4 au moyen de gdisk (EFI) ou parted (BIOS).&lt;br /&gt;
&lt;br /&gt;
Créez sur ces partitions un raid :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create --verbose /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenez à jour &amp;lt;code&amp;gt;mdadm.conf&amp;lt;/code&amp;gt; et votre initramfs afin de conserver le bon naming du raid après reboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
update-initramfs -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis initialisez-y un LVM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvcreate /dev/md4&lt;br /&gt;
vgcreate main /dev/md4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu&#039;a déclarer ce Volume Group LVM dans l&#039;interface proxmox.&lt;br /&gt;
&lt;br /&gt;
=VM qemu/kvm=&lt;br /&gt;
&lt;br /&gt;
==Télécharger vos images==&lt;br /&gt;
&lt;br /&gt;
Vous pouvez placer les iso dans &amp;lt;code&amp;gt;/var/lib/vz/template/iso/&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt; par exemple.&lt;br /&gt;
Notez que l&#039;interface graphique de proxmox propose également une fonction d&#039;upload.&lt;br /&gt;
&lt;br /&gt;
==Créer votre première VM==&lt;br /&gt;
&lt;br /&gt;
Une fois la VM crées dans l&#039;interface proxmox, je vous recommande d&#039;écrire des zero sur son disque afin de réduire la taille des futurs backups. Si votre vm porte le numéro 100 et possède un seul disque :&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/zero | pv -ptrb | dd of=/dev/main/vm-100-disk1 bs=1M&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr0 (ip public)===&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr1 (ip locale)===&lt;br /&gt;
&lt;br /&gt;
Configuration réseau de la VM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.0.2&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
gateway 192.168.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Règle iptables à ajouter sur l&#039;hôte :&lt;br /&gt;
&amp;lt;pre&amp;gt;iptables -t nat -A POSTROUTING -s 192.168.0.2 -o vmbr0 -j SNAT --to IP-PUBLIC-DE-VOTRE-HOTE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez rendre accessible l&#039;un des services de la VM depuis l&#039;ip de l&#039;hote sur un port sépcifique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -t nat -A PREROUTING -p tcp -d &amp;lt;ip de l&#039;hote&amp;gt; --dport &amp;lt;port souhaité&amp;gt; -i vmbr0 -j DNAT --to-destination 192.168.0.2:port&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bloquer le spoofing d&#039;adresse mac==&lt;br /&gt;
Sur l&#039;hyperviseur, installez &amp;lt;code&amp;gt;ebtables&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install ebtables&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Admettons ensuite que votre VM a comme adresse ip &amp;lt;code&amp;gt;84.93.26.3&amp;lt;/code&amp;gt; et que son adresse mac doit être &amp;lt;code&amp;gt;52:54:00:00:98:b6&amp;lt;/code&amp;gt; : &lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv4 --ip-src 84.93.26.3 -s ! 52:54:00:00:98:b6 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez faire de même pour l&#039;ipv6. Dans l&#039;exemple suivant, seul le bloc ipv6 &amp;lt;code&amp;gt;2a01:d4h:123b:100::/56&amp;lt;/code&amp;gt; est utilisable par la vm :&lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv6 --ip6-src 2a01:d4h:123b:100::/56 -s ! 52:54:00:00:08:b1 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Importer une VM depuis vmware ESXi==&lt;br /&gt;
&lt;br /&gt;
==qm et modification des VMs en ligne de commande==&lt;br /&gt;
&lt;br /&gt;
==Monter les partitions d&#039;une VM depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pour la partition 1 : start*blocksize = offset&lt;br /&gt;
donc 2048*512 = 1048576&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;losetup /dev/loop1 -o 1048576 /dev/main/vm-101-disk-1 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et enfin :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount /dev/loop1 /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé vos modifications :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /mnt&lt;br /&gt;
losetup -d /dev/loop1&lt;br /&gt;
losetup -d /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Si la partition que vous voulez monter est un LVM===&lt;br /&gt;
&lt;br /&gt;
Scannez les nouveaux volumes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm pvscan&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activez les groupes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm vgchange -ay&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
listez les lvms avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm lvs&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les LV devraient apparaître dans &amp;lt;code&amp;gt;/dev/mapper/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé :&lt;br /&gt;
* démontez les LV&lt;br /&gt;
* Désactivez le groupe avec &amp;lt;code&amp;gt;vgchange -an&amp;lt;/code&amp;gt;&lt;br /&gt;
* désactivez le loopback : &amp;lt;code&amp;gt;losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Augmenter la taille du disque d&#039;une VM==&lt;br /&gt;
&lt;br /&gt;
Coupez la VM.&lt;br /&gt;
&lt;br /&gt;
Sur l&#039;host pour modifier la taille du disque 1 de la vm 110 ) 140G :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvextend -L 140G /dev/main/vm-110-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut ensuite, sur la vm lancée, utiliser resize2fs&lt;br /&gt;
&lt;br /&gt;
==Migrer une VM vers un autre serveur manuellement (pas de cluster) avec un downtime minimum==&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment migrer une VM proxmox stockée sur un LVM d&#039;un serveur à un autre, et ce, en minimisant au maximum le downtime. Pour cela, nous allons coupler la fonctionnalité de snapshot de lvm avec un petit script (lvmsync) qui permet de ne transférer que les blocs modifiés d&#039;un snapshot.&lt;br /&gt;
&lt;br /&gt;
Installez dmsetup et ruby (1.8 minimum) sur le serveur d&#039;origine et de destination :&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install dmsetup ruby&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Récupérez &amp;lt;code&amp;gt;lvmsync&amp;lt;/code&amp;gt; sur https://github.com/mpalmer/lvmsync et placez le dans /sbin/ sur les serveurs d&#039;origine et de destination.&lt;br /&gt;
&lt;br /&gt;
Dans cet exemple, nous allons migrer la vm 102 disposant d&#039;un seul disque virtuel nommé vm-102-disk-1 et stocké dans le vg main du serveur server1.domain.tld vers le serveur server2.domain.tld.&lt;br /&gt;
Pour commencer, créez un snapshot de votre vm sur server1 :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvcreate --snapshot -L200G -n 102-lvmsync main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Désormais, tous les io de cette vm seront stockés dans le snapshot 102-lvmsync.&lt;br /&gt;
&lt;br /&gt;
Sur votre nouveau serveur, créez une VM identique à celle de votre premier serveur (surtout en qui concerne la taille de disque).&lt;br /&gt;
Depuis server1, copiez avec un dd over ssh le disque d&#039;origine de votre vm vers votre nouveau serveur.&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/main/vm-102-disk-1 | pv -ptrb | ssh -o &amp;quot;Compression no&amp;quot; root@server2.domain.tld &amp;quot;dd of=/dev/main/vm-102-disk-1 bs=100M&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : sur un réseauu 100Mbps utilisez plutôt &amp;lt;code&amp;gt;-o &amp;quot;Compressionlevel 1&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois la copie terminée, coupez la vm 102 sur server1, puis lancez lvmsync sur le snapshot (toujours sur server1) :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvmsync /dev/main/102-lvmsync server2.domain.tld:/dev/main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois le travail de lvmsync achevé, il ne nous reste plus qu&#039;a relancer la vm sur server2&lt;br /&gt;
&lt;br /&gt;
A titre d&#039;information, si vous voulez merger le snapshot de la vm 102 sur server 1, tapez :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvconvert --merge /dev/main/102-lvmsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conteneur LXC=&lt;br /&gt;
&lt;br /&gt;
==Empêcher la mise à jour automatique de certains fichiers de configuration système du conteneur==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
On peut empêcher la mise à jour de ces fichiers en créant un fichier &amp;lt;code&amp;gt;.pve-ignore.NOM&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, &amp;lt;code&amp;gt;/etc/.pve-ignore.resolv.conf&amp;lt;/code&amp;gt; empêchera le fichier &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; d&#039;être mis à jour à chaque démarrage.&lt;br /&gt;
&lt;br /&gt;
=Annexes=&lt;br /&gt;
&lt;br /&gt;
==Problème de layout dans la console vnc==&lt;br /&gt;
Dans l&#039;interface web de proxmox : datacenter &amp;gt; option &amp;gt; passez Keyboard de &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; à &amp;lt;code&amp;gt;French&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Erreurs du type &amp;lt;code&amp;gt;IPv6 addrconf: prefix with wrong length 56&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64.&lt;br /&gt;
Ajouter les lignes suivantes dans un fichier &amp;lt;code&amp;gt;/etc/sysctl.d/local.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
net.ipv6.conf.all.autoconf = 0&lt;br /&gt;
net.ipv6.conf.default.autoconf = 0&lt;br /&gt;
net.ipv6.conf.eno3.autoconf = 0&lt;br /&gt;
net.ipv6.conf.vmbr0.autoconf = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Terminez par relancer procps :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/procps restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==paramètre sysctl ipv6 non appliqué au boot==&lt;br /&gt;
Ajoutez le module ipv6 dans /etc/modules afin d&#039;assurer le chargement d&#039;ipv6 avant l’exécution de sysctl :&lt;br /&gt;
&amp;lt;pre&amp;gt;echo ipv6 &amp;gt;&amp;gt; /etc/modules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LVM inaccessible depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lvm pvscan&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface web ne fonctionne pas et la commande qm retourne une erreur ipcc_send_rec failed: Connection refused==&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence de fichiers et dossiers dans &amp;lt;code&amp;gt;/etc/pve/&amp;lt;/code&amp;gt;. Si ce dossier est vide, c&#039;est probablement que votre fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; est mal configuré.&amp;lt;br&amp;gt;&lt;br /&gt;
Essayez de relancer &amp;lt;code&amp;gt;pve-cluster&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/pve-cluster restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez une erreur ou un warning, lancez la commande pmxcfs. Vous devriez obtenir ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$# pmxcfs &lt;br /&gt;
Jan 21 15:28:19 proxmox pmxcfs[1846]: Unable to get local IP address (pmxcfs.c:721:main)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez alors que le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est défini dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si par exemple &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; contient &amp;lt;code&amp;gt;proxmox.domain.tld&amp;lt;/code&amp;gt; vous devriez avoir la ligne suivante dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;VOTREIP proxmox.domain.tld proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pas assez d&#039;interfaces loopback==&lt;br /&gt;
&lt;br /&gt;
Créer le fichier &amp;lt;code&amp;gt;/etc/modprobe.d/local-loop.conf&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;options loop max_loop=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite redémarrer ou recharger le module loop :&lt;br /&gt;
&amp;lt;pre&amp;gt; rmmod loop &amp;amp;&amp;amp; modprobe loop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Défragmentation LVM : exemple==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hub:~# pvdisplay --maps&lt;br /&gt;
  --- Physical volume ---&lt;br /&gt;
  PV Name               /dev/sda4&lt;br /&gt;
  VG Name               main&lt;br /&gt;
  PV Size               1.76 TB / not usable 456.00 KB&lt;br /&gt;
  Allocatable           yes &lt;br /&gt;
  PE Size (KByte)       4096&lt;br /&gt;
  Total PE              461649&lt;br /&gt;
  Free PE               208721&lt;br /&gt;
  Allocated PE          252928&lt;br /&gt;
  PV UUID               PUqV5Q-WRW2-n20t-eFVM-CA1r-RhDl-2RTJHq&lt;br /&gt;
   &lt;br /&gt;
  --- Physical Segments ---&lt;br /&gt;
  Physical extent 0 to 7935:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-1&lt;br /&gt;
    Logical extents     0 to 7935&lt;br /&gt;
  Physical extent 7936 to 72191:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 72192 to 136703:&lt;br /&gt;
    Logical volume      /dev/main/vm-102-disk-1&lt;br /&gt;
    Logical extents     0 to 64511&lt;br /&gt;
  Physical extent 136704 to 144895:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-1&lt;br /&gt;
    Logical extents     0 to 8191&lt;br /&gt;
  Physical extent 144896 to 209151:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 209152 to 214271:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-1&lt;br /&gt;
    Logical extents     0 to 5119&lt;br /&gt;
  Physical extent 214272 to 227327:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-2&lt;br /&gt;
    Logical extents     0 to 13055&lt;br /&gt;
  Physical extent 227328 to 282111:&lt;br /&gt;
    FREE&lt;br /&gt;
  Physical extent 282112 to 307711:&lt;br /&gt;
    Logical volume      /dev/main/vm-108-disk-1&lt;br /&gt;
    Logical extents     0 to 25599&lt;br /&gt;
  Physical extent 307712 to 461648:&lt;br /&gt;
    FREE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir, on a un trou &amp;quot;vide&amp;quot; entre l&#039;extent &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; et 282111, puis à nouveau des données entre l&#039;extent &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour combler ce trou, nous allons déplacer les données des  /dev/main/vm-108-disk-1 situés entre les extents &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; (soit 25599 extents au total) vers l&#039;espace libre avec &amp;lt;code&amp;gt;pvmove&amp;lt;/code&amp;gt; :&amp;lt;br&amp;gt;&lt;br /&gt;
pvmove /dev/sda4:&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; /dev/sda4:&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt; --alloc anywhere&lt;br /&gt;
&lt;br /&gt;
Notez qu&#039;il faut attribuer exactement le même nombre d&#039;extents à la destination qu&#039;à l&#039;origine : &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; + 25599 = &amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Oups: j&#039;ai supprimé le mauvais lvm==&lt;br /&gt;
&lt;br /&gt;
Pas de panique, mais ne bougez plus ! Pour l&#039;instant, seul les métadonnées du lvm sont impactés.&lt;br /&gt;
Et comme c&#039;est bien foutu, lvm conserve un backup des anciennes metadonnées après chaque modification. Ces archives sont situés dans &amp;lt;code&amp;gt;/etc/lvm/archive/&amp;lt;/code&amp;gt;. Les fichiers y sont nommés sous la forme vg_XXXX-YYYYYYY.vg. Normalement, le fichier ayant le XXXX le plus élevé sera celui de l&#039;état précédent votre erreur.&lt;br /&gt;
Pour vérifier que vous avez sélectionné le bon fichier, vous pouvez l&#039;ouvrir avec nano et regarder si l&#039;état du lvm dans cette archive correspond a ce que vous attendez.&lt;br /&gt;
&lt;br /&gt;
Pour restaurer l&#039;archive des métadonnées main_00007-587941649.vg pour le vg main :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vgcfgrestore -f /etc/lvm/archive/main_00007-587941649.vg main&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Votre volume devrait être de retour.&lt;br /&gt;
&lt;br /&gt;
Il faut encore vérifier que la table de partition contenu sur ce lvm n&#039;a pas morphlé. En admettant que /dev/main/vm-101-disk-1 est la lvm que vous venez de restaurer :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez ça, c&#039;est bon, vous êtes sauvés ! Si ce n&#039;est pas le cas, continuez à lire ;)&lt;br /&gt;
&lt;br /&gt;
===Récupération de la table de partition===&lt;br /&gt;
&lt;br /&gt;
Si fdisk vous envois chier avec un message du style &amp;lt;code&amp;gt;Disk /dev/loop0 doesn&#039;t contain a valid partition table&amp;lt;/code&amp;gt;, il va falloir récupérer la table de partition.&lt;br /&gt;
&lt;br /&gt;
Installez testdisk :&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install testdisk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lancez le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# testdisk /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selectionez le media &amp;lt;code&amp;gt;/dev/loop0&amp;lt;/code&amp;gt; et validez avec &amp;lt;code&amp;gt;enter&amp;lt;/code&amp;gt;.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;intel&amp;lt;/code&amp;gt; comme type de table de partition.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;analyse&amp;lt;/code&amp;gt;&lt;br /&gt;
A l&#039;écran suivant, tapez enter.&lt;br /&gt;
Avec de la chance, testdisk retrouvera vos partitions. Une fois qu&#039;il aura terminé de travailler, il ne restera plus qu&#039;à taper sur enter encore une fois, puis demander à testdisk de sauvegarder la table de partition&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface proxmox n&#039;affiche pas les disques de certaines VMs==&lt;br /&gt;
&lt;br /&gt;
Ceci arrive typiquement si vous avez créé un volume logique à la main sans y ajouter le bon tag.&lt;br /&gt;
Vérifiez la présence des tags sur vos LV avec la commande &amp;lt;code&amp;gt;lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  20.00g &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous le voyez, le lv de la vm 101 n&#039;est pas tagué. Vous pouvez ajouter le tag avec &amp;lt;code&amp;gt;lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  16.00g pve-vm-101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas,  essayez de passer un petit coup de &amp;lt;code&amp;gt;qm rescan&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4398</id>
		<title>Proxmox 8</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4398"/>
		<updated>2025-10-03T11:19:33Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Protéger l&amp;#039;interface web avec fail2ban */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:virtualisation]]&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment installer proxmox 7.x sur un raid 1 logiciel (md / mdadm) avec debootstrap.&lt;br /&gt;
&lt;br /&gt;
=Prérequis=&lt;br /&gt;
&lt;br /&gt;
Ce tutoriel se base sur l&#039;utilisation de debootstrap pour installer une base de système d&#039;exploitation debian. La plupart des hébergeurs proposent un système de &amp;quot;rescue&amp;quot; permettant l&#039;installation de debian par ce moyen.&lt;br /&gt;
Si vous ne disposez pas de mode rescue, vous pouvez toujours utiliser l&#039;installeur proposé par votre hébergeur, ou encore passer par un kvm pour installer vous même le système avec l&#039;iso de debian.&lt;br /&gt;
&lt;br /&gt;
=Pour les débutants=&lt;br /&gt;
&lt;br /&gt;
Si vous êtes débutant en administration linux, je vous conseil de sauvegarder quelque part les fichier suivant issu d&#039;une précédente installation de debian ou de proxmox&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/networks&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt; si vous disposez d&#039;un raid logiciel&lt;br /&gt;
* tout fichier de personnalisation de grub (&amp;lt;code&amp;gt;/etc/grub.d/&amp;lt;/code&amp;gt; par exemple)&lt;br /&gt;
&lt;br /&gt;
Cela vous permettra de vous faire une idée plus précise de ce qui doit figurer dans ces différents fichiers.&lt;br /&gt;
&lt;br /&gt;
=Partitionnement et système de fichier=&lt;br /&gt;
&lt;br /&gt;
Voici le partitionnement que je vais utiliser :&lt;br /&gt;
* Partition root (/) de 20 Go (/) en raid 1 sur les disques sda et sdb&lt;br /&gt;
* Partitions swap de 4096 Go chacune réparties sur sda et sdb&lt;br /&gt;
* Le reste de l&#039;espace sera utilisé plus tard pour un LVM dédié aux VMs&lt;br /&gt;
&lt;br /&gt;
==Partitionnement==&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitionnement GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions EFI (ESP), obligatoire pour le démarrage EFI/UEFI. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF00&amp;lt;/code&amp;gt;. 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).&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour les partitions EFI, nous créons un système de fichier FAT32 avec le label (nom) &amp;lt;code&amp;gt;EFI_SYSPART&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sda1&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sdb1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitionnement GPT pour BIOS===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions pour le bootloader. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF02&amp;lt;/code&amp;gt;. On peut la créer idéalement du secteur 34 au secteur 2047 du disque.&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notez que la partition du bootloader ne doit pas être formatée.&lt;br /&gt;
&lt;br /&gt;
===Possibilité 3 : partitionnement MBR pour BIOS (non prise en charge dans ce wiki)===&lt;br /&gt;
&lt;br /&gt;
A titre informatif : création avec &amp;lt;code&amp;gt;parted&amp;lt;/code&amp;gt;, sans nécessité de créer une partition dédiée au bootloader/grub.&lt;br /&gt;
&lt;br /&gt;
==Création du RAID==&lt;br /&gt;
&lt;br /&gt;
Pour des raisons esthétiques, définissez l&#039;hostname de votre système de rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;hostname proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour créer votre raid 1 avec 2 disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que si vous souhaitez utiliser plus que 2 disques, il faut augmenter la valeur de &amp;lt;code&amp;gt;--raid-devices&amp;lt;/code&amp;gt; et ajouter les partitions des disques à la suite.&lt;br /&gt;
&lt;br /&gt;
Attendez que le raid soit synchronisé avant de continuer. Vous pouvez surveiller facilement cela avec la commande &amp;lt;code&amp;gt;watch cat /proc/mdstat&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Création des systèmes de fichiers==&lt;br /&gt;
&lt;br /&gt;
Créez un système de fichier ext4 pour le raid du root :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/md2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, initialisez les swaps :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkswap /dev/sda3&lt;br /&gt;
mkswap /dev/sdb3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Installation de proxmox=&lt;br /&gt;
&lt;br /&gt;
==Installation du système de base==&lt;br /&gt;
&lt;br /&gt;
Nous débutons par installer le système de base de Debian avec &amp;lt;code&amp;gt;debootstrap&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les paquets nécessaires dans votre rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install debootstrap debian-keyring debian-archive-keyring&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez votre partition raid root sur &amp;lt;code&amp;gt;/mnt&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/md2 /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez le système de base debian, version bookworm :&lt;br /&gt;
&amp;lt;pre&amp;gt;debootstrap --arch=amd64 bookworm /mnt http://ftp.fr.debian.org/debian&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration de Debian==&lt;br /&gt;
&lt;br /&gt;
Montez les vfs suivants, puis chrootez dans votre nouveau système debian :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount -o bind /proc /mnt/proc&lt;br /&gt;
mount -o bind /dev /mnt/dev&lt;br /&gt;
mount -o bind /dev/pts /mnt/dev/pts&lt;br /&gt;
mount -o bind /sys /mnt/sys&lt;br /&gt;
chroot /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les archives apt : éditez le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main archive&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# security updates&lt;br /&gt;
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# bookworm-updates, previously known as &#039;volatile&#039;&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# backports archive&lt;br /&gt;
deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour les paquets :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les locales et la configuration de console :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install locales &lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
apt install console-data console-setup-linux console-setup wget&lt;br /&gt;
dpkg-reconfigure console-data # from arch &amp;gt; french &amp;gt; latin9)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la zone horaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tzselect&lt;br /&gt;
dpkg-reconfigure tzdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez votre fichier &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Pour GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda1       /boot/efi       vfat    defaults                                  0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour GPT pour BIOS :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez la partition EFI / ESP dans le cas d&#039;un partitionnement GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /boot/efi&lt;br /&gt;
mount /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les interfaces réseaux dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The loopback network interface&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet static&lt;br /&gt;
        address XXXX/24&lt;br /&gt;
        gateway XXXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# local&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
::1             localhost ip6-localhost ip6-loopback&lt;br /&gt;
ff02::1         ip6-allnodes&lt;br /&gt;
ff02::2         ip6-allrouters&lt;br /&gt;
&lt;br /&gt;
# main&lt;br /&gt;
ipdelamachine   proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez les hostnames dans ces fichiers :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Pour celui la : non-fqdn&lt;br /&gt;
echo proxmox &amp;gt; /etc/hostname&lt;br /&gt;
# Pour celui la : fqdn&lt;br /&gt;
echo proxmox.domain.tld &amp;gt; /etc/mailname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION&#039;&#039;&#039; Le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; DOIT être cohérent avec le fichier &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, si le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est &amp;lt;code&amp;gt;proxmox&amp;lt;/code&amp;gt; et que l&#039;ip de votre proxmox est 225.182.54.9 il faudra veiller a avoir les informations suivantes dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1 localhost&lt;br /&gt;
225.182.54.9 proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attention : n&#039;utilisez pas 127.0.1.1 (comme le fait debian) mais bien la vrai ip (ici 225.182.54.9)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
N&#039;oubliez pas de configurer les dns (ceux de votre hébergeur dédié) dans &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;nameserver XX.XX.XX.XX&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez postfix :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install postfix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, comme nous installons notre partition de boot sur un raid software, il faut installer &amp;lt;code&amp;gt;madadm&amp;lt;/code&amp;gt; à ce stade :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install mdadm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez si votre array root s&#039;est bien défini automatiquement dans &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt;. Si ce n&#039;est pas me cas, ajoutez la configuration de l&#039;array manuellement :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - kernel==&lt;br /&gt;
&lt;br /&gt;
Ajoutez le dépot proxmox dans le fichier /etc/apt/source.list :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use&lt;br /&gt;
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajoutez la clé du dépôt proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour le système :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitions GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Vérifiez que &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt; est bien monté. Si ce n&#039;est pas le cas, faites le.&lt;br /&gt;
&lt;br /&gt;
Installez le kernel proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-efi-amd64 gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supprimez les paquets suivant si vous n&#039;avez pas besoin de secureboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed shim-signed-common shim-unsigned&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normalement tout doit se faire avec des promps. Si ce n&#039;était pas le cas :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si jamais vous utilisez un démarrage en PXE (c&#039;est le cas sur un serveur OVH par exemple), utilisez l&#039;argument &amp;lt;code&amp;gt;--no-nvram&amp;lt;/code&amp;gt; pour empêcher grub de mettre à jour la NVRAM et casser votre mécanique de démarrage PXE :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox --no-nvram&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Etant donné que seul &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; est monté sur &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt;, il faut transférer manuellement les données sur &amp;lt;code&amp;gt;/dev/sdb1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/sdb1 /mnt&lt;br /&gt;
rsync -av /boot/efi/ /mnt/&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si pour une raison quelconque, vous aviez besoin des headers du kernel :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install pve-headers-5.15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitions GPT pour BIOS OU Partitions MBR pour BIOS===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-pc gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on vous demandera où installer grub, choisissez &amp;lt;code&amp;gt;sda&amp;lt;/code&amp;gt; ET &amp;lt;code&amp;gt;sdb&amp;lt;/code&amp;gt;. Sinon :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-install /dev/sda&lt;br /&gt;
grub-install /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - OpenSSH==&lt;br /&gt;
&lt;br /&gt;
Installez openssh et définissez un password root. Autorisez le login root par password temporairement.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install openssh-server&lt;br /&gt;
passwd&lt;br /&gt;
sed -i &amp;quot;s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g&amp;quot; /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - Vérifications finales et redémarrage sur le kernel proxmox==&lt;br /&gt;
&lt;br /&gt;
Si vous avez une configuration particulière à entrer dans &amp;lt;code&amp;gt;/etc/default/grub&amp;lt;/code&amp;gt;, faites le maintenant. Par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;nomodeset iommu=pt&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis régénérez la configuration de grub :&lt;br /&gt;
&amp;lt;pre&amp;gt;update-grub&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez vérifier que votre fstab est valide avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;findmnt --verify --verbose&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /boot/efi/&lt;br /&gt;
exit&lt;br /&gt;
umount /mnt/sys&lt;br /&gt;
umount /mnt/dev/pts&lt;br /&gt;
umount /mnt/dev&lt;br /&gt;
umount /mnt/proc&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, redémarrez le serveur sur le disque dur.&lt;br /&gt;
&lt;br /&gt;
==Installation de ifupdown2==&lt;br /&gt;
&lt;br /&gt;
Le paquet &amp;lt;code&amp;gt;ifupdown2&amp;lt;/code&amp;gt; est en voie de devenir le remplaçant officiel de &amp;lt;code&amp;gt;ifupdown&amp;lt;/code&amp;gt; pour proxmox.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ifupdown2&lt;br /&gt;
apt purge ifupdown&lt;br /&gt;
systemctl enable networking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que votre configuration est fonctionnelle : lancez &amp;lt;code&amp;gt;ifquery -a&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrez à nouveau votre serveur&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - pve==&lt;br /&gt;
&lt;br /&gt;
Une fois le redémarrage effectué, vous allez enfin pouvoir installer pve :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install proxmox-ve ksm-control-daemon chrony&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;apt remove os-prober&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editez la configuration réseau &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; afin d&#039;y créer votre bridge :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet manual&lt;br /&gt;
&lt;br /&gt;
auto vmbr0&lt;br /&gt;
iface vmbr0 inet static&lt;br /&gt;
        address xxxxx/24&lt;br /&gt;
        gateway xxxx&lt;br /&gt;
        hwaddress AA:BB:CC:11:22:33&lt;br /&gt;
        bridge_ports eno3&lt;br /&gt;
        bridge_stp off&lt;br /&gt;
        bridge_fd 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la ligne &amp;lt;code&amp;gt;hwaddress&amp;lt;/code&amp;gt; avec l&#039;adresse MAC de l&#039;interface eno3.&lt;br /&gt;
&lt;br /&gt;
Installez votre clé SSH dans &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; puis désactivez le login root par password de OpenSSH dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois tout installé, je vous conseille de reconfigurer grub afin de mettre à jour la configuration interne de debian:&lt;br /&gt;
* Pour EFI : &amp;lt;code&amp;gt;dpkg-reconfigure grub-efi-amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pour BIOS : &amp;lt;code&amp;gt;dpkg-reconfigure grub-pc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrez une dernière fois pour appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
Votre proxmox sera accessible à l&#039;adresse https://ip:8006&lt;br /&gt;
&lt;br /&gt;
==Nettoyage des paquets==&lt;br /&gt;
&lt;br /&gt;
Si vous ne comptez pas utiliser ZFS, vous pouvez supprimer les paquets suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge zfs-zed libnvpair3linux libuutil3linux libzfs4linux libzpool5linux zfsutils-linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration réseau avancée==&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;une IPv6 sur vmbr0===&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;un réseau interne vmbr1===&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment créer un réseau interne avec proxmox, c&#039;est à dire, un réseau qui ne sera attaché à aucune interface réseau physique. L&#039;intérêt est d&#039;offrir un débit bien supérieur pour les communications entre les VMs.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto vmbr1&lt;br /&gt;
iface vmbr1 inet static&lt;br /&gt;
        address  192.168.0.1&lt;br /&gt;
        netmask  255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : vous pouvez faire de même en ipv6 :&lt;br /&gt;
* il faut utiliser le range Unique Local Address (ULA) fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address)&lt;br /&gt;
* pour générer votre ULA : http://pfoo.unscdf.org/ula/gen-ula.html&lt;br /&gt;
&lt;br /&gt;
==Sécurisation de base==&lt;br /&gt;
&lt;br /&gt;
Je vous conseil de commencer à sécuriser votre ssh :&lt;br /&gt;
* désactivez le login root (directive &amp;lt;code&amp;gt;PermitRootLogin no&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;). Pensez néanmoins à créer un utilisateur pour vous connecter en ssh avant de désactiver le login root.&lt;br /&gt;
* utilisez la directive &amp;lt;code&amp;gt;allowusers &amp;lt;user&amp;gt;&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; pour n&#039;autoriser que certains utilisateurs à se connecter en ssh.&lt;br /&gt;
&lt;br /&gt;
Il est aussi préférable d&#039;installer le serveur de temps NTP à la place de systemd-timesyncd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install chrony&lt;br /&gt;
apt purge systemd-timesyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configurer le serveur mail postfix=&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
==Certificats SSL==&lt;br /&gt;
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. Si ce n&#039;est pas le cas, vous pouvez toujours aller lire [http://wiki.unscdf.org/index.php?title=Installation_et_configuration_de_OpenSSL ceci] afin d&#039;apprendre à créer votre autorité ssl.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/ssl/openssl.cnf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[POSTFIX]&lt;br /&gt;
nsComment                       = &amp;quot;SMTP Server Certificate&amp;quot;&lt;br /&gt;
subjectKeyIdentifier            = hash&lt;br /&gt;
authorityKeyIdentifier          = keyid,issuer:always&lt;br /&gt;
issuerAltName                   = issuer:copy&lt;br /&gt;
basicConstraints                = critical,CA:FALSE&lt;br /&gt;
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment&lt;br /&gt;
nsCertType                      = server&lt;br /&gt;
extendedKeyUsage                = serverAuth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis générez la clé et le certificat, et signez le avec votre autorité (int_ca dans mon cas) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req&lt;br /&gt;
openssl ca -config /etc/ssl/openssl.cnf -name int_ca -extensions POSTFIX -in postfix.req -out postfix.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Déplacez les fichiers dans le répertoire &amp;lt;code&amp;gt;/etc/postfix/ssl&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/postfix/ssl&lt;br /&gt;
mv postfix.key /etc/postfix/ssl/&lt;br /&gt;
mv postfix.pem /etc/postfix/ssl/&lt;br /&gt;
chmod 600 /etc/postfix/ssl/*&lt;br /&gt;
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/int_ca/int_ca.pem &amp;gt; /etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut encore modifier &amp;lt;code&amp;gt;/etc/postfix/main.cf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smtpd_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtpd_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
smtpd_use_tls=yes&lt;br /&gt;
smtp_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtp_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&lt;br /&gt;
smtpd_tls_security_level=may&lt;br /&gt;
smtp_tls_security_level=may&lt;br /&gt;
smtpd_tls_loglevel = 1&lt;br /&gt;
smtp_tls_loglevel = 1&lt;br /&gt;
&lt;br /&gt;
#smtp_tls_policy_maps = hash:/etc/postfix/tls_policy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire=&lt;br /&gt;
&lt;br /&gt;
Depuis Proxmox 5.2, il n&#039;est plus recommandé d&#039;adapter manuellement les fichiers contenant les certificats et clés privés de proxmox.&amp;lt;br&amp;gt;&lt;br /&gt;
Cependant, vous pouvez placer directement votre clé privé dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.key&amp;lt;/code&amp;gt; et la chaîne de certification dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.pem&amp;lt;/code&amp;gt;. Vous pouvez également déposer ces fichiers via la webui de proxmox au niveau de chaque serveur.&lt;br /&gt;
&lt;br /&gt;
=Surveiller l&#039;état des disques avec SMART=&lt;br /&gt;
&lt;br /&gt;
Commencez par installer le paquet smartmontools :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install smartmontools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez que vos disques gèrent smart et qu&#039;il est activé :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -i /dev/sda&lt;br /&gt;
smartctl -i /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si smart n&#039;est pas activé, essayez de l&#039;activer comme ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -s on /dev/sda&lt;br /&gt;
smartctl -s on /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez le statut de santé de vos disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -H /dev/sda&lt;br /&gt;
smartctl -H /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
S&#039;il indique &amp;lt;code&amp;gt;PASSED&amp;lt;/code&amp;gt; c&#039;est bon de ce côté. S&#039;il vous indique &amp;lt;code&amp;gt;FAILED&amp;lt;/code&amp;gt;, sauvegardez immédiatement vos données !&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence d&#039;erreurs dans le log smart :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -l error /dev/sda&lt;br /&gt;
smartctl -l error /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez &amp;lt;code&amp;gt;No Errors Logged&amp;lt;/code&amp;gt; ou quelques erreurs, c&#039;est bon. S&#039;il y eu a beaucoup, il faut envisager de changer le disque.&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration de smartd est &amp;lt;code&amp;gt;/etc/smartd.conf&amp;lt;/code&amp;gt;. Commentez la ligne &amp;lt;code&amp;gt;DEVICESCAN&amp;lt;/code&amp;gt; puis ajoutez les lignes suivantes pour surveiller les deux disques durs :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
/dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous activons la surveillance globale (&amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt;), la vérification automatique offline, (&amp;lt;code&amp;gt;-o on&amp;lt;/code&amp;gt;), la sauvegarde automatique des attributs (&amp;lt;code&amp;gt;-S on&amp;lt;/code&amp;gt; et lançons un &amp;lt;code&amp;gt;short self test&amp;lt;/code&amp;gt; tous les jours à 2h du matin, et un &amp;lt;code&amp;gt;long self test&amp;lt;/code&amp;gt; tous les samedi à 3h du matin. Si des erreurs sont détectés, un email est envoyé à vous@domain.tld.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez smartd :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/smartmontools restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;information sur SMART et ses arguments : [[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
&lt;br /&gt;
=Protégez votre proxmox=&lt;br /&gt;
&lt;br /&gt;
==Désactiver le login root sur l&#039;interface proxmox==&lt;br /&gt;
Avant toute manipulation, n&#039;oubliez pas de créer un utilisateur ayant les droits d&#039;administration pour accéder à l&#039;interface de proxmox&lt;br /&gt;
&lt;br /&gt;
===Via l&#039;interface proxmox===&lt;br /&gt;
Dans Datacenter &amp;gt; Permissions &amp;gt; Users : Editez l&#039;utilisateur root et décochez la case &amp;lt;code&amp;gt;Enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Via les droits linux===&lt;br /&gt;
&amp;lt;pre&amp;gt;passwd --lock root&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 !&lt;br /&gt;
&lt;br /&gt;
===Via PAM===&lt;br /&gt;
Vous pouvez désactiver le login pam en éditant &amp;lt;code&amp;gt;/etc/pam.d/other&amp;lt;/code&amp;gt; et en y ajoutant, en début de fichier, les lignes suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth        required    pam_deny.so&lt;br /&gt;
auth        required    pam_warn.so&lt;br /&gt;
account     required    pam_deny.so&lt;br /&gt;
account     required    pam_warn.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attention, cette méthode peut avoir des effets de bord si d&#039;autres programmes utilisent l&#039;entité pam/other&lt;br /&gt;
&lt;br /&gt;
==Désactiver rpcbind==&lt;br /&gt;
&lt;br /&gt;
Si vous n&#039;utilisez pas de montage NFS vous pouvez désactiver rpcbind.&amp;lt;br&amp;gt;&lt;br /&gt;
Editez &amp;lt;code&amp;gt;/etc/default/nfs-common&amp;lt;/code&amp;gt; et passez l&#039;argument suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;NEED_STATD=no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis désactivez rpcbind :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable rpcbind.target&lt;br /&gt;
systemctl disable rpcbind.socket&lt;br /&gt;
systemctl disable rpcbind.service&lt;br /&gt;
systemctl stop rpcbind.target&lt;br /&gt;
systemctl stop rpcbind.socket&lt;br /&gt;
systemctl stop rpcbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eviter les reboots accidentels avec molly-gard==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install molly-guard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Protection SSH avec sshguard==&lt;br /&gt;
&lt;br /&gt;
[[Protéger SSH avec sshguard]]&lt;br /&gt;
&lt;br /&gt;
==Protéger l&#039;interface web avec fail2ban==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install fail2ban&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/jail.local&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
# &amp;quot;ignoreip&amp;quot; can be an IP address, a CIDR mask or a DNS host&lt;br /&gt;
ignoreip = 127.0.0.1&lt;br /&gt;
bantime  = 1800&lt;br /&gt;
maxretry = 3&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Destination email address used solely for the interpolations in&lt;br /&gt;
# jail.{conf,local} configuration files.&lt;br /&gt;
destemail = root@localhost&lt;br /&gt;
&lt;br /&gt;
action = %(action_mwl)s&lt;br /&gt;
&lt;br /&gt;
[ssh]&lt;br /&gt;
enabled = false&lt;br /&gt;
&lt;br /&gt;
[sshd]&lt;br /&gt;
enabled  = false&lt;br /&gt;
&lt;br /&gt;
[proxmox]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = https,http,8006&lt;br /&gt;
filter = proxmox&lt;br /&gt;
backend = systemd&lt;br /&gt;
maxretry = 4&lt;br /&gt;
findtime = 2d&lt;br /&gt;
bantime = 1h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/filter.d/proxmox.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Definition]&lt;br /&gt;
failregex = pvedaemon\[.*authentication failure; rhost=&amp;lt;HOST&amp;gt; user=.* msg=.*&lt;br /&gt;
ignoreregex =&lt;br /&gt;
journalmatch = _SYSTEMD_UNIT=pvedaemon.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez fail2ban :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/fail2ban restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==firewall iptables==&lt;br /&gt;
&lt;br /&gt;
=Création d&#039;un stockage pour les VMs=&lt;br /&gt;
&lt;br /&gt;
Créez les partitions sda4 et sdb4 au moyen de gdisk (EFI) ou parted (BIOS).&lt;br /&gt;
&lt;br /&gt;
Créez sur ces partitions un raid :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create --verbose /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenez à jour &amp;lt;code&amp;gt;mdadm.conf&amp;lt;/code&amp;gt; et votre initramfs afin de conserver le bon naming du raid après reboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
update-initramfs -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis initialisez-y un LVM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvcreate /dev/md4&lt;br /&gt;
vgcreate main /dev/md4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu&#039;a déclarer ce Volume Group LVM dans l&#039;interface proxmox.&lt;br /&gt;
&lt;br /&gt;
=VM qemu/kvm=&lt;br /&gt;
&lt;br /&gt;
==Télécharger vos images==&lt;br /&gt;
&lt;br /&gt;
Vous pouvez placer les iso dans &amp;lt;code&amp;gt;/var/lib/vz/template/iso/&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt; par exemple.&lt;br /&gt;
Notez que l&#039;interface graphique de proxmox propose également une fonction d&#039;upload.&lt;br /&gt;
&lt;br /&gt;
==Créer votre première VM==&lt;br /&gt;
&lt;br /&gt;
Une fois la VM crées dans l&#039;interface proxmox, je vous recommande d&#039;écrire des zero sur son disque afin de réduire la taille des futurs backups. Si votre vm porte le numéro 100 et possède un seul disque :&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/zero | pv -ptrb | dd of=/dev/main/vm-100-disk1 bs=1M&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr0 (ip public)===&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr1 (ip locale)===&lt;br /&gt;
&lt;br /&gt;
Configuration réseau de la VM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.0.2&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
gateway 192.168.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Règle iptables à ajouter sur l&#039;hôte :&lt;br /&gt;
&amp;lt;pre&amp;gt;iptables -t nat -A POSTROUTING -s 192.168.0.2 -o vmbr0 -j SNAT --to IP-PUBLIC-DE-VOTRE-HOTE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez rendre accessible l&#039;un des services de la VM depuis l&#039;ip de l&#039;hote sur un port sépcifique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -t nat -A PREROUTING -p tcp -d &amp;lt;ip de l&#039;hote&amp;gt; --dport &amp;lt;port souhaité&amp;gt; -i vmbr0 -j DNAT --to-destination 192.168.0.2:port&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bloquer le spoofing d&#039;adresse mac==&lt;br /&gt;
Sur l&#039;hyperviseur, installez &amp;lt;code&amp;gt;ebtables&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install ebtables&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Admettons ensuite que votre VM a comme adresse ip &amp;lt;code&amp;gt;84.93.26.3&amp;lt;/code&amp;gt; et que son adresse mac doit être &amp;lt;code&amp;gt;52:54:00:00:98:b6&amp;lt;/code&amp;gt; : &lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv4 --ip-src 84.93.26.3 -s ! 52:54:00:00:98:b6 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez faire de même pour l&#039;ipv6. Dans l&#039;exemple suivant, seul le bloc ipv6 &amp;lt;code&amp;gt;2a01:d4h:123b:100::/56&amp;lt;/code&amp;gt; est utilisable par la vm :&lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv6 --ip6-src 2a01:d4h:123b:100::/56 -s ! 52:54:00:00:08:b1 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Importer une VM depuis vmware ESXi==&lt;br /&gt;
&lt;br /&gt;
==qm et modification des VMs en ligne de commande==&lt;br /&gt;
&lt;br /&gt;
==Monter les partitions d&#039;une VM depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pour la partition 1 : start*blocksize = offset&lt;br /&gt;
donc 2048*512 = 1048576&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;losetup /dev/loop1 -o 1048576 /dev/main/vm-101-disk-1 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et enfin :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount /dev/loop1 /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé vos modifications :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /mnt&lt;br /&gt;
losetup -d /dev/loop1&lt;br /&gt;
losetup -d /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Si la partition que vous voulez monter est un LVM===&lt;br /&gt;
&lt;br /&gt;
Scannez les nouveaux volumes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm pvscan&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activez les groupes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm vgchange -ay&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
listez les lvms avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm lvs&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les LV devraient apparaître dans &amp;lt;code&amp;gt;/dev/mapper/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé :&lt;br /&gt;
* démontez les LV&lt;br /&gt;
* Désactivez le groupe avec &amp;lt;code&amp;gt;vgchange -an&amp;lt;/code&amp;gt;&lt;br /&gt;
* désactivez le loopback : &amp;lt;code&amp;gt;losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Augmenter la taille du disque d&#039;une VM==&lt;br /&gt;
&lt;br /&gt;
Coupez la VM.&lt;br /&gt;
&lt;br /&gt;
Sur l&#039;host pour modifier la taille du disque 1 de la vm 110 ) 140G :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvextend -L 140G /dev/main/vm-110-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut ensuite, sur la vm lancée, utiliser resize2fs&lt;br /&gt;
&lt;br /&gt;
==Migrer une VM vers un autre serveur manuellement (pas de cluster) avec un downtime minimum==&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment migrer une VM proxmox stockée sur un LVM d&#039;un serveur à un autre, et ce, en minimisant au maximum le downtime. Pour cela, nous allons coupler la fonctionnalité de snapshot de lvm avec un petit script (lvmsync) qui permet de ne transférer que les blocs modifiés d&#039;un snapshot.&lt;br /&gt;
&lt;br /&gt;
Installez dmsetup et ruby (1.8 minimum) sur le serveur d&#039;origine et de destination :&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install dmsetup ruby&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Récupérez &amp;lt;code&amp;gt;lvmsync&amp;lt;/code&amp;gt; sur https://github.com/mpalmer/lvmsync et placez le dans /sbin/ sur les serveurs d&#039;origine et de destination.&lt;br /&gt;
&lt;br /&gt;
Dans cet exemple, nous allons migrer la vm 102 disposant d&#039;un seul disque virtuel nommé vm-102-disk-1 et stocké dans le vg main du serveur server1.domain.tld vers le serveur server2.domain.tld.&lt;br /&gt;
Pour commencer, créez un snapshot de votre vm sur server1 :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvcreate --snapshot -L200G -n 102-lvmsync main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Désormais, tous les io de cette vm seront stockés dans le snapshot 102-lvmsync.&lt;br /&gt;
&lt;br /&gt;
Sur votre nouveau serveur, créez une VM identique à celle de votre premier serveur (surtout en qui concerne la taille de disque).&lt;br /&gt;
Depuis server1, copiez avec un dd over ssh le disque d&#039;origine de votre vm vers votre nouveau serveur.&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/main/vm-102-disk-1 | pv -ptrb | ssh -o &amp;quot;Compression no&amp;quot; root@server2.domain.tld &amp;quot;dd of=/dev/main/vm-102-disk-1 bs=100M&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : sur un réseauu 100Mbps utilisez plutôt &amp;lt;code&amp;gt;-o &amp;quot;Compressionlevel 1&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois la copie terminée, coupez la vm 102 sur server1, puis lancez lvmsync sur le snapshot (toujours sur server1) :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvmsync /dev/main/102-lvmsync server2.domain.tld:/dev/main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois le travail de lvmsync achevé, il ne nous reste plus qu&#039;a relancer la vm sur server2&lt;br /&gt;
&lt;br /&gt;
A titre d&#039;information, si vous voulez merger le snapshot de la vm 102 sur server 1, tapez :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvconvert --merge /dev/main/102-lvmsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conteneur LXC=&lt;br /&gt;
&lt;br /&gt;
==Empêcher la mise à jour automatique de certains fichiers de configuration système du conteneur==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
On peut empêcher la mise à jour de ces fichiers en créant un fichier &amp;lt;code&amp;gt;.pve-ignore.NOM&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, &amp;lt;code&amp;gt;/etc/.pve-ignore.resolv.conf&amp;lt;/code&amp;gt; empêchera le fichier &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; d&#039;être mis à jour à chaque démarrage.&lt;br /&gt;
&lt;br /&gt;
=Annexes=&lt;br /&gt;
&lt;br /&gt;
==Problème de layout dans la console vnc==&lt;br /&gt;
Dans l&#039;interface web de proxmox : datacenter &amp;gt; option &amp;gt; passez Keyboard de &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; à &amp;lt;code&amp;gt;French&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Erreurs du type &amp;lt;code&amp;gt;IPv6 addrconf: prefix with wrong length 56&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64.&lt;br /&gt;
Ajouter les lignes suivantes dans un fichier &amp;lt;code&amp;gt;/etc/sysctl.d/local.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
net.ipv6.conf.all.autoconf = 0&lt;br /&gt;
net.ipv6.conf.default.autoconf = 0&lt;br /&gt;
net.ipv6.conf.eno3.autoconf = 0&lt;br /&gt;
net.ipv6.conf.vmbr0.autoconf = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Terminez par relancer procps :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/procps restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==paramètre sysctl ipv6 non appliqué au boot==&lt;br /&gt;
Ajoutez le module ipv6 dans /etc/modules afin d&#039;assurer le chargement d&#039;ipv6 avant l’exécution de sysctl :&lt;br /&gt;
&amp;lt;pre&amp;gt;echo ipv6 &amp;gt;&amp;gt; /etc/modules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LVM inaccessible depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lvm pvscan&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface web ne fonctionne pas et la commande qm retourne une erreur ipcc_send_rec failed: Connection refused==&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence de fichiers et dossiers dans &amp;lt;code&amp;gt;/etc/pve/&amp;lt;/code&amp;gt;. Si ce dossier est vide, c&#039;est probablement que votre fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; est mal configuré.&amp;lt;br&amp;gt;&lt;br /&gt;
Essayez de relancer &amp;lt;code&amp;gt;pve-cluster&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/pve-cluster restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez une erreur ou un warning, lancez la commande pmxcfs. Vous devriez obtenir ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$# pmxcfs &lt;br /&gt;
Jan 21 15:28:19 proxmox pmxcfs[1846]: Unable to get local IP address (pmxcfs.c:721:main)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez alors que le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est défini dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si par exemple &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; contient &amp;lt;code&amp;gt;proxmox.domain.tld&amp;lt;/code&amp;gt; vous devriez avoir la ligne suivante dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;VOTREIP proxmox.domain.tld proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pas assez d&#039;interfaces loopback==&lt;br /&gt;
&lt;br /&gt;
Créer le fichier &amp;lt;code&amp;gt;/etc/modprobe.d/local-loop.conf&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;options loop max_loop=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite redémarrer ou recharger le module loop :&lt;br /&gt;
&amp;lt;pre&amp;gt; rmmod loop &amp;amp;&amp;amp; modprobe loop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Défragmentation LVM : exemple==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hub:~# pvdisplay --maps&lt;br /&gt;
  --- Physical volume ---&lt;br /&gt;
  PV Name               /dev/sda4&lt;br /&gt;
  VG Name               main&lt;br /&gt;
  PV Size               1.76 TB / not usable 456.00 KB&lt;br /&gt;
  Allocatable           yes &lt;br /&gt;
  PE Size (KByte)       4096&lt;br /&gt;
  Total PE              461649&lt;br /&gt;
  Free PE               208721&lt;br /&gt;
  Allocated PE          252928&lt;br /&gt;
  PV UUID               PUqV5Q-WRW2-n20t-eFVM-CA1r-RhDl-2RTJHq&lt;br /&gt;
   &lt;br /&gt;
  --- Physical Segments ---&lt;br /&gt;
  Physical extent 0 to 7935:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-1&lt;br /&gt;
    Logical extents     0 to 7935&lt;br /&gt;
  Physical extent 7936 to 72191:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 72192 to 136703:&lt;br /&gt;
    Logical volume      /dev/main/vm-102-disk-1&lt;br /&gt;
    Logical extents     0 to 64511&lt;br /&gt;
  Physical extent 136704 to 144895:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-1&lt;br /&gt;
    Logical extents     0 to 8191&lt;br /&gt;
  Physical extent 144896 to 209151:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 209152 to 214271:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-1&lt;br /&gt;
    Logical extents     0 to 5119&lt;br /&gt;
  Physical extent 214272 to 227327:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-2&lt;br /&gt;
    Logical extents     0 to 13055&lt;br /&gt;
  Physical extent 227328 to 282111:&lt;br /&gt;
    FREE&lt;br /&gt;
  Physical extent 282112 to 307711:&lt;br /&gt;
    Logical volume      /dev/main/vm-108-disk-1&lt;br /&gt;
    Logical extents     0 to 25599&lt;br /&gt;
  Physical extent 307712 to 461648:&lt;br /&gt;
    FREE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir, on a un trou &amp;quot;vide&amp;quot; entre l&#039;extent &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; et 282111, puis à nouveau des données entre l&#039;extent &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour combler ce trou, nous allons déplacer les données des  /dev/main/vm-108-disk-1 situés entre les extents &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; (soit 25599 extents au total) vers l&#039;espace libre avec &amp;lt;code&amp;gt;pvmove&amp;lt;/code&amp;gt; :&amp;lt;br&amp;gt;&lt;br /&gt;
pvmove /dev/sda4:&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; /dev/sda4:&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt; --alloc anywhere&lt;br /&gt;
&lt;br /&gt;
Notez qu&#039;il faut attribuer exactement le même nombre d&#039;extents à la destination qu&#039;à l&#039;origine : &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; + 25599 = &amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Oups: j&#039;ai supprimé le mauvais lvm==&lt;br /&gt;
&lt;br /&gt;
Pas de panique, mais ne bougez plus ! Pour l&#039;instant, seul les métadonnées du lvm sont impactés.&lt;br /&gt;
Et comme c&#039;est bien foutu, lvm conserve un backup des anciennes metadonnées après chaque modification. Ces archives sont situés dans &amp;lt;code&amp;gt;/etc/lvm/archive/&amp;lt;/code&amp;gt;. Les fichiers y sont nommés sous la forme vg_XXXX-YYYYYYY.vg. Normalement, le fichier ayant le XXXX le plus élevé sera celui de l&#039;état précédent votre erreur.&lt;br /&gt;
Pour vérifier que vous avez sélectionné le bon fichier, vous pouvez l&#039;ouvrir avec nano et regarder si l&#039;état du lvm dans cette archive correspond a ce que vous attendez.&lt;br /&gt;
&lt;br /&gt;
Pour restaurer l&#039;archive des métadonnées main_00007-587941649.vg pour le vg main :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vgcfgrestore -f /etc/lvm/archive/main_00007-587941649.vg main&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Votre volume devrait être de retour.&lt;br /&gt;
&lt;br /&gt;
Il faut encore vérifier que la table de partition contenu sur ce lvm n&#039;a pas morphlé. En admettant que /dev/main/vm-101-disk-1 est la lvm que vous venez de restaurer :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez ça, c&#039;est bon, vous êtes sauvés ! Si ce n&#039;est pas le cas, continuez à lire ;)&lt;br /&gt;
&lt;br /&gt;
===Récupération de la table de partition===&lt;br /&gt;
&lt;br /&gt;
Si fdisk vous envois chier avec un message du style &amp;lt;code&amp;gt;Disk /dev/loop0 doesn&#039;t contain a valid partition table&amp;lt;/code&amp;gt;, il va falloir récupérer la table de partition.&lt;br /&gt;
&lt;br /&gt;
Installez testdisk :&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install testdisk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lancez le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# testdisk /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selectionez le media &amp;lt;code&amp;gt;/dev/loop0&amp;lt;/code&amp;gt; et validez avec &amp;lt;code&amp;gt;enter&amp;lt;/code&amp;gt;.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;intel&amp;lt;/code&amp;gt; comme type de table de partition.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;analyse&amp;lt;/code&amp;gt;&lt;br /&gt;
A l&#039;écran suivant, tapez enter.&lt;br /&gt;
Avec de la chance, testdisk retrouvera vos partitions. Une fois qu&#039;il aura terminé de travailler, il ne restera plus qu&#039;à taper sur enter encore une fois, puis demander à testdisk de sauvegarder la table de partition&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface proxmox n&#039;affiche pas les disques de certaines VMs==&lt;br /&gt;
&lt;br /&gt;
Ceci arrive typiquement si vous avez créé un volume logique à la main sans y ajouter le bon tag.&lt;br /&gt;
Vérifiez la présence des tags sur vos LV avec la commande &amp;lt;code&amp;gt;lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  20.00g &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous le voyez, le lv de la vm 101 n&#039;est pas tagué. Vous pouvez ajouter le tag avec &amp;lt;code&amp;gt;lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  16.00g pve-vm-101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas,  essayez de passer un petit coup de &amp;lt;code&amp;gt;qm rescan&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4397</id>
		<title>Proxmox 8</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4397"/>
		<updated>2025-10-03T11:18:49Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Protéger l&amp;#039;interface web avec fail2ban */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:virtualisation]]&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment installer proxmox 7.x sur un raid 1 logiciel (md / mdadm) avec debootstrap.&lt;br /&gt;
&lt;br /&gt;
=Prérequis=&lt;br /&gt;
&lt;br /&gt;
Ce tutoriel se base sur l&#039;utilisation de debootstrap pour installer une base de système d&#039;exploitation debian. La plupart des hébergeurs proposent un système de &amp;quot;rescue&amp;quot; permettant l&#039;installation de debian par ce moyen.&lt;br /&gt;
Si vous ne disposez pas de mode rescue, vous pouvez toujours utiliser l&#039;installeur proposé par votre hébergeur, ou encore passer par un kvm pour installer vous même le système avec l&#039;iso de debian.&lt;br /&gt;
&lt;br /&gt;
=Pour les débutants=&lt;br /&gt;
&lt;br /&gt;
Si vous êtes débutant en administration linux, je vous conseil de sauvegarder quelque part les fichier suivant issu d&#039;une précédente installation de debian ou de proxmox&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/networks&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt; si vous disposez d&#039;un raid logiciel&lt;br /&gt;
* tout fichier de personnalisation de grub (&amp;lt;code&amp;gt;/etc/grub.d/&amp;lt;/code&amp;gt; par exemple)&lt;br /&gt;
&lt;br /&gt;
Cela vous permettra de vous faire une idée plus précise de ce qui doit figurer dans ces différents fichiers.&lt;br /&gt;
&lt;br /&gt;
=Partitionnement et système de fichier=&lt;br /&gt;
&lt;br /&gt;
Voici le partitionnement que je vais utiliser :&lt;br /&gt;
* Partition root (/) de 20 Go (/) en raid 1 sur les disques sda et sdb&lt;br /&gt;
* Partitions swap de 4096 Go chacune réparties sur sda et sdb&lt;br /&gt;
* Le reste de l&#039;espace sera utilisé plus tard pour un LVM dédié aux VMs&lt;br /&gt;
&lt;br /&gt;
==Partitionnement==&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitionnement GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions EFI (ESP), obligatoire pour le démarrage EFI/UEFI. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF00&amp;lt;/code&amp;gt;. 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).&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour les partitions EFI, nous créons un système de fichier FAT32 avec le label (nom) &amp;lt;code&amp;gt;EFI_SYSPART&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sda1&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sdb1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitionnement GPT pour BIOS===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions pour le bootloader. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF02&amp;lt;/code&amp;gt;. On peut la créer idéalement du secteur 34 au secteur 2047 du disque.&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notez que la partition du bootloader ne doit pas être formatée.&lt;br /&gt;
&lt;br /&gt;
===Possibilité 3 : partitionnement MBR pour BIOS (non prise en charge dans ce wiki)===&lt;br /&gt;
&lt;br /&gt;
A titre informatif : création avec &amp;lt;code&amp;gt;parted&amp;lt;/code&amp;gt;, sans nécessité de créer une partition dédiée au bootloader/grub.&lt;br /&gt;
&lt;br /&gt;
==Création du RAID==&lt;br /&gt;
&lt;br /&gt;
Pour des raisons esthétiques, définissez l&#039;hostname de votre système de rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;hostname proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour créer votre raid 1 avec 2 disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que si vous souhaitez utiliser plus que 2 disques, il faut augmenter la valeur de &amp;lt;code&amp;gt;--raid-devices&amp;lt;/code&amp;gt; et ajouter les partitions des disques à la suite.&lt;br /&gt;
&lt;br /&gt;
Attendez que le raid soit synchronisé avant de continuer. Vous pouvez surveiller facilement cela avec la commande &amp;lt;code&amp;gt;watch cat /proc/mdstat&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Création des systèmes de fichiers==&lt;br /&gt;
&lt;br /&gt;
Créez un système de fichier ext4 pour le raid du root :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/md2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, initialisez les swaps :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkswap /dev/sda3&lt;br /&gt;
mkswap /dev/sdb3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Installation de proxmox=&lt;br /&gt;
&lt;br /&gt;
==Installation du système de base==&lt;br /&gt;
&lt;br /&gt;
Nous débutons par installer le système de base de Debian avec &amp;lt;code&amp;gt;debootstrap&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les paquets nécessaires dans votre rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install debootstrap debian-keyring debian-archive-keyring&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez votre partition raid root sur &amp;lt;code&amp;gt;/mnt&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/md2 /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez le système de base debian, version bookworm :&lt;br /&gt;
&amp;lt;pre&amp;gt;debootstrap --arch=amd64 bookworm /mnt http://ftp.fr.debian.org/debian&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration de Debian==&lt;br /&gt;
&lt;br /&gt;
Montez les vfs suivants, puis chrootez dans votre nouveau système debian :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount -o bind /proc /mnt/proc&lt;br /&gt;
mount -o bind /dev /mnt/dev&lt;br /&gt;
mount -o bind /dev/pts /mnt/dev/pts&lt;br /&gt;
mount -o bind /sys /mnt/sys&lt;br /&gt;
chroot /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les archives apt : éditez le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main archive&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# security updates&lt;br /&gt;
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# bookworm-updates, previously known as &#039;volatile&#039;&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# backports archive&lt;br /&gt;
deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour les paquets :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les locales et la configuration de console :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install locales &lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
apt install console-data console-setup-linux console-setup wget&lt;br /&gt;
dpkg-reconfigure console-data # from arch &amp;gt; french &amp;gt; latin9)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la zone horaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tzselect&lt;br /&gt;
dpkg-reconfigure tzdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez votre fichier &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Pour GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda1       /boot/efi       vfat    defaults                                  0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour GPT pour BIOS :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez la partition EFI / ESP dans le cas d&#039;un partitionnement GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /boot/efi&lt;br /&gt;
mount /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les interfaces réseaux dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The loopback network interface&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet static&lt;br /&gt;
        address XXXX/24&lt;br /&gt;
        gateway XXXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# local&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
::1             localhost ip6-localhost ip6-loopback&lt;br /&gt;
ff02::1         ip6-allnodes&lt;br /&gt;
ff02::2         ip6-allrouters&lt;br /&gt;
&lt;br /&gt;
# main&lt;br /&gt;
ipdelamachine   proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez les hostnames dans ces fichiers :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Pour celui la : non-fqdn&lt;br /&gt;
echo proxmox &amp;gt; /etc/hostname&lt;br /&gt;
# Pour celui la : fqdn&lt;br /&gt;
echo proxmox.domain.tld &amp;gt; /etc/mailname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION&#039;&#039;&#039; Le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; DOIT être cohérent avec le fichier &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, si le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est &amp;lt;code&amp;gt;proxmox&amp;lt;/code&amp;gt; et que l&#039;ip de votre proxmox est 225.182.54.9 il faudra veiller a avoir les informations suivantes dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1 localhost&lt;br /&gt;
225.182.54.9 proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attention : n&#039;utilisez pas 127.0.1.1 (comme le fait debian) mais bien la vrai ip (ici 225.182.54.9)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
N&#039;oubliez pas de configurer les dns (ceux de votre hébergeur dédié) dans &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;nameserver XX.XX.XX.XX&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez postfix :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install postfix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, comme nous installons notre partition de boot sur un raid software, il faut installer &amp;lt;code&amp;gt;madadm&amp;lt;/code&amp;gt; à ce stade :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install mdadm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez si votre array root s&#039;est bien défini automatiquement dans &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt;. Si ce n&#039;est pas me cas, ajoutez la configuration de l&#039;array manuellement :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - kernel==&lt;br /&gt;
&lt;br /&gt;
Ajoutez le dépot proxmox dans le fichier /etc/apt/source.list :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use&lt;br /&gt;
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajoutez la clé du dépôt proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour le système :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitions GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Vérifiez que &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt; est bien monté. Si ce n&#039;est pas le cas, faites le.&lt;br /&gt;
&lt;br /&gt;
Installez le kernel proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-efi-amd64 gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supprimez les paquets suivant si vous n&#039;avez pas besoin de secureboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed shim-signed-common shim-unsigned&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normalement tout doit se faire avec des promps. Si ce n&#039;était pas le cas :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si jamais vous utilisez un démarrage en PXE (c&#039;est le cas sur un serveur OVH par exemple), utilisez l&#039;argument &amp;lt;code&amp;gt;--no-nvram&amp;lt;/code&amp;gt; pour empêcher grub de mettre à jour la NVRAM et casser votre mécanique de démarrage PXE :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox --no-nvram&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Etant donné que seul &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; est monté sur &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt;, il faut transférer manuellement les données sur &amp;lt;code&amp;gt;/dev/sdb1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/sdb1 /mnt&lt;br /&gt;
rsync -av /boot/efi/ /mnt/&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si pour une raison quelconque, vous aviez besoin des headers du kernel :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install pve-headers-5.15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitions GPT pour BIOS OU Partitions MBR pour BIOS===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-pc gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on vous demandera où installer grub, choisissez &amp;lt;code&amp;gt;sda&amp;lt;/code&amp;gt; ET &amp;lt;code&amp;gt;sdb&amp;lt;/code&amp;gt;. Sinon :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-install /dev/sda&lt;br /&gt;
grub-install /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - OpenSSH==&lt;br /&gt;
&lt;br /&gt;
Installez openssh et définissez un password root. Autorisez le login root par password temporairement.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install openssh-server&lt;br /&gt;
passwd&lt;br /&gt;
sed -i &amp;quot;s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g&amp;quot; /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - Vérifications finales et redémarrage sur le kernel proxmox==&lt;br /&gt;
&lt;br /&gt;
Si vous avez une configuration particulière à entrer dans &amp;lt;code&amp;gt;/etc/default/grub&amp;lt;/code&amp;gt;, faites le maintenant. Par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;nomodeset iommu=pt&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis régénérez la configuration de grub :&lt;br /&gt;
&amp;lt;pre&amp;gt;update-grub&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez vérifier que votre fstab est valide avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;findmnt --verify --verbose&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /boot/efi/&lt;br /&gt;
exit&lt;br /&gt;
umount /mnt/sys&lt;br /&gt;
umount /mnt/dev/pts&lt;br /&gt;
umount /mnt/dev&lt;br /&gt;
umount /mnt/proc&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, redémarrez le serveur sur le disque dur.&lt;br /&gt;
&lt;br /&gt;
==Installation de ifupdown2==&lt;br /&gt;
&lt;br /&gt;
Le paquet &amp;lt;code&amp;gt;ifupdown2&amp;lt;/code&amp;gt; est en voie de devenir le remplaçant officiel de &amp;lt;code&amp;gt;ifupdown&amp;lt;/code&amp;gt; pour proxmox.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ifupdown2&lt;br /&gt;
apt purge ifupdown&lt;br /&gt;
systemctl enable networking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que votre configuration est fonctionnelle : lancez &amp;lt;code&amp;gt;ifquery -a&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrez à nouveau votre serveur&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - pve==&lt;br /&gt;
&lt;br /&gt;
Une fois le redémarrage effectué, vous allez enfin pouvoir installer pve :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install proxmox-ve ksm-control-daemon chrony&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;apt remove os-prober&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editez la configuration réseau &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; afin d&#039;y créer votre bridge :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet manual&lt;br /&gt;
&lt;br /&gt;
auto vmbr0&lt;br /&gt;
iface vmbr0 inet static&lt;br /&gt;
        address xxxxx/24&lt;br /&gt;
        gateway xxxx&lt;br /&gt;
        hwaddress AA:BB:CC:11:22:33&lt;br /&gt;
        bridge_ports eno3&lt;br /&gt;
        bridge_stp off&lt;br /&gt;
        bridge_fd 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la ligne &amp;lt;code&amp;gt;hwaddress&amp;lt;/code&amp;gt; avec l&#039;adresse MAC de l&#039;interface eno3.&lt;br /&gt;
&lt;br /&gt;
Installez votre clé SSH dans &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; puis désactivez le login root par password de OpenSSH dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois tout installé, je vous conseille de reconfigurer grub afin de mettre à jour la configuration interne de debian:&lt;br /&gt;
* Pour EFI : &amp;lt;code&amp;gt;dpkg-reconfigure grub-efi-amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pour BIOS : &amp;lt;code&amp;gt;dpkg-reconfigure grub-pc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrez une dernière fois pour appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
Votre proxmox sera accessible à l&#039;adresse https://ip:8006&lt;br /&gt;
&lt;br /&gt;
==Nettoyage des paquets==&lt;br /&gt;
&lt;br /&gt;
Si vous ne comptez pas utiliser ZFS, vous pouvez supprimer les paquets suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge zfs-zed libnvpair3linux libuutil3linux libzfs4linux libzpool5linux zfsutils-linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration réseau avancée==&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;une IPv6 sur vmbr0===&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;un réseau interne vmbr1===&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment créer un réseau interne avec proxmox, c&#039;est à dire, un réseau qui ne sera attaché à aucune interface réseau physique. L&#039;intérêt est d&#039;offrir un débit bien supérieur pour les communications entre les VMs.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto vmbr1&lt;br /&gt;
iface vmbr1 inet static&lt;br /&gt;
        address  192.168.0.1&lt;br /&gt;
        netmask  255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : vous pouvez faire de même en ipv6 :&lt;br /&gt;
* il faut utiliser le range Unique Local Address (ULA) fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address)&lt;br /&gt;
* pour générer votre ULA : http://pfoo.unscdf.org/ula/gen-ula.html&lt;br /&gt;
&lt;br /&gt;
==Sécurisation de base==&lt;br /&gt;
&lt;br /&gt;
Je vous conseil de commencer à sécuriser votre ssh :&lt;br /&gt;
* désactivez le login root (directive &amp;lt;code&amp;gt;PermitRootLogin no&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;). Pensez néanmoins à créer un utilisateur pour vous connecter en ssh avant de désactiver le login root.&lt;br /&gt;
* utilisez la directive &amp;lt;code&amp;gt;allowusers &amp;lt;user&amp;gt;&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; pour n&#039;autoriser que certains utilisateurs à se connecter en ssh.&lt;br /&gt;
&lt;br /&gt;
Il est aussi préférable d&#039;installer le serveur de temps NTP à la place de systemd-timesyncd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install chrony&lt;br /&gt;
apt purge systemd-timesyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configurer le serveur mail postfix=&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
==Certificats SSL==&lt;br /&gt;
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. Si ce n&#039;est pas le cas, vous pouvez toujours aller lire [http://wiki.unscdf.org/index.php?title=Installation_et_configuration_de_OpenSSL ceci] afin d&#039;apprendre à créer votre autorité ssl.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/ssl/openssl.cnf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[POSTFIX]&lt;br /&gt;
nsComment                       = &amp;quot;SMTP Server Certificate&amp;quot;&lt;br /&gt;
subjectKeyIdentifier            = hash&lt;br /&gt;
authorityKeyIdentifier          = keyid,issuer:always&lt;br /&gt;
issuerAltName                   = issuer:copy&lt;br /&gt;
basicConstraints                = critical,CA:FALSE&lt;br /&gt;
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment&lt;br /&gt;
nsCertType                      = server&lt;br /&gt;
extendedKeyUsage                = serverAuth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis générez la clé et le certificat, et signez le avec votre autorité (int_ca dans mon cas) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req&lt;br /&gt;
openssl ca -config /etc/ssl/openssl.cnf -name int_ca -extensions POSTFIX -in postfix.req -out postfix.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Déplacez les fichiers dans le répertoire &amp;lt;code&amp;gt;/etc/postfix/ssl&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/postfix/ssl&lt;br /&gt;
mv postfix.key /etc/postfix/ssl/&lt;br /&gt;
mv postfix.pem /etc/postfix/ssl/&lt;br /&gt;
chmod 600 /etc/postfix/ssl/*&lt;br /&gt;
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/int_ca/int_ca.pem &amp;gt; /etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut encore modifier &amp;lt;code&amp;gt;/etc/postfix/main.cf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smtpd_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtpd_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
smtpd_use_tls=yes&lt;br /&gt;
smtp_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtp_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&lt;br /&gt;
smtpd_tls_security_level=may&lt;br /&gt;
smtp_tls_security_level=may&lt;br /&gt;
smtpd_tls_loglevel = 1&lt;br /&gt;
smtp_tls_loglevel = 1&lt;br /&gt;
&lt;br /&gt;
#smtp_tls_policy_maps = hash:/etc/postfix/tls_policy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire=&lt;br /&gt;
&lt;br /&gt;
Depuis Proxmox 5.2, il n&#039;est plus recommandé d&#039;adapter manuellement les fichiers contenant les certificats et clés privés de proxmox.&amp;lt;br&amp;gt;&lt;br /&gt;
Cependant, vous pouvez placer directement votre clé privé dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.key&amp;lt;/code&amp;gt; et la chaîne de certification dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.pem&amp;lt;/code&amp;gt;. Vous pouvez également déposer ces fichiers via la webui de proxmox au niveau de chaque serveur.&lt;br /&gt;
&lt;br /&gt;
=Surveiller l&#039;état des disques avec SMART=&lt;br /&gt;
&lt;br /&gt;
Commencez par installer le paquet smartmontools :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install smartmontools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez que vos disques gèrent smart et qu&#039;il est activé :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -i /dev/sda&lt;br /&gt;
smartctl -i /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si smart n&#039;est pas activé, essayez de l&#039;activer comme ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -s on /dev/sda&lt;br /&gt;
smartctl -s on /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez le statut de santé de vos disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -H /dev/sda&lt;br /&gt;
smartctl -H /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
S&#039;il indique &amp;lt;code&amp;gt;PASSED&amp;lt;/code&amp;gt; c&#039;est bon de ce côté. S&#039;il vous indique &amp;lt;code&amp;gt;FAILED&amp;lt;/code&amp;gt;, sauvegardez immédiatement vos données !&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence d&#039;erreurs dans le log smart :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -l error /dev/sda&lt;br /&gt;
smartctl -l error /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez &amp;lt;code&amp;gt;No Errors Logged&amp;lt;/code&amp;gt; ou quelques erreurs, c&#039;est bon. S&#039;il y eu a beaucoup, il faut envisager de changer le disque.&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration de smartd est &amp;lt;code&amp;gt;/etc/smartd.conf&amp;lt;/code&amp;gt;. Commentez la ligne &amp;lt;code&amp;gt;DEVICESCAN&amp;lt;/code&amp;gt; puis ajoutez les lignes suivantes pour surveiller les deux disques durs :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
/dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous activons la surveillance globale (&amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt;), la vérification automatique offline, (&amp;lt;code&amp;gt;-o on&amp;lt;/code&amp;gt;), la sauvegarde automatique des attributs (&amp;lt;code&amp;gt;-S on&amp;lt;/code&amp;gt; et lançons un &amp;lt;code&amp;gt;short self test&amp;lt;/code&amp;gt; tous les jours à 2h du matin, et un &amp;lt;code&amp;gt;long self test&amp;lt;/code&amp;gt; tous les samedi à 3h du matin. Si des erreurs sont détectés, un email est envoyé à vous@domain.tld.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez smartd :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/smartmontools restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;information sur SMART et ses arguments : [[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
&lt;br /&gt;
=Protégez votre proxmox=&lt;br /&gt;
&lt;br /&gt;
==Désactiver le login root sur l&#039;interface proxmox==&lt;br /&gt;
Avant toute manipulation, n&#039;oubliez pas de créer un utilisateur ayant les droits d&#039;administration pour accéder à l&#039;interface de proxmox&lt;br /&gt;
&lt;br /&gt;
===Via l&#039;interface proxmox===&lt;br /&gt;
Dans Datacenter &amp;gt; Permissions &amp;gt; Users : Editez l&#039;utilisateur root et décochez la case &amp;lt;code&amp;gt;Enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Via les droits linux===&lt;br /&gt;
&amp;lt;pre&amp;gt;passwd --lock root&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 !&lt;br /&gt;
&lt;br /&gt;
===Via PAM===&lt;br /&gt;
Vous pouvez désactiver le login pam en éditant &amp;lt;code&amp;gt;/etc/pam.d/other&amp;lt;/code&amp;gt; et en y ajoutant, en début de fichier, les lignes suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth        required    pam_deny.so&lt;br /&gt;
auth        required    pam_warn.so&lt;br /&gt;
account     required    pam_deny.so&lt;br /&gt;
account     required    pam_warn.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attention, cette méthode peut avoir des effets de bord si d&#039;autres programmes utilisent l&#039;entité pam/other&lt;br /&gt;
&lt;br /&gt;
==Désactiver rpcbind==&lt;br /&gt;
&lt;br /&gt;
Si vous n&#039;utilisez pas de montage NFS vous pouvez désactiver rpcbind.&amp;lt;br&amp;gt;&lt;br /&gt;
Editez &amp;lt;code&amp;gt;/etc/default/nfs-common&amp;lt;/code&amp;gt; et passez l&#039;argument suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;NEED_STATD=no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis désactivez rpcbind :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable rpcbind.target&lt;br /&gt;
systemctl disable rpcbind.socket&lt;br /&gt;
systemctl disable rpcbind.service&lt;br /&gt;
systemctl stop rpcbind.target&lt;br /&gt;
systemctl stop rpcbind.socket&lt;br /&gt;
systemctl stop rpcbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eviter les reboots accidentels avec molly-gard==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install molly-guard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Protection SSH avec sshguard==&lt;br /&gt;
&lt;br /&gt;
[[Protéger SSH avec sshguard]]&lt;br /&gt;
&lt;br /&gt;
==Protéger l&#039;interface web avec fail2ban==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install fail2ban&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/jail.local&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
# &amp;quot;ignoreip&amp;quot; can be an IP address, a CIDR mask or a DNS host&lt;br /&gt;
ignoreip = 127.0.0.1&lt;br /&gt;
bantime  = 1800&lt;br /&gt;
maxretry = 3&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Destination email address used solely for the interpolations in&lt;br /&gt;
# jail.{conf,local} configuration files.&lt;br /&gt;
destemail = root@localhost&lt;br /&gt;
&lt;br /&gt;
action = %(action_mwl)s&lt;br /&gt;
&lt;br /&gt;
[ssh]&lt;br /&gt;
enabled = false&lt;br /&gt;
&lt;br /&gt;
[sshd]&lt;br /&gt;
enabled  = false&lt;br /&gt;
&lt;br /&gt;
[proxmox]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = https,http,8006&lt;br /&gt;
filter = proxmox&lt;br /&gt;
backend = systemd&lt;br /&gt;
maxretry = 4&lt;br /&gt;
findtime = 2d&lt;br /&gt;
bantime = 1h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/filter.d/proxmox.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Definition]&lt;br /&gt;
failregex = pvedaemon\[.*authentication failure; rhost=&amp;lt;HOST&amp;gt; user=.* msg=.*&lt;br /&gt;
ignoreregex =&lt;br /&gt;
journalmatch = _SYSTEMD_UNIT=pvedaemon.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez fail2ban :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/fail2ban restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==firewall iptables==&lt;br /&gt;
&lt;br /&gt;
=Création d&#039;un stockage pour les VMs=&lt;br /&gt;
&lt;br /&gt;
Créez les partitions sda4 et sdb4 au moyen de gdisk (EFI) ou parted (BIOS).&lt;br /&gt;
&lt;br /&gt;
Créez sur ces partitions un raid :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create --verbose /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenez à jour &amp;lt;code&amp;gt;mdadm.conf&amp;lt;/code&amp;gt; et votre initramfs afin de conserver le bon naming du raid après reboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
update-initramfs -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis initialisez-y un LVM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvcreate /dev/md4&lt;br /&gt;
vgcreate main /dev/md4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu&#039;a déclarer ce Volume Group LVM dans l&#039;interface proxmox.&lt;br /&gt;
&lt;br /&gt;
=VM qemu/kvm=&lt;br /&gt;
&lt;br /&gt;
==Télécharger vos images==&lt;br /&gt;
&lt;br /&gt;
Vous pouvez placer les iso dans &amp;lt;code&amp;gt;/var/lib/vz/template/iso/&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt; par exemple.&lt;br /&gt;
Notez que l&#039;interface graphique de proxmox propose également une fonction d&#039;upload.&lt;br /&gt;
&lt;br /&gt;
==Créer votre première VM==&lt;br /&gt;
&lt;br /&gt;
Une fois la VM crées dans l&#039;interface proxmox, je vous recommande d&#039;écrire des zero sur son disque afin de réduire la taille des futurs backups. Si votre vm porte le numéro 100 et possède un seul disque :&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/zero | pv -ptrb | dd of=/dev/main/vm-100-disk1 bs=1M&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr0 (ip public)===&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr1 (ip locale)===&lt;br /&gt;
&lt;br /&gt;
Configuration réseau de la VM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.0.2&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
gateway 192.168.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Règle iptables à ajouter sur l&#039;hôte :&lt;br /&gt;
&amp;lt;pre&amp;gt;iptables -t nat -A POSTROUTING -s 192.168.0.2 -o vmbr0 -j SNAT --to IP-PUBLIC-DE-VOTRE-HOTE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez rendre accessible l&#039;un des services de la VM depuis l&#039;ip de l&#039;hote sur un port sépcifique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -t nat -A PREROUTING -p tcp -d &amp;lt;ip de l&#039;hote&amp;gt; --dport &amp;lt;port souhaité&amp;gt; -i vmbr0 -j DNAT --to-destination 192.168.0.2:port&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bloquer le spoofing d&#039;adresse mac==&lt;br /&gt;
Sur l&#039;hyperviseur, installez &amp;lt;code&amp;gt;ebtables&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install ebtables&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Admettons ensuite que votre VM a comme adresse ip &amp;lt;code&amp;gt;84.93.26.3&amp;lt;/code&amp;gt; et que son adresse mac doit être &amp;lt;code&amp;gt;52:54:00:00:98:b6&amp;lt;/code&amp;gt; : &lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv4 --ip-src 84.93.26.3 -s ! 52:54:00:00:98:b6 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez faire de même pour l&#039;ipv6. Dans l&#039;exemple suivant, seul le bloc ipv6 &amp;lt;code&amp;gt;2a01:d4h:123b:100::/56&amp;lt;/code&amp;gt; est utilisable par la vm :&lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv6 --ip6-src 2a01:d4h:123b:100::/56 -s ! 52:54:00:00:08:b1 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Importer une VM depuis vmware ESXi==&lt;br /&gt;
&lt;br /&gt;
==qm et modification des VMs en ligne de commande==&lt;br /&gt;
&lt;br /&gt;
==Monter les partitions d&#039;une VM depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pour la partition 1 : start*blocksize = offset&lt;br /&gt;
donc 2048*512 = 1048576&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;losetup /dev/loop1 -o 1048576 /dev/main/vm-101-disk-1 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et enfin :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount /dev/loop1 /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé vos modifications :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /mnt&lt;br /&gt;
losetup -d /dev/loop1&lt;br /&gt;
losetup -d /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Si la partition que vous voulez monter est un LVM===&lt;br /&gt;
&lt;br /&gt;
Scannez les nouveaux volumes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm pvscan&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activez les groupes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm vgchange -ay&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
listez les lvms avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm lvs&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les LV devraient apparaître dans &amp;lt;code&amp;gt;/dev/mapper/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé :&lt;br /&gt;
* démontez les LV&lt;br /&gt;
* Désactivez le groupe avec &amp;lt;code&amp;gt;vgchange -an&amp;lt;/code&amp;gt;&lt;br /&gt;
* désactivez le loopback : &amp;lt;code&amp;gt;losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Augmenter la taille du disque d&#039;une VM==&lt;br /&gt;
&lt;br /&gt;
Coupez la VM.&lt;br /&gt;
&lt;br /&gt;
Sur l&#039;host pour modifier la taille du disque 1 de la vm 110 ) 140G :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvextend -L 140G /dev/main/vm-110-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut ensuite, sur la vm lancée, utiliser resize2fs&lt;br /&gt;
&lt;br /&gt;
==Migrer une VM vers un autre serveur manuellement (pas de cluster) avec un downtime minimum==&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment migrer une VM proxmox stockée sur un LVM d&#039;un serveur à un autre, et ce, en minimisant au maximum le downtime. Pour cela, nous allons coupler la fonctionnalité de snapshot de lvm avec un petit script (lvmsync) qui permet de ne transférer que les blocs modifiés d&#039;un snapshot.&lt;br /&gt;
&lt;br /&gt;
Installez dmsetup et ruby (1.8 minimum) sur le serveur d&#039;origine et de destination :&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install dmsetup ruby&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Récupérez &amp;lt;code&amp;gt;lvmsync&amp;lt;/code&amp;gt; sur https://github.com/mpalmer/lvmsync et placez le dans /sbin/ sur les serveurs d&#039;origine et de destination.&lt;br /&gt;
&lt;br /&gt;
Dans cet exemple, nous allons migrer la vm 102 disposant d&#039;un seul disque virtuel nommé vm-102-disk-1 et stocké dans le vg main du serveur server1.domain.tld vers le serveur server2.domain.tld.&lt;br /&gt;
Pour commencer, créez un snapshot de votre vm sur server1 :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvcreate --snapshot -L200G -n 102-lvmsync main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Désormais, tous les io de cette vm seront stockés dans le snapshot 102-lvmsync.&lt;br /&gt;
&lt;br /&gt;
Sur votre nouveau serveur, créez une VM identique à celle de votre premier serveur (surtout en qui concerne la taille de disque).&lt;br /&gt;
Depuis server1, copiez avec un dd over ssh le disque d&#039;origine de votre vm vers votre nouveau serveur.&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/main/vm-102-disk-1 | pv -ptrb | ssh -o &amp;quot;Compression no&amp;quot; root@server2.domain.tld &amp;quot;dd of=/dev/main/vm-102-disk-1 bs=100M&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : sur un réseauu 100Mbps utilisez plutôt &amp;lt;code&amp;gt;-o &amp;quot;Compressionlevel 1&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois la copie terminée, coupez la vm 102 sur server1, puis lancez lvmsync sur le snapshot (toujours sur server1) :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvmsync /dev/main/102-lvmsync server2.domain.tld:/dev/main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois le travail de lvmsync achevé, il ne nous reste plus qu&#039;a relancer la vm sur server2&lt;br /&gt;
&lt;br /&gt;
A titre d&#039;information, si vous voulez merger le snapshot de la vm 102 sur server 1, tapez :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvconvert --merge /dev/main/102-lvmsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conteneur LXC=&lt;br /&gt;
&lt;br /&gt;
==Empêcher la mise à jour automatique de certains fichiers de configuration système du conteneur==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
On peut empêcher la mise à jour de ces fichiers en créant un fichier &amp;lt;code&amp;gt;.pve-ignore.NOM&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, &amp;lt;code&amp;gt;/etc/.pve-ignore.resolv.conf&amp;lt;/code&amp;gt; empêchera le fichier &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; d&#039;être mis à jour à chaque démarrage.&lt;br /&gt;
&lt;br /&gt;
=Annexes=&lt;br /&gt;
&lt;br /&gt;
==Problème de layout dans la console vnc==&lt;br /&gt;
Dans l&#039;interface web de proxmox : datacenter &amp;gt; option &amp;gt; passez Keyboard de &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; à &amp;lt;code&amp;gt;French&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Erreurs du type &amp;lt;code&amp;gt;IPv6 addrconf: prefix with wrong length 56&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64.&lt;br /&gt;
Ajouter les lignes suivantes dans un fichier &amp;lt;code&amp;gt;/etc/sysctl.d/local.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
net.ipv6.conf.all.autoconf = 0&lt;br /&gt;
net.ipv6.conf.default.autoconf = 0&lt;br /&gt;
net.ipv6.conf.eno3.autoconf = 0&lt;br /&gt;
net.ipv6.conf.vmbr0.autoconf = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Terminez par relancer procps :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/procps restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==paramètre sysctl ipv6 non appliqué au boot==&lt;br /&gt;
Ajoutez le module ipv6 dans /etc/modules afin d&#039;assurer le chargement d&#039;ipv6 avant l’exécution de sysctl :&lt;br /&gt;
&amp;lt;pre&amp;gt;echo ipv6 &amp;gt;&amp;gt; /etc/modules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LVM inaccessible depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lvm pvscan&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface web ne fonctionne pas et la commande qm retourne une erreur ipcc_send_rec failed: Connection refused==&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence de fichiers et dossiers dans &amp;lt;code&amp;gt;/etc/pve/&amp;lt;/code&amp;gt;. Si ce dossier est vide, c&#039;est probablement que votre fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; est mal configuré.&amp;lt;br&amp;gt;&lt;br /&gt;
Essayez de relancer &amp;lt;code&amp;gt;pve-cluster&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/pve-cluster restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez une erreur ou un warning, lancez la commande pmxcfs. Vous devriez obtenir ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$# pmxcfs &lt;br /&gt;
Jan 21 15:28:19 proxmox pmxcfs[1846]: Unable to get local IP address (pmxcfs.c:721:main)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez alors que le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est défini dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si par exemple &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; contient &amp;lt;code&amp;gt;proxmox.domain.tld&amp;lt;/code&amp;gt; vous devriez avoir la ligne suivante dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;VOTREIP proxmox.domain.tld proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pas assez d&#039;interfaces loopback==&lt;br /&gt;
&lt;br /&gt;
Créer le fichier &amp;lt;code&amp;gt;/etc/modprobe.d/local-loop.conf&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;options loop max_loop=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite redémarrer ou recharger le module loop :&lt;br /&gt;
&amp;lt;pre&amp;gt; rmmod loop &amp;amp;&amp;amp; modprobe loop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Défragmentation LVM : exemple==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hub:~# pvdisplay --maps&lt;br /&gt;
  --- Physical volume ---&lt;br /&gt;
  PV Name               /dev/sda4&lt;br /&gt;
  VG Name               main&lt;br /&gt;
  PV Size               1.76 TB / not usable 456.00 KB&lt;br /&gt;
  Allocatable           yes &lt;br /&gt;
  PE Size (KByte)       4096&lt;br /&gt;
  Total PE              461649&lt;br /&gt;
  Free PE               208721&lt;br /&gt;
  Allocated PE          252928&lt;br /&gt;
  PV UUID               PUqV5Q-WRW2-n20t-eFVM-CA1r-RhDl-2RTJHq&lt;br /&gt;
   &lt;br /&gt;
  --- Physical Segments ---&lt;br /&gt;
  Physical extent 0 to 7935:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-1&lt;br /&gt;
    Logical extents     0 to 7935&lt;br /&gt;
  Physical extent 7936 to 72191:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 72192 to 136703:&lt;br /&gt;
    Logical volume      /dev/main/vm-102-disk-1&lt;br /&gt;
    Logical extents     0 to 64511&lt;br /&gt;
  Physical extent 136704 to 144895:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-1&lt;br /&gt;
    Logical extents     0 to 8191&lt;br /&gt;
  Physical extent 144896 to 209151:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 209152 to 214271:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-1&lt;br /&gt;
    Logical extents     0 to 5119&lt;br /&gt;
  Physical extent 214272 to 227327:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-2&lt;br /&gt;
    Logical extents     0 to 13055&lt;br /&gt;
  Physical extent 227328 to 282111:&lt;br /&gt;
    FREE&lt;br /&gt;
  Physical extent 282112 to 307711:&lt;br /&gt;
    Logical volume      /dev/main/vm-108-disk-1&lt;br /&gt;
    Logical extents     0 to 25599&lt;br /&gt;
  Physical extent 307712 to 461648:&lt;br /&gt;
    FREE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir, on a un trou &amp;quot;vide&amp;quot; entre l&#039;extent &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; et 282111, puis à nouveau des données entre l&#039;extent &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour combler ce trou, nous allons déplacer les données des  /dev/main/vm-108-disk-1 situés entre les extents &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; (soit 25599 extents au total) vers l&#039;espace libre avec &amp;lt;code&amp;gt;pvmove&amp;lt;/code&amp;gt; :&amp;lt;br&amp;gt;&lt;br /&gt;
pvmove /dev/sda4:&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; /dev/sda4:&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt; --alloc anywhere&lt;br /&gt;
&lt;br /&gt;
Notez qu&#039;il faut attribuer exactement le même nombre d&#039;extents à la destination qu&#039;à l&#039;origine : &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; + 25599 = &amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Oups: j&#039;ai supprimé le mauvais lvm==&lt;br /&gt;
&lt;br /&gt;
Pas de panique, mais ne bougez plus ! Pour l&#039;instant, seul les métadonnées du lvm sont impactés.&lt;br /&gt;
Et comme c&#039;est bien foutu, lvm conserve un backup des anciennes metadonnées après chaque modification. Ces archives sont situés dans &amp;lt;code&amp;gt;/etc/lvm/archive/&amp;lt;/code&amp;gt;. Les fichiers y sont nommés sous la forme vg_XXXX-YYYYYYY.vg. Normalement, le fichier ayant le XXXX le plus élevé sera celui de l&#039;état précédent votre erreur.&lt;br /&gt;
Pour vérifier que vous avez sélectionné le bon fichier, vous pouvez l&#039;ouvrir avec nano et regarder si l&#039;état du lvm dans cette archive correspond a ce que vous attendez.&lt;br /&gt;
&lt;br /&gt;
Pour restaurer l&#039;archive des métadonnées main_00007-587941649.vg pour le vg main :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vgcfgrestore -f /etc/lvm/archive/main_00007-587941649.vg main&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Votre volume devrait être de retour.&lt;br /&gt;
&lt;br /&gt;
Il faut encore vérifier que la table de partition contenu sur ce lvm n&#039;a pas morphlé. En admettant que /dev/main/vm-101-disk-1 est la lvm que vous venez de restaurer :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez ça, c&#039;est bon, vous êtes sauvés ! Si ce n&#039;est pas le cas, continuez à lire ;)&lt;br /&gt;
&lt;br /&gt;
===Récupération de la table de partition===&lt;br /&gt;
&lt;br /&gt;
Si fdisk vous envois chier avec un message du style &amp;lt;code&amp;gt;Disk /dev/loop0 doesn&#039;t contain a valid partition table&amp;lt;/code&amp;gt;, il va falloir récupérer la table de partition.&lt;br /&gt;
&lt;br /&gt;
Installez testdisk :&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install testdisk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lancez le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# testdisk /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selectionez le media &amp;lt;code&amp;gt;/dev/loop0&amp;lt;/code&amp;gt; et validez avec &amp;lt;code&amp;gt;enter&amp;lt;/code&amp;gt;.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;intel&amp;lt;/code&amp;gt; comme type de table de partition.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;analyse&amp;lt;/code&amp;gt;&lt;br /&gt;
A l&#039;écran suivant, tapez enter.&lt;br /&gt;
Avec de la chance, testdisk retrouvera vos partitions. Une fois qu&#039;il aura terminé de travailler, il ne restera plus qu&#039;à taper sur enter encore une fois, puis demander à testdisk de sauvegarder la table de partition&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface proxmox n&#039;affiche pas les disques de certaines VMs==&lt;br /&gt;
&lt;br /&gt;
Ceci arrive typiquement si vous avez créé un volume logique à la main sans y ajouter le bon tag.&lt;br /&gt;
Vérifiez la présence des tags sur vos LV avec la commande &amp;lt;code&amp;gt;lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  20.00g &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous le voyez, le lv de la vm 101 n&#039;est pas tagué. Vous pouvez ajouter le tag avec &amp;lt;code&amp;gt;lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  16.00g pve-vm-101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas,  essayez de passer un petit coup de &amp;lt;code&amp;gt;qm rescan&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4396</id>
		<title>Proxmox 8</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Proxmox_8&amp;diff=4396"/>
		<updated>2025-10-03T11:17:43Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Protéger l&amp;#039;interface web avec fail2ban */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:virtualisation]]&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment installer proxmox 7.x sur un raid 1 logiciel (md / mdadm) avec debootstrap.&lt;br /&gt;
&lt;br /&gt;
=Prérequis=&lt;br /&gt;
&lt;br /&gt;
Ce tutoriel se base sur l&#039;utilisation de debootstrap pour installer une base de système d&#039;exploitation debian. La plupart des hébergeurs proposent un système de &amp;quot;rescue&amp;quot; permettant l&#039;installation de debian par ce moyen.&lt;br /&gt;
Si vous ne disposez pas de mode rescue, vous pouvez toujours utiliser l&#039;installeur proposé par votre hébergeur, ou encore passer par un kvm pour installer vous même le système avec l&#039;iso de debian.&lt;br /&gt;
&lt;br /&gt;
=Pour les débutants=&lt;br /&gt;
&lt;br /&gt;
Si vous êtes débutant en administration linux, je vous conseil de sauvegarder quelque part les fichier suivant issu d&#039;une précédente installation de debian ou de proxmox&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/networks&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt; si vous disposez d&#039;un raid logiciel&lt;br /&gt;
* tout fichier de personnalisation de grub (&amp;lt;code&amp;gt;/etc/grub.d/&amp;lt;/code&amp;gt; par exemple)&lt;br /&gt;
&lt;br /&gt;
Cela vous permettra de vous faire une idée plus précise de ce qui doit figurer dans ces différents fichiers.&lt;br /&gt;
&lt;br /&gt;
=Partitionnement et système de fichier=&lt;br /&gt;
&lt;br /&gt;
Voici le partitionnement que je vais utiliser :&lt;br /&gt;
* Partition root (/) de 20 Go (/) en raid 1 sur les disques sda et sdb&lt;br /&gt;
* Partitions swap de 4096 Go chacune réparties sur sda et sdb&lt;br /&gt;
* Le reste de l&#039;espace sera utilisé plus tard pour un LVM dédié aux VMs&lt;br /&gt;
&lt;br /&gt;
==Partitionnement==&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitionnement GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions EFI (ESP), obligatoire pour le démarrage EFI/UEFI. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF00&amp;lt;/code&amp;gt;. 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).&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour les partitions EFI, nous créons un système de fichier FAT32 avec le label (nom) &amp;lt;code&amp;gt;EFI_SYSPART&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sda1&lt;br /&gt;
mkfs.fat -F 32 -n EFI_SYSPART /dev/sdb1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitionnement GPT pour BIOS===&lt;br /&gt;
&lt;br /&gt;
Nous allons créer avec &amp;lt;code&amp;gt;gdisk&amp;lt;/code&amp;gt; 3 partitions sur chaque disque :&lt;br /&gt;
* sda1 et sdb1 : partitions pour le bootloader. Il faudra leur attribuer le type &amp;lt;code&amp;gt;EF02&amp;lt;/code&amp;gt;. On peut la créer idéalement du secteur 34 au secteur 2047 du disque.&lt;br /&gt;
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type &amp;lt;code&amp;gt;FD00&amp;lt;/code&amp;gt;.&lt;br /&gt;
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type &amp;lt;code&amp;gt;8200&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Notez que la partition du bootloader ne doit pas être formatée.&lt;br /&gt;
&lt;br /&gt;
===Possibilité 3 : partitionnement MBR pour BIOS (non prise en charge dans ce wiki)===&lt;br /&gt;
&lt;br /&gt;
A titre informatif : création avec &amp;lt;code&amp;gt;parted&amp;lt;/code&amp;gt;, sans nécessité de créer une partition dédiée au bootloader/grub.&lt;br /&gt;
&lt;br /&gt;
==Création du RAID==&lt;br /&gt;
&lt;br /&gt;
Pour des raisons esthétiques, définissez l&#039;hostname de votre système de rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;hostname proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour créer votre raid 1 avec 2 disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que si vous souhaitez utiliser plus que 2 disques, il faut augmenter la valeur de &amp;lt;code&amp;gt;--raid-devices&amp;lt;/code&amp;gt; et ajouter les partitions des disques à la suite.&lt;br /&gt;
&lt;br /&gt;
Attendez que le raid soit synchronisé avant de continuer. Vous pouvez surveiller facilement cela avec la commande &amp;lt;code&amp;gt;watch cat /proc/mdstat&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Création des systèmes de fichiers==&lt;br /&gt;
&lt;br /&gt;
Créez un système de fichier ext4 pour le raid du root :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/md2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, initialisez les swaps :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkswap /dev/sda3&lt;br /&gt;
mkswap /dev/sdb3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Installation de proxmox=&lt;br /&gt;
&lt;br /&gt;
==Installation du système de base==&lt;br /&gt;
&lt;br /&gt;
Nous débutons par installer le système de base de Debian avec &amp;lt;code&amp;gt;debootstrap&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les paquets nécessaires dans votre rescue :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install debootstrap debian-keyring debian-archive-keyring&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez votre partition raid root sur &amp;lt;code&amp;gt;/mnt&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/md2 /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez le système de base debian, version bookworm :&lt;br /&gt;
&amp;lt;pre&amp;gt;debootstrap --arch=amd64 bookworm /mnt http://ftp.fr.debian.org/debian&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration de Debian==&lt;br /&gt;
&lt;br /&gt;
Montez les vfs suivants, puis chrootez dans votre nouveau système debian :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount -o bind /proc /mnt/proc&lt;br /&gt;
mount -o bind /dev /mnt/dev&lt;br /&gt;
mount -o bind /dev/pts /mnt/dev/pts&lt;br /&gt;
mount -o bind /sys /mnt/sys&lt;br /&gt;
chroot /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les archives apt : éditez le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main archive&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# security updates&lt;br /&gt;
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# bookworm-updates, previously known as &#039;volatile&#039;&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# backports archive&lt;br /&gt;
deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour les paquets :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les locales et la configuration de console :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install locales &lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
apt install console-data console-setup-linux console-setup wget&lt;br /&gt;
dpkg-reconfigure console-data # from arch &amp;gt; french &amp;gt; latin9)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la zone horaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tzselect&lt;br /&gt;
dpkg-reconfigure tzdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez votre fichier &amp;lt;code&amp;gt;/etc/fstab&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Pour GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda1       /boot/efi       vfat    defaults                                  0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour GPT pour BIOS :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                                 &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/md2        /               ext4    defaults,errors=remount-ro,relatime       0       1&lt;br /&gt;
/dev/sda3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
/dev/sdb3       swap    swap    sw,pri=1                                          0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez la partition EFI / ESP dans le cas d&#039;un partitionnement GPT pour EFI / UEFI :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /boot/efi&lt;br /&gt;
mount /boot/efi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez les interfaces réseaux dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The loopback network interface&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet static&lt;br /&gt;
        address XXXX/24&lt;br /&gt;
        gateway XXXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# local&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
::1             localhost ip6-localhost ip6-loopback&lt;br /&gt;
ff02::1         ip6-allnodes&lt;br /&gt;
ff02::2         ip6-allrouters&lt;br /&gt;
&lt;br /&gt;
# main&lt;br /&gt;
ipdelamachine   proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez les hostnames dans ces fichiers :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Pour celui la : non-fqdn&lt;br /&gt;
echo proxmox &amp;gt; /etc/hostname&lt;br /&gt;
# Pour celui la : fqdn&lt;br /&gt;
echo proxmox.domain.tld &amp;gt; /etc/mailname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION&#039;&#039;&#039; Le fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; DOIT être cohérent avec le fichier &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, si le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est &amp;lt;code&amp;gt;proxmox&amp;lt;/code&amp;gt; et que l&#039;ip de votre proxmox est 225.182.54.9 il faudra veiller a avoir les informations suivantes dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1 localhost&lt;br /&gt;
225.182.54.9 proxmox.domain.tld proxmox pvelocalhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attention : n&#039;utilisez pas 127.0.1.1 (comme le fait debian) mais bien la vrai ip (ici 225.182.54.9)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
N&#039;oubliez pas de configurer les dns (ceux de votre hébergeur dédié) dans &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;nameserver XX.XX.XX.XX&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez postfix :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install postfix&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, comme nous installons notre partition de boot sur un raid software, il faut installer &amp;lt;code&amp;gt;madadm&amp;lt;/code&amp;gt; à ce stade :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install mdadm&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez si votre array root s&#039;est bien défini automatiquement dans &amp;lt;code&amp;gt;/etc/mdadm/mdadm.conf&amp;lt;/code&amp;gt;. Si ce n&#039;est pas me cas, ajoutez la configuration de l&#039;array manuellement :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - kernel==&lt;br /&gt;
&lt;br /&gt;
Ajoutez le dépot proxmox dans le fichier /etc/apt/source.list :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# PVE pve-no-subscription repository provided by proxmox.com, NOT recommended for production use&lt;br /&gt;
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajoutez la clé du dépôt proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour le système :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 1 : Partitions GPT pour EFI / UEFI===&lt;br /&gt;
&lt;br /&gt;
Vérifiez que &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt; est bien monté. Si ce n&#039;est pas le cas, faites le.&lt;br /&gt;
&lt;br /&gt;
Installez le kernel proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-efi-amd64 gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supprimez les paquets suivant si vous n&#039;avez pas besoin de secureboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed shim-signed-common shim-unsigned&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normalement tout doit se faire avec des promps. Si ce n&#039;était pas le cas :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si jamais vous utilisez un démarrage en PXE (c&#039;est le cas sur un serveur OVH par exemple), utilisez l&#039;argument &amp;lt;code&amp;gt;--no-nvram&amp;lt;/code&amp;gt; pour empêcher grub de mettre à jour la NVRAM et casser votre mécanique de démarrage PXE :&lt;br /&gt;
&amp;lt;pre&amp;gt;grub-install --bootloader-id=proxmox --no-nvram&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Etant donné que seul &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; est monté sur &amp;lt;code&amp;gt;/boot/efi&amp;lt;/code&amp;gt;, il faut transférer manuellement les données sur &amp;lt;code&amp;gt;/dev/sdb1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/sdb1 /mnt&lt;br /&gt;
rsync -av /boot/efi/ /mnt/&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si pour une raison quelconque, vous aviez besoin des headers du kernel :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install pve-headers-5.15&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Possibilité 2 : Partitions GPT pour BIOS OU Partitions MBR pour BIOS===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install pve-firmware&lt;br /&gt;
apt install proxmox-default-kernel grub-pc gdisk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on vous demandera où installer grub, choisissez &amp;lt;code&amp;gt;sda&amp;lt;/code&amp;gt; ET &amp;lt;code&amp;gt;sdb&amp;lt;/code&amp;gt;. Sinon :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grub-install /dev/sda&lt;br /&gt;
grub-install /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - OpenSSH==&lt;br /&gt;
&lt;br /&gt;
Installez openssh et définissez un password root. Autorisez le login root par password temporairement.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install openssh-server&lt;br /&gt;
passwd&lt;br /&gt;
sed -i &amp;quot;s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g&amp;quot; /etc/ssh/sshd_config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - Vérifications finales et redémarrage sur le kernel proxmox==&lt;br /&gt;
&lt;br /&gt;
Si vous avez une configuration particulière à entrer dans &amp;lt;code&amp;gt;/etc/default/grub&amp;lt;/code&amp;gt;, faites le maintenant. Par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_CMDLINE_LINUX=&amp;quot;nomodeset iommu=pt&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis régénérez la configuration de grub :&lt;br /&gt;
&amp;lt;pre&amp;gt;update-grub&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez vérifier que votre fstab est valide avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;findmnt --verify --verbose&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /boot/efi/&lt;br /&gt;
exit&lt;br /&gt;
umount /mnt/sys&lt;br /&gt;
umount /mnt/dev/pts&lt;br /&gt;
umount /mnt/dev&lt;br /&gt;
umount /mnt/proc&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enfin, redémarrez le serveur sur le disque dur.&lt;br /&gt;
&lt;br /&gt;
==Installation de ifupdown2==&lt;br /&gt;
&lt;br /&gt;
Le paquet &amp;lt;code&amp;gt;ifupdown2&amp;lt;/code&amp;gt; est en voie de devenir le remplaçant officiel de &amp;lt;code&amp;gt;ifupdown&amp;lt;/code&amp;gt; pour proxmox.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install ifupdown2&lt;br /&gt;
apt purge ifupdown&lt;br /&gt;
systemctl enable networking&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour vérifier que votre configuration est fonctionnelle : lancez &amp;lt;code&amp;gt;ifquery -a&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redémarrez à nouveau votre serveur&lt;br /&gt;
&lt;br /&gt;
==Installation de proxmox - pve==&lt;br /&gt;
&lt;br /&gt;
Une fois le redémarrage effectué, vous allez enfin pouvoir installer pve :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install proxmox-ve ksm-control-daemon chrony&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;apt remove os-prober&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editez la configuration réseau &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; afin d&#039;y créer votre bridge :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto eno3&lt;br /&gt;
iface eno3 inet manual&lt;br /&gt;
&lt;br /&gt;
auto vmbr0&lt;br /&gt;
iface vmbr0 inet static&lt;br /&gt;
        address xxxxx/24&lt;br /&gt;
        gateway xxxx&lt;br /&gt;
        hwaddress AA:BB:CC:11:22:33&lt;br /&gt;
        bridge_ports eno3&lt;br /&gt;
        bridge_stp off&lt;br /&gt;
        bridge_fd 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la ligne &amp;lt;code&amp;gt;hwaddress&amp;lt;/code&amp;gt; avec l&#039;adresse MAC de l&#039;interface eno3.&lt;br /&gt;
&lt;br /&gt;
Installez votre clé SSH dans &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; puis désactivez le login root par password de OpenSSH dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois tout installé, je vous conseille de reconfigurer grub afin de mettre à jour la configuration interne de debian:&lt;br /&gt;
* Pour EFI : &amp;lt;code&amp;gt;dpkg-reconfigure grub-efi-amd64&amp;lt;/code&amp;gt;&lt;br /&gt;
* Pour BIOS : &amp;lt;code&amp;gt;dpkg-reconfigure grub-pc&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Redémarrez une dernière fois pour appliquer les changements.&lt;br /&gt;
&lt;br /&gt;
Votre proxmox sera accessible à l&#039;adresse https://ip:8006&lt;br /&gt;
&lt;br /&gt;
==Nettoyage des paquets==&lt;br /&gt;
&lt;br /&gt;
Si vous ne comptez pas utiliser ZFS, vous pouvez supprimer les paquets suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge zfs-zed libnvpair3linux libuutil3linux libzfs4linux libzpool5linux zfsutils-linux&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration réseau avancée==&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;une IPv6 sur vmbr0===&lt;br /&gt;
&lt;br /&gt;
===Ajout d&#039;un réseau interne vmbr1===&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment créer un réseau interne avec proxmox, c&#039;est à dire, un réseau qui ne sera attaché à aucune interface réseau physique. L&#039;intérêt est d&#039;offrir un débit bien supérieur pour les communications entre les VMs.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto vmbr1&lt;br /&gt;
iface vmbr1 inet static&lt;br /&gt;
        address  192.168.0.1&lt;br /&gt;
        netmask  255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : vous pouvez faire de même en ipv6 :&lt;br /&gt;
* il faut utiliser le range Unique Local Address (ULA) fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address)&lt;br /&gt;
* pour générer votre ULA : http://pfoo.unscdf.org/ula/gen-ula.html&lt;br /&gt;
&lt;br /&gt;
==Sécurisation de base==&lt;br /&gt;
&lt;br /&gt;
Je vous conseil de commencer à sécuriser votre ssh :&lt;br /&gt;
* désactivez le login root (directive &amp;lt;code&amp;gt;PermitRootLogin no&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt;). Pensez néanmoins à créer un utilisateur pour vous connecter en ssh avant de désactiver le login root.&lt;br /&gt;
* utilisez la directive &amp;lt;code&amp;gt;allowusers &amp;lt;user&amp;gt;&amp;lt;/code&amp;gt; dans &amp;lt;code&amp;gt;/etc/ssh/sshd_config&amp;lt;/code&amp;gt; pour n&#039;autoriser que certains utilisateurs à se connecter en ssh.&lt;br /&gt;
&lt;br /&gt;
Il est aussi préférable d&#039;installer le serveur de temps NTP à la place de systemd-timesyncd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install chrony&lt;br /&gt;
apt purge systemd-timesyncd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configurer le serveur mail postfix=&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
==Certificats SSL==&lt;br /&gt;
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. Si ce n&#039;est pas le cas, vous pouvez toujours aller lire [http://wiki.unscdf.org/index.php?title=Installation_et_configuration_de_OpenSSL ceci] afin d&#039;apprendre à créer votre autorité ssl.&lt;br /&gt;
&lt;br /&gt;
Ajoutez les lignes suivantes dans &amp;lt;code&amp;gt;/etc/ssl/openssl.cnf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[POSTFIX]&lt;br /&gt;
nsComment                       = &amp;quot;SMTP Server Certificate&amp;quot;&lt;br /&gt;
subjectKeyIdentifier            = hash&lt;br /&gt;
authorityKeyIdentifier          = keyid,issuer:always&lt;br /&gt;
issuerAltName                   = issuer:copy&lt;br /&gt;
basicConstraints                = critical,CA:FALSE&lt;br /&gt;
keyUsage                        = critical, digitalSignature, nonRepudiation, keyEncipherment&lt;br /&gt;
nsCertType                      = server&lt;br /&gt;
extendedKeyUsage                = serverAuth&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis générez la clé et le certificat, et signez le avec votre autorité (int_ca dans mon cas) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req&lt;br /&gt;
openssl ca -config /etc/ssl/openssl.cnf -name int_ca -extensions POSTFIX -in postfix.req -out postfix.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Déplacez les fichiers dans le répertoire &amp;lt;code&amp;gt;/etc/postfix/ssl&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /etc/postfix/ssl&lt;br /&gt;
mv postfix.key /etc/postfix/ssl/&lt;br /&gt;
mv postfix.pem /etc/postfix/ssl/&lt;br /&gt;
chmod 600 /etc/postfix/ssl/*&lt;br /&gt;
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/int_ca/int_ca.pem &amp;gt; /etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut encore modifier &amp;lt;code&amp;gt;/etc/postfix/main.cf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smtpd_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtpd_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
smtpd_use_tls=yes&lt;br /&gt;
smtp_tls_cert_file=/etc/postfix/ssl/postfix.pem&lt;br /&gt;
smtp_tls_key_file=/etc/postfix/ssl/postfix.key&lt;br /&gt;
smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem&lt;br /&gt;
&lt;br /&gt;
smtpd_tls_security_level=may&lt;br /&gt;
smtp_tls_security_level=may&lt;br /&gt;
smtpd_tls_loglevel = 1&lt;br /&gt;
smtp_tls_loglevel = 1&lt;br /&gt;
&lt;br /&gt;
#smtp_tls_policy_maps = hash:/etc/postfix/tls_policy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire=&lt;br /&gt;
&lt;br /&gt;
Depuis Proxmox 5.2, il n&#039;est plus recommandé d&#039;adapter manuellement les fichiers contenant les certificats et clés privés de proxmox.&amp;lt;br&amp;gt;&lt;br /&gt;
Cependant, vous pouvez placer directement votre clé privé dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.key&amp;lt;/code&amp;gt; et la chaîne de certification dans le fichier &amp;lt;code&amp;gt;/etc/pve/local/pveproxy-ssl.pem&amp;lt;/code&amp;gt;. Vous pouvez également déposer ces fichiers via la webui de proxmox au niveau de chaque serveur.&lt;br /&gt;
&lt;br /&gt;
=Surveiller l&#039;état des disques avec SMART=&lt;br /&gt;
&lt;br /&gt;
Commencez par installer le paquet smartmontools :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install smartmontools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez que vos disques gèrent smart et qu&#039;il est activé :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -i /dev/sda&lt;br /&gt;
smartctl -i /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si smart n&#039;est pas activé, essayez de l&#039;activer comme ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -s on /dev/sda&lt;br /&gt;
smartctl -s on /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez le statut de santé de vos disques :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -H /dev/sda&lt;br /&gt;
smartctl -H /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
S&#039;il indique &amp;lt;code&amp;gt;PASSED&amp;lt;/code&amp;gt; c&#039;est bon de ce côté. S&#039;il vous indique &amp;lt;code&amp;gt;FAILED&amp;lt;/code&amp;gt;, sauvegardez immédiatement vos données !&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence d&#039;erreurs dans le log smart :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
smartctl -l error /dev/sda&lt;br /&gt;
smartctl -l error /dev/sdb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez &amp;lt;code&amp;gt;No Errors Logged&amp;lt;/code&amp;gt; ou quelques erreurs, c&#039;est bon. S&#039;il y eu a beaucoup, il faut envisager de changer le disque.&lt;br /&gt;
&lt;br /&gt;
Le fichier de configuration de smartd est &amp;lt;code&amp;gt;/etc/smartd.conf&amp;lt;/code&amp;gt;. Commentez la ligne &amp;lt;code&amp;gt;DEVICESCAN&amp;lt;/code&amp;gt; puis ajoutez les lignes suivantes pour surveiller les deux disques durs :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
/dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous activons la surveillance globale (&amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt;), la vérification automatique offline, (&amp;lt;code&amp;gt;-o on&amp;lt;/code&amp;gt;), la sauvegarde automatique des attributs (&amp;lt;code&amp;gt;-S on&amp;lt;/code&amp;gt; et lançons un &amp;lt;code&amp;gt;short self test&amp;lt;/code&amp;gt; tous les jours à 2h du matin, et un &amp;lt;code&amp;gt;long self test&amp;lt;/code&amp;gt; tous les samedi à 3h du matin. Si des erreurs sont détectés, un email est envoyé à vous@domain.tld.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez smartd :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/smartmontools restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour plus d&#039;information sur SMART et ses arguments : [[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
&lt;br /&gt;
=Protégez votre proxmox=&lt;br /&gt;
&lt;br /&gt;
==Désactiver le login root sur l&#039;interface proxmox==&lt;br /&gt;
Avant toute manipulation, n&#039;oubliez pas de créer un utilisateur ayant les droits d&#039;administration pour accéder à l&#039;interface de proxmox&lt;br /&gt;
&lt;br /&gt;
===Via l&#039;interface proxmox===&lt;br /&gt;
Dans Datacenter &amp;gt; Permissions &amp;gt; Users : Editez l&#039;utilisateur root et décochez la case &amp;lt;code&amp;gt;Enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Via les droits linux===&lt;br /&gt;
&amp;lt;pre&amp;gt;passwd --lock root&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 !&lt;br /&gt;
&lt;br /&gt;
===Via PAM===&lt;br /&gt;
Vous pouvez désactiver le login pam en éditant &amp;lt;code&amp;gt;/etc/pam.d/other&amp;lt;/code&amp;gt; et en y ajoutant, en début de fichier, les lignes suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth        required    pam_deny.so&lt;br /&gt;
auth        required    pam_warn.so&lt;br /&gt;
account     required    pam_deny.so&lt;br /&gt;
account     required    pam_warn.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attention, cette méthode peut avoir des effets de bord si d&#039;autres programmes utilisent l&#039;entité pam/other&lt;br /&gt;
&lt;br /&gt;
==Désactiver rpcbind==&lt;br /&gt;
&lt;br /&gt;
Si vous n&#039;utilisez pas de montage NFS vous pouvez désactiver rpcbind.&amp;lt;br&amp;gt;&lt;br /&gt;
Editez &amp;lt;code&amp;gt;/etc/default/nfs-common&amp;lt;/code&amp;gt; et passez l&#039;argument suivant :&lt;br /&gt;
&amp;lt;pre&amp;gt;NEED_STATD=no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis désactivez rpcbind :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl disable rpcbind.target&lt;br /&gt;
systemctl disable rpcbind.socket&lt;br /&gt;
systemctl disable rpcbind.service&lt;br /&gt;
systemctl stop rpcbind.target&lt;br /&gt;
systemctl stop rpcbind.socket&lt;br /&gt;
systemctl stop rpcbind.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eviter les reboots accidentels avec molly-gard==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install molly-guard&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Protection SSH avec sshguard==&lt;br /&gt;
&lt;br /&gt;
[[Protéger SSH avec sshguard]]&lt;br /&gt;
&lt;br /&gt;
==Protéger l&#039;interface web avec fail2ban==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install fail2ban&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/jail.local&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[DEFAULT]&lt;br /&gt;
# &amp;quot;ignoreip&amp;quot; can be an IP address, a CIDR mask or a DNS host&lt;br /&gt;
ignoreip = 127.0.0.1&lt;br /&gt;
bantime  = 1800&lt;br /&gt;
maxretry = 3&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Destination email address used solely for the interpolations in&lt;br /&gt;
# jail.{conf,local} configuration files.&lt;br /&gt;
destemail = root@localhost&lt;br /&gt;
&lt;br /&gt;
action = %(action_mwl)s&lt;br /&gt;
&lt;br /&gt;
[ssh]&lt;br /&gt;
enabled = false&lt;br /&gt;
&lt;br /&gt;
[sshd]&lt;br /&gt;
enabled  = false&lt;br /&gt;
&lt;br /&gt;
[proxmox]&lt;br /&gt;
enabled = true&lt;br /&gt;
port = https,http,8006&lt;br /&gt;
filter = proxmox&lt;br /&gt;
backend = systemd&lt;br /&gt;
maxretry = 4&lt;br /&gt;
findtime = 2d&lt;br /&gt;
bantime = 1h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/fail2ban/filter.d/proxmox.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Definition]&lt;br /&gt;
failregex = pvedaemon\[.*authentication failure; rhost=&amp;lt;HOST&amp;gt; user=.* msg=.*&lt;br /&gt;
ignoreregex =&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez tester votre configuration avec la commande &amp;lt;code&amp;gt;fail2ban-regex /var/log/daemon.log /etc/fail2ban/filter.d/proxmox.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relancez fail2ban :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/fail2ban restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==firewall iptables==&lt;br /&gt;
&lt;br /&gt;
=Création d&#039;un stockage pour les VMs=&lt;br /&gt;
&lt;br /&gt;
Créez les partitions sda4 et sdb4 au moyen de gdisk (EFI) ou parted (BIOS).&lt;br /&gt;
&lt;br /&gt;
Créez sur ces partitions un raid :&lt;br /&gt;
&amp;lt;pre&amp;gt;mdadm --create --verbose /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Maintenez à jour &amp;lt;code&amp;gt;mdadm.conf&amp;lt;/code&amp;gt; et votre initramfs afin de conserver le bon naming du raid après reboot :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mdadm --examine --scan &amp;gt;&amp;gt; /etc/mdadm/mdadm.conf&lt;br /&gt;
update-initramfs -u&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis initialisez-y un LVM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvcreate /dev/md4&lt;br /&gt;
vgcreate main /dev/md4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu&#039;a déclarer ce Volume Group LVM dans l&#039;interface proxmox.&lt;br /&gt;
&lt;br /&gt;
=VM qemu/kvm=&lt;br /&gt;
&lt;br /&gt;
==Télécharger vos images==&lt;br /&gt;
&lt;br /&gt;
Vous pouvez placer les iso dans &amp;lt;code&amp;gt;/var/lib/vz/template/iso/&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;wget&amp;lt;/code&amp;gt; par exemple.&lt;br /&gt;
Notez que l&#039;interface graphique de proxmox propose également une fonction d&#039;upload.&lt;br /&gt;
&lt;br /&gt;
==Créer votre première VM==&lt;br /&gt;
&lt;br /&gt;
Une fois la VM crées dans l&#039;interface proxmox, je vous recommande d&#039;écrire des zero sur son disque afin de réduire la taille des futurs backups. Si votre vm porte le numéro 100 et possède un seul disque :&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/zero | pv -ptrb | dd of=/dev/main/vm-100-disk1 bs=1M&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr0 (ip public)===&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau en bridge vmbr1 (ip locale)===&lt;br /&gt;
&lt;br /&gt;
Configuration réseau de la VM :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.0.2&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
gateway 192.168.0.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Règle iptables à ajouter sur l&#039;hôte :&lt;br /&gt;
&amp;lt;pre&amp;gt;iptables -t nat -A POSTROUTING -s 192.168.0.2 -o vmbr0 -j SNAT --to IP-PUBLIC-DE-VOTRE-HOTE&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez rendre accessible l&#039;un des services de la VM depuis l&#039;ip de l&#039;hote sur un port sépcifique :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -t nat -A PREROUTING -p tcp -d &amp;lt;ip de l&#039;hote&amp;gt; --dport &amp;lt;port souhaité&amp;gt; -i vmbr0 -j DNAT --to-destination 192.168.0.2:port&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bloquer le spoofing d&#039;adresse mac==&lt;br /&gt;
Sur l&#039;hyperviseur, installez &amp;lt;code&amp;gt;ebtables&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install ebtables&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Admettons ensuite que votre VM a comme adresse ip &amp;lt;code&amp;gt;84.93.26.3&amp;lt;/code&amp;gt; et que son adresse mac doit être &amp;lt;code&amp;gt;52:54:00:00:98:b6&amp;lt;/code&amp;gt; : &lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv4 --ip-src 84.93.26.3 -s ! 52:54:00:00:98:b6 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez faire de même pour l&#039;ipv6. Dans l&#039;exemple suivant, seul le bloc ipv6 &amp;lt;code&amp;gt;2a01:d4h:123b:100::/56&amp;lt;/code&amp;gt; est utilisable par la vm :&lt;br /&gt;
&amp;lt;pre&amp;gt;ebtables -A FORWARD -p IPv6 --ip6-src 2a01:d4h:123b:100::/56 -s ! 52:54:00:00:08:b1 -j DROP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Importer une VM depuis vmware ESXi==&lt;br /&gt;
&lt;br /&gt;
==qm et modification des VMs en ligne de commande==&lt;br /&gt;
&lt;br /&gt;
==Monter les partitions d&#039;une VM depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pour la partition 1 : start*blocksize = offset&lt;br /&gt;
donc 2048*512 = 1048576&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;losetup /dev/loop1 -o 1048576 /dev/main/vm-101-disk-1 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et enfin :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount /dev/loop1 /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé vos modifications :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
umount /mnt&lt;br /&gt;
losetup -d /dev/loop1&lt;br /&gt;
losetup -d /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Si la partition que vous voulez monter est un LVM===&lt;br /&gt;
&lt;br /&gt;
Scannez les nouveaux volumes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm pvscan&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Activez les groupes :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm vgchange -ay&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
listez les lvms avec :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvm lvs&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les LV devraient apparaître dans &amp;lt;code&amp;gt;/dev/mapper/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quand vous avez terminé :&lt;br /&gt;
* démontez les LV&lt;br /&gt;
* Désactivez le groupe avec &amp;lt;code&amp;gt;vgchange -an&amp;lt;/code&amp;gt;&lt;br /&gt;
* désactivez le loopback : &amp;lt;code&amp;gt;losetup -d /dev/loop0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Augmenter la taille du disque d&#039;une VM==&lt;br /&gt;
&lt;br /&gt;
Coupez la VM.&lt;br /&gt;
&lt;br /&gt;
Sur l&#039;host pour modifier la taille du disque 1 de la vm 110 ) 140G :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvextend -L 140G /dev/main/vm-110-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il faut ensuite, sur la vm lancée, utiliser resize2fs&lt;br /&gt;
&lt;br /&gt;
==Migrer une VM vers un autre serveur manuellement (pas de cluster) avec un downtime minimum==&lt;br /&gt;
&lt;br /&gt;
Nous allons voir comment migrer une VM proxmox stockée sur un LVM d&#039;un serveur à un autre, et ce, en minimisant au maximum le downtime. Pour cela, nous allons coupler la fonctionnalité de snapshot de lvm avec un petit script (lvmsync) qui permet de ne transférer que les blocs modifiés d&#039;un snapshot.&lt;br /&gt;
&lt;br /&gt;
Installez dmsetup et ruby (1.8 minimum) sur le serveur d&#039;origine et de destination :&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install dmsetup ruby&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Récupérez &amp;lt;code&amp;gt;lvmsync&amp;lt;/code&amp;gt; sur https://github.com/mpalmer/lvmsync et placez le dans /sbin/ sur les serveurs d&#039;origine et de destination.&lt;br /&gt;
&lt;br /&gt;
Dans cet exemple, nous allons migrer la vm 102 disposant d&#039;un seul disque virtuel nommé vm-102-disk-1 et stocké dans le vg main du serveur server1.domain.tld vers le serveur server2.domain.tld.&lt;br /&gt;
Pour commencer, créez un snapshot de votre vm sur server1 :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvcreate --snapshot -L200G -n 102-lvmsync main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Désormais, tous les io de cette vm seront stockés dans le snapshot 102-lvmsync.&lt;br /&gt;
&lt;br /&gt;
Sur votre nouveau serveur, créez une VM identique à celle de votre premier serveur (surtout en qui concerne la taille de disque).&lt;br /&gt;
Depuis server1, copiez avec un dd over ssh le disque d&#039;origine de votre vm vers votre nouveau serveur.&lt;br /&gt;
&amp;lt;pre&amp;gt;dd if=/dev/main/vm-102-disk-1 | pv -ptrb | ssh -o &amp;quot;Compression no&amp;quot; root@server2.domain.tld &amp;quot;dd of=/dev/main/vm-102-disk-1 bs=100M&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : sur un réseauu 100Mbps utilisez plutôt &amp;lt;code&amp;gt;-o &amp;quot;Compressionlevel 1&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois la copie terminée, coupez la vm 102 sur server1, puis lancez lvmsync sur le snapshot (toujours sur server1) :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvmsync /dev/main/102-lvmsync server2.domain.tld:/dev/main/vm-102-disk-1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois le travail de lvmsync achevé, il ne nous reste plus qu&#039;a relancer la vm sur server2&lt;br /&gt;
&lt;br /&gt;
A titre d&#039;information, si vous voulez merger le snapshot de la vm 102 sur server 1, tapez :&lt;br /&gt;
&amp;lt;pre&amp;gt;lvconvert --merge /dev/main/102-lvmsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Conteneur LXC=&lt;br /&gt;
&lt;br /&gt;
==Empêcher la mise à jour automatique de certains fichiers de configuration système du conteneur==&lt;br /&gt;
&lt;br /&gt;
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)&lt;br /&gt;
&lt;br /&gt;
On peut empêcher la mise à jour de ces fichiers en créant un fichier &amp;lt;code&amp;gt;.pve-ignore.NOM&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Par exemple, &amp;lt;code&amp;gt;/etc/.pve-ignore.resolv.conf&amp;lt;/code&amp;gt; empêchera le fichier &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; d&#039;être mis à jour à chaque démarrage.&lt;br /&gt;
&lt;br /&gt;
=Annexes=&lt;br /&gt;
&lt;br /&gt;
==Problème de layout dans la console vnc==&lt;br /&gt;
Dans l&#039;interface web de proxmox : datacenter &amp;gt; option &amp;gt; passez Keyboard de &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; à &amp;lt;code&amp;gt;French&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Erreurs du type &amp;lt;code&amp;gt;IPv6 addrconf: prefix with wrong length 56&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64.&lt;br /&gt;
Ajouter les lignes suivantes dans un fichier &amp;lt;code&amp;gt;/etc/sysctl.d/local.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
net.ipv6.conf.all.autoconf = 0&lt;br /&gt;
net.ipv6.conf.default.autoconf = 0&lt;br /&gt;
net.ipv6.conf.eno3.autoconf = 0&lt;br /&gt;
net.ipv6.conf.vmbr0.autoconf = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Terminez par relancer procps :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/procps restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==paramètre sysctl ipv6 non appliqué au boot==&lt;br /&gt;
Ajoutez le module ipv6 dans /etc/modules afin d&#039;assurer le chargement d&#039;ipv6 avant l’exécution de sysctl :&lt;br /&gt;
&amp;lt;pre&amp;gt;echo ipv6 &amp;gt;&amp;gt; /etc/modules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LVM inaccessible depuis l&#039;host==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lvm pvscan&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface web ne fonctionne pas et la commande qm retourne une erreur ipcc_send_rec failed: Connection refused==&lt;br /&gt;
&lt;br /&gt;
Vérifiez la présence de fichiers et dossiers dans &amp;lt;code&amp;gt;/etc/pve/&amp;lt;/code&amp;gt;. Si ce dossier est vide, c&#039;est probablement que votre fichier &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; est mal configuré.&amp;lt;br&amp;gt;&lt;br /&gt;
Essayez de relancer &amp;lt;code&amp;gt;pve-cluster&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/init.d/pve-cluster restart&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous avez une erreur ou un warning, lancez la commande pmxcfs. Vous devriez obtenir ceci :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$# pmxcfs &lt;br /&gt;
Jan 21 15:28:19 proxmox pmxcfs[1846]: Unable to get local IP address (pmxcfs.c:721:main)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vérifiez alors que le contenu de &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; est défini dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si par exemple &amp;lt;code&amp;gt;/etc/hostname&amp;lt;/code&amp;gt; contient &amp;lt;code&amp;gt;proxmox.domain.tld&amp;lt;/code&amp;gt; vous devriez avoir la ligne suivante dans &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;VOTREIP proxmox.domain.tld proxmox&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pas assez d&#039;interfaces loopback==&lt;br /&gt;
&lt;br /&gt;
Créer le fichier &amp;lt;code&amp;gt;/etc/modprobe.d/local-loop.conf&amp;lt;/code&amp;gt; contenant :&lt;br /&gt;
&amp;lt;pre&amp;gt;options loop max_loop=64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pouvez ensuite redémarrer ou recharger le module loop :&lt;br /&gt;
&amp;lt;pre&amp;gt; rmmod loop &amp;amp;&amp;amp; modprobe loop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Défragmentation LVM : exemple==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hub:~# pvdisplay --maps&lt;br /&gt;
  --- Physical volume ---&lt;br /&gt;
  PV Name               /dev/sda4&lt;br /&gt;
  VG Name               main&lt;br /&gt;
  PV Size               1.76 TB / not usable 456.00 KB&lt;br /&gt;
  Allocatable           yes &lt;br /&gt;
  PE Size (KByte)       4096&lt;br /&gt;
  Total PE              461649&lt;br /&gt;
  Free PE               208721&lt;br /&gt;
  Allocated PE          252928&lt;br /&gt;
  PV UUID               PUqV5Q-WRW2-n20t-eFVM-CA1r-RhDl-2RTJHq&lt;br /&gt;
   &lt;br /&gt;
  --- Physical Segments ---&lt;br /&gt;
  Physical extent 0 to 7935:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-1&lt;br /&gt;
    Logical extents     0 to 7935&lt;br /&gt;
  Physical extent 7936 to 72191:&lt;br /&gt;
    Logical volume      /dev/main/vm-101-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 72192 to 136703:&lt;br /&gt;
    Logical volume      /dev/main/vm-102-disk-1&lt;br /&gt;
    Logical extents     0 to 64511&lt;br /&gt;
  Physical extent 136704 to 144895:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-1&lt;br /&gt;
    Logical extents     0 to 8191&lt;br /&gt;
  Physical extent 144896 to 209151:&lt;br /&gt;
    Logical volume      /dev/main/vm-103-disk-2&lt;br /&gt;
    Logical extents     0 to 64255&lt;br /&gt;
  Physical extent 209152 to 214271:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-1&lt;br /&gt;
    Logical extents     0 to 5119&lt;br /&gt;
  Physical extent 214272 to 227327:&lt;br /&gt;
    Logical volume      /dev/main/vm-104-disk-2&lt;br /&gt;
    Logical extents     0 to 13055&lt;br /&gt;
  Physical extent 227328 to 282111:&lt;br /&gt;
    FREE&lt;br /&gt;
  Physical extent 282112 to 307711:&lt;br /&gt;
    Logical volume      /dev/main/vm-108-disk-1&lt;br /&gt;
    Logical extents     0 to 25599&lt;br /&gt;
  Physical extent 307712 to 461648:&lt;br /&gt;
    FREE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir, on a un trou &amp;quot;vide&amp;quot; entre l&#039;extent &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; et 282111, puis à nouveau des données entre l&#039;extent &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pour combler ce trou, nous allons déplacer les données des  /dev/main/vm-108-disk-1 situés entre les extents &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt; et &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; (soit 25599 extents au total) vers l&#039;espace libre avec &amp;lt;code&amp;gt;pvmove&amp;lt;/code&amp;gt; :&amp;lt;br&amp;gt;&lt;br /&gt;
pvmove /dev/sda4:&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;282112&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;307711&amp;lt;/span&amp;gt; /dev/sda4:&amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt;-&amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt; --alloc anywhere&lt;br /&gt;
&lt;br /&gt;
Notez qu&#039;il faut attribuer exactement le même nombre d&#039;extents à la destination qu&#039;à l&#039;origine : &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;227328&amp;lt;/span&amp;gt; + 25599 = &amp;lt;span style=&amp;quot;color:pink&amp;quot;&amp;gt;252927&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Oups: j&#039;ai supprimé le mauvais lvm==&lt;br /&gt;
&lt;br /&gt;
Pas de panique, mais ne bougez plus ! Pour l&#039;instant, seul les métadonnées du lvm sont impactés.&lt;br /&gt;
Et comme c&#039;est bien foutu, lvm conserve un backup des anciennes metadonnées après chaque modification. Ces archives sont situés dans &amp;lt;code&amp;gt;/etc/lvm/archive/&amp;lt;/code&amp;gt;. Les fichiers y sont nommés sous la forme vg_XXXX-YYYYYYY.vg. Normalement, le fichier ayant le XXXX le plus élevé sera celui de l&#039;état précédent votre erreur.&lt;br /&gt;
Pour vérifier que vous avez sélectionné le bon fichier, vous pouvez l&#039;ouvrir avec nano et regarder si l&#039;état du lvm dans cette archive correspond a ce que vous attendez.&lt;br /&gt;
&lt;br /&gt;
Pour restaurer l&#039;archive des métadonnées main_00007-587941649.vg pour le vg main :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vgcfgrestore -f /etc/lvm/archive/main_00007-587941649.vg main&lt;br /&gt;
lvm vgchange -ay&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Votre volume devrait être de retour.&lt;br /&gt;
&lt;br /&gt;
Il faut encore vérifier que la table de partition contenu sur ce lvm n&#039;a pas morphlé. En admettant que /dev/main/vm-101-disk-1 est la lvm que vous venez de restaurer :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# fdisk -lu /dev/loop0 &lt;br /&gt;
&lt;br /&gt;
Disk /dev/loop0: 10.7 GB, 10737418240 bytes&lt;br /&gt;
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors&lt;br /&gt;
Units = sectors of 1 * 512 = 512 bytes&lt;br /&gt;
Disk identifier: 0x0002f94d&lt;br /&gt;
&lt;br /&gt;
      Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;
/dev/loop0p1   *        2048    20013055    10005504   83  Linux&lt;br /&gt;
/dev/loop0p2        20015102    20969471      477185    5  Extended&lt;br /&gt;
/dev/loop0p5        20015104    20969471      477184   82  Linux swap / Solaris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voyez ça, c&#039;est bon, vous êtes sauvés ! Si ce n&#039;est pas le cas, continuez à lire ;)&lt;br /&gt;
&lt;br /&gt;
===Récupération de la table de partition===&lt;br /&gt;
&lt;br /&gt;
Si fdisk vous envois chier avec un message du style &amp;lt;code&amp;gt;Disk /dev/loop0 doesn&#039;t contain a valid partition table&amp;lt;/code&amp;gt;, il va falloir récupérer la table de partition.&lt;br /&gt;
&lt;br /&gt;
Installez testdisk :&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install testdisk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lancez le:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# losetup /dev/loop0 /dev/main/vm-101-disk-1&lt;br /&gt;
# testdisk /dev/loop0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selectionez le media &amp;lt;code&amp;gt;/dev/loop0&amp;lt;/code&amp;gt; et validez avec &amp;lt;code&amp;gt;enter&amp;lt;/code&amp;gt;.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;intel&amp;lt;/code&amp;gt; comme type de table de partition.&lt;br /&gt;
Au menu suivant, sélectionnez &amp;lt;code&amp;gt;analyse&amp;lt;/code&amp;gt;&lt;br /&gt;
A l&#039;écran suivant, tapez enter.&lt;br /&gt;
Avec de la chance, testdisk retrouvera vos partitions. Une fois qu&#039;il aura terminé de travailler, il ne restera plus qu&#039;à taper sur enter encore une fois, puis demander à testdisk de sauvegarder la table de partition&lt;br /&gt;
&lt;br /&gt;
==L&#039;interface proxmox n&#039;affiche pas les disques de certaines VMs==&lt;br /&gt;
&lt;br /&gt;
Ceci arrive typiquement si vous avez créé un volume logique à la main sans y ajouter le bon tag.&lt;br /&gt;
Vérifiez la présence des tags sur vos LV avec la commande &amp;lt;code&amp;gt;lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  20.00g &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous le voyez, le lv de la vm 101 n&#039;est pas tagué. Vous pouvez ajouter le tag avec &amp;lt;code&amp;gt;lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~# lvchange --addtag pve-vm-101 /dev/main/vm-101-disk-1&lt;br /&gt;
~# lvs --options &#039;vg_name,lv_name,lv_size,tags&#039;&lt;br /&gt;
  VG   LV            LSize   LV Tags   &lt;br /&gt;
  main vm-100-disk-1   2.00g pve-vm-100&lt;br /&gt;
  main vm-101-disk-1  16.00g pve-vm-101&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si cela ne fonctionne pas,  essayez de passer un petit coup de &amp;lt;code&amp;gt;qm rescan&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Accueil&amp;diff=4395</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Accueil&amp;diff=4395"/>
		<updated>2025-09-28T20:54:50Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Serveur */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{|style=&amp;quot;width:100%; background:#F5F5F5;&amp;quot; cellpadding=&amp;quot;10&amp;quot;&lt;br /&gt;
!style=&amp;quot;font-size:200%; color:#056FFA;&amp;quot;|Bienvenu sur ce wiki&lt;br /&gt;
|-&lt;br /&gt;
|Ce wiki est dédié aux différentes distributions linux et aux logiciels libres qui les accompagnent.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width:100%; border:1px solid #FFFFFF; background:#FFFFFF; color:#FFFFFF;&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!style=&amp;quot;font-size:115%; background:#056FFA;&amp;quot;|Rechercher par&lt;br /&gt;
|-align=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[Special:Categories|Catégories]] &amp;amp;#149; [[:Catégorie:Distributions|Distributions]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Généralités=&lt;br /&gt;
[[Généralités sur linux]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:transparent;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
= Serveur =&lt;br /&gt;
&lt;br /&gt;
; [[:Category:serveur|Liste des pages]]&lt;br /&gt;
: &lt;br /&gt;
; [[Sécuriser_ses_sites_avec_letsencrypt_et_acme-tiny|letsencrypt]]&lt;br /&gt;
; [[:Category:monitoring|Monitoring]]&lt;br /&gt;
: Tutoriels détaillants des outils de supervision et de métrologie&lt;br /&gt;
;[[Proxmox 8]]&lt;br /&gt;
:Tutoriel détaillant l&#039;installation de proxmox 7.x sous debian&lt;br /&gt;
;[[Sécurisation d&#039;un serveur linux]]&lt;br /&gt;
:Guideline basique de propositions de sécurisation d&#039;un serveur linux&lt;br /&gt;
; [[:Category:security|Sécurité]]&lt;br /&gt;
: outils de sécurité&lt;br /&gt;
; [[:Category:virtualisation|virtualisation]]&lt;br /&gt;
: proxmox principalement&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
= Bureautique =&lt;br /&gt;
&lt;br /&gt;
; [[:Category:desktop|Liste des pages]]&lt;br /&gt;
:&lt;br /&gt;
;[[Kubuntu / KDE : login ssh automatique par clé]]&lt;br /&gt;
:&lt;br /&gt;
;[[ssh : le client libre de OpenSSH]]&lt;br /&gt;
:&lt;br /&gt;
;[[Court-circuiter la vérification dns]]&lt;br /&gt;
:&lt;br /&gt;
;[[Graver un iso bootable sur une clé usb]]&lt;br /&gt;
:Vos CDRW ne marchent plus ? Vous n&#039;avez pas de lecteur cd sur votre netbook ? &lt;br /&gt;
:&lt;br /&gt;
;[[Diagnostic smart d&#039;un disque]]&lt;br /&gt;
:&lt;br /&gt;
;[[Fibre orange en DHCP avec routeur pfsense]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
= Développement =&lt;br /&gt;
; [[:Category:développement|Liste des pages]]&lt;br /&gt;
:&lt;br /&gt;
; [[Auto-complétion_avec_Vim|Auto-complétion avec Vim]]&lt;br /&gt;
: Configurer l&#039;auto-complétion C++ dans l&#039;editeur de texte Vim&lt;br /&gt;
;[[Git]]&lt;br /&gt;
:Gestionnaire de version décentralisé&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
= Divers =&lt;br /&gt;
; [[:Category:Tools|Outils]]&lt;br /&gt;
:&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Proxmox_Backup_Server_(PBS)&amp;diff=4394</id>
		<title>Proxmox Backup Server (PBS)</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Proxmox_Backup_Server_(PBS)&amp;diff=4394"/>
		<updated>2025-09-26T20:51:44Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Installation de PBS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
&lt;br /&gt;
=Installation du système de base=&lt;br /&gt;
Créez les systèmes de fichier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/sda1&lt;br /&gt;
mkswap /dev/sda2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assurez vous que debootstrap est bien installé sur le système de rescue/d&#039;installation :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install debootstrap debian-keyring debian-archive-keyring&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Montez la partition sda1 :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount /dev/sda1 /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez le système de base debian :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debootstrap --arch=amd64 bookworm /mnt http://ftp.fr.debian.org/debian&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis chrootez dans le nouveau système :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount -o bind /proc /mnt/proc&lt;br /&gt;
mount -o bind /dev /mnt/dev&lt;br /&gt;
mount -o bind /sys /mnt/sys&lt;br /&gt;
chroot /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration du système de base==&lt;br /&gt;
Éditez le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main archive&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# security updates&lt;br /&gt;
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# bookworm-updates, previously known as &#039;volatile&#039;&lt;br /&gt;
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware&lt;br /&gt;
&lt;br /&gt;
# backports archive&lt;br /&gt;
deb http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free non-free-firmware&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mettez à jour les paquets :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installez les locales et la configuration de console :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install locales &lt;br /&gt;
dpkg-reconfigure locales&lt;br /&gt;
apt install console-data console-setup-linux console-setup&lt;br /&gt;
dpkg-reconfigure console-data # from arch &amp;gt; french &amp;gt; latin9)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Définissez la zone horaire :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tzselect&lt;br /&gt;
dpkg-reconfigure tzdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez votre /etc/fstab : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# &amp;lt;file system&amp;gt;                                 &amp;lt;mount point&amp;gt;   &amp;lt;type&amp;gt;  &amp;lt;options&amp;gt;                       &amp;lt;dump&amp;gt;  &amp;lt;pass&amp;gt;&lt;br /&gt;
UUID=4b47c926-0e14-4076-9c17-637f0ec470aa       /               ext4    defaults,errors=remount-ro      0       1&lt;br /&gt;
UUID=50e94be2-cff4-43f9-a2f8-928a71fecea0       none            swap    sw                              0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editez &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
auto eno1&lt;br /&gt;
iface eno1 inet static&lt;br /&gt;
        address 46.104.126.132/24&lt;br /&gt;
        gateway 46.104.126.254&lt;br /&gt;
        broadcast 46.104.126.132&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Veillez à bien y adapter le nom de l&#039;interface (&amp;lt;code&amp;gt;eno1&amp;lt;/code&amp;gt; ici) en fonction de votre système (récupérez le par exemple avec la commande&amp;lt;code&amp;gt;ip addr&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Modifiez /etc/hosts : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
127.0.1.1       pbs.domain.tld   pbs&lt;br /&gt;
&lt;br /&gt;
# The following lines are desirable for IPv6 capable hosts&lt;br /&gt;
::1             localhost ip6-localhost ip6-loopback&lt;br /&gt;
ff02::1         ip6-allnodes&lt;br /&gt;
ff02::2         ip6-allrouters&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configurez l&#039;hostname :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo pbs &amp;gt; /etc/hostname&lt;br /&gt;
echo pbs.domain.tld &amp;gt; /etc/mailname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
N&#039;oubliez pas de configurer les dns (ceux de votre hébergeur dédié) dans &amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nameserver XX.XX.XX.XX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation du kernel==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt install linux-image-amd64 firmware-linux-free grub-pc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A l&#039;écran &amp;lt;code&amp;gt;Configuring grub-pc&amp;lt;/code&amp;gt;, installez grub sur &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==OpenSSH==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hostname -F /etc/hostname&lt;br /&gt;
apt install openssh-server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajoutez ensuite votre clé ssh dans &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;. Sans cela, vous ne pourrez pas vous connecter après avoir redémarré.&lt;br /&gt;
&lt;br /&gt;
==Redémarrage==&lt;br /&gt;
Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exit&lt;br /&gt;
umount /mnt/sys&lt;br /&gt;
umount /mnt/dev&lt;br /&gt;
umount /mnt/proc&lt;br /&gt;
umount /mnt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis rebootez sur le disque dur.&lt;br /&gt;
&lt;br /&gt;
=Installation de PBS=&lt;br /&gt;
Installez quelques paquets nécessaires :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install postfix gdisk parted wget&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajoutez la clé gpg du dépôt :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajoutez le dépot PBS dans &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Proxmox Backup Server pbs-no-subscription repository provided by proxmox.com,&lt;br /&gt;
# NOT recommended for production use&lt;br /&gt;
deb http://download.proxmox.com/debian/pbs bookworm pbs-no-subscription&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Puis installez PBS :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt install proxmox-archive-keyring proxmox-backup ifupdown&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note : nous forçons l&#039;installation de ifupdown pour éviter l&#039;installation de ifupdown2 pour des raisons de compatibilité. Si vous décidez d&#039;installer ifupdown2, assurez-vous en premier lieu d&#039;avoir la dernière version de ifupdown installé, et que votre configuration réseau est compatible.&lt;br /&gt;
&lt;br /&gt;
==Kernel alternatif==&lt;br /&gt;
&lt;br /&gt;
Si vous le souhaitez, vous pouvez également installer le kernel officiel de proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt install proxmox-kernel-6.8 pve-firmware&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Création de la partition de datastore=&lt;br /&gt;
&lt;br /&gt;
==Création manuelle du montage systemd==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cette procédure permet de respecter le fonctionnement interne actuel de PBS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Créez le système de fichier sur la partition souhaité. Ici, sda3.&lt;br /&gt;
&amp;lt;pre&amp;gt;mkfs.ext4 /dev/sda3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ blkid | grep sda3&lt;br /&gt;
/dev/sda3: UUID=&amp;quot;27208cd1-5e0e-4a59-b36e-fa869bc395c4&amp;quot; TYPE=&amp;quot;ext4&amp;quot; PARTUUID=&amp;quot;7d30a42b-03&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le fichier /etc/systemd/system/mnt-datastore-datastore1.mount :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mount]&lt;br /&gt;
Options=defaults&lt;br /&gt;
Type=ext4&lt;br /&gt;
What=/dev/disk/by-uuid/27208cd1-5e0e-4a59-b36e-fa869bc395c4&lt;br /&gt;
Where=/mnt/datastore/datastore1&lt;br /&gt;
&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Mount datastore &#039;datastore1&#039; under &#039;/mnt/datastore/datastore1&#039;&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et lancez le montage automatique par systemd :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl enable mnt-datastore-datastore1.mount&lt;br /&gt;
systemctl start mnt-datastore-datastore1.mount&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Création manuelle du montage sans systemd==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Procédure alternative&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Créez le dossier sur lequel vous allez monter le datastore puis appliquez lui le flag immuable (+i) afin d&#039;empêcher toute écriture directe sur le dossier non monté :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /datastore/datastore1&lt;br /&gt;
chattr +i /datastore/datastore1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Créez le système de fichier sur la partition souhaité. Ici, sda3.&lt;br /&gt;
&amp;lt;pre&amp;gt;mkfs.ext4 /dev/sda3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ blkid | grep sda3&lt;br /&gt;
/dev/sda3: UUID=&amp;quot;27208cd1-5e0e-4a59-b36e-fa869bc395c4&amp;quot; TYPE=&amp;quot;ext4&amp;quot; PARTUUID=&amp;quot;7d30a42b-03&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajoutez dans fstab pour que le datastore soit monté au démarrage :&lt;br /&gt;
&amp;lt;pre&amp;gt;UUID=27208cd1-5e0e-4a59-b36e-fa869bc395c4       /datastore/datastore1   ext4    defaults,relatime               0       2&amp;lt;/pre&amp;gt;&lt;br /&gt;
Notez qu&#039;on monte avec l&#039;option &amp;lt;code&amp;gt;relatime&amp;lt;/code&amp;gt; conformément aux recommandations de PBS pour maximiser les performances.&lt;br /&gt;
&lt;br /&gt;
Montez manuellement le datastore &lt;br /&gt;
&amp;lt;pre&amp;gt;mount /datastore/datastore1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Ajout du datastore dans PBS=&lt;br /&gt;
&lt;br /&gt;
=Désactiver le login root (pam) sur l&#039;interface PBS=&lt;br /&gt;
Avant toute manipulation, n&#039;oubliez pas de créer un utilisateur ayant les droits d&#039;administration pour accéder à l&#039;interface de PBS&lt;br /&gt;
&lt;br /&gt;
===Via l&#039;interface proxmox===&lt;br /&gt;
Editez l&#039;utilisateur root et décochez la case &amp;lt;code&amp;gt;Enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Malheureusement, cela aura également comme conséquence de rendre quasiment inopérant le script shell proxmox-backup-manager&lt;br /&gt;
&lt;br /&gt;
===Via les droits linux===&lt;br /&gt;
&amp;lt;pre&amp;gt;passwd --lock root&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 !&lt;br /&gt;
&lt;br /&gt;
===Via PAM===&lt;br /&gt;
Créez le fichier &amp;lt;code&amp;gt;/etc/pam.d/proxmox-backup-auth&amp;lt;/code&amp;gt; et ajoutez y les lignes suivantes :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth        required    pam_deny.so&lt;br /&gt;
auth        required    pam_warn.so&lt;br /&gt;
account     required    pam_deny.so&lt;br /&gt;
account     required    pam_warn.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Dépôt client uniquement=&lt;br /&gt;
&lt;br /&gt;
Ajoutez la clé de sécurité proxmox :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ajouter le dépot APT par exemple dans &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;deb http://download.proxmox.com/debian/pbs-client bookworm main&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Debian_Trixie_sources.list&amp;diff=4393</id>
		<title>Debian Trixie sources.list</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Debian_Trixie_sources.list&amp;diff=4393"/>
		<updated>2025-09-25T14:36:20Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:trixie]]&lt;br /&gt;
&lt;br /&gt;
A placer dans &amp;lt;code&amp;gt;/etc/apt/sources.list.d/debian.sources&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main updates and backports&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates trixie-backports&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4392</id>
		<title>Migration de Debian Bookworm vers Trixie</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4392"/>
		<updated>2025-09-24T12:57:25Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Les paquets isc-dhcp sont dépréciés */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:bookworm]]&lt;br /&gt;
[[Category:trixie]]&lt;br /&gt;
&lt;br /&gt;
=Préparation=&lt;br /&gt;
&lt;br /&gt;
==Assurez vous que vous êtes à la dernière version de debian==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&lt;br /&gt;
apt full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence d&#039;action en attente si vous utilisez aptitude==&lt;br /&gt;
&lt;br /&gt;
Lancez &amp;lt;code&amp;gt;aptitude&amp;lt;/code&amp;gt; puis tapez &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;~o&#039;&lt;br /&gt;
apt purge &#039;~o&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les paquets non-debian qui pourraient poser soucis lors de la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Tous les paquets non fournis par debian peuvent poser problème. A vos risques et péril. &amp;lt;br&amp;gt;&lt;br /&gt;
Pour les identifier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;?narrow(?installed, ?not(?origin(Debian)))&#039;&lt;br /&gt;
apt-forktracer | sort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vous de décider ou non de les supprimer avant la mise à niveau, certains paquets peuvent néanmoins gêner la mise à niveau.&lt;br /&gt;
&lt;br /&gt;
==Supprimez les fichiers de configuration non utilisés==&lt;br /&gt;
&amp;lt;pre&amp;gt;find /etc -name &#039;*.dpkg-*&#039; -o -name &#039;*.ucf-*&#039; -o -name &#039;*.merge-error&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez le pinning==&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;code&amp;gt;/etc/apt/preferences&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;/etc/apt/preferences.d/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence de paquets cassés==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dpkg --audit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enlevez les éventuels holds qui pourraient faire échouer la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Pour identifier les paquets en hold :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-mark showhold&lt;br /&gt;
aptitude search &amp;quot;~ahold&amp;quot; &lt;br /&gt;
dpkg --get-selections | grep &#039;hold$&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour supprimer un hold :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-mark unhold package_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez les entrées backports de votre sources.list==&lt;br /&gt;
&lt;br /&gt;
==Sources non officielles==&lt;br /&gt;
Assurez vous que ces sources possèdent des paquets compilés pour la nouvelle version de debian&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Mariadb==&lt;br /&gt;
&lt;br /&gt;
MariaDB ne supporte pas une récupération d&#039;erreur entre deux versions majeurs, il faut donc s&#039;assurer que vos bases de données sont propres et que les données et buffers sont bien écrit sur le disque avant de mettre à jour debian. Pour cela :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service mariadb stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis vérifiez dans les logs la présence d&#039;une ligne &amp;lt;code&amp;gt;Shutdown complete&amp;lt;/code&amp;gt;. Si ce n&#039;est pas le cas, relancez mariadb pour lancer la récupération automatique des tables, attendez, puis stoppez à nouveau mariadb et vérifiez dans les logs que le nouvel arrêt s&#039;est fait proprement.&lt;br /&gt;
&lt;br /&gt;
=Mise à jour=&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de /etc/apt/sources.list==&lt;br /&gt;
&lt;br /&gt;
Debian Trixie utilise la nouvelle version deb822-style pour les sources apt.&lt;br /&gt;
&lt;br /&gt;
Il faut transformer le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; et tout fichier &amp;lt;code&amp;gt;*.list&amp;lt;/code&amp;gt; situé dans &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt; en un fichier &amp;lt;code&amp;gt;/etc/apt/sources.list.d/debian.sources&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de fichier &amp;lt;code&amp;gt;debian.sources&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main and updates&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de la liste des paquets==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assure vous d&#039;avoir assez d&#039;espace libre==&lt;br /&gt;
&lt;br /&gt;
La commande suivante permet de voir l&#039;espace nécessaire pour la mise à jour :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt -o APT::Get::Trivial-Only=true full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enregistrez les actions effectuées==&lt;br /&gt;
&lt;br /&gt;
apt loguera les packets modifiés dans &amp;lt;code&amp;gt;/var/log/apt/history.log&amp;lt;/code&amp;gt; et la sortie du terminal dans &amp;lt;code&amp;gt;/var/log/apt/term.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt upgrade --without-new-pkgs&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si un prompt vous demande s&#039;il doit installer une nouvelle version d&#039;un fichier, répondez de préférence oui puis faites les adaptations nécessaires à votre configuration après la fin de la mise à jour. L&#039;ancien fichier restera disponible, suffixé de .dpkg-old&lt;br /&gt;
&lt;br /&gt;
=Cleanup=&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt autoremove&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les configurations et fichier résiduels des paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Purgez ces paquets===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez et supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
Ce sont des paquets qui ne sont plus maintenu par debian.&lt;br /&gt;
&lt;br /&gt;
* Pour les lister :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour les supprimer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Risque de modification du nom des interfaces réseaux==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#network-interface-names-may-change&lt;br /&gt;
&lt;br /&gt;
==Le dossier des fichiers temporaires /tmp est maintenant un tmpfs==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer ou supprimer les anciens fichiers du dossier /tmp il faut faire un bind mount :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount --bind / /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les anciens fichiers tmp seront dans &amp;lt;code&amp;gt;/mnt/tmp/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par défaut, le dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; disposera de 50% de la mémoire du système. Vous pouvez modifier l&#039;espace alloué avec &amp;lt;code&amp;gt;systemctl edit tmp.mount&amp;lt;/code&amp;gt; et modifier par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mount]&lt;br /&gt;
Options=mode=1777,nosuid,nodev,size=2G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez retrouver un dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; classique (sans tmpfs) :&lt;br /&gt;
&amp;lt;pre&amp;gt;systemctl mask tmp.mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis redémarrer&lt;br /&gt;
&lt;br /&gt;
==Les dossiers /tmp et /var/tmp sont purgés automatiquement==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#the-directories-tmp-and-var-tmp-are-now-regularly-cleaned&lt;br /&gt;
&lt;br /&gt;
Cette fonctionnalité n&#039;est pas activé automatiquement après l&#039;upgrade. Pour l&#039;activer supprimez le fichier &amp;lt;code&amp;gt;/etc/tmpfiles.d/tmp.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;rm -f /etc/tmpfiles.d/tmp.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après cela, les fichiers dans &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; seront automatiquement supprimé après 10 jours et les fichiers dans &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; après 30 jours&lt;br /&gt;
&lt;br /&gt;
==Le fichier /etc/sysctl.conf n&#039;est plus appliqué==&lt;br /&gt;
&lt;br /&gt;
A partir de debian trixie, le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; n&#039;est plus lu, en faveur du fichier &amp;lt;code&amp;gt;/usr/lib/sysctl.d/50-default.conf&amp;lt;/code&amp;gt; fournit par le paquet &amp;lt;code&amp;gt;linux-sysctl-defaults&amp;lt;/code&amp;gt;. Si vous souhaitez éditer les sysctl, il faudra désormais créer un fichier &amp;lt;code&amp;gt; /etc/sysctl.d/*.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Les paquets isc-dhcp sont dépréciés==&lt;br /&gt;
Si vous utilisez NetworkManager ou systemd-networkd : rien à faire et vous pouvez supprimer le paquet &amp;lt;code&amp;gt;isc-dhcp-client&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez ifupdown, le paquet &amp;lt;code&amp;gt;dhcpcd-base&amp;lt;/code&amp;gt; fourni un client dhcp de remplacement (dans ce cas, supprimez les lignes &amp;lt;code&amp;gt;inet6 dhcp&amp;lt;/code&amp;gt; de votre fichier &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
A noter un bug IPv6 avec isc-dhcp-client : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1088852&lt;br /&gt;
&lt;br /&gt;
==si la commande ping ne fonctionne plus pour les utilisateurs==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#ping-no-longer-runs-with-elevated-privileges&lt;br /&gt;
&lt;br /&gt;
=Appendice=&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/upgrading.en.html&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4391</id>
		<title>Migration de Debian Bookworm vers Trixie</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4391"/>
		<updated>2025-09-24T12:46:57Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Les paquets isc-dhcp sont dépréciés */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:bookworm]]&lt;br /&gt;
[[Category:trixie]]&lt;br /&gt;
&lt;br /&gt;
=Préparation=&lt;br /&gt;
&lt;br /&gt;
==Assurez vous que vous êtes à la dernière version de debian==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&lt;br /&gt;
apt full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence d&#039;action en attente si vous utilisez aptitude==&lt;br /&gt;
&lt;br /&gt;
Lancez &amp;lt;code&amp;gt;aptitude&amp;lt;/code&amp;gt; puis tapez &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;~o&#039;&lt;br /&gt;
apt purge &#039;~o&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les paquets non-debian qui pourraient poser soucis lors de la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Tous les paquets non fournis par debian peuvent poser problème. A vos risques et péril. &amp;lt;br&amp;gt;&lt;br /&gt;
Pour les identifier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;?narrow(?installed, ?not(?origin(Debian)))&#039;&lt;br /&gt;
apt-forktracer | sort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vous de décider ou non de les supprimer avant la mise à niveau, certains paquets peuvent néanmoins gêner la mise à niveau.&lt;br /&gt;
&lt;br /&gt;
==Supprimez les fichiers de configuration non utilisés==&lt;br /&gt;
&amp;lt;pre&amp;gt;find /etc -name &#039;*.dpkg-*&#039; -o -name &#039;*.ucf-*&#039; -o -name &#039;*.merge-error&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez le pinning==&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;code&amp;gt;/etc/apt/preferences&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;/etc/apt/preferences.d/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence de paquets cassés==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dpkg --audit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enlevez les éventuels holds qui pourraient faire échouer la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Pour identifier les paquets en hold :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-mark showhold&lt;br /&gt;
aptitude search &amp;quot;~ahold&amp;quot; &lt;br /&gt;
dpkg --get-selections | grep &#039;hold$&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour supprimer un hold :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-mark unhold package_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez les entrées backports de votre sources.list==&lt;br /&gt;
&lt;br /&gt;
==Sources non officielles==&lt;br /&gt;
Assurez vous que ces sources possèdent des paquets compilés pour la nouvelle version de debian&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Mariadb==&lt;br /&gt;
&lt;br /&gt;
MariaDB ne supporte pas une récupération d&#039;erreur entre deux versions majeurs, il faut donc s&#039;assurer que vos bases de données sont propres et que les données et buffers sont bien écrit sur le disque avant de mettre à jour debian. Pour cela :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service mariadb stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis vérifiez dans les logs la présence d&#039;une ligne &amp;lt;code&amp;gt;Shutdown complete&amp;lt;/code&amp;gt;. Si ce n&#039;est pas le cas, relancez mariadb pour lancer la récupération automatique des tables, attendez, puis stoppez à nouveau mariadb et vérifiez dans les logs que le nouvel arrêt s&#039;est fait proprement.&lt;br /&gt;
&lt;br /&gt;
=Mise à jour=&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de /etc/apt/sources.list==&lt;br /&gt;
&lt;br /&gt;
Debian Trixie utilise la nouvelle version deb822-style pour les sources apt.&lt;br /&gt;
&lt;br /&gt;
Il faut transformer le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; et tout fichier &amp;lt;code&amp;gt;*.list&amp;lt;/code&amp;gt; situé dans &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt; en un fichier &amp;lt;code&amp;gt;/etc/apt/sources.list.d/debian.sources&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de fichier &amp;lt;code&amp;gt;debian.sources&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main and updates&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de la liste des paquets==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assure vous d&#039;avoir assez d&#039;espace libre==&lt;br /&gt;
&lt;br /&gt;
La commande suivante permet de voir l&#039;espace nécessaire pour la mise à jour :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt -o APT::Get::Trivial-Only=true full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enregistrez les actions effectuées==&lt;br /&gt;
&lt;br /&gt;
apt loguera les packets modifiés dans &amp;lt;code&amp;gt;/var/log/apt/history.log&amp;lt;/code&amp;gt; et la sortie du terminal dans &amp;lt;code&amp;gt;/var/log/apt/term.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt upgrade --without-new-pkgs&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si un prompt vous demande s&#039;il doit installer une nouvelle version d&#039;un fichier, répondez de préférence oui puis faites les adaptations nécessaires à votre configuration après la fin de la mise à jour. L&#039;ancien fichier restera disponible, suffixé de .dpkg-old&lt;br /&gt;
&lt;br /&gt;
=Cleanup=&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt autoremove&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les configurations et fichier résiduels des paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Purgez ces paquets===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez et supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
Ce sont des paquets qui ne sont plus maintenu par debian.&lt;br /&gt;
&lt;br /&gt;
* Pour les lister :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour les supprimer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Risque de modification du nom des interfaces réseaux==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#network-interface-names-may-change&lt;br /&gt;
&lt;br /&gt;
==Le dossier des fichiers temporaires /tmp est maintenant un tmpfs==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer ou supprimer les anciens fichiers du dossier /tmp il faut faire un bind mount :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount --bind / /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les anciens fichiers tmp seront dans &amp;lt;code&amp;gt;/mnt/tmp/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par défaut, le dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; disposera de 50% de la mémoire du système. Vous pouvez modifier l&#039;espace alloué avec &amp;lt;code&amp;gt;systemctl edit tmp.mount&amp;lt;/code&amp;gt; et modifier par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mount]&lt;br /&gt;
Options=mode=1777,nosuid,nodev,size=2G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez retrouver un dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; classique (sans tmpfs) :&lt;br /&gt;
&amp;lt;pre&amp;gt;systemctl mask tmp.mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis redémarrer&lt;br /&gt;
&lt;br /&gt;
==Les dossiers /tmp et /var/tmp sont purgés automatiquement==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#the-directories-tmp-and-var-tmp-are-now-regularly-cleaned&lt;br /&gt;
&lt;br /&gt;
Cette fonctionnalité n&#039;est pas activé automatiquement après l&#039;upgrade. Pour l&#039;activer supprimez le fichier &amp;lt;code&amp;gt;/etc/tmpfiles.d/tmp.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;rm -f /etc/tmpfiles.d/tmp.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après cela, les fichiers dans &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; seront automatiquement supprimé après 10 jours et les fichiers dans &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; après 30 jours&lt;br /&gt;
&lt;br /&gt;
==Le fichier /etc/sysctl.conf n&#039;est plus appliqué==&lt;br /&gt;
&lt;br /&gt;
A partir de debian trixie, le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; n&#039;est plus lu, en faveur du fichier &amp;lt;code&amp;gt;/usr/lib/sysctl.d/50-default.conf&amp;lt;/code&amp;gt; fournit par le paquet &amp;lt;code&amp;gt;linux-sysctl-defaults&amp;lt;/code&amp;gt;. Si vous souhaitez éditer les sysctl, il faudra désormais créer un fichier &amp;lt;code&amp;gt; /etc/sysctl.d/*.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Les paquets isc-dhcp sont dépréciés==&lt;br /&gt;
Si vous utilisez NetworkManager ou systemd-networkd : rien à faire et vous pouvez supprimer le paquet &amp;lt;code&amp;gt;isc-dhcp-client&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez ifupdown, le paquet &amp;lt;code&amp;gt;dhcpcd-base&amp;lt;/code&amp;gt; fourni un client dhcp de remplacement (dans ce cas, supprimez les lignes &amp;lt;code&amp;gt;inet6 dhcp&amp;lt;/code&amp;gt; de votre fichier &amp;lt;code&amp;gt;/etc/network/interfaces&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A noter un bug IPv6 avec isc-dhcp-client : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1088852&lt;br /&gt;
&lt;br /&gt;
==si la commande ping ne fonctionne plus pour les utilisateurs==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#ping-no-longer-runs-with-elevated-privileges&lt;br /&gt;
&lt;br /&gt;
=Appendice=&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/upgrading.en.html&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4390</id>
		<title>Migration de Debian Bookworm vers Trixie</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4390"/>
		<updated>2025-09-24T12:37:05Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Les paquets isc-dhcp sont dépréciés */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:bookworm]]&lt;br /&gt;
[[Category:trixie]]&lt;br /&gt;
&lt;br /&gt;
=Préparation=&lt;br /&gt;
&lt;br /&gt;
==Assurez vous que vous êtes à la dernière version de debian==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&lt;br /&gt;
apt full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence d&#039;action en attente si vous utilisez aptitude==&lt;br /&gt;
&lt;br /&gt;
Lancez &amp;lt;code&amp;gt;aptitude&amp;lt;/code&amp;gt; puis tapez &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;~o&#039;&lt;br /&gt;
apt purge &#039;~o&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les paquets non-debian qui pourraient poser soucis lors de la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Tous les paquets non fournis par debian peuvent poser problème. A vos risques et péril. &amp;lt;br&amp;gt;&lt;br /&gt;
Pour les identifier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;?narrow(?installed, ?not(?origin(Debian)))&#039;&lt;br /&gt;
apt-forktracer | sort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vous de décider ou non de les supprimer avant la mise à niveau, certains paquets peuvent néanmoins gêner la mise à niveau.&lt;br /&gt;
&lt;br /&gt;
==Supprimez les fichiers de configuration non utilisés==&lt;br /&gt;
&amp;lt;pre&amp;gt;find /etc -name &#039;*.dpkg-*&#039; -o -name &#039;*.ucf-*&#039; -o -name &#039;*.merge-error&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez le pinning==&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;code&amp;gt;/etc/apt/preferences&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;/etc/apt/preferences.d/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence de paquets cassés==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dpkg --audit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enlevez les éventuels holds qui pourraient faire échouer la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Pour identifier les paquets en hold :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-mark showhold&lt;br /&gt;
aptitude search &amp;quot;~ahold&amp;quot; &lt;br /&gt;
dpkg --get-selections | grep &#039;hold$&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour supprimer un hold :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-mark unhold package_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez les entrées backports de votre sources.list==&lt;br /&gt;
&lt;br /&gt;
==Sources non officielles==&lt;br /&gt;
Assurez vous que ces sources possèdent des paquets compilés pour la nouvelle version de debian&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Mariadb==&lt;br /&gt;
&lt;br /&gt;
MariaDB ne supporte pas une récupération d&#039;erreur entre deux versions majeurs, il faut donc s&#039;assurer que vos bases de données sont propres et que les données et buffers sont bien écrit sur le disque avant de mettre à jour debian. Pour cela :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service mariadb stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis vérifiez dans les logs la présence d&#039;une ligne &amp;lt;code&amp;gt;Shutdown complete&amp;lt;/code&amp;gt;. Si ce n&#039;est pas le cas, relancez mariadb pour lancer la récupération automatique des tables, attendez, puis stoppez à nouveau mariadb et vérifiez dans les logs que le nouvel arrêt s&#039;est fait proprement.&lt;br /&gt;
&lt;br /&gt;
=Mise à jour=&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de /etc/apt/sources.list==&lt;br /&gt;
&lt;br /&gt;
Debian Trixie utilise la nouvelle version deb822-style pour les sources apt.&lt;br /&gt;
&lt;br /&gt;
Il faut transformer le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; et tout fichier &amp;lt;code&amp;gt;*.list&amp;lt;/code&amp;gt; situé dans &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt; en un fichier &amp;lt;code&amp;gt;/etc/apt/sources.list.d/debian.sources&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de fichier &amp;lt;code&amp;gt;debian.sources&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main and updates&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de la liste des paquets==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assure vous d&#039;avoir assez d&#039;espace libre==&lt;br /&gt;
&lt;br /&gt;
La commande suivante permet de voir l&#039;espace nécessaire pour la mise à jour :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt -o APT::Get::Trivial-Only=true full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enregistrez les actions effectuées==&lt;br /&gt;
&lt;br /&gt;
apt loguera les packets modifiés dans &amp;lt;code&amp;gt;/var/log/apt/history.log&amp;lt;/code&amp;gt; et la sortie du terminal dans &amp;lt;code&amp;gt;/var/log/apt/term.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt upgrade --without-new-pkgs&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si un prompt vous demande s&#039;il doit installer une nouvelle version d&#039;un fichier, répondez de préférence oui puis faites les adaptations nécessaires à votre configuration après la fin de la mise à jour. L&#039;ancien fichier restera disponible, suffixé de .dpkg-old&lt;br /&gt;
&lt;br /&gt;
=Cleanup=&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt autoremove&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les configurations et fichier résiduels des paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Purgez ces paquets===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez et supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
Ce sont des paquets qui ne sont plus maintenu par debian.&lt;br /&gt;
&lt;br /&gt;
* Pour les lister :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour les supprimer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Risque de modification du nom des interfaces réseaux==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#network-interface-names-may-change&lt;br /&gt;
&lt;br /&gt;
==Le dossier des fichiers temporaires /tmp est maintenant un tmpfs==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer ou supprimer les anciens fichiers du dossier /tmp il faut faire un bind mount :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount --bind / /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les anciens fichiers tmp seront dans &amp;lt;code&amp;gt;/mnt/tmp/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par défaut, le dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; disposera de 50% de la mémoire du système. Vous pouvez modifier l&#039;espace alloué avec &amp;lt;code&amp;gt;systemctl edit tmp.mount&amp;lt;/code&amp;gt; et modifier par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mount]&lt;br /&gt;
Options=mode=1777,nosuid,nodev,size=2G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez retrouver un dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; classique (sans tmpfs) :&lt;br /&gt;
&amp;lt;pre&amp;gt;systemctl mask tmp.mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis redémarrer&lt;br /&gt;
&lt;br /&gt;
==Les dossiers /tmp et /var/tmp sont purgés automatiquement==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#the-directories-tmp-and-var-tmp-are-now-regularly-cleaned&lt;br /&gt;
&lt;br /&gt;
Cette fonctionnalité n&#039;est pas activé automatiquement après l&#039;upgrade. Pour l&#039;activer supprimez le fichier &amp;lt;code&amp;gt;/etc/tmpfiles.d/tmp.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;rm -f /etc/tmpfiles.d/tmp.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après cela, les fichiers dans &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; seront automatiquement supprimé après 10 jours et les fichiers dans &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; après 30 jours&lt;br /&gt;
&lt;br /&gt;
==Le fichier /etc/sysctl.conf n&#039;est plus appliqué==&lt;br /&gt;
&lt;br /&gt;
A partir de debian trixie, le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; n&#039;est plus lu, en faveur du fichier &amp;lt;code&amp;gt;/usr/lib/sysctl.d/50-default.conf&amp;lt;/code&amp;gt; fournit par le paquet &amp;lt;code&amp;gt;linux-sysctl-defaults&amp;lt;/code&amp;gt;. Si vous souhaitez éditer les sysctl, il faudra désormais créer un fichier &amp;lt;code&amp;gt; /etc/sysctl.d/*.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Les paquets isc-dhcp sont dépréciés==&lt;br /&gt;
Si vous utilisez NetworkManager ou systemd-networkd : rien à faire et vous pouvez supprimer le paquet &amp;lt;code&amp;gt;isc-dhcp-client&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez ifupdown, le paquet &amp;lt;code&amp;gt;dhcpcd-base&amp;lt;/code&amp;gt; fourni un client dhcp de remplacement.&lt;br /&gt;
&lt;br /&gt;
A noter un bug IPv6 avec isc-dhcp-client : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1088852&lt;br /&gt;
&lt;br /&gt;
==si la commande ping ne fonctionne plus pour les utilisateurs==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#ping-no-longer-runs-with-elevated-privileges&lt;br /&gt;
&lt;br /&gt;
=Appendice=&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/upgrading.en.html&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Debian_Trixie_sources.list&amp;diff=4389</id>
		<title>Debian Trixie sources.list</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Debian_Trixie_sources.list&amp;diff=4389"/>
		<updated>2025-09-24T12:02:19Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
&lt;br /&gt;
A placer dans &amp;lt;code&amp;gt;/etc/apt/sources.list.d/debian.sources&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main updates and backports&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates trixie-backports&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Debian_Trixie_sources.list&amp;diff=4388</id>
		<title>Debian Trixie sources.list</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Debian_Trixie_sources.list&amp;diff=4388"/>
		<updated>2025-09-24T12:00:24Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main updates and backports&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates trixie-backports&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Debian_Trixie_sources.list&amp;diff=4387</id>
		<title>Debian Trixie sources.list</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Debian_Trixie_sources.list&amp;diff=4387"/>
		<updated>2025-09-24T11:59:23Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : Page créée avec « Category:serveur Category:debian  &amp;lt;pre&amp;gt; # main and updates Types: deb URIs: https://deb.debian.org/debian Suites: trixie trixie-updates trixie-backports Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg  # security Types: deb URIs: https://security.debian.org/debian-security Suites: trixie-security Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-k... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main and updates&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates trixie-backports&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4386</id>
		<title>Migration de Debian Bookworm vers Trixie</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4386"/>
		<updated>2025-09-24T11:40:03Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Les paquets isc-dhcp sont dépréciés */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:bookworm]]&lt;br /&gt;
[[Category:trixie]]&lt;br /&gt;
&lt;br /&gt;
=Préparation=&lt;br /&gt;
&lt;br /&gt;
==Assurez vous que vous êtes à la dernière version de debian==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&lt;br /&gt;
apt full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence d&#039;action en attente si vous utilisez aptitude==&lt;br /&gt;
&lt;br /&gt;
Lancez &amp;lt;code&amp;gt;aptitude&amp;lt;/code&amp;gt; puis tapez &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;~o&#039;&lt;br /&gt;
apt purge &#039;~o&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les paquets non-debian qui pourraient poser soucis lors de la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Tous les paquets non fournis par debian peuvent poser problème. A vos risques et péril. &amp;lt;br&amp;gt;&lt;br /&gt;
Pour les identifier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;?narrow(?installed, ?not(?origin(Debian)))&#039;&lt;br /&gt;
apt-forktracer | sort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vous de décider ou non de les supprimer avant la mise à niveau, certains paquets peuvent néanmoins gêner la mise à niveau.&lt;br /&gt;
&lt;br /&gt;
==Supprimez les fichiers de configuration non utilisés==&lt;br /&gt;
&amp;lt;pre&amp;gt;find /etc -name &#039;*.dpkg-*&#039; -o -name &#039;*.ucf-*&#039; -o -name &#039;*.merge-error&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez le pinning==&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;code&amp;gt;/etc/apt/preferences&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;/etc/apt/preferences.d/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence de paquets cassés==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dpkg --audit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enlevez les éventuels holds qui pourraient faire échouer la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Pour identifier les paquets en hold :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-mark showhold&lt;br /&gt;
aptitude search &amp;quot;~ahold&amp;quot; &lt;br /&gt;
dpkg --get-selections | grep &#039;hold$&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour supprimer un hold :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-mark unhold package_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez les entrées backports de votre sources.list==&lt;br /&gt;
&lt;br /&gt;
==Sources non officielles==&lt;br /&gt;
Assurez vous que ces sources possèdent des paquets compilés pour la nouvelle version de debian&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Mariadb==&lt;br /&gt;
&lt;br /&gt;
MariaDB ne supporte pas une récupération d&#039;erreur entre deux versions majeurs, il faut donc s&#039;assurer que vos bases de données sont propres et que les données et buffers sont bien écrit sur le disque avant de mettre à jour debian. Pour cela :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service mariadb stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis vérifiez dans les logs la présence d&#039;une ligne &amp;lt;code&amp;gt;Shutdown complete&amp;lt;/code&amp;gt;. Si ce n&#039;est pas le cas, relancez mariadb pour lancer la récupération automatique des tables, attendez, puis stoppez à nouveau mariadb et vérifiez dans les logs que le nouvel arrêt s&#039;est fait proprement.&lt;br /&gt;
&lt;br /&gt;
=Mise à jour=&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de /etc/apt/sources.list==&lt;br /&gt;
&lt;br /&gt;
Debian Trixie utilise la nouvelle version deb822-style pour les sources apt.&lt;br /&gt;
&lt;br /&gt;
Il faut transformer le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; et tout fichier &amp;lt;code&amp;gt;*.list&amp;lt;/code&amp;gt; situé dans &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt; en un fichier &amp;lt;code&amp;gt;/etc/apt/sources.list.d/debian.sources&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de fichier &amp;lt;code&amp;gt;debian.sources&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main and updates&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de la liste des paquets==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assure vous d&#039;avoir assez d&#039;espace libre==&lt;br /&gt;
&lt;br /&gt;
La commande suivante permet de voir l&#039;espace nécessaire pour la mise à jour :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt -o APT::Get::Trivial-Only=true full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enregistrez les actions effectuées==&lt;br /&gt;
&lt;br /&gt;
apt loguera les packets modifiés dans &amp;lt;code&amp;gt;/var/log/apt/history.log&amp;lt;/code&amp;gt; et la sortie du terminal dans &amp;lt;code&amp;gt;/var/log/apt/term.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt upgrade --without-new-pkgs&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si un prompt vous demande s&#039;il doit installer une nouvelle version d&#039;un fichier, répondez de préférence oui puis faites les adaptations nécessaires à votre configuration après la fin de la mise à jour. L&#039;ancien fichier restera disponible, suffixé de .dpkg-old&lt;br /&gt;
&lt;br /&gt;
=Cleanup=&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt autoremove&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les configurations et fichier résiduels des paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Purgez ces paquets===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez et supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
Ce sont des paquets qui ne sont plus maintenu par debian.&lt;br /&gt;
&lt;br /&gt;
* Pour les lister :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour les supprimer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Risque de modification du nom des interfaces réseaux==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#network-interface-names-may-change&lt;br /&gt;
&lt;br /&gt;
==Le dossier des fichiers temporaires /tmp est maintenant un tmpfs==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer ou supprimer les anciens fichiers du dossier /tmp il faut faire un bind mount :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount --bind / /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les anciens fichiers tmp seront dans &amp;lt;code&amp;gt;/mnt/tmp/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par défaut, le dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; disposera de 50% de la mémoire du système. Vous pouvez modifier l&#039;espace alloué avec &amp;lt;code&amp;gt;systemctl edit tmp.mount&amp;lt;/code&amp;gt; et modifier par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mount]&lt;br /&gt;
Options=mode=1777,nosuid,nodev,size=2G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez retrouver un dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; classique (sans tmpfs) :&lt;br /&gt;
&amp;lt;pre&amp;gt;systemctl mask tmp.mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis redémarrer&lt;br /&gt;
&lt;br /&gt;
==Les dossiers /tmp et /var/tmp sont purgés automatiquement==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#the-directories-tmp-and-var-tmp-are-now-regularly-cleaned&lt;br /&gt;
&lt;br /&gt;
Cette fonctionnalité n&#039;est pas activé automatiquement après l&#039;upgrade. Pour l&#039;activer supprimez le fichier &amp;lt;code&amp;gt;/etc/tmpfiles.d/tmp.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;rm -f /etc/tmpfiles.d/tmp.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après cela, les fichiers dans &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; seront automatiquement supprimé après 10 jours et les fichiers dans &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; après 30 jours&lt;br /&gt;
&lt;br /&gt;
==Le fichier /etc/sysctl.conf n&#039;est plus appliqué==&lt;br /&gt;
&lt;br /&gt;
A partir de debian trixie, le fichier &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; n&#039;est plus lu, en faveur du fichier &amp;lt;code&amp;gt;/usr/lib/sysctl.d/50-default.conf&amp;lt;/code&amp;gt; fournit par le paquet &amp;lt;code&amp;gt;linux-sysctl-defaults&amp;lt;/code&amp;gt;. Si vous souhaitez éditer les sysctl, il faudra désormais créer un fichier &amp;lt;code&amp;gt; /etc/sysctl.d/*.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Les paquets isc-dhcp sont dépréciés==&lt;br /&gt;
Si vous utilisez NetworkManager ou systemd-networkd : rien à faire et vous pouvez supprimer le paquet &amp;lt;code&amp;gt;isc-dhcp-client&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez ifupdown, le paquet &amp;lt;code&amp;gt;dhcpcd-base&amp;lt;/code&amp;gt; fourni un client dhcp de remplacement.&lt;br /&gt;
&lt;br /&gt;
==si la commande ping ne fonctionne plus pour les utilisateurs==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#ping-no-longer-runs-with-elevated-privileges&lt;br /&gt;
&lt;br /&gt;
=Appendice=&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/upgrading.en.html&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4385</id>
		<title>Migration de Debian Bookworm vers Trixie</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4385"/>
		<updated>2025-08-15T16:45:57Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* si Ping ne fonctionne plus pour les utilisateurs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:bookworm]]&lt;br /&gt;
[[Category:trixie]]&lt;br /&gt;
&lt;br /&gt;
=Préparation=&lt;br /&gt;
&lt;br /&gt;
==Assurez vous que vous êtes à la dernière version de debian==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&lt;br /&gt;
apt full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence d&#039;action en attente si vous utilisez aptitude==&lt;br /&gt;
&lt;br /&gt;
Lancez &amp;lt;code&amp;gt;aptitude&amp;lt;/code&amp;gt; puis tapez &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;~o&#039;&lt;br /&gt;
apt purge &#039;~o&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les paquets non-debian qui pourraient poser soucis lors de la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Tous les paquets non fournis par debian peuvent poser problème. A vos risques et péril. &amp;lt;br&amp;gt;&lt;br /&gt;
Pour les identifier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;?narrow(?installed, ?not(?origin(Debian)))&#039;&lt;br /&gt;
apt-forktracer | sort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vous de décider ou non de les supprimer avant la mise à niveau, certains paquets peuvent néanmoins gêner la mise à niveau.&lt;br /&gt;
&lt;br /&gt;
==Supprimez les fichiers de configuration non utilisés==&lt;br /&gt;
&amp;lt;pre&amp;gt;find /etc -name &#039;*.dpkg-*&#039; -o -name &#039;*.ucf-*&#039; -o -name &#039;*.merge-error&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez le pinning==&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;code&amp;gt;/etc/apt/preferences&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;/etc/apt/preferences.d/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence de paquets cassés==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dpkg --audit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enlevez les éventuels holds qui pourraient faire échouer la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Pour identifier les paquets en hold :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-mark showhold&lt;br /&gt;
aptitude search &amp;quot;~ahold&amp;quot; &lt;br /&gt;
dpkg --get-selections | grep &#039;hold$&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour supprimer un hold :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-mark unhold package_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez les entrées backports de votre sources.list==&lt;br /&gt;
&lt;br /&gt;
==Sources non officielles==&lt;br /&gt;
Assurez vous que ces sources possèdent des paquets compilés pour la nouvelle version de debian&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Mariadb==&lt;br /&gt;
&lt;br /&gt;
MariaDB ne supporte pas une récupération d&#039;erreur entre deux versions majeurs, il faut donc s&#039;assurer que vos bases de données sont propres et que les données et buffers sont bien écrit sur le disque avant de mettre à jour debian. Pour cela :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service mariadb stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis vérifiez dans les logs la présence d&#039;une ligne &amp;lt;code&amp;gt;Shutdown complete&amp;lt;/code&amp;gt;. Si ce n&#039;est pas le cas, relancez mariadb pour lancer la récupération automatique des tables, attendez, puis stoppez à nouveau mariadb et vérifiez dans les logs que le nouvel arrêt s&#039;est fait proprement.&lt;br /&gt;
&lt;br /&gt;
=Mise à jour=&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de /etc/apt/sources.list==&lt;br /&gt;
&lt;br /&gt;
Debian Trixie utilise la nouvelle version deb822-style pour les sources apt.&lt;br /&gt;
&lt;br /&gt;
Il faut transformer le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; et tout fichier &amp;lt;code&amp;gt;*.list&amp;lt;/code&amp;gt; situé dans &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt; en un fichier &amp;lt;code&amp;gt;/etc/apt/sources.list.d/debian.sources&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de fichier &amp;lt;code&amp;gt;debian.sources&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main and updates&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de la liste des paquets==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assure vous d&#039;avoir assez d&#039;espace libre==&lt;br /&gt;
&lt;br /&gt;
La commande suivante permet de voir l&#039;espace nécessaire pour la mise à jour :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt -o APT::Get::Trivial-Only=true full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enregistrez les actions effectuées==&lt;br /&gt;
&lt;br /&gt;
apt loguera les packets modifiés dans &amp;lt;code&amp;gt;/var/log/apt/history.log&amp;lt;/code&amp;gt; et la sortie du terminal dans &amp;lt;code&amp;gt;/var/log/apt/term.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt upgrade --without-new-pkgs&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si un prompt vous demande s&#039;il doit installer une nouvelle version d&#039;un fichier, répondez de préférence oui puis faites les adaptations nécessaires à votre configuration après la fin de la mise à jour. L&#039;ancien fichier restera disponible, suffixé de .dpkg-old&lt;br /&gt;
&lt;br /&gt;
=Cleanup=&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt autoremove&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les configurations et fichier résiduels des paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Purgez ces paquets===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez et supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
Ce sont des paquets qui ne sont plus maintenu par debian.&lt;br /&gt;
&lt;br /&gt;
* Pour les lister :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour les supprimer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Risque de modification du nom des interfaces réseaux==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#network-interface-names-may-change&lt;br /&gt;
&lt;br /&gt;
==Le dossier des fichiers temporaires /tmp est maintenant un tmpfs==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer ou supprimer les anciens fichiers du dossier /tmp il faut faire un bind mount :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount --bind / /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les anciens fichiers tmp seront dans &amp;lt;code&amp;gt;/mnt/tmp/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par défaut, le dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; disposera de 50% de la mémoire du système. Vous pouvez modifier l&#039;espace alloué avec &amp;lt;code&amp;gt;systemctl edit tmp.mount&amp;lt;/code&amp;gt; et modifier par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mount]&lt;br /&gt;
Options=mode=1777,nosuid,nodev,size=2G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez retrouver un dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; classique (sans tmpfs) :&lt;br /&gt;
&amp;lt;pre&amp;gt;systemctl mask tmp.mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis redémarrer&lt;br /&gt;
&lt;br /&gt;
==Les dossiers /tmp et /var/tmp sont purgés automatiquement==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#the-directories-tmp-and-var-tmp-are-now-regularly-cleaned&lt;br /&gt;
&lt;br /&gt;
Cette fonctionnalité n&#039;est pas activé automatiquement après l&#039;upgrade. Pour l&#039;activer supprimez le fichier &amp;lt;code&amp;gt;/etc/tmpfiles.d/tmp.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;rm -f /etc/tmpfiles.d/tmp.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après cela, les fichiers dans &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; seront automatiquement supprimé après 10 jours et les fichiers dans &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; après 30 jours&lt;br /&gt;
&lt;br /&gt;
==Les paquets isc-dhcp sont dépréciés==&lt;br /&gt;
Si vous utilisez NetworkManager ou systemd-networkd : rien à faire et vous pouvez supprimer le paquet &amp;lt;code&amp;gt;isc-dhcp-client&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez ifupdown, le paquet &amp;lt;code&amp;gt;dhcpcd-base&amp;lt;/code&amp;gt; fourni un client dhcp de remplacement.&lt;br /&gt;
&lt;br /&gt;
==si la commande ping ne fonctionne plus pour les utilisateurs==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#ping-no-longer-runs-with-elevated-privileges&lt;br /&gt;
&lt;br /&gt;
=Appendice=&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/upgrading.en.html&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4384</id>
		<title>Migration de Debian Bookworm vers Trixie</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4384"/>
		<updated>2025-08-15T16:45:46Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Les paquets isc-dhcp sont dépréciés */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:bookworm]]&lt;br /&gt;
[[Category:trixie]]&lt;br /&gt;
&lt;br /&gt;
=Préparation=&lt;br /&gt;
&lt;br /&gt;
==Assurez vous que vous êtes à la dernière version de debian==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&lt;br /&gt;
apt full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence d&#039;action en attente si vous utilisez aptitude==&lt;br /&gt;
&lt;br /&gt;
Lancez &amp;lt;code&amp;gt;aptitude&amp;lt;/code&amp;gt; puis tapez &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;~o&#039;&lt;br /&gt;
apt purge &#039;~o&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les paquets non-debian qui pourraient poser soucis lors de la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Tous les paquets non fournis par debian peuvent poser problème. A vos risques et péril. &amp;lt;br&amp;gt;&lt;br /&gt;
Pour les identifier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;?narrow(?installed, ?not(?origin(Debian)))&#039;&lt;br /&gt;
apt-forktracer | sort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vous de décider ou non de les supprimer avant la mise à niveau, certains paquets peuvent néanmoins gêner la mise à niveau.&lt;br /&gt;
&lt;br /&gt;
==Supprimez les fichiers de configuration non utilisés==&lt;br /&gt;
&amp;lt;pre&amp;gt;find /etc -name &#039;*.dpkg-*&#039; -o -name &#039;*.ucf-*&#039; -o -name &#039;*.merge-error&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez le pinning==&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;code&amp;gt;/etc/apt/preferences&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;/etc/apt/preferences.d/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence de paquets cassés==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dpkg --audit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enlevez les éventuels holds qui pourraient faire échouer la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Pour identifier les paquets en hold :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-mark showhold&lt;br /&gt;
aptitude search &amp;quot;~ahold&amp;quot; &lt;br /&gt;
dpkg --get-selections | grep &#039;hold$&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour supprimer un hold :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-mark unhold package_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez les entrées backports de votre sources.list==&lt;br /&gt;
&lt;br /&gt;
==Sources non officielles==&lt;br /&gt;
Assurez vous que ces sources possèdent des paquets compilés pour la nouvelle version de debian&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Mariadb==&lt;br /&gt;
&lt;br /&gt;
MariaDB ne supporte pas une récupération d&#039;erreur entre deux versions majeurs, il faut donc s&#039;assurer que vos bases de données sont propres et que les données et buffers sont bien écrit sur le disque avant de mettre à jour debian. Pour cela :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service mariadb stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis vérifiez dans les logs la présence d&#039;une ligne &amp;lt;code&amp;gt;Shutdown complete&amp;lt;/code&amp;gt;. Si ce n&#039;est pas le cas, relancez mariadb pour lancer la récupération automatique des tables, attendez, puis stoppez à nouveau mariadb et vérifiez dans les logs que le nouvel arrêt s&#039;est fait proprement.&lt;br /&gt;
&lt;br /&gt;
=Mise à jour=&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de /etc/apt/sources.list==&lt;br /&gt;
&lt;br /&gt;
Debian Trixie utilise la nouvelle version deb822-style pour les sources apt.&lt;br /&gt;
&lt;br /&gt;
Il faut transformer le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; et tout fichier &amp;lt;code&amp;gt;*.list&amp;lt;/code&amp;gt; situé dans &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt; en un fichier &amp;lt;code&amp;gt;/etc/apt/sources.list.d/debian.sources&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de fichier &amp;lt;code&amp;gt;debian.sources&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main and updates&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de la liste des paquets==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assure vous d&#039;avoir assez d&#039;espace libre==&lt;br /&gt;
&lt;br /&gt;
La commande suivante permet de voir l&#039;espace nécessaire pour la mise à jour :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt -o APT::Get::Trivial-Only=true full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enregistrez les actions effectuées==&lt;br /&gt;
&lt;br /&gt;
apt loguera les packets modifiés dans &amp;lt;code&amp;gt;/var/log/apt/history.log&amp;lt;/code&amp;gt; et la sortie du terminal dans &amp;lt;code&amp;gt;/var/log/apt/term.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt upgrade --without-new-pkgs&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si un prompt vous demande s&#039;il doit installer une nouvelle version d&#039;un fichier, répondez de préférence oui puis faites les adaptations nécessaires à votre configuration après la fin de la mise à jour. L&#039;ancien fichier restera disponible, suffixé de .dpkg-old&lt;br /&gt;
&lt;br /&gt;
=Cleanup=&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt autoremove&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les configurations et fichier résiduels des paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Purgez ces paquets===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez et supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
Ce sont des paquets qui ne sont plus maintenu par debian.&lt;br /&gt;
&lt;br /&gt;
* Pour les lister :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour les supprimer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Risque de modification du nom des interfaces réseaux==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#network-interface-names-may-change&lt;br /&gt;
&lt;br /&gt;
==Le dossier des fichiers temporaires /tmp est maintenant un tmpfs==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer ou supprimer les anciens fichiers du dossier /tmp il faut faire un bind mount :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount --bind / /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les anciens fichiers tmp seront dans &amp;lt;code&amp;gt;/mnt/tmp/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par défaut, le dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; disposera de 50% de la mémoire du système. Vous pouvez modifier l&#039;espace alloué avec &amp;lt;code&amp;gt;systemctl edit tmp.mount&amp;lt;/code&amp;gt; et modifier par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mount]&lt;br /&gt;
Options=mode=1777,nosuid,nodev,size=2G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez retrouver un dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; classique (sans tmpfs) :&lt;br /&gt;
&amp;lt;pre&amp;gt;systemctl mask tmp.mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis redémarrer&lt;br /&gt;
&lt;br /&gt;
==Les dossiers /tmp et /var/tmp sont purgés automatiquement==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#the-directories-tmp-and-var-tmp-are-now-regularly-cleaned&lt;br /&gt;
&lt;br /&gt;
Cette fonctionnalité n&#039;est pas activé automatiquement après l&#039;upgrade. Pour l&#039;activer supprimez le fichier &amp;lt;code&amp;gt;/etc/tmpfiles.d/tmp.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;rm -f /etc/tmpfiles.d/tmp.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après cela, les fichiers dans &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; seront automatiquement supprimé après 10 jours et les fichiers dans &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; après 30 jours&lt;br /&gt;
&lt;br /&gt;
==Les paquets isc-dhcp sont dépréciés==&lt;br /&gt;
Si vous utilisez NetworkManager ou systemd-networkd : rien à faire et vous pouvez supprimer le paquet &amp;lt;code&amp;gt;isc-dhcp-client&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez ifupdown, le paquet &amp;lt;code&amp;gt;dhcpcd-base&amp;lt;/code&amp;gt; fourni un client dhcp de remplacement.&lt;br /&gt;
&lt;br /&gt;
==si Ping ne fonctionne plus pour les utilisateurs==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#ping-no-longer-runs-with-elevated-privileges&lt;br /&gt;
&lt;br /&gt;
=Appendice=&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/upgrading.en.html&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
	<entry>
		<id>https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4383</id>
		<title>Migration de Debian Bookworm vers Trixie</title>
		<link rel="alternate" type="text/html" href="https://wiki.unscdf.org/index.php?title=Migration_de_Debian_Bookworm_vers_Trixie&amp;diff=4383"/>
		<updated>2025-08-15T16:44:06Z</updated>

		<summary type="html">&lt;p&gt;Pfoo : /* Mariadb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:serveur]]&lt;br /&gt;
[[Category:debian]]&lt;br /&gt;
[[Category:bookworm]]&lt;br /&gt;
[[Category:trixie]]&lt;br /&gt;
&lt;br /&gt;
=Préparation=&lt;br /&gt;
&lt;br /&gt;
==Assurez vous que vous êtes à la dernière version de debian==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&lt;br /&gt;
apt full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence d&#039;action en attente si vous utilisez aptitude==&lt;br /&gt;
&lt;br /&gt;
Lancez &amp;lt;code&amp;gt;aptitude&amp;lt;/code&amp;gt; puis tapez &amp;lt;code&amp;gt;G&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;~o&#039;&lt;br /&gt;
apt purge &#039;~o&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les paquets non-debian qui pourraient poser soucis lors de la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Tous les paquets non fournis par debian peuvent poser problème. A vos risques et péril. &amp;lt;br&amp;gt;&lt;br /&gt;
Pour les identifier :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt list &#039;?narrow(?installed, ?not(?origin(Debian)))&#039;&lt;br /&gt;
apt-forktracer | sort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vous de décider ou non de les supprimer avant la mise à niveau, certains paquets peuvent néanmoins gêner la mise à niveau.&lt;br /&gt;
&lt;br /&gt;
==Supprimez les fichiers de configuration non utilisés==&lt;br /&gt;
&amp;lt;pre&amp;gt;find /etc -name &#039;*.dpkg-*&#039; -o -name &#039;*.ucf-*&#039; -o -name &#039;*.merge-error&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez le pinning==&lt;br /&gt;
&lt;br /&gt;
Dans &amp;lt;code&amp;gt;/etc/apt/preferences&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;/etc/apt/preferences.d/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vérifiez l&#039;absence de paquets cassés==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dpkg --audit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enlevez les éventuels holds qui pourraient faire échouer la mise à jour==&lt;br /&gt;
&lt;br /&gt;
Pour identifier les paquets en hold :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-mark showhold&lt;br /&gt;
aptitude search &amp;quot;~ahold&amp;quot; &lt;br /&gt;
dpkg --get-selections | grep &#039;hold$&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour supprimer un hold :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt-mark unhold package_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Désactivez les entrées backports de votre sources.list==&lt;br /&gt;
&lt;br /&gt;
==Sources non officielles==&lt;br /&gt;
Assurez vous que ces sources possèdent des paquets compilés pour la nouvelle version de debian&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Mariadb==&lt;br /&gt;
&lt;br /&gt;
MariaDB ne supporte pas une récupération d&#039;erreur entre deux versions majeurs, il faut donc s&#039;assurer que vos bases de données sont propres et que les données et buffers sont bien écrit sur le disque avant de mettre à jour debian. Pour cela :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;service mariadb stop&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis vérifiez dans les logs la présence d&#039;une ligne &amp;lt;code&amp;gt;Shutdown complete&amp;lt;/code&amp;gt;. Si ce n&#039;est pas le cas, relancez mariadb pour lancer la récupération automatique des tables, attendez, puis stoppez à nouveau mariadb et vérifiez dans les logs que le nouvel arrêt s&#039;est fait proprement.&lt;br /&gt;
&lt;br /&gt;
=Mise à jour=&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de /etc/apt/sources.list==&lt;br /&gt;
&lt;br /&gt;
Debian Trixie utilise la nouvelle version deb822-style pour les sources apt.&lt;br /&gt;
&lt;br /&gt;
Il faut transformer le fichier &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; et tout fichier &amp;lt;code&amp;gt;*.list&amp;lt;/code&amp;gt; situé dans &amp;lt;code&amp;gt;/etc/apt/sources.list.d/&amp;lt;/code&amp;gt; en un fichier &amp;lt;code&amp;gt;/etc/apt/sources.list.d/debian.sources&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemple de fichier &amp;lt;code&amp;gt;debian.sources&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# main and updates&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://deb.debian.org/debian&lt;br /&gt;
Suites: trixie trixie-updates&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&lt;br /&gt;
# security&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: https://security.debian.org/debian-security&lt;br /&gt;
Suites: trixie-security&lt;br /&gt;
Components: main contrib non-free non-free-firmware&lt;br /&gt;
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour de la liste des paquets==&lt;br /&gt;
&amp;lt;pre&amp;gt;apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Assure vous d&#039;avoir assez d&#039;espace libre==&lt;br /&gt;
&lt;br /&gt;
La commande suivante permet de voir l&#039;espace nécessaire pour la mise à jour :&lt;br /&gt;
&amp;lt;pre&amp;gt;apt -o APT::Get::Trivial-Only=true full-upgrade&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Enregistrez les actions effectuées==&lt;br /&gt;
&lt;br /&gt;
apt loguera les packets modifiés dans &amp;lt;code&amp;gt;/var/log/apt/history.log&amp;lt;/code&amp;gt; et la sortie du terminal dans &amp;lt;code&amp;gt;/var/log/apt/term.log&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mise à jour==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt upgrade --without-new-pkgs&lt;br /&gt;
apt full-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si un prompt vous demande s&#039;il doit installer une nouvelle version d&#039;un fichier, répondez de préférence oui puis faites les adaptations nécessaires à votre configuration après la fin de la mise à jour. L&#039;ancien fichier restera disponible, suffixé de .dpkg-old&lt;br /&gt;
&lt;br /&gt;
=Cleanup=&lt;br /&gt;
&lt;br /&gt;
==Supprimez les paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt autoremove&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez les configurations et fichier résiduels des paquets qui ne sont plus nécessaires==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Purgez ces paquets===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~c&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Identifiez et supprimez les paquets obsolètes==&lt;br /&gt;
&lt;br /&gt;
Ce sont des paquets qui ne sont plus maintenu par debian.&lt;br /&gt;
&lt;br /&gt;
* Pour les lister :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt list &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Pour les supprimer :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;apt purge &#039;~o&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Spécificités trixie=&lt;br /&gt;
&lt;br /&gt;
==Risque de modification du nom des interfaces réseaux==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#network-interface-names-may-change&lt;br /&gt;
&lt;br /&gt;
==Le dossier des fichiers temporaires /tmp est maintenant un tmpfs==&lt;br /&gt;
&lt;br /&gt;
Pour récupérer ou supprimer les anciens fichiers du dossier /tmp il faut faire un bind mount :&lt;br /&gt;
&amp;lt;pre&amp;gt;mount --bind / /mnt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les anciens fichiers tmp seront dans &amp;lt;code&amp;gt;/mnt/tmp/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par défaut, le dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; disposera de 50% de la mémoire du système. Vous pouvez modifier l&#039;espace alloué avec &amp;lt;code&amp;gt;systemctl edit tmp.mount&amp;lt;/code&amp;gt; et modifier par exemple :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Mount]&lt;br /&gt;
Options=mode=1777,nosuid,nodev,size=2G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous souhaitez retrouver un dossier &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; classique (sans tmpfs) :&lt;br /&gt;
&amp;lt;pre&amp;gt;systemctl mask tmp.mount&amp;lt;/pre&amp;gt;&lt;br /&gt;
Puis redémarrer&lt;br /&gt;
&lt;br /&gt;
==Les dossiers /tmp et /var/tmp sont purgés automatiquement==&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/issues.en.html#the-directories-tmp-and-var-tmp-are-now-regularly-cleaned&lt;br /&gt;
&lt;br /&gt;
Cette fonctionnalité n&#039;est pas activé automatiquement après l&#039;upgrade. Pour l&#039;activer supprimez le fichier &amp;lt;code&amp;gt;/etc/tmpfiles.d/tmp.conf&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;pre&amp;gt;rm -f /etc/tmpfiles.d/tmp.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Après cela, les fichiers dans &amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; seront automatiquement supprimé après 10 jours et les fichiers dans &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; après 30 jours&lt;br /&gt;
&lt;br /&gt;
==Les paquets isc-dhcp sont dépréciés==&lt;br /&gt;
Si vous utilisez NetworkManager ou systemd-networkd : rien à faire et vous pouvez supprimer le paquet &amp;lt;code&amp;gt;isc-dhcp-client&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez ifupdown, le paquet &amp;lt;code&amp;gt;dhcpcd-base&amp;lt;/code&amp;gt; fourni un client dhcp de remplacement.&lt;br /&gt;
&lt;br /&gt;
=Appendice=&lt;br /&gt;
https://www.debian.org/releases/trixie/release-notes/upgrading.en.html&lt;/div&gt;</summary>
		<author><name>Pfoo</name></author>
	</entry>
</feed>