<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Debian on slash-root.fr</title><link>https://beta.slash-root.fr/tags/debian/</link><description>Recent content in Debian on slash-root.fr</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><lastBuildDate>Sun, 15 Mar 2026 22:13:13 +0100</lastBuildDate><atom:link href="https://beta.slash-root.fr/tags/debian/index.xml" rel="self" type="application/rss+xml"/><item><title>Aptly : mirroiter Debian proprement</title><link>https://beta.slash-root.fr/aptly-mirroiter-debian-proprement/</link><pubDate>Fri, 13 Mar 2026 19:05:06 +0100</pubDate><guid>https://beta.slash-root.fr/aptly-mirroiter-debian-proprement/</guid><description>&lt;img src="https://beta.slash-root.fr/aptly-mirroiter-debian-proprement/cover.jpg" alt="Featured image of post Aptly : mirroiter Debian proprement" /&gt;&lt;p&gt;Quand on gère une flotte de serveurs Debian, on finit toujours par se poser la même question : comment maîtriser ce que mes machines vont installer ? Comment être sûr qu'un &lt;code&gt;apt update&lt;/code&gt; ne va pas me ramener une version de paquet qui casse tout ? Et surtout, comment faire pour que mes serveurs de prod ne dépendent pas d'un miroir externe qui peut tomber au pire moment ?&lt;/p&gt;
&lt;p&gt;La réponse classique, c'est de monter un miroir local. Sauf que mirrorer Debian avec les outils standards (&lt;code&gt;debmirror&lt;/code&gt;, &lt;code&gt;apt-mirror&lt;/code&gt;...), c'est lourd, c'est rigide, et ça ne répond qu'à la moitié du problème. On a une copie locale, d'accord, mais on n'a toujours aucun contrôle sur ce qui change d'un jour à l'autre.&lt;/p&gt;
&lt;p&gt;C'est là qu'aptly entre en jeu.&lt;/p&gt;
&lt;h2 id="ce-quaptly-fait-vraiment"&gt;&lt;a href="#ce-quaptly-fait-vraiment" class="header-anchor"&gt;&lt;/a&gt;Ce qu&amp;rsquo;aptly fait vraiment
&lt;/h2&gt;&lt;p&gt;aptly, c'est un gestionnaire de dépôts Debian écrit en Go. Il sait faire trois choses fondamentales :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;mirrorer un dépôt distant&lt;/strong&gt; -- comme &lt;code&gt;apt-mirror&lt;/code&gt;, mais en mieux&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Figer l'état d'un miroir dans un snapshot immuable&lt;/strong&gt; -- ça, c'est la vraie valeur ajoutée&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publier ce snapshot&lt;/strong&gt; pour que vos machines puissent l'utiliser&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Le workflow de base, c'est ça :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;mirror create → mirror update → snapshot create → publish snapshot
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Et quand il faut mettre à jour :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;mirror update → snapshot create → publish switch
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Le &lt;code&gt;publish switch&lt;/code&gt; bascule la publication d'un snapshot à un autre. Vos machines continuent de pointer sur la même URL, mais le contenu change de manière contrôlée. Si ça foire, vous rebasculez sur l'ancien snapshot. Pas de panique, pas de retélécharger quoi que ce soit.&lt;/p&gt;
&lt;h2 id="installation"&gt;&lt;a href="#installation" class="header-anchor"&gt;&lt;/a&gt;Installation
&lt;/h2&gt;&lt;h3 id="via-les-paquets-debian"&gt;&lt;a href="#via-les-paquets-debian" class="header-anchor"&gt;&lt;/a&gt;Via les paquets Debian
&lt;/h3&gt;&lt;p&gt;C'est la méthode standard, celle qu'on va utiliser ici :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install aptly
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sur Debian Trixie, ça installe la version 1.5.0. C'est pas la toute dernière (la 1.6.2 existe), mais c'est largement suffisant pour ce qu'on va faire.&lt;/p&gt;
&lt;p&gt;Vérification :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ aptly version
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly version: 1.5.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="lupstream-optionnel"&gt;&lt;a href="#lupstream-optionnel" class="header-anchor"&gt;&lt;/a&gt;L&amp;rsquo;upstream (optionnel)
&lt;/h3&gt;&lt;p&gt;Si vous voulez absolument la dernière version upstream, vous pouvez ajouter le dépôt officiel d'aptly. Mais franchement, pour un usage classique, la version Debian fait le job. Je mentionne juste l'option pour ceux qui en ont besoin :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mkdir -p /etc/apt/keyrings
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget -O /etc/apt/keyrings/aptly.asc https://www.aptly.info/pubkey.txt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;deb [signed-by=/etc/apt/keyrings/aptly.asc] http://repo.aptly.info/release trixie main&amp;#34;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | sudo tee /etc/apt/sources.list.d/aptly.list
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install aptly
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Mais encore une fois, c'est optionnel. On va continuer avec la version des dépôts Debian.&lt;/p&gt;
&lt;h2 id="configuration-de-base"&gt;&lt;a href="#configuration-de-base" class="header-anchor"&gt;&lt;/a&gt;Configuration de base
&lt;/h2&gt;&lt;p&gt;aptly stocke tout dans &lt;code&gt;~/.aptly&lt;/code&gt; par défaut. En prod, on va plutôt utiliser &lt;code&gt;/var/aptly&lt;/code&gt;. On crée le répertoire et on configure aptly pour l'utiliser :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mkdir -p /var/aptly
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo chown $USER:$USER /var/aptly
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le fichier de config, c'est &lt;code&gt;~/.aptly.conf&lt;/code&gt; (ou &lt;code&gt;/etc/aptly.conf&lt;/code&gt; pour une config globale). On va en créer un minimal :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &amp;gt; ~/.aptly.conf &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;rootDir&amp;#34;: &amp;#34;/var/aptly&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;architectures&amp;#34;: [&amp;#34;amd64&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On restreint à &lt;code&gt;amd64&lt;/code&gt; parce que c'est ce qu'on utilise. Pas la peine de télécharger du &lt;code&gt;i386&lt;/code&gt;, du &lt;code&gt;arm64&lt;/code&gt; ou du &lt;code&gt;armhf&lt;/code&gt; si on n'en a pas besoin.&lt;/p&gt;
&lt;p&gt;Le &lt;code&gt;rootDir&lt;/code&gt;, c'est la racine de tout. Dedans, aptly va créer :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;db/&lt;/code&gt; -- sa base de données interne&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pool/&lt;/code&gt; -- les fichiers &lt;code&gt;.deb&lt;/code&gt; téléchargés&lt;/li&gt;
&lt;li&gt;&lt;code&gt;public/&lt;/code&gt; -- les dépôts publiés, ceux qu'on va exposer&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="importer-les-clés-gpg"&gt;&lt;a href="#importer-les-cl%c3%a9s-gpg" class="header-anchor"&gt;&lt;/a&gt;Importer les clés GPG
&lt;/h2&gt;&lt;p&gt;Avant de créer un miroir, aptly a besoin des clés GPG pour vérifier les signatures des dépôts distants. Sur Debian, les clés d'archive sont déjà présentes dans &lt;code&gt;/usr/share/keyrings/&lt;/code&gt;. Il suffit de les importer dans le trousseau d'aptly :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gpg --no-default-keyring &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --keyring /usr/share/keyrings/debian-archive-keyring.gpg &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --export | &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; gpg --no-default-keyring &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --keyring trustedkeys.gpg &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --import
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ça importe les clés dans &lt;code&gt;~/.gnupg/trustedkeys.gpg&lt;/code&gt;, le trousseau qu'aptly utilise par défaut.&lt;/p&gt;
&lt;h2 id="créer-un-miroir-de-debian-trixie"&gt;&lt;a href="#cr%c3%a9er-un-miroir-de-debian-trixie" class="header-anchor"&gt;&lt;/a&gt;Créer un miroir de Debian Trixie
&lt;/h2&gt;&lt;p&gt;On va mirrorer le dépôt officiel français (&lt;code&gt;ftp.fr.debian.org&lt;/code&gt;), avec les sections &lt;code&gt;main&lt;/code&gt; et &lt;code&gt;non-free-firmware&lt;/code&gt;. Pourquoi &lt;code&gt;non-free-firmware&lt;/code&gt; ? Parce que depuis Debian 12, les firmwares non-libres (wifi, GPU...) sont dans cette section, et on en a souvent besoin.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly mirror create &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -architectures&lt;span style="color:#f92672"&gt;=&lt;/span&gt;amd64 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; debian-trixie &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; http://ftp.fr.debian.org/debian/ &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; trixie main non-free-firmware
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Quelques remarques :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le flag &lt;code&gt;-architectures=amd64&lt;/code&gt; se place &lt;strong&gt;avant&lt;/strong&gt; la sous-commande &lt;code&gt;mirror&lt;/code&gt;. C'est un flag global. Si vous le mettez après, aptly va râler.&lt;/li&gt;
&lt;li&gt;Le nom du miroir (&lt;code&gt;debian-trixie&lt;/code&gt;), c'est vous qui le choisissez. Prenez un nom explicite.&lt;/li&gt;
&lt;li&gt;L'URL doit finir par un &lt;code&gt;/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;On spécifie la distribution (&lt;code&gt;trixie&lt;/code&gt;) et les composants (&lt;code&gt;main non-free-firmware&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La commande crée la définition du miroir, mais ne télécharge rien encore. Pour ça, il faut lancer un &lt;code&gt;mirror update&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="remplir-le-miroir"&gt;&lt;a href="#remplir-le-miroir" class="header-anchor"&gt;&lt;/a&gt;Remplir le miroir
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly mirror update debian-trixie
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Là, ça télécharge. Et ça prend du temps. Un miroir complet de Debian main + non-free-firmware en amd64, c'est plusieurs dizaines de Go. Prévoyez du café.&lt;/p&gt;
&lt;p&gt;Vous pouvez suivre la progression dans le terminal. aptly affiche les paquets au fur et à mesure qu'il les télécharge.&lt;/p&gt;
&lt;p&gt;Une fois terminé, vous pouvez voir ce que contient le miroir :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly mirror show debian-trixie
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ça vous donne le nombre de paquets, la taille totale, la date de dernière mise à jour, etc.&lt;/p&gt;
&lt;h2 id="créer-un-snapshot"&gt;&lt;a href="#cr%c3%a9er-un-snapshot" class="header-anchor"&gt;&lt;/a&gt;Créer un snapshot
&lt;/h2&gt;&lt;p&gt;Le miroir est à jour. Maintenant, on va en faire un snapshot. Un snapshot, c'est une copie figée et immuable de l'état du miroir à un instant T. Une fois créé, il ne bouge plus, quoi qu'il arrive au miroir source.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly snapshot create trixie-&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date +%Y%m%d&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt; from mirror debian-trixie
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;J'utilise la date dans le nom du snapshot. C'est une bonne pratique : ça permet de savoir immédiatement à quoi correspond chaque snapshot.&lt;/p&gt;
&lt;p&gt;Vous pouvez lister vos snapshots :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly snapshot list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et voir le détail d'un snapshot :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly snapshot show trixie-20260313
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="publier-le-snapshot"&gt;&lt;a href="#publier-le-snapshot" class="header-anchor"&gt;&lt;/a&gt;Publier le snapshot
&lt;/h2&gt;&lt;p&gt;Un snapshot qui n'est pas publié, ça ne sert à rien. La publication génère l'arborescence standard Debian (&lt;code&gt;dists/&lt;/code&gt;, &lt;code&gt;pool/&lt;/code&gt;, fichiers &lt;code&gt;Release&lt;/code&gt; signés...) dans &lt;code&gt;/var/aptly/public/&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly publish snapshot -distribution&lt;span style="color:#f92672"&gt;=&lt;/span&gt;trixie trixie-20260313
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le flag &lt;code&gt;-distribution=trixie&lt;/code&gt; indique quelle distribution utiliser dans les métadonnées du dépôt publié. C'est ce que vos machines verront dans leur &lt;code&gt;sources.list&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;aptly va vous demander la passphrase de votre clé GPG pour signer le fichier &lt;code&gt;Release&lt;/code&gt;. Si vous n'avez pas encore de clé GPG, créez-en une :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gpg --full-generate-key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Choisissez RSA 4096 bits, et renseignez un nom et un email.&lt;/p&gt;
&lt;p&gt;Une fois la publication terminée, vous avez un dépôt Debian complet dans &lt;code&gt;/var/aptly/public/&lt;/code&gt;. Il ne reste plus qu'à l'exposer via un serveur web.&lt;/p&gt;
&lt;h2 id="limpact-des-hard-links"&gt;&lt;a href="#limpact-des-hard-links" class="header-anchor"&gt;&lt;/a&gt;L&amp;rsquo;impact des hard links
&lt;/h2&gt;&lt;p&gt;Un détail important : quand aptly publie un snapshot, il ne copie pas les fichiers &lt;code&gt;.deb&lt;/code&gt;. Il crée des &lt;strong&gt;hard links&lt;/strong&gt; depuis le pool vers le répertoire &lt;code&gt;public/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Ça veut dire quoi concrètement ?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Pas de duplication&lt;/strong&gt; -- un paquet présent dans plusieurs snapshots n'occupe qu'une seule fois la place sur le disque&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publication instantanée&lt;/strong&gt; -- créer un hard link, c'est quasi gratuit en temps et en espace&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plusieurs snapshots publiés en même temps&lt;/strong&gt; -- vous pouvez avoir &lt;code&gt;trixie-20260313&lt;/code&gt; et &lt;code&gt;trixie-20260310&lt;/code&gt; publiés simultanément, ils partagent les fichiers communs&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;C'est pour ça que le &lt;code&gt;publish switch&lt;/code&gt; est si rapide. aptly ne déplace rien, il change juste les liens.&lt;/p&gt;
&lt;p&gt;Par contre, attention : si vous supprimez un snapshot publié avec &lt;code&gt;snapshot drop&lt;/code&gt;, aptly refuse tant que la publication existe. Il faut d'abord dépublier (&lt;code&gt;publish drop&lt;/code&gt;) ou basculer vers un autre snapshot (&lt;code&gt;publish switch&lt;/code&gt;).&lt;/p&gt;
&lt;h2 id="mettre-à-jour-le-miroir-et-basculer"&gt;&lt;a href="#mettre-%c3%a0-jour-le-miroir-et-basculer" class="header-anchor"&gt;&lt;/a&gt;Mettre à jour le miroir et basculer
&lt;/h2&gt;&lt;p&gt;Quelques jours passent. Le miroir Debian a évolué. Vous voulez mettre à jour votre dépôt local. Voilà le workflow complet :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 1. Mettre à jour le miroir&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly mirror update debian-trixie
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 2. Créer un nouveau snapshot&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly snapshot create trixie-&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date +%Y%m%d&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt; from mirror debian-trixie
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 3. Basculer la publication vers le nouveau snapshot&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly publish switch trixie trixie-20260315
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le &lt;code&gt;publish switch&lt;/code&gt; fait tout le boulot :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Il met à jour les métadonnées (&lt;code&gt;Release&lt;/code&gt;, &lt;code&gt;Packages&lt;/code&gt;, &lt;code&gt;Contents&lt;/code&gt;...)&lt;/li&gt;
&lt;li&gt;Il ajuste les hard links dans &lt;code&gt;public/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Il signe le nouveau &lt;code&gt;Release&lt;/code&gt; avec GPG&lt;/li&gt;
&lt;li&gt;Il nettoie les anciens liens qui ne servent plus&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vos machines qui pointent sur ce dépôt voient le changement au prochain &lt;code&gt;apt update&lt;/code&gt;. Pas de coupure, pas de temps d'arrêt.&lt;/p&gt;
&lt;p&gt;Si le nouveau snapshot pose problème, vous rebasculez sur l'ancien :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly publish switch trixie trixie-20260313
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;C'est aussi rapide dans un sens que dans l'autre.&lt;/p&gt;
&lt;h2 id="les-dépôts-locaux-mention-rapide"&gt;&lt;a href="#les-d%c3%a9p%c3%b4ts-locaux-mention-rapide" class="header-anchor"&gt;&lt;/a&gt;Les dépôts locaux (mention rapide)
&lt;/h2&gt;&lt;p&gt;aptly sait aussi gérer des dépôts locaux, où vous poussez vos propres paquets &lt;code&gt;.deb&lt;/code&gt;. Le workflow est similaire :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Créer un dépôt local&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly repo create mon-depot
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Ajouter des paquets&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly repo add mon-depot /chemin/vers/*.deb
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Snapshot&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly snapshot create mon-depot-v1 from repo mon-depot
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Publier&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly publish snapshot mon-depot-v1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Je ne développe pas plus ici, parce que le cas d'usage principal d'aptly, c'est quand même le mirroring. Mais sachez que c'est possible.&lt;/p&gt;
&lt;h2 id="exposer-le-dépôt"&gt;&lt;a href="#exposer-le-d%c3%a9p%c3%b4t" class="header-anchor"&gt;&lt;/a&gt;Exposer le dépôt
&lt;/h2&gt;&lt;h3 id="le-serveur-embarqué-test-uniquement"&gt;&lt;a href="#le-serveur-embarqu%c3%a9-test-uniquement" class="header-anchor"&gt;&lt;/a&gt;Le serveur embarqué (test uniquement)
&lt;/h3&gt;&lt;p&gt;aptly a un petit serveur HTTP intégré. C'est pratique pour tester, mais la doc officielle est claire : &lt;strong&gt;not suitable for real production usage&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly serve -listen&lt;span style="color:#f92672"&gt;=&lt;/span&gt;:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vous pouvez alors ajouter le dépôt sur une machine de test :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;deb http://votre-serveur:8080/ trixie main non-free-firmware&amp;#34;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | sudo tee /etc/apt/sources.list.d/aptly-test.list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="nginx-production"&gt;&lt;a href="#nginx-production" class="header-anchor"&gt;&lt;/a&gt;nginx (production)
&lt;/h3&gt;&lt;p&gt;En prod, on utilise nginx. Je ne vais pas détailler ici parce que ça fera l'objet d'un second article si besoin, mais l'idée générale :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nginx" data-lang="nginx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;server&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;listen&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;80&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;server_name&lt;/span&gt; &lt;span style="color:#e6db74"&gt;repo.example.com&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;root&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/var/aptly/public&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;location&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;autoindex&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;on&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vous activez le vhost, vous rechargez nginx, et c'est bon. Pour HTTPS, ajoutez Let's Encrypt avec &lt;code&gt;certbot&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Côté client, vous ajoutez le dépôt :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;deb http://repo.example.com/ trixie main non-free-firmware&amp;#34;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | sudo tee /etc/apt/sources.list.d/mon-miroir.list
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si le dépôt est signé (et il devrait l'être), distribuez votre clé GPG publique aux clients :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gpg --armor --export VOTRE_KEY_ID &amp;gt; /var/aptly/public/repo-key.asc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sur les clients :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget -O /etc/apt/keyrings/mon-repo.asc http://repo.example.com/repo-key.asc
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;deb [signed-by=/etc/apt/keyrings/mon-repo.asc] http://repo.example.com/ trixie main non-free-firmware&amp;#34;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | sudo tee /etc/apt/sources.list.d/mon-miroir.list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="automatiser-avec-cron"&gt;&lt;a href="#automatiser-avec-cron" class="header-anchor"&gt;&lt;/a&gt;Automatiser avec cron
&lt;/h2&gt;&lt;p&gt;Un miroir, ça se met à jour régulièrement. Voici un script cron qui fait le job :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# /etc/cron.daily/aptly-update&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;set -euo pipefail
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;MIRROR&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;debian-trixie&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DATE&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date +%Y%m%d&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Mise à jour du miroir&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly mirror update &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$MIRROR&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Nouveau snapshot&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly snapshot create &lt;span style="color:#e6db74"&gt;&amp;#34;trixie-&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;DATE&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; from mirror &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$MIRROR&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Basculer la publication&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly publish switch -batch -gpg-key&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;VOTRE_KEY_ID&amp;#34;&lt;/span&gt; trixie &lt;span style="color:#e6db74"&gt;&amp;#34;trixie-&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;DATE&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Nettoyer les vieux snapshots (garder les 7 derniers)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly snapshot list -raw | grep &lt;span style="color:#e6db74"&gt;&amp;#34;^trixie-&amp;#34;&lt;/span&gt; | sort | head -n -7 | &lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; read snap; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; aptly snapshot drop &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$snap&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; 2&amp;gt;/dev/null &lt;span style="color:#f92672"&gt;||&lt;/span&gt; true
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Nettoyer la base&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly db cleanup
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le flag &lt;code&gt;-batch&lt;/code&gt; est crucial : il permet à GPG de fonctionner sans terminal interactif. Sans ça, le script va bloquer en attendant que vous tapiez la passphrase.&lt;/p&gt;
&lt;p&gt;Pour éviter ça, vous pouvez aussi utiliser &lt;code&gt;gpg-agent&lt;/code&gt; avec un cache de passphrase, ou stocker la passphrase dans un fichier sécurisé et utiliser &lt;code&gt;-passphrase-file&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="nettoyage-et-maintenance"&gt;&lt;a href="#nettoyage-et-maintenance" class="header-anchor"&gt;&lt;/a&gt;Nettoyage et maintenance
&lt;/h2&gt;&lt;p&gt;aptly conserve tous les paquets téléchargés dans son pool, même ceux qui ne sont plus référencés par aucun snapshot. Pour faire le ménage :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly db cleanup
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ça supprime les paquets orphelins. Si vous voulez voir ce qui va être supprimé avant de le faire :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly db cleanup -verbose -dry-run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour sauvegarder votre installation aptly, c'est simple : sauvegardez &lt;code&gt;/var/aptly&lt;/code&gt; en entier. Tout est dedans.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar -czf aptly-backup-&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date +%Y%m%d&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;.tar.gz /var/aptly
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="quelques-astuces"&gt;&lt;a href="#quelques-astuces" class="header-anchor"&gt;&lt;/a&gt;Quelques astuces
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Filtrer les paquets lors du mirroring.&lt;/strong&gt; Si vous ne voulez mirrorer que certains paquets (par exemple, uniquement nginx et ses dépendances), vous pouvez utiliser des filtres :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly mirror create -filter&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;nginx&amp;#39;&lt;/span&gt; -filter-with-deps &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; nginx-only &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; http://ftp.fr.debian.org/debian/ &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; trixie main
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le flag &lt;code&gt;-filter-with-deps&lt;/code&gt; est important : sans lui, vous récupérez nginx mais pas ses dépendances, et ça ne servira à rien.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comparer deux snapshots.&lt;/strong&gt; Pour voir ce qui a changé entre deux snapshots :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly snapshot diff trixie-20260313 trixie-20260315
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Fusionner des snapshots.&lt;/strong&gt; Vous pouvez combiner plusieurs snapshots en un seul. Utile si vous avez un miroir Debian et un dépôt local, et que vous voulez les publier ensemble :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;aptly snapshot merge trixie-complet trixie-20260315 mon-depot-v1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="conclusion"&gt;&lt;a href="#conclusion" class="header-anchor"&gt;&lt;/a&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;aptly résout un vrai problème : comment garder le contrôle sur ce que vos machines Debian vont installer. Les miroirs classiques vous donnent une copie locale, d'accord, mais ils ne vous donnent pas la maîtrise des changements. Avec aptly et ses snapshots, vous décidez quand et comment vos serveurs voient les mises à jour.&lt;/p&gt;
&lt;p&gt;Le workflow &lt;code&gt;mirror create&lt;/code&gt; → &lt;code&gt;mirror update&lt;/code&gt; → &lt;code&gt;snapshot create&lt;/code&gt; → &lt;code&gt;publish snapshot&lt;/code&gt; → &lt;code&gt;publish switch&lt;/code&gt; devient vite un réflexe. Et le jour où une mise à jour casse quelque chose, vous serez bien content de pouvoir rebascule sur le snapshot d'hier en une commande.&lt;/p&gt;
&lt;p&gt;Les hard links font que tout ça reste léger en espace disque et rapide en exécution. Vous pouvez avoir plusieurs snapshots publiés en parallèle, pour des environnements de test et de prod différents, sans exploser votre stockage.&lt;/p&gt;
&lt;p&gt;Bref, si vous gérez des serveurs Debian sérieusement, aptly mérite sa place dans votre boîte à outils.&lt;/p&gt;</description></item><item><title>Debian : Configuration complète d’unattended-upgrades pour une sécurité sans effort</title><link>https://beta.slash-root.fr/debian-configuration-complete-dunattended-upgrades-pour-une-securite-sans-effort/</link><pubDate>Thu, 08 May 2025 14:03:19 +0200</pubDate><guid>https://beta.slash-root.fr/debian-configuration-complete-dunattended-upgrades-pour-une-securite-sans-effort/</guid><description>&lt;img src="https://beta.slash-root.fr/debian-configuration-complete-dunattended-upgrades-pour-une-securite-sans-effort/cover.jpg" alt="Featured image of post Debian : Configuration complète d’unattended-upgrades pour une sécurité sans effort" /&gt;&lt;h2 id="1-introduction-ou-pourquoi-il-est-temps-darrêter-de-faire-semblant"&gt;&lt;a href="#1-introduction-ou-pourquoi-il-est-temps-darr%c3%aater-de-faire-semblant" class="header-anchor"&gt;&lt;/a&gt;1. Introduction, ou pourquoi il est temps d&amp;rsquo;arrêter de faire semblant
&lt;/h2&gt;&lt;p&gt;Laissez-moi deviner : vous êtes du genre à vous vanter d'être un administrateur système compétent, mais vous ne vous souvenez pas de la dernière fois que vous avez tapé &lt;code&gt;apt update &amp;amp;&amp;amp; apt upgrade&lt;/code&gt; sur vos serveurs en production ? Pas étonnant que vos systèmes ressemblent à un gruyère numérique avec plus de trous que de fromage. Un bon sysadmin met à jour ses systèmes - un &lt;em&gt;vrai&lt;/em&gt; sysadmin automatise ça et passe à autre chose.&lt;/p&gt;
&lt;p&gt;Heureusement, les créateurs de Debian n'ont pas supposé que vous étiez tous des héros de la ligne de commande avec une mémoire infaillible et un agenda aussi vide que &lt;code&gt;/dev/null&lt;/code&gt;. Ils nous ont gratifiés d'&lt;strong&gt;unattended-upgrades&lt;/strong&gt;, ce petit bijou d'automatisation que seuls les vrais barbus savent configurer correctement. Bien sûr, vous pourriez continuer à mettre à jour manuellement, de la même manière que vous pourriez continuer à croire que vi est plus difficile qu'Emacs.&lt;/p&gt;
&lt;h2 id="2-unattended-upgrades--le-sysadmin-silencieux-qui-ne-prend-jamais-de-pause-café"&gt;&lt;a href="#2-unattended-upgrades--le-sysadmin-silencieux-qui-ne-prend-jamais-de-pause-caf%c3%a9" class="header-anchor"&gt;&lt;/a&gt;2. Unattended-upgrades : le sysadmin silencieux qui ne prend jamais de pause café
&lt;/h2&gt;&lt;p&gt;Contrairement à votre stagiaire qui croit que &amp;quot;mise à jour de sécurité&amp;quot; signifie &amp;quot;changer son mot de passe de 'password123' à 'password1234'&amp;quot;, unattended-upgrades est un service qui prend son travail au sérieux. Cette petite merveille d'ingénierie fonctionne pendant que vous dormez profondément, rêvant probablement de clusters Kubernetes parfaitement orchestrés (on sait tous que ça n'arrive que dans les rêves).&lt;/p&gt;
&lt;p&gt;Techniquement parlant (et les vrais barbus aiment parler techniquement), c'est un démon qui s'exécute via systemd timers pour :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chercher les mises à jour que vous auriez dû installer il y a des semaines&lt;/li&gt;
&lt;li&gt;Filtrer celles qui empêcheront votre système de se faire pwner par un script kiddie&lt;/li&gt;
&lt;li&gt;Les installer sans vous demander votre avis (parce qu'on sait tous que vous diriez &amp;quot;plus tard&amp;quot;)&lt;/li&gt;
&lt;li&gt;Redémarrer votre serveur au milieu de la nuit quand personne ne regardera vos graphs de monitoring chuter momentanément&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce paquet fonctionne sur n'importe quelle version de Debian (de l'antique Buster à la fraichement sortie Bookworm) et même sur ces ersatz de Debian comme Ubuntu, si vous vous abaissez à utiliser de telles distributions.&lt;/p&gt;
&lt;h2 id="3-installation-pour-ceux-qui-savent-encore-taper-sur-un-clavier"&gt;&lt;a href="#3-installation-pour-ceux-qui-savent-encore-taper-sur-un-clavier" class="header-anchor"&gt;&lt;/a&gt;3. Installation pour ceux qui savent encore taper sur un clavier
&lt;/h2&gt;&lt;h3 id="31-les-bases-même-votre-stagiaire-pourrait-le-faire"&gt;&lt;a href="#31-les-bases-m%c3%aame-votre-stagiaire-pourrait-le-faire" class="header-anchor"&gt;&lt;/a&gt;3.1 Les bases (même votre stagiaire pourrait le faire)
&lt;/h3&gt;&lt;p&gt;Ouvrez votre terminal noir (parce que bien sûr, vous utilisez un fond noir avec des polices vertes, comme tout vrai barbu qui se respecte) et tapez ces incantations magiques :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install unattended-upgrades apt-listchanges
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Ce que vous venez de conjurer :&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;unattended-upgrades&lt;/code&gt; : le véritable héros silencieux qui fera le travail que vous procrastinez habituellement&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apt-listchanges&lt;/code&gt; : pour recevoir des emails détaillés que vous prétendrez lire avant de les archiver automatiquement&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="32-activation-pour-les-admins-qui-ont-peur-de-modifier-les-fichiers-de-configuration-à-la-main"&gt;&lt;a href="#32-activation-pour-les-admins-qui-ont-peur-de-modifier-les-fichiers-de-configuration-%c3%a0-la-main" class="header-anchor"&gt;&lt;/a&gt;3.2 Activation pour les admins qui ont peur de modifier les fichiers de configuration à la main
&lt;/h3&gt;&lt;p&gt;Si vous préférez l'approche &amp;quot;clique-bouton&amp;quot; (aucun jugement, enfin peut-être un peu), Debian vous offre un assistant :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo dpkg-reconfigure --priority&lt;span style="color:#f92672"&gt;=&lt;/span&gt;low unattended-upgrades
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Astuce de vrai barbu :&lt;/strong&gt; L'argument &lt;code&gt;--priority=low&lt;/code&gt; force l'affichage de &lt;strong&gt;toutes&lt;/strong&gt; les options possibles, parce que les vrais barbus veulent tout contrôler. Les autres priorités sont pour ceux qui pensent qu'utiliser une souris sous Linux est une bonne idée.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Un menu pseudo-graphique va apparaître dans votre terminal. Sélectionnez &amp;quot;Oui&amp;quot; (comme si vous aviez réellement le choix). Cette étape crée le fichier &lt;code&gt;/etc/apt/apt.conf.d/20auto-upgrades&lt;/code&gt; avec une configuration basique pour les âmes simples.&lt;/p&gt;
&lt;h2 id="4-configuration-pour-les-vrais-barbus-ceux-qui-nutilisent-pas-de-gui"&gt;&lt;a href="#4-configuration-pour-les-vrais-barbus-ceux-qui-nutilisent-pas-de-gui" class="header-anchor"&gt;&lt;/a&gt;4. Configuration pour les vrais barbus (ceux qui n&amp;rsquo;utilisent pas de GUI)
&lt;/h2&gt;&lt;p&gt;La configuration d'unattended-upgrades se fait dans deux fichiers de configuration. Si vous ne savez pas ce qu'est un fichier de configuration, fermez cet article et retournez installer Windows :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/etc/apt/apt.conf.d/50unattended-upgrades&lt;/code&gt; - Où la vraie magie se passe&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/apt/apt.conf.d/20auto-upgrades&lt;/code&gt; - Pour dire à votre système à quelle fréquence il doit se sauver lui-même&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="41-sélection-des-dépôts-ou-comment-distinguer-les-mises-à-jour-importantes-des-futilités"&gt;&lt;a href="#41-s%c3%a9lection-des-d%c3%a9p%c3%b4ts-ou-comment-distinguer-les-mises-%c3%a0-jour-importantes-des-futilit%c3%a9s" class="header-anchor"&gt;&lt;/a&gt;4.1 Sélection des dépôts (ou comment distinguer les mises à jour importantes des futilités)
&lt;/h3&gt;&lt;p&gt;Éditez &lt;code&gt;/etc/apt/apt.conf.d/50unattended-upgrades&lt;/code&gt; (avec vi, bien sûr, pas avec cette abomination qu'est nano). La section &lt;code&gt;Origins-Pattern&lt;/code&gt; est comme le filtre de Tinder de votre système - elle décide quelles mises à jour méritent son attention :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-aptconf" data-lang="aptconf"&gt;Unattended-Upgrade::Origins-Pattern {
 &amp;#34;origin=Debian,codename=${distro_codename}-security&amp;#34;;

 // &amp;#34;origin=Debian,codename=${distro_codename}-updates&amp;#34;;

 // &amp;#34;origin=Debian,codename=${distro_codename}-proposed-updates&amp;#34;;

 // &amp;#34;origin=Debian,codename=${distro_codename}-backports&amp;#34;;
};
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Guide de traduction du jargon Debian pour mortels :&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type de dépôt&lt;/th&gt;
&lt;th&gt;Ce que Debian dit&lt;/th&gt;
&lt;th&gt;Ce que ça signifie vraiment&lt;/th&gt;
&lt;th&gt;À activer si...&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;-security&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&amp;quot;Correctifs de sécurité critiques&amp;quot;&lt;/td&gt;
&lt;td&gt;&amp;quot;Colmate les trous que les script kiddies utilisent déjà&amp;quot;&lt;/td&gt;
&lt;td&gt;Vous avez un minimum d'instinct de survie&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;-updates&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&amp;quot;Corrections importantes non sécuritaires&amp;quot;&lt;/td&gt;
&lt;td&gt;&amp;quot;Bugs suffisamment gênants pour qu'on daigne les corriger&amp;quot;&lt;/td&gt;
&lt;td&gt;Vous en avez assez que vos services plantent mystérieusement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;-proposed-updates&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&amp;quot;Candidats en attente de validation&amp;quot;&lt;/td&gt;
&lt;td&gt;&amp;quot;Quelqu'un a bricolé ça, ça semble marcher, mais on n'est pas sûr&amp;quot;&lt;/td&gt;
&lt;td&gt;Vous aimez vivre dangereusement (ou avez un environnement de test)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;-backports&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&amp;quot;Nouvelles versions portées vers stable&amp;quot;&lt;/td&gt;
&lt;td&gt;&amp;quot;Du code récent greffé sur un OS dinosaure&amp;quot;&lt;/td&gt;
&lt;td&gt;Un fonctionnalité VRAIMENT nécessaire vous manque&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🐑 Conseil de troupeau :&lt;/strong&gt; La plupart des moutons n'activent que &lt;code&gt;-security&lt;/code&gt;. Les vrais barbus activent tout puis blâment systemd quand ça casse.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="42-planification-des-mises-à-jour-ou-quand-laisser-votre-système-jouer-au-docteur"&gt;&lt;a href="#42-planification-des-mises-%c3%a0-jour-ou-quand-laisser-votre-syst%c3%a8me-jouer-au-docteur" class="header-anchor"&gt;&lt;/a&gt;4.2 Planification des mises à jour (ou quand laisser votre système jouer au docteur)
&lt;/h3&gt;&lt;p&gt;Modifiez &lt;code&gt;/etc/apt/apt.conf.d/20auto-upgrades&lt;/code&gt; pour définir quand votre système se soignera tout seul :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-aptconf" data-lang="aptconf"&gt;APT::Periodic::Update-Package-Lists &amp;#34;1&amp;#34;;
APT::Periodic::Unattended-Upgrade &amp;#34;1&amp;#34;;
APT::Periodic::Unattended-Upgrade-Time &amp;#34;3&amp;#34;;
APT::Periodic::RandomSleep &amp;#34;60&amp;#34;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Explication pour ceux qui n'ont jamais lu le man :&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Update-Package-Lists&lt;/strong&gt; : À quelle fréquence votre système recherche de nouvelles mises à jour.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;1&amp;quot;&lt;/code&gt; = tous les jours (pour les paranoïaques)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;7&amp;quot;&lt;/code&gt; = une fois par semaine (pour les décontractés)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;0&amp;quot;&lt;/code&gt; = jamais (pour ceux qui aiment jouer à la roulette russe avec les exploits)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Unattended-Upgrade&lt;/strong&gt; : Quand appliquer réellement ces mises à jour.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;1&amp;quot;&lt;/code&gt; = quotidiennement (recommandé par tous ceux qui ont déjà dû nettoyer un serveur compromis)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;7&amp;quot;&lt;/code&gt; = hebdomadaire (un compromis pour les téméraires)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;0&amp;quot;&lt;/code&gt; = jamais (alors pourquoi lire cet article ?)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Unattended-Upgrade-Time&lt;/strong&gt; : L'heure à laquelle lancer le processus.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;3&amp;quot;&lt;/code&gt; = 3h du matin, quand même les administrateurs système devraient dormir&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;RandomSleep&lt;/strong&gt; : Le délai aléatoire pour éviter d'être comme tout le monde.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;60&amp;quot;&lt;/code&gt; = entre 0 et 60 minutes de décalage (pour ne pas faire tomber les miroirs Debian quand tout le monde se rue dessus à 3h00 pile)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🐔 Pour les insomniaques :&lt;/strong&gt; Sur Debian 11+, &lt;code&gt;RandomSleep&lt;/code&gt; est en minutes. Sur Debian 10 et avant, c'est en secondes. Pourquoi ? Parce que la cohérence, c'est surfait quand on peut introduire des bugs subtils dans votre configuration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="43-gestion-du-reboot-automatique-ou-comment-faire-pleurer-vos-utilisateurs"&gt;&lt;a href="#43-gestion-du-reboot-automatique-ou-comment-faire-pleurer-vos-utilisateurs" class="header-anchor"&gt;&lt;/a&gt;4.3 Gestion du reboot automatique (ou comment faire pleurer vos utilisateurs)
&lt;/h3&gt;&lt;p&gt;Les mises à jour du noyau sont comme les légumes - elles ne font effet que si vous redémarrez. Configurez le comportement dans &lt;code&gt;/etc/apt/apt.conf.d/50unattended-upgrades&lt;/code&gt; :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-aptconf" data-lang="aptconf"&gt;Unattended-Upgrade::Automatic-Reboot &amp;#34;true&amp;#34;;
Unattended-Upgrade::Automatic-Reboot-Time &amp;#34;04:30&amp;#34;;
Unattended-Upgrade::Automatic-Reboot-WithUsers &amp;#34;false&amp;#34;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Ce que ces options signifient vraiment :&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Automatic-Reboot&lt;/strong&gt; : Le grand interrupteur de la terreur nocturne.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;true&amp;quot;&lt;/code&gt; = &amp;quot;J'aime vivre dangereusement et mes backups sont à jour&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;false&amp;quot;&lt;/code&gt; = &amp;quot;Je préfère avoir un noyau vulnérable mais au moins je sais quand mon serveur redémarre&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Automatic-Reboot-Time&lt;/strong&gt; : L'heure du crime parfait.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Format : &lt;code&gt;&amp;quot;HH:MM&amp;quot;&lt;/code&gt; (choisir une heure où personne ne remarquera que tout est tombé)&lt;/li&gt;
&lt;li&gt;Conseil de barbu : planifiez-le toujours APRÈS les mises à jour, pas pendant&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Automatic-Reboot-WithUsers&lt;/strong&gt; : Le dilemme éthique.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;true&amp;quot;&lt;/code&gt; = &amp;quot;Les sessions des utilisateurs importent moins que la sécurité&amp;quot; (approche soviétique)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;false&amp;quot;&lt;/code&gt; = &amp;quot;Les humains d'abord&amp;quot; (approche diplomatique)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🔥 Histoire vraie :&lt;/strong&gt; J'ai vu un administrateur configurer un redémarrage automatique à 14h sur un serveur de production. Il a ensuite passé trois semaines à se demander pourquoi les utilisateurs lui envoyaient des messages haineux tous les jours.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="44-notifications-pour-prétendre-que-vous-surveillez-vos-serveurs"&gt;&lt;a href="#44-notifications-pour-pr%c3%a9tendre-que-vous-surveillez-vos-serveurs" class="header-anchor"&gt;&lt;/a&gt;4.4 Notifications pour prétendre que vous surveillez vos serveurs
&lt;/h3&gt;&lt;p&gt;Les emails de notification sont là pour vous donner l'illusion que vous savez ce qui se passe sur vos serveurs. Configurez-les dans &lt;code&gt;/etc/apt/apt.conf.d/50unattended-upgrades&lt;/code&gt; :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-aptconf" data-lang="aptconf"&gt;Unattended-Upgrade::Mail &amp;#34;admin@domaine.fr&amp;#34;;
Unattended-Upgrade::MailReport &amp;#34;on-change&amp;#34;;

//Unattended-Upgrade::Mail-Server &amp;#34;smtp.example.com&amp;#34;;
//Unattended-Upgrade::Mail-Server-Port &amp;#34;587&amp;#34;;
//Unattended-Upgrade::Mail-Server-Login &amp;#34;votre_login&amp;#34;;
//Unattended-Upgrade::Mail-Server-Password &amp;#34;votre_motdepasse&amp;#34;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Options pour votre spam personnel :&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mail&lt;/strong&gt; : Qui recevra les rapports que personne ne lit.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mettez votre email perso si vous aimez être réveillé à 3h du matin par des notifications&lt;/li&gt;
&lt;li&gt;Ou créez un filtre qui les envoie directement dans un dossier que vous n'ouvrirez jamais&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;MailReport&lt;/strong&gt; : La fréquence de spam.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;always&amp;quot;&lt;/code&gt; = pour ceux qui aiment leur boîte mail bien remplie&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;on-change&amp;quot;&lt;/code&gt; = le choix des gens raisonnables&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;only-on-error&amp;quot;&lt;/code&gt; = pour ceux qui adhèrent à la philosophie &amp;quot;pas de nouvelles, bonnes nouvelles&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;📣 Rappel essentiel :&lt;/strong&gt; Ces mails ne serviront à rien si vous n'avez pas un MTA fonctionnel. Installez-en un ou tous ces paramètres ne seront que des vœux pieux :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install postfix
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# OU&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install msmtp msmtp-mta
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;h2 id="5-dompter-les-mises-à-jour-majeures-ou-lart-déviter-la-crise-cardiaque-à-3h-du-matin"&gt;&lt;a href="#5-dompter-les-mises-%c3%a0-jour-majeures-ou-lart-d%c3%a9viter-la-crise-cardiaque-%c3%a0-3h-du-matin" class="header-anchor"&gt;&lt;/a&gt;5. Dompter les mises à jour majeures (ou l&amp;rsquo;art d&amp;rsquo;éviter la crise cardiaque à 3h du matin)
&lt;/h2&gt;&lt;p&gt;Les mises à jour de sécurité, c'est bien, mais les mises à jour majeures, c'est comme laisser un enfant de 5 ans conduire votre voiture - ça peut aller très mal, très vite. Particulièrement avec ces paquets qui utilisent le système d'alternatives de Debian, cette brillante invention qui garantit votre future migraine.&lt;/p&gt;
&lt;h3 id="51-le-piège-des-alternatives-ou-comment-se-tirer-une-balle-dans-le-pied-automatiquement"&gt;&lt;a href="#51-le-pi%c3%a8ge-des-alternatives-ou-comment-se-tirer-une-balle-dans-le-pied-automatiquement" class="header-anchor"&gt;&lt;/a&gt;5.1 Le piège des alternatives (ou comment se tirer une balle dans le pied automatiquement)
&lt;/h3&gt;&lt;p&gt;Les langages comme PHP, Python ou Java utilisent ce merveilleux système d'alternatives, qui permet à plusieurs versions de coexister (comme vos ex, mais en plus utile). Malheureusement, ce système a été conçu par quelqu'un qui n'a manifestement jamais entendu parler de l'automatisation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le drame en 4 actes :&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Acte&lt;/th&gt;
&lt;th&gt;Tragédie&lt;/th&gt;
&lt;th&gt;Résultat&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Votre système découvre PHP 8.3 et pense &amp;quot;oh, quelle belle mise à jour !&amp;quot;&lt;/td&gt;
&lt;td&gt;Installation lancée à 3h17 du matin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Le script demande poliment : &amp;quot;Voulez-vous faire de cette nouvelle version la version par défaut ?&amp;quot;&lt;/td&gt;
&lt;td&gt;Votre serveur fige, attendant une réponse qui ne viendra jamais&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Vous dormez paisiblement pendant que votre installation reste suspendue&lt;/td&gt;
&lt;td&gt;Configuration en état zombie (&lt;code&gt;sudo dpkg --configure -a&lt;/code&gt; sera votre mantra du matin)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Votre système de mise à jour automatique est lui-même bloqué&lt;/td&gt;
&lt;td&gt;Félicitations, vous venez de désactiver votre sécurité automatique&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="52-solutions-pour-barbus-confirmés-et-amateurs-de-nuits-tranquilles"&gt;&lt;a href="#52-solutions-pour-barbus-confirm%c3%a9s-et-amateurs-de-nuits-tranquilles" class="header-anchor"&gt;&lt;/a&gt;5.2 Solutions pour barbus confirmés (et amateurs de nuits tranquilles)
&lt;/h3&gt;&lt;h4 id="521-entraîner-debconf-à-ne-pas-vous-demander-votre-avis"&gt;&lt;a href="#521-entra%c3%aener-debconf-%c3%a0-ne-pas-vous-demander-votre-avis" class="header-anchor"&gt;&lt;/a&gt;5.2.1 Entraîner debconf à ne pas vous demander votre avis
&lt;/h4&gt;&lt;p&gt;Ce code est l'équivalent de mettre un bâillon sur debconf pour qu'il arrête de poser des questions stupides :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo echo &lt;span style="color:#e6db74"&gt;&amp;#34;php8.3 php8.3/common/default_for_install boolean false&amp;#34;&lt;/span&gt; | sudo debconf-set-selections
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo echo &lt;span style="color:#e6db74"&gt;&amp;#34;php8.2 php8.2/common/default_for_install boolean true&amp;#34;&lt;/span&gt; | sudo debconf-set-selections
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Quand l'utiliser&lt;/strong&gt; : Lorsque vous êtes un admin responsable qui teste d'abord les nouvelles versions avant de les infliger à votre production. Concept alien pour certains, je sais.&lt;/p&gt;
&lt;h4 id="522-expliquer-à-debian-ce-quest-une-priorité-comme-à-votre-chef-de-projet"&gt;&lt;a href="#522-expliquer-%c3%a0-debian-ce-quest-une-priorit%c3%a9-comme-%c3%a0-votre-chef-de-projet" class="header-anchor"&gt;&lt;/a&gt;5.2.2 Expliquer à Debian ce qu&amp;rsquo;est une priorité (comme à votre chef de projet)
&lt;/h4&gt;&lt;p&gt;Le système de priorité d'alternatives est l'équivalent technique d'une hiérarchie féodale - celui avec le plus grand nombre gagne :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 &lt;span style="color:#ae81ff"&gt;82&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --slave /usr/bin/phar phar /usr/bin/phar8.2 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --slave /usr/bin/phpdbg phpdbg /usr/bin/phpdbg8.2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.3 &lt;span style="color:#ae81ff"&gt;80&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --slave /usr/bin/phar phar /usr/bin/phar8.3 &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --slave /usr/bin/phpdbg phpdbg /usr/bin/phpdbg8.3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Astuce de vrai barbu :&lt;/strong&gt; La valeur numérique est juste une préférence, pas une garantie. Utilisez des nombres significativement différents si vous ne voulez pas être surpris. J'ai déjà vu des administrateurs utiliser 10 et 11, puis se plaindre que leur choix n'était pas respecté - niveau amateur.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="523-le-coup-du-hook-post-installation-ou-comment-avoir-le-dernier-mot"&gt;&lt;a href="#523-le-coup-du-hook-post-installation-ou-comment-avoir-le-dernier-mot" class="header-anchor"&gt;&lt;/a&gt;5.2.3 Le coup du hook post-installation (ou comment avoir le dernier mot)
&lt;/h4&gt;&lt;p&gt;Quand vous en avez assez que Debian ignore vos préférences, créez un hook qui aura le dernier mot après chaque mise à jour :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo vi /etc/apt/apt.conf.d/99post-upgrade-hook
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ajoutez ce code vindicatif dans le fichier :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-aptconf" data-lang="aptconf"&gt;DPkg::Post-Invoke {
 &amp;#34;if [ -f /usr/bin/php8.2 ] &amp;amp;&amp;amp; [ -f /usr/bin/php8.3 ]; then update-alternatives --set php /usr/bin/php8.2; fi&amp;#34;;
};
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Pourquoi c'est brillant&lt;/strong&gt; : Cette approche passive-agressive rétablit votre version préférée après CHAQUE opération APT, même si un paquet tente sournoisement de changer la version par défaut. C'est l'équivalent de dire &amp;quot;Merci pour ton opinion, maintenant on va faire à ma façon quand même&amp;quot;.&lt;/p&gt;
&lt;h4 id="524-mettre-un-gilet-pare-balles-contre-les-versions-majeures"&gt;&lt;a href="#524-mettre-un-gilet-pare-balles-contre-les-versions-majeures" class="header-anchor"&gt;&lt;/a&gt;5.2.4 Mettre un gilet pare-balles contre les versions majeures
&lt;/h4&gt;&lt;p&gt;Ajoutez à &lt;code&gt;/etc/apt/apt.conf.d/50unattended-upgrades&lt;/code&gt; ce code défensif :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-aptconf" data-lang="aptconf"&gt;Unattended-Upgrade::MinimalSteps &amp;#34;true&amp;#34;;
Unattended-Upgrade::Allow-downgrade &amp;#34;false&amp;#34;;
Unattended-Upgrade::Allow-APT-Mark-Fallback &amp;#34;false&amp;#34;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Décryptage des incantations de protection :&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Ce qu'elle fait vraiment&lt;/th&gt;
&lt;th&gt;Traduction en langage barbu&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MinimalSteps&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Change en mode &amp;quot;un paquet à la fois&amp;quot;&lt;/td&gt;
&lt;td&gt;&amp;quot;Je préfère que mon système plante sur UN paquet plutôt que sur TOUS&amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Allow-downgrade&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Empêche les retours en arrière&lt;/td&gt;
&lt;td&gt;&amp;quot;Non, on ne revient pas à PHP 5 juste parce que tu as peur du changement&amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Allow-APT-Mark-Fallback&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Désactive l'auto-sélection de nouvelles versions&lt;/td&gt;
&lt;td&gt;&amp;quot;Touche pas à mes versions majeures, animal ! &amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="525-la-liste-noire-de-la-honte-ou-comment-bannir-les-paquets-problématiques"&gt;&lt;a href="#525-la-liste-noire-de-la-honte-ou-comment-bannir-les-paquets-probl%c3%a9matiques" class="header-anchor"&gt;&lt;/a&gt;5.2.5 La liste noire de la honte (ou comment bannir les paquets problématiques)
&lt;/h4&gt;&lt;p&gt;Placez vos paquets critiques sur la liste des indésirables avec cette configuration :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-aptconf" data-lang="aptconf"&gt;Unattended-Upgrade::Blacklist {
 &amp;#34;php*&amp;#34;;
 &amp;#34;mariadb-server&amp;#34;;
 &amp;#34;postgresql*&amp;#34;;
 &amp;#34;nginx&amp;#34;;
 &amp;#34;apache2&amp;#34;;
};
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="53-le-plan-de-bataille-pour-les-vrais-professionnels"&gt;&lt;a href="#53-le-plan-de-bataille-pour-les-vrais-professionnels" class="header-anchor"&gt;&lt;/a&gt;5.3 Le plan de bataille pour les vrais professionnels
&lt;/h3&gt;&lt;p&gt;📌 &lt;strong&gt;Stratégie de survie en environnement de production&lt;/strong&gt; :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Bloquez les versions majeures&lt;/strong&gt; avec la configuration 5.2.4, à moins que vous n'aimiez les appels nocturnes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Blacklistez impitoyablement&lt;/strong&gt; tout ce qui fait tourner votre business avec l'option 5.2.5&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Construisez un environnement de test&lt;/strong&gt; identique - les vrais barbus testent AVANT, pas en production&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Planifiez vos mises à jour majeures&lt;/strong&gt; comme des opérations militaires, avec des plans de repli&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Faites des backups complets&lt;/strong&gt; avant toute mise à jour majeure, ou préparez votre CV&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Alerte rouge&lt;/strong&gt; : Les mises à jour majeures automatiques sur des composants critiques, c'est comme jouer à la roulette russe avec le serveur de production - vous pourriez vous en sortir, mais est-ce vraiment un risque que vous voulez prendre ? Pour tout ce qui fait tourner votre business (PHP, bases de données, serveurs web), planifiez, testez, puis priez avant de mettre à jour.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="6-entrer-dans-la-matrice--surveillance-et-déblocage-des-catastrophes-nocturnes"&gt;&lt;a href="#6-entrer-dans-la-matrice--surveillance-et-d%c3%a9blocage-des-catastrophes-nocturnes" class="header-anchor"&gt;&lt;/a&gt;6. Entrer dans la matrice : surveillance et déblocage des catastrophes nocturnes
&lt;/h2&gt;&lt;h3 id="61-les-logs-que-personne-ne-lit-jamais-jusquà-ce-que-tout-explose"&gt;&lt;a href="#61-les-logs-que-personne-ne-lit-jamais-jusqu%c3%a0-ce-que-tout-explose" class="header-anchor"&gt;&lt;/a&gt;6.1 Les logs que personne ne lit jamais (jusqu&amp;rsquo;à ce que tout explose)
&lt;/h3&gt;&lt;p&gt;Même avec l'automatisation, il faut surveiller ce que fait cette bête sauvage qu'est unattended-upgrades. Sinon, c'est comme laisser votre adolescent seul à la maison pendant le week-end - tôt ou tard, vous le regretterez. Voici les fichiers que vous prétendrez consulter régulièrement :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Fichier log&lt;/th&gt;
&lt;th&gt;Ce qu'il contient réellement&lt;/th&gt;
&lt;th&gt;Quand le lire (soyons honnêtes)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/var/log/unattended-upgrades/unattended-upgrades.log&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Le journal de bord du capitaine automatique&lt;/td&gt;
&lt;td&gt;Quand votre patron demande &amp;quot;que s'est-il passé ?&amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/var/log/unattended-upgrades/unattended-upgrades-dpkg.log&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ce que dpkg marmonne dans sa barbe&lt;/td&gt;
&lt;td&gt;Quand le premier log ne vous dit pas pourquoi tout a explosé&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/var/log/apt/history.log&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;La preuve que quelqu'un a fait quelque chose&lt;/td&gt;
&lt;td&gt;Pour savoir QUI blâmer (spoiler : c'est toujours systemd)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/var/log/apt/term.log&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Les mêmes informations qu'avant, mais en plus verbeux&lt;/td&gt;
&lt;td&gt;Pour les masochistes qui aiment lire 5000 lignes de texte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/var/log/dpkg.log&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Chaque respiration de dpkg&lt;/td&gt;
&lt;td&gt;Pour les vrais barbus qui lisent les logs comme d'autres lisent Game of Thrones&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Les logs sont automagiquement comprimés et rotatés (&lt;code&gt;.1&lt;/code&gt;, &lt;code&gt;.2.gz&lt;/code&gt;, etc.). Voici comment faire semblant de les surveiller régulièrement :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo tail -n &lt;span style="color:#ae81ff"&gt;20&lt;/span&gt; /var/log/unattended-upgrades/unattended-upgrades.log
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo grep -i &lt;span style="color:#e6db74"&gt;&amp;#34;error\|fail\|warning&amp;#34;&lt;/span&gt; /var/log/unattended-upgrades/unattended-upgrades.log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="62-déclencher-manuellement-les-mises-à-jour-pour-le-plaisir-de-voir-quelque-chose-se-casser-en-temps-réel"&gt;&lt;a href="#62-d%c3%a9clencher-manuellement-les-mises-%c3%a0-jour-pour-le-plaisir-de-voir-quelque-chose-se-casser-en-temps-r%c3%a9el" class="header-anchor"&gt;&lt;/a&gt;6.2 Déclencher manuellement les mises à jour (pour le plaisir de voir quelque chose se casser en temps réel)
&lt;/h3&gt;&lt;p&gt;Pour voir unattended-upgrades en action, comme si vous regardiez un documentaire animalier sur un prédateur dans son habitat naturel :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo unattended-upgrade --dry-run --debug
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo unattended-upgrade --debug
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo unattended-upgrade -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🧪 Preuve d'expertise technique&lt;/strong&gt; : Utilisez &lt;code&gt;--dry-run&lt;/code&gt; lors des démos pour vos collègues. Si ça fonctionne, prenez un air suffisant. Si ça plante, dites nonchalamment : &amp;quot;C'est exactement pourquoi j'utilise dry-run, voyez-vous&amp;quot;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="63-techniques-de-réanimation-pour-système-bloqué-ou-comment-sauver-votre-journée"&gt;&lt;a href="#63-techniques-de-r%c3%a9animation-pour-syst%c3%a8me-bloqu%c3%a9-ou-comment-sauver-votre-journ%c3%a9e" class="header-anchor"&gt;&lt;/a&gt;6.3 Techniques de réanimation pour système bloqué (ou comment sauver votre journée)
&lt;/h3&gt;&lt;p&gt;Quand votre système de mise à jour automatique s'arrête en position fœtale, voici la trousse d'urgence du barbu :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo dpkg --audit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo dpkg --configure --pending
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt-get -f install
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt-mark showhold
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Si votre système est bloqué par une question existentielle comme &amp;quot;Voulez-vous que PHP 8.3 devienne le nouveau PHP par défaut ?&amp;quot;, il est temps d'intervenir manuellement (comme arracher la manette des mains d'un enfant) :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo dpkg --configure -a
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo dpkg-reconfigure php8.3-common
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Libérez votre swap !</title><link>https://beta.slash-root.fr/liberez-votre-swap/</link><pubDate>Sun, 01 Dec 2024 06:09:15 +0100</pubDate><guid>https://beta.slash-root.fr/liberez-votre-swap/</guid><description>&lt;img src="https://beta.slash-root.fr/liberez-votre-swap/cover.png" alt="Featured image of post Libérez votre swap !" /&gt;&lt;h2 id="préambule"&gt;&lt;a href="#pr%c3%a9ambule" class="header-anchor"&gt;&lt;/a&gt;Préambule
&lt;/h2&gt;&lt;p&gt;Envie de libérer Britney ? Ou plutôt... votre swap ? 🎵&lt;/p&gt;
&lt;p&gt;Si vous cherchez à optimiser l'utilisation de votre mémoire virtuelle sur une machine Debian, vous êtes au bon endroit !&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id="le-swappiness-cest-quoi-"&gt;&lt;a href="#le-swappiness-cest-quoi-" class="header-anchor"&gt;&lt;/a&gt;Le &lt;code&gt;swappiness&lt;/code&gt;, c&amp;rsquo;est quoi ?
&lt;/h3&gt;&lt;p&gt;Le &lt;code&gt;swappiness&lt;/code&gt; est un paramètre du kernel Linux qui contrôle la &amp;quot;proportion&amp;quot; du système à utiliser le swap. Une valeur faible favorise l'utilisation de la RAM, tandis qu'une valeur élevée incite à swapper rapidement sur le disque.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id="quelques-commandes-essentielles"&gt;&lt;a href="#quelques-commandes-essentielles" class="header-anchor"&gt;&lt;/a&gt;Quelques commandes essentielles
&lt;/h2&gt;&lt;h3 id="1-vérifier-la-valeur-actuelle-du-swappiness"&gt;&lt;a href="#1-v%c3%a9rifier-la-valeur-actuelle-du-swappiness" class="header-anchor"&gt;&lt;/a&gt;1. Vérifier la valeur actuelle du &lt;code&gt;swappiness&lt;/code&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat /proc/sys/vm/swappiness
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-modifier-dynamiquement-le-swappiness"&gt;&lt;a href="#2-modifier-dynamiquement-le-swappiness" class="header-anchor"&gt;&lt;/a&gt;2. Modifier dynamiquement le &lt;code&gt;swappiness&lt;/code&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo sysctl vm.swappiness&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;⚠️ Cette modification n'est pas persistante et sera perdue au redémarrage.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="3-rendre-la-configuration-persistante"&gt;&lt;a href="#3-rendre-la-configuration-persistante" class="header-anchor"&gt;&lt;/a&gt;3. Rendre la configuration persistante
&lt;/h3&gt;&lt;p&gt;Ajoutez ou modifiez la ligne suivante dans &lt;code&gt;/etc/sysctl.conf&lt;/code&gt; :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;vm.swappiness&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Appliquez ensuite la configuration :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo sysctl -p
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="4-comprendre-les-valeurs-du-swappiness"&gt;&lt;a href="#4-comprendre-les-valeurs-du-swappiness" class="header-anchor"&gt;&lt;/a&gt;4. Comprendre les valeurs du &lt;code&gt;swappiness&lt;/code&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;100&lt;/strong&gt; : Le système swap intensément.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0&lt;/strong&gt; : Swap uniquement en cas de RAM complètement saturée.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Défaut&lt;/strong&gt; : Généralement &lt;strong&gt;60&lt;/strong&gt; sur Debian.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="5-désactiver-et-réactiver-le-swap"&gt;&lt;a href="#5-d%c3%a9sactiver-et-r%c3%a9activer-le-swap" class="header-anchor"&gt;&lt;/a&gt;5. Désactiver et réactiver le swap
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo swapoff -a &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo swapon -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;⚠️ Assurez-vous que la RAM disponible est suffisante pour accueillir les données du swap avant de désactiver ce dernier.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="6-identifier-les-processus-utilisant-le-swap"&gt;&lt;a href="#6-identifier-les-processus-utilisant-le-swap" class="header-anchor"&gt;&lt;/a&gt;6. Identifier les processus utilisant le swap
&lt;/h3&gt;&lt;p&gt;Pour examiner les processus gourmands en swap, utilisez cette commande :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; file in /proc/*/status ; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; awk &lt;span style="color:#e6db74"&gt;&amp;#39;/VmSwap|Name/{printf $2 &amp;#34; &amp;#34; $3}END{ print &amp;#34;&amp;#34;}&amp;#39;&lt;/span&gt; $file; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;done&lt;/span&gt; | &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sort -k &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; -n -r | less
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr /&gt;
&lt;h2 id="automatisation-avec-un-script-bash"&gt;&lt;a href="#automatisation-avec-un-script-bash" class="header-anchor"&gt;&lt;/a&gt;Automatisation avec un script Bash
&lt;/h2&gt;&lt;p&gt;Pour simplifier la gestion du swap, voici un script bash prêt à l'emploi :&lt;/p&gt;
&lt;h3 id="script--free-swapsh"&gt;&lt;a href="#script--free-swapsh" class="header-anchor"&gt;&lt;/a&gt;Script : &lt;code&gt;free-swap.sh&lt;/code&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;check_command&lt;span style="color:#f92672"&gt;()&lt;/span&gt; &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#f92672"&gt;[[&lt;/span&gt; $? -ne &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;]]&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;Erreur lors de l&amp;#39;exécution de la commande: &lt;/span&gt;$1&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; exit &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;free_data&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;free&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;check_command &lt;span style="color:#e6db74"&gt;&amp;#34;free&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mem_data&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$free_data&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; | grep &lt;span style="color:#e6db74"&gt;&amp;#39;Mem:&amp;#39;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;free_mem&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$mem_data&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; | awk &lt;span style="color:#e6db74"&gt;&amp;#39;{print $4}&amp;#39;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;buffers&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$mem_data&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; | awk &lt;span style="color:#e6db74"&gt;&amp;#39;{print $6}&amp;#39;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cache&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$mem_data&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; | awk &lt;span style="color:#e6db74"&gt;&amp;#39;{print $7}&amp;#39;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;total_free&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$((&lt;/span&gt;free_mem &lt;span style="color:#f92672"&gt;+&lt;/span&gt; buffers &lt;span style="color:#f92672"&gt;+&lt;/span&gt; cache&lt;span style="color:#66d9ef"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$free_data&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; | grep -q &lt;span style="color:#e6db74"&gt;&amp;#39;Échange:&amp;#39;&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; used_swap&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$free_data&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; | grep &lt;span style="color:#e6db74"&gt;&amp;#39;Échange:&amp;#39;&lt;/span&gt; | awk &lt;span style="color:#e6db74"&gt;&amp;#39;{print $3}&amp;#39;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; used_swap&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$free_data&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; | grep &lt;span style="color:#e6db74"&gt;&amp;#39;Swap:&amp;#39;&lt;/span&gt; | awk &lt;span style="color:#e6db74"&gt;&amp;#39;{print $3}&amp;#39;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo -e &lt;span style="color:#e6db74"&gt;&amp;#34;Free memory:\t&lt;/span&gt;$total_free&lt;span style="color:#e6db74"&gt; kB (&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$((&lt;/span&gt;total_free &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1024&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;))&lt;/span&gt;&lt;span style="color:#e6db74"&gt; MB)\nUsed swap:\t&lt;/span&gt;$used_swap&lt;span style="color:#e6db74"&gt; kB (&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$((&lt;/span&gt;used_swap &lt;span style="color:#f92672"&gt;/&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1024&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;))&lt;/span&gt;&lt;span style="color:#e6db74"&gt; MB)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#f92672"&gt;[[&lt;/span&gt; $used_swap -eq &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#f92672"&gt;]]&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;Félicitations ! Aucun swap n&amp;#39;est utilisé.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;elif&lt;/span&gt; &lt;span style="color:#f92672"&gt;[[&lt;/span&gt; $used_swap -lt $total_free &lt;span style="color:#f92672"&gt;]]&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;Libération du swap...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sudo swapoff -a
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; check_command &lt;span style="color:#e6db74"&gt;&amp;#34;swapoff&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sudo swapon -a
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; check_command &lt;span style="color:#e6db74"&gt;&amp;#34;swapon&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;Pas assez de mémoire libre pour libérer le swap. Arrêt.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; exit &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="instructions-"&gt;&lt;a href="#instructions-" class="header-anchor"&gt;&lt;/a&gt;Instructions :
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Enregistrez le script dans un fichier, par exemple : &lt;code&gt;free-swap.sh&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Rendez-le exécutable :&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chmod u+x free-swap.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;Exécutez-le :&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./free-swap.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;⚠️ Ne pas utiliser ce script si &lt;strong&gt;ZRAM&lt;/strong&gt; est activé sur votre système, car cela pourrait entraîner des comportements inattendus.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2 id="conclusion"&gt;&lt;a href="#conclusion" class="header-anchor"&gt;&lt;/a&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;Vous venez de découvrir comment optimiser la gestion du swap sous Debian. Que ce soit via des commandes ou un script Bash, vous êtes désormais armé pour reprendre le contrôle de votre mémoire virtuelle.&lt;/p&gt;
&lt;p&gt;Et surtout, souvenez-vous : le swap, c'est bien... mais la RAM, c'est mieux ! 😉&lt;/p&gt;</description></item><item><title>Restic ou l’Importance des Sauvegardes de Données</title><link>https://beta.slash-root.fr/restic-ou-limportance-des-sauvegardes-de-donnees/</link><pubDate>Mon, 11 Nov 2024 13:55:45 +0100</pubDate><guid>https://beta.slash-root.fr/restic-ou-limportance-des-sauvegardes-de-donnees/</guid><description>&lt;img src="https://beta.slash-root.fr/restic-ou-limportance-des-sauvegardes-de-donnees/cover.png" alt="Featured image of post Restic ou l’Importance des Sauvegardes de Données" /&gt;&lt;p&gt;Dans un monde où les pertes de données peuvent avoir des conséquences catastrophiques, que ce soit pour des entreprises, des gouvernements, ou des individus, il devient impératif de prendre des mesures pour sécuriser ses informations. Une perte de données peut entraîner des interruptions de services, voire des pertes financières importantes.&lt;/p&gt;
&lt;p&gt;Face à cette réalité, la mise en place d’une stratégie de sauvegarde robuste devient essentielle. Dans cet article, nous allons explorer une solution pratique et accessible à tous : Restic. Cet outil, à la fois rapide, fiable et facile à configurer, permet de créer des sauvegardes cryptées et décentralisées, tout en offrant la possibilité de gérer facilement les anciennes versions de fichiers et d'automatiser le processus.&lt;/p&gt;
&lt;p&gt;Voyons maintenant comment mettre en place un script de sauvegarde avec Restic, en tenant compte de quelques bonnes pratiques essentielles pour une gestion sécurisée et automatisée des données.&lt;/p&gt;
&lt;p&gt;Je commence par définir les variables essentielles de son script, qui permettront de personnaliser la sauvegarde en fonction de mes besoins spécifiques.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export RESTIC_PASSWORD&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;ZZZZZZZZZZZZ&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export RESTIC_REPO&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;/mnt/restic&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export BACKUP_TARGET&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;.&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export BACKUP_SOURCE&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;/mnt/shared/nas&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NUM_KEEP_SNAPSHOTS&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;15&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;RESTIC_PASSWORD&lt;/strong&gt; : Cette variable contient le mot de passe nécessaire à l'accès au dépôt Restic. Ce mot de passe est utilisé pour chiffrer et déchiffrer les données sauvegardées.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RESTIC_REPO&lt;/strong&gt; : Le répertoire où les sauvegardes seront stockées. Cela peut être un stockage local ou distant (par exemple, un serveur S3 ou un serveur FTP).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BACKUP_TARGET&lt;/strong&gt; : La destination de la sauvegarde.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BACKUP_SOURCE&lt;/strong&gt; : La source des fichiers à sauvegarder, ici /mnt/shared/nas, qui est un répertoire contenant des fichiers critiques.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NUM_KEEP_SNAPSHOTS&lt;/strong&gt; : Le nombre de sauvegardes à conserver. Ce paramètre est essentiel pour éviter l'accumulation excessive de données, ce qui pourrait entraîner un encombrement du système.&lt;/p&gt;
&lt;p&gt;L'une des premières étapes de mon script consiste à sauvegarder les bases de données. Étant donné que les bases de données peuvent contenir des informations sensibles et cruciales, il est primordial de m'assurer qu'elles sont bien incluses dans mes sauvegardes.&lt;/p&gt;
&lt;p&gt;Cependant, je sais que mes bases de données ne sont enrichies que les jours de semaine, c'est-à-dire du lundi au vendredi. Il n'a donc pas de sens de créer un dump de la base de données pendant le week-end, lorsque les données ne sont pas mises à jour. C'est pourquoi j'ai décidé de ne créer un dump de la base de données que durant les jours ouvrés, afin d'éviter une sauvegarde inutile et de préserver des ressources.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DB_HOST&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;localhost&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DB_PORT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;5432&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DB_USER&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;estx50&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DB_DUMP_PATH&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;/mnt/shared/nas/Trading/all_databases_backup.sql&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export PGPASSWORD&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;XXXXXXXXXXXXXX&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DAY_OF_WEEK&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date +%u&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#f92672"&gt;[[&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$DAY_OF_WEEK&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; -ge &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$DAY_OF_WEEK&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; -le &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt; &lt;span style="color:#f92672"&gt;]]&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;Jour de semaine - Création du dump de la base de données.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; pg_dumpall -h &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$DB_HOST&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; -p &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$DB_PORT&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; -U &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$DB_USER&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &amp;gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$DB_DUMP_PATH&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; exit &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;Aujourd&amp;#39;hui est le week-end, aucun dump de la base de données ne sera créé.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sleep &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Une fois la base de données sauvegardée, je me tourne vers la sauvegarde de mes fichiers. Restic permet de sauvegarder facilement des répertoires et d'exclure certains fichiers ou dossiers.&lt;/p&gt;
&lt;p&gt;J'ai décidé d'exclure certains répertoires spécifiques, comme récupération_Oscar et Trading/data, car ils contiennent des données que je ne souhaite pas inclure dans la sauvegarde, parce qu'elles ne sont pas pertinentes pour mes besoins de sauvegarde.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$BACKUP_SOURCE&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; restic -r &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$RESTIC_REPO&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; backup --exclude &lt;span style="color:#e6db74"&gt;&amp;#34;/mnt/shared/nas/récupération_Oscar&amp;#34;&lt;/span&gt; --exclude &lt;span style="color:#e6db74"&gt;&amp;#34;/mnt/shared/nas/Trading/data&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$BACKUP_TARGET&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; --skip-if-unchanged &lt;span style="color:#f92672"&gt;||&lt;/span&gt; exit &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Remarque importante&lt;br /&gt;
&lt;strong&gt;Vous noterez que les exclude requièrent le chemin absolu.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;skip-if-unchanged&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;Cette option permet à Restic de vérifier si les fichiers ont changé avant de créer un nouveau snapshot. Si un fichier n'a pas été modifié depuis la dernière sauvegarde, Restic évite de le sauvegarder à nouveau. Cela permet de réduire le volume des données sauvegardées et d'économiser de l'espace disque.&lt;/p&gt;
&lt;p&gt;Une fois les sauvegardes effectuées, je dois gérer les anciens snapshots pour éviter que mon dépôt de sauvegarde ne devienne trop encombré. Pour cela, j'utilise la commande forget, qui permet de supprimer les snapshots anciens et inutiles. J'ai choisi de conserver un nombre limité de snapshots récents — ici, 15 — afin de m'assurer que je dispose toujours d'un historique suffisant, sans accumuler trop de données obsolètes.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;restic -r &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$RESTIC_REPO&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; forget --keep-last &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$NUM_KEEP_SNAPSHOTS&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; --keep-tag preserve --prune &lt;span style="color:#f92672"&gt;||&lt;/span&gt; exit &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;--keep-last $NUM_KEEP_SNAPSHOTS&lt;/code&gt; : Cette option permet de définir le nombre de snapshots récents à conserver. Par exemple, si vous gardez 15 snapshots, seuls les 15 derniers seront conservés.&lt;/p&gt;
&lt;p&gt;J'utilise également l'option &lt;code&gt;--prune&lt;/code&gt; pour nettoyer les points de sauvegarde qui ne sont plus nécessaires, ce qui permet de récupérer de l'espace disque et de garder le dépôt de sauvegarde bien organisé.&lt;/p&gt;
&lt;p&gt;Enfin dernier point à noter : j'ai utilisé l'option &lt;code&gt;--keep-tag preserve&lt;/code&gt; dans ma commande de nettoyage. En effet, il y a un point de sauvegarde que je ne veux en aucun cas voir supprimé lors des nettoyages. Pour cela, j'ai préalablement tagué ce snapshot avec la commande &lt;code&gt;restic tag&lt;/code&gt;, ce qui me permet de l'identifier spécifiquement.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;restic -r &lt;span style="color:#f92672"&gt;[&lt;/span&gt;RESTIC_REPO&lt;span style="color:#f92672"&gt;]&lt;/span&gt; tag &lt;span style="color:#f92672"&gt;[&lt;/span&gt;ID_SNAPSHOT&lt;span style="color:#f92672"&gt;]&lt;/span&gt; preserve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La commande restic tag permet d'ajouter un tag personnalisé à un snapshot (dans mon cas je l'ai apppelé preserve), ce qui peut être très utile pour marquer des sauvegardes importantes ou spécifiques. Ainsi, le snapshot marqué avec le tag &lt;code&gt;preserve&lt;/code&gt; restera dans le dépôt, grâce à &lt;code&gt;--keep-tag preserve&lt;/code&gt; même lorsque je lance le nettoyage avec l'option &lt;code&gt;--prune&lt;/code&gt;, qui supprimera tout autre snapshot plus ancien.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt; : Un Outil de Sauvegarde Puissant&lt;/p&gt;
&lt;p&gt;En appliquant ces pratiques, j'ai réussi à mettre en place une solution de sauvegarde fiable, efficace et parfaitement adaptée à mes besoins. L'automatisation de la sauvegarde de mes fichiers et bases de données, combinée à une gestion rigoureuse des anciens snapshots, me permet de garantir une protection optimale de mes données.&lt;/p&gt;
&lt;p&gt;Dans le prochain épisode, je me pencherai sur l'utilisation de Restic pour stocker mes sauvegardes sur un espace S3 Amazon. Ce choix m'offrira encore plus de sécurité et de flexibilité pour mes sauvegardes, tout en ajoutant une couche de fiabilité supplémentaire.&lt;/p&gt;</description></item><item><title>Proxmox : Template Debian12 avec Cloud-Init</title><link>https://beta.slash-root.fr/proxmox-template-debian12-avec-cloud-init/</link><pubDate>Thu, 09 Nov 2023 14:23:19 +0100</pubDate><guid>https://beta.slash-root.fr/proxmox-template-debian12-avec-cloud-init/</guid><description>&lt;img src="https://beta.slash-root.fr/proxmox-template-debian12-avec-cloud-init/cover.png" alt="Featured image of post Proxmox : Template Debian12 avec Cloud-Init" /&gt;&lt;p&gt;Cette procédure va permettre de créer un template de VM Debian 12 pour Proxmox avec Cloud-Init.&lt;/p&gt;
&lt;p&gt;L'intérêt sera de cloner ce template, puis de pouvoir se connecter directement en ssh au 1er démarrage de la VM. Le nom d'hôte, l'adressage ip, la(es) clef(s) ssh seront configurés à l'initialisation de la VM grâce à cloud-init.&lt;/p&gt;
&lt;p&gt;Ce template pourra éventuellement être utilisé par la suite avec une solution telle que Terraform / OpenTofu.&lt;/p&gt;
&lt;h2 id="création-du-template"&gt;&lt;a href="#cr%c3%a9ation-du-template" class="header-anchor"&gt;&lt;/a&gt;Création du template
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Se connecter sur un shell &lt;code&gt;root&lt;/code&gt; de l'hôte Proxmox &lt;code&gt;pvehost&lt;/code&gt; :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh root@pvehost
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Télécharger la dernière image cloud de Debian 12 :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Installer &lt;code&gt;libguestfs-tools&lt;/code&gt; si nécessaire et ajouter &lt;code&gt;qemu-guest-agent&lt;/code&gt; à l'image cloud précédemment téléchargée :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt install -y libguestfs-tools
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;virt-customize -a debian-12-generic-amd64.qcow2 --install qemu-guest-agent
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Créer une VM avec l'ID 666 qui sera le template :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;qm create &lt;span style="color:#ae81ff"&gt;666&lt;/span&gt; --name debian12-cloudinit --net0 virtio,bridge&lt;span style="color:#f92672"&gt;=&lt;/span&gt;vmbr1 --scsihw virtio-scsi-single
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Elle sera nommée &lt;code&gt;debian12-cloudinit&lt;/code&gt; et la 1ère carte réseau sera rattachée au &lt;code&gt;vmbr1&lt;/code&gt; du serveur Proxmox.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ajouter un nouveau disque dur, importé depuis l'image cloud, de 20 G à la VM :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;qm set &lt;span style="color:#ae81ff"&gt;666&lt;/span&gt; --scsi0 local:0,iothread&lt;span style="color:#f92672"&gt;=&lt;/span&gt;1,backup&lt;span style="color:#f92672"&gt;=&lt;/span&gt;off,format&lt;span style="color:#f92672"&gt;=&lt;/span&gt;qcow2,import-from&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/root/debian-12-generic-amd64.qcow2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;qm disk resize &lt;span style="color:#ae81ff"&gt;666&lt;/span&gt; scsi0 20G
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Définir le disque dur en 1er boot sur la VM :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;qm set &lt;span style="color:#ae81ff"&gt;666&lt;/span&gt; --boot order&lt;span style="color:#f92672"&gt;=&lt;/span&gt;scsi0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Définir le nombre de coeurs et la mémoire RAM de la VM :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;qm set &lt;span style="color:#ae81ff"&gt;666&lt;/span&gt; --cpu host --cores &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; --memory &lt;span style="color:#ae81ff"&gt;4096&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Attacher un disque Cloud-Init à la VM :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;qm set &lt;span style="color:#ae81ff"&gt;666&lt;/span&gt; --ide2 local:cloudinit
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;qm set &lt;span style="color:#ae81ff"&gt;666&lt;/span&gt; --agent enabled&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Ajuster les paramètres dans les options &lt;code&gt;Cloud-Init&lt;/code&gt; qui figureront dans le template (si nécessaire) :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="01-cloudinit.png" alt="cloudinit" /&gt;&lt;/p&gt;
&lt;p&gt;Ces options sont disponibles dans la WebUI du serveur Proxmox au niveau de la VM.&lt;/p&gt;
&lt;p&gt;Plus de détails ici &lt;a href="https://pve.proxmox.com/wiki/Cloud-Init_Support"&gt;https://pve.proxmox.com/wiki/Cloud-Init_Support&lt;/a&gt; sur les différents paramétrages.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Convertir la VM en template :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;qm template &lt;span style="color:#ae81ff"&gt;666&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="utilisation-du-template"&gt;&lt;a href="#utilisation-du-template" class="header-anchor"&gt;&lt;/a&gt;Utilisation du template
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Cloner entièrement le template en VM.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="02-clone.png" alt="clone" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ajuster les paramètres &lt;code&gt;Cloud-Init&lt;/code&gt; de la VM si nécessaire.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Démarrer la VM et récupérer l'IP (si nécessaire) :&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="03-ip.png" alt="ip" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Se connecter en SSH sur la VM avec la clef ssh renseignée dans cloud-init :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;julien@mypc:~$ ssh -i .ssh/demo admin@172.16.20.15
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Are you sure you want to &lt;span style="color:#66d9ef"&gt;continue&lt;/span&gt; connecting &lt;span style="color:#f92672"&gt;(&lt;/span&gt;yes/no/&lt;span style="color:#f92672"&gt;[&lt;/span&gt;fingerprint&lt;span style="color:#f92672"&gt;])&lt;/span&gt;? yes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Warning: Permanently added &lt;span style="color:#e6db74"&gt;&amp;#39;172.16.20.15&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;ED25519&lt;span style="color:#f92672"&gt;)&lt;/span&gt; to the list of known hosts.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Linux vm-deb12-01 6.1.0-13-amd64 &lt;span style="color:#75715e"&gt;#1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29) x86_64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;admin@vm-deb12-01:~$ sudo -l
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;User admin may run the following commands on vm-deb12-01:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;ALL : ALL&lt;span style="color:#f92672"&gt;)&lt;/span&gt; ALL
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;ALL&lt;span style="color:#f92672"&gt;)&lt;/span&gt; NOPASSWD: ALL
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Par défaut l'utilisateur définit par cloud-init appartient au groupe &lt;code&gt;sudo&lt;/code&gt; et peut exécuter absolument tout sans saisir son mot de passe.&lt;/p&gt;</description></item><item><title>Debian : Optimisez votre distribution avec Tuned</title><link>https://beta.slash-root.fr/debian-optimisez-votre-distribution-avec-tuned/</link><pubDate>Thu, 07 Sep 2023 00:56:00 +0200</pubDate><guid>https://beta.slash-root.fr/debian-optimisez-votre-distribution-avec-tuned/</guid><description>&lt;img src="https://beta.slash-root.fr/debian-optimisez-votre-distribution-avec-tuned/cover.png" alt="Featured image of post Debian : Optimisez votre distribution avec Tuned" /&gt;&lt;p&gt;Lorsque vous exécutez des applications exigeantes en termes de performances sur votre serveur Debian, il est essentiel de maximiser l'efficacité de votre matériel pour obtenir les meilleures performances possibles. L'utilitaire Tuned est un outil puissant qui vous permet de personnaliser les réglages du système en fonction de différents profils de performances, ce qui peut vous aider à optimiser votre serveur en fonction de vos besoins spécifiques.&lt;/p&gt;
&lt;h2 id="installation-de-tuned"&gt;&lt;a href="#installation-de-tuned" class="header-anchor"&gt;&lt;/a&gt;Installation de Tuned
&lt;/h2&gt;&lt;p&gt;Avant de commencer à utiliser Tuned, vous devez d'abord l'installer sur votre système Debian. Vous pouvez le faire en utilisant la commande suivante :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install tuned
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Une fois l'installation terminée, vous pouvez activer et configurer Tuned.&lt;/p&gt;
&lt;h2 id="service"&gt;&lt;a href="#service" class="header-anchor"&gt;&lt;/a&gt;Service
&lt;/h2&gt;&lt;p&gt;Tuned déploie son propre service. Pour en consulter son status, exécutez la commande suivante :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl status tuned.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Le service est activé par défaut :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;● tuned.service - Dynamic System Tuning Daemon
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Loaded: loaded &lt;span style="color:#f92672"&gt;(&lt;/span&gt;/lib/systemd/system/tuned.service; enabled; vendor preset: enabled&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Active: active &lt;span style="color:#f92672"&gt;(&lt;/span&gt;running&lt;span style="color:#f92672"&gt;)&lt;/span&gt; since Wed 2023-09-06 20:17:21 CEST; 8min ago
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Docs: man:tuned&lt;span style="color:#f92672"&gt;(&lt;/span&gt;8&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; man:tuned.conf&lt;span style="color:#f92672"&gt;(&lt;/span&gt;5&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; man:tuned-adm&lt;span style="color:#f92672"&gt;(&lt;/span&gt;8&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Main PID: &lt;span style="color:#ae81ff"&gt;12013&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;tuned&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Tasks: &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;limit: 2276&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Memory: 15.9M
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; CPU: 1.202s
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; CGroup: /system.slice/tuned.service
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └─12013 /usr/bin/python3 -Es /usr/sbin/tuned -l -P
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sept. &lt;span style="color:#ae81ff"&gt;06&lt;/span&gt; 20:17:21 debian systemd&lt;span style="color:#f92672"&gt;[&lt;/span&gt;1&lt;span style="color:#f92672"&gt;]&lt;/span&gt;: Starting Dynamic System Tuning Daemon...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sept. &lt;span style="color:#ae81ff"&gt;06&lt;/span&gt; 20:17:21 debian systemd&lt;span style="color:#f92672"&gt;[&lt;/span&gt;1&lt;span style="color:#f92672"&gt;]&lt;/span&gt;: Started Dynamic System Tuning Daemon.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="activation-de-tuned"&gt;&lt;a href="#activation-de-tuned" class="header-anchor"&gt;&lt;/a&gt;Activation de Tuned
&lt;/h2&gt;&lt;p&gt;Tuned est conçu pour fonctionner avec des profils de performances prédéfinis. Vous pouvez les afficher en exécutant la commande suivante :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo tuned-adm list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Les profils disponibles seront :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Available profiles:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- accelerator-performance - Throughput performance based tuning with disabled higher latency STOP states
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- atomic-guest - Optimize virtual guests based on the Atomic variant
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- atomic-host - Optimize bare metal systems running the Atomic variant
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- balanced - General non-specialized tuned profile
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- cpu-partitioning - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; CPU partitioning
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- default - Legacy default tuned profile
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- desktop - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; the desktop use-case
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- desktop-powersave - Optmize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; the desktop use-case with power saving
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- enterprise-storage - Legacy profile &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; RHEL6, &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; RHEL7, please use throughput-performance profile
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- hpc-compute - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; HPC compute workloads
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- intel-sst - Configure &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; Intel Speed Select Base Frequency
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- laptop-ac-powersave - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; laptop with power savings
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- laptop-battery-powersave - Optimize laptop profile with more aggressive power saving
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- latency-performance - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; deterministic performance at the cost of increased power consumption
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- mssql - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; MS SQL Server
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- network-latency - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; deterministic performance at the cost of increased power consumption, focused on low latency network performance
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- network-throughput - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; streaming network throughput, generally only necessary on older CPUs or 40G+ networks
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- optimize-serial-console - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; serial console use.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- oracle - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; Oracle RDBMS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- postgresql - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; PostgreSQL server
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- powersave - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; low power consumption
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- realtime - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; realtime workloads
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- realtime-virtual-guest - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; realtime workloads running within a KVM guest
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- realtime-virtual-host - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; KVM guests running realtime workloads
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- sap-hana - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; SAP HANA
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- sap-netweaver - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; SAP NetWeaver
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- server-powersave - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; server power savings
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- spectrumscale-ece - Optimized &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; Spectrum Scale Erasure Code Edition Servers
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- spindown-disk - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; power saving by spinning-down rotational disks
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- throughput-performance - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- virtual-guest - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; running inside a virtual guest
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- virtual-host - Optimize &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; running KVM guests
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vous pouvez ensuite activer le profil de performance de votre choix en utilisant la commande :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo tuned-adm profile &amp;lt;nom-du-profil&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Remplacez &lt;code&gt;&amp;lt;nom-du-profil&amp;gt;&lt;/code&gt; par le nom du profil que vous souhaitez utiliser. Par exemple, si vous souhaitez activer le profil &amp;quot;throughput-performance&amp;quot;, exécutez la commande suivante :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo tuned-adm profile throughput-performance
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vous pouvez obtenir le profil recommandé par l'application avec la commande suivante :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo tuned-adm recommend
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="configuration-personnalisée"&gt;&lt;a href="#configuration-personnalis%c3%a9e" class="header-anchor"&gt;&lt;/a&gt;Configuration personnalisée
&lt;/h2&gt;&lt;p&gt;Tuned permet également la création de profils de performance personnalisés. Pour ce faire, vous devez éditer le fichier de configuration de Tuned. Le fichier de configuration principal est situé dans le répertoire &lt;code&gt;/etc/tuned/&lt;/code&gt;. Par exemple, pour créer un profil personnalisé nommé &amp;quot;mon-profil&amp;quot;, vous pouvez créer un fichier de configuration &lt;code&gt;/etc/tuned/mon-profil/tuned.conf&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Voici un exemple de fichier de configuration Tuned pour un profil personnalisé :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[main]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;include&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;throughput-performance&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[cpu]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;governor&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;performance&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;[sysctl]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;vm.dirty_ratio&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ce fichier de configuration active d'abord le profil &amp;quot;throughput-performance&amp;quot; en utilisant l'instruction &lt;code&gt;include&lt;/code&gt;. Ensuite, il définit le gouverneur du CPU sur &amp;quot;performance&amp;quot; pour maximiser les performances du processeur. Enfin, il ajuste un paramètre de sysctl pour contrôler la gestion de la mémoire.&lt;/p&gt;
&lt;p&gt;Après avoir créé votre profil personnalisé, vous pouvez l'activer de la même manière que les profils prédéfinis à l'aide de &lt;code&gt;tuned-adm&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;&lt;a href="#conclusion" class="header-anchor"&gt;&lt;/a&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;L'utilitaire Tuned est un outil précieux pour optimiser les performances de votre serveur Debian en fonction de vos besoins spécifiques. En utilisant les profils prédéfinis ou en créant des profils personnalisés, vous pouvez tirer le meilleur parti de votre matériel tout en garantissant une utilisation efficace des ressources système.&lt;/p&gt;
&lt;p&gt;N'hésitez pas à explorer davantage les possibilités de Tuned et à l'adapter à vos besoins pour obtenir des performances optimales sur votre serveur Debian.&lt;/p&gt;</description></item><item><title>Network : Désactiver l’IPv6 sur Debian</title><link>https://beta.slash-root.fr/network-desactiver-lipv6-sur-debian/</link><pubDate>Fri, 03 Feb 2023 14:40:24 +0100</pubDate><guid>https://beta.slash-root.fr/network-desactiver-lipv6-sur-debian/</guid><description>&lt;img src="https://beta.slash-root.fr/network-desactiver-lipv6-sur-debian/cover.jpg" alt="Featured image of post Network : Désactiver l’IPv6 sur Debian" /&gt;&lt;h2 id="non-persistance"&gt;&lt;a href="#non-persistance" class="header-anchor"&gt;&lt;/a&gt;Non-Persistance
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sysctl -w net.ipv6.conf.all.disable_ipv6&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sysctl -w net.ipv6.conf.default.disable_ipv6&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sysctl -w net.ipv6.conf.lo.disable_ipv6&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sysctl -w net.ipv6.conf.all.autoconf&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sysctl -w net.ipv6.conf.default.autoconf&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr /&gt;
&lt;h2 id="persistance"&gt;&lt;a href="#persistance" class="header-anchor"&gt;&lt;/a&gt;Persistance
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Dans &lt;code&gt;/etc/sysctl.conf&lt;/code&gt; :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;net.ipv6.conf.all.disable_ipv6&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;net.ipv6.conf.default.disable_ipv6&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;net.ipv6.conf.lo.disable_ipv6&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;net.ipv6.conf.all.autoconf&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;net.ipv6.conf.default.autoconf&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Exécuter la commande suivante pour la prise en compte :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sysctl -p
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>