<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Docker Lab</title>
        <link>https://dockerlab.cloud.yannickinformatik.fr/post/</link>
        <description>Recent content on Docker Lab</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>fr</language>
        <lastBuildDate>Mon, 27 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://dockerlab.cloud.yannickinformatik.fr/post/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Installer Mosquitto</title>
            <link>https://dockerlab.cloud.yannickinformatik.fr/p/installer-mosquitto/</link>
            <pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate>
            <guid>https://dockerlab.cloud.yannickinformatik.fr/p/installer-mosquitto/</guid>
            <description>&lt;img src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installer-mosquitto/mos.png&#34; alt=&#34;Featured image of post Installer Mosquitto&#34; /&gt;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&#xA;&lt;/h2&gt;&lt;p&gt;MQTT (Message Queuing Telemetry Transport) est un protocole de messagerie pour la communication entre les périphériques IoT.&lt;/p&gt;&#xA;&lt;p&gt;Il est utilisé fréquemment en domotique pour centraliser et automatiser des périphériques hétérogènes.&lt;/p&gt;&#xA;&lt;p&gt;Il nous servira de base de communication pour des prochaines articles sur la Domotique et Docker.&#xA;&lt;br/&gt;&lt;br/&gt;&#xA;Pour cette installation j’utilise l’image qui est présente ici : &lt;a class=&#34;link&#34; href=&#34;https://github.com/eclipse-mosquitto/mosquitto&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Mosquitto&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;le-fichier-composeyaml&#34;&gt;Le fichier compose.yaml&#xA;&lt;/h2&gt;&lt;p&gt;Voici le fichier &lt;em&gt;compose.yaml&lt;/em&gt; à deposer dans le répertoire contenant vos piles (par exemple &lt;strong&gt;/opt/docker/projects/&lt;/strong&gt;) ou à coller dans votre interface de gestion (autre que Arcane).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;mosquitto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;eclipse-mosquitto&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;mosquitto&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;always&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/opt/docker/data/mosquitto/config:/mosquitto/config:rw&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/opt/docker/data/mosquitto/data:/mosquitto/data:rw&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/opt/docker/data/mosquitto/log:/mosquitto/log:rw&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;8102&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1883&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;#default mqtt port&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;8103&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;9001&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;#default mqtt port for websockets&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;PUID=1000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;PGID=1000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;TZ=Europe/Paris&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;networks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;mqtt_network&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;networks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;mqtt_network&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;external&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;mqtt_network&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vous devrez adapter ce fichier en personnalisant les parametres suivants :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;b&gt;ports&lt;/b&gt; : J&amp;rsquo;utilise des ports alternatif en entrée : 1802 et 1803.&lt;/li&gt;&#xA;&lt;li&gt;&lt;b&gt;networks&lt;/b&gt; : Je choisis le nom du réseau qui servira de lien à tous les autres images Docker relié au broker MQTT&lt;/li&gt;&#xA;&lt;li&gt;&lt;b&gt;PUID/GUID&lt;/b&gt; : A adapter à l&amp;rsquo;utilisateur de lancement de l&amp;rsquo;image Docker&lt;/li&gt;&#xA;&lt;li&gt;&lt;b&gt;volumes&lt;/b&gt; : la configuration doit être accessible depuis l&amp;rsquo;exterieur&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Je sauvegarde le fichier &lt;em&gt;compose.yaml&lt;/em&gt; sans créer pour le moment le container.&lt;/p&gt;&#xA;&lt;h2 id=&#34;creation-de-la-configuration&#34;&gt;Creation de la configuration&#xA;&lt;/h2&gt;&lt;p&gt;Il faut créer le fichier de configuration &lt;strong&gt;mosquitto.conf&lt;/strong&gt; dans votre répertoire de configuration.&lt;/p&gt;&#xA;&lt;p&gt;Si on se refaire au ficher compose, il se trouve dans mon exemple dans &amp;ldquo;&lt;strong&gt;/opt/docker/data/mosquitto/config&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;Si le répertoire n&amp;rsquo;existe pas ; créer le et copier le contenu suivant dans le fichier &lt;em&gt;mosquitto.conf&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;allow_anonymous &lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;listener &lt;span class=&#34;m&#34;&gt;8102&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;listener &lt;span class=&#34;m&#34;&gt;8103&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;protocol websockets&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;persistence &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;password_file /mosquitto/config/pwfile&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;persistence_file mosquitto.db&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;persistence_location /mosquitto/data&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;J&amp;rsquo;ai repris les même ports que ceux du fichier compose. Je choisis un accés sécuriser au broker via un nom d&amp;rsquo;utilisateur et un mot de passe.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Remarque&lt;/strong&gt; : Si vous ne souhaitez pas sécuriser les accès au broker, changer la variable &amp;ldquo;&lt;strong&gt;allow_anonymous&lt;/strong&gt;&amp;rdquo; à &amp;ldquo;&lt;strong&gt;true&lt;/strong&gt;&amp;rdquo;. Dans ce cas vous pourrez sauter tous ce qui suit et lancer simplement le container.&lt;/p&gt;&#xA;&lt;p&gt;Il reste maintenant à créer un fichier pwfile vide via la commande &lt;code&gt;touch opt/docker/data/mosquitto/config/pwfile&lt;/code&gt; (à adapter suivant votre fichier compose).&lt;/p&gt;&#xA;&lt;h2 id=&#34;lancement-container-et-création-utilisateur&#34;&gt;Lancement container et création utilisateur&#xA;&lt;/h2&gt;&lt;p&gt;On déploi l&amp;rsquo;image soit en ligne de commande : &lt;code&gt;sudo docker compose up -d&lt;/code&gt; ; soit via votre interface de gestion.&lt;/p&gt;&#xA;&lt;p&gt;Il faut maintenant créer un utilisateur, pour cela on lance un shell dans le container : &lt;code&gt;docker exec -it &amp;lt;nom_image&amp;gt; /bin/sh&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;On tape ensuite la commande suivante : &lt;code&gt;mosquitto_passwd -c /mosquitto/config/pwfile votre_utilisateur&lt;/code&gt; en remplacant &amp;ldquo;&lt;strong&gt;votre_utilisateur&lt;/strong&gt;&amp;rdquo; pour le nom d&amp;rsquo;utilisateur que vous souhaitez créer.&lt;/p&gt;&#xA;&lt;p&gt;Aprés avoir valider la commande ; il vous est demandé de rentrer un mot de passe pour cet utilisateur.&lt;/p&gt;&#xA;&lt;p&gt;C&amp;rsquo;est cet utilisateur et ce mot de passe qui vous sera nécessaire pour communiquer avec le broker MQTT.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Page de maintenance Web</title>
            <link>https://dockerlab.cloud.yannickinformatik.fr/p/page-de-maintenance-web/</link>
            <pubDate>Sun, 26 Jul 2026 00:00:00 +0000</pubDate>
            <guid>https://dockerlab.cloud.yannickinformatik.fr/p/page-de-maintenance-web/</guid>
            <description>&lt;img src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/page-de-maintenance-web/mnt.png&#34; alt=&#34;Featured image of post Page de maintenance Web&#34; /&gt;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&#xA;&lt;/h2&gt;&lt;p&gt;Parfois, il est necessaire d&amp;rsquo;arrêter certains services pour effectuer des travaux divers. Nous allons utiliser une image docker basique pour afficher une page de maintenance configurable dans un fichier compose.yaml.&lt;/p&gt;&#xA;&lt;p&gt;Il suffira dans NPM de rediriger votre domaine en maintenance vers cette page le temps de vos travaux.&lt;/p&gt;&#xA;&lt;p&gt;Pour cette installation j’utilise cette image qui est présente ici : &lt;a class=&#34;link&#34; href=&#34;https://github.com/wickerlabs/maintenance&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Simple maintenance page&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;le-fichier-composeyaml&#34;&gt;Le fichier compose.yaml&#xA;&lt;/h2&gt;&lt;p&gt;Voici le fichier &lt;em&gt;compose.yaml&lt;/em&gt; à deposer dans le répertoire contenant vos piles (par exemple &lt;strong&gt;/opt/docker/projects/&lt;/strong&gt;) ou à coller dans votre interface de gestion (autre que Arcane).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;maintenance&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;wickerlabs/maintenance&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;maintenance&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;HEADLINE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Maintenance serveur....&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;TEAM_NAME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Yannick Informatik&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;TITLE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Oops!&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;MAIL_ADDRESS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;contact@yannickinformatik.fr&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;LINK_COLOR&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;#dc8100&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;THEME&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Light&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;PORT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;RESPONSE_CODE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;503 Service Unavailable&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;MESSAGE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;16 Juillet 2026 - Travaux en cours : Changement d&amp;#39;architecture et de moteur de blog...&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;CONTACT_LINK&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;contact@yannickinformatik.fr&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;8100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vous devrez adapter ce fichier en personnalisant le message affiché et le code HHTP retourné par le serveur. Vous pouvez aussi ajuster le port d&amp;rsquo;entré (&lt;strong&gt;8100&lt;/strong&gt; chez moi pour éviter les conflits potentiels sur le port 8080).&lt;/p&gt;&#xA;&lt;h2 id=&#34;test-de-la-page-de-maintenance&#34;&gt;Test de la page de maintenance&#xA;&lt;/h2&gt;&lt;p&gt;Sélectionner l&amp;rsquo;hôte proxy à modifier sur NPM et faite le pointer vers le nouvel hôte sur le port 8100.&lt;/p&gt;&#xA;&lt;p&gt;Vous devriez tomber sur cette page :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Page de maintenance&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;562px&#34; data-flex-grow=&#34;234&#34; data-title-escaped=&#34;Page de maintenance&#34; height=&#34;353&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/page-de-maintenance-web/mnt_01.png&#34; srcset=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/page-de-maintenance-web/mnt_01_hu_ecbdb4ce9cbed2fa.png 800w, https://dockerlab.cloud.yannickinformatik.fr/p/page-de-maintenance-web/mnt_01.png 828w&#34; title=&#34;Page de maintenance&#34; width=&#34;828&#34;&gt;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Personnaliser ses logs avec Nginx Proxy Manager</title>
            <link>https://dockerlab.cloud.yannickinformatik.fr/p/personnaliser-ses-logs-avec-nginx-proxy-manager/</link>
            <pubDate>Sun, 26 Jul 2026 00:00:00 +0000</pubDate>
            <guid>https://dockerlab.cloud.yannickinformatik.fr/p/personnaliser-ses-logs-avec-nginx-proxy-manager/</guid>
            <description>&lt;img src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/personnaliser-ses-logs-avec-nginx-proxy-manager/npm_log.png&#34; alt=&#34;Featured image of post Personnaliser ses logs avec Nginx Proxy Manager&#34; /&gt;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&#xA;&lt;/h2&gt;&lt;p&gt;Bien que NPM utilise Nginx ; il utilise son propre format de log ; ce qui le rend incompatible avec des outils tiers d&amp;rsquo;analyse de logs comme &amp;ldquo;&lt;strong&gt;fail2ban&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;La personnalisation du format des logs n&amp;rsquo;est pas possible par l&amp;rsquo;interface de NPM ; il faudra donc les modifiers via un fichier de configuration accesible via un volume monté dans le fichier compose.yaml de NPM (voir &lt;a class=&#34;link&#34; href=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/&#34; &gt;Installation de Nginx Proxy Manager&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;h2 id=&#34;ajout-dun-template-de-log-alternatif&#34;&gt;Ajout d&amp;rsquo;un template de log alternatif&#xA;&lt;/h2&gt;&lt;p&gt;Le volume monté &amp;ldquo;&lt;strong&gt;/opt/docker/data/npm&lt;/strong&gt;&amp;rdquo; rend accessible les répertoires de configurations de bases de NPM.&lt;/p&gt;&#xA;&lt;p&gt;Nous allons créer un fichier &amp;lsquo;&lt;strong&gt;http_top.conf&lt;/strong&gt;&amp;rsquo; dans le répertoire &amp;ldquo;&lt;strong&gt;nginx/custom&lt;/strong&gt;&amp;rdquo; dont le contenu sera le suivant :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;log_format nom_log &lt;span class=&#34;s1&#34;&gt;&amp;#39;$remote_addr $remote_user [$time_local] &amp;#34;$request&amp;#34; $status $body_bytes_sent &amp;#34;$http_referer&amp;#34; &amp;#34;$http_user_agent&amp;#34; $host&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il faudra changer le paramètre &amp;ldquo;&lt;strong&gt;nom_log&lt;/strong&gt;&amp;rdquo; à votre convenance. Le template est au format standard &amp;lsquo;&lt;strong&gt;Nginx&lt;/strong&gt;&amp;rsquo; ; mais je lui rajoute le parametre &amp;lsquo;&lt;strong&gt;$host&lt;/strong&gt;&amp;rsquo; en fin de ligne pour afficher l&amp;rsquo;URL demandée lors d&amp;rsquo;une requête au serveur proxy NPM.&lt;/p&gt;&#xA;&lt;h2 id=&#34;utilisation-du-log-alternatif-dans-vos-hôtes-proxy&#34;&gt;Utilisation du log alternatif dans vos hôtes proxy&#xA;&lt;/h2&gt;&lt;p&gt;Pour chacun de vos hôtes proxy pour laquel vous souhaitez personnalisé les fichiers de log, il faudra allez dans la partie &amp;ldquo;&lt;strong&gt;Configuration Nginx personnalisé&lt;/strong&gt;&amp;rdquo; et y ajouter la ligne suivante  &lt;code&gt;access_log /data/logs/dockerlab.log nom_log;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Personnalisation des logs&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;287px&#34; data-flex-grow=&#34;119&#34; data-title-escaped=&#34;Personnalisation des logs&#34; height=&#34;457&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/personnaliser-ses-logs-avec-nginx-proxy-manager/npm_log01.png&#34; title=&#34;Personnalisation des logs&#34; width=&#34;547&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Remarque&lt;/strong&gt; : J&amp;rsquo;ai monté un volume &amp;ldquo;&lt;strong&gt;/data/logs&lt;/strong&gt;&amp;rdquo; pour pouvoir générer mes logs en dehors du container Docker pour qu&amp;rsquo;ils puissent être analyser par dse outils tiers sur mon hôte docker.&lt;/p&gt;&#xA;&lt;p&gt;Il faut relancer votre container npm pour que les modifications soient prise en compte.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Installation Arcane</title>
            <link>https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/</link>
            <pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate>
            <guid>https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/</guid>
            <description>&lt;img src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane.png&#34; alt=&#34;Featured image of post Installation Arcane&#34; /&gt;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&#xA;&lt;/h2&gt;&lt;p&gt;Arcane est une interface web moderne pour gérer facilement vos images réseaux et containers Docker. Ils est multi hôte, grace à un systeme d&amp;rsquo;agent ou via la création d&amp;rsquo;uncluster Swarn.&#xA;&lt;br/&gt;&lt;br/&gt;&#xA;Pour cette installation j’utilise l’image officielle qui est présente ici : &lt;a class=&#34;link&#34; href=&#34;https://github.com/getarcaneapp/arcane&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Arcane&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;le-fichier-composeyaml&#34;&gt;Le fichier compose.yaml&#xA;&lt;/h2&gt;&lt;p&gt;Voici le fichier &lt;em&gt;compose.yaml&lt;/em&gt; à deposer dans le répertoire contenant vos piles (par exemple &lt;strong&gt;/opt/docker/projects/&lt;/strong&gt;) ou à coller dans votre interface de gestion (autre que Arcane).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;arcane&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;ghcr.io/getarcaneapp/arcane:latest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;arcane&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;3552&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3552&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/var/run/docker.sock:/var/run/docker.sock&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/opt/docker/data/arcane:/app/data&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/opt/docker/projects:/opt/docker/projects&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# doit être identique à gauche et à droite&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;APP_URL=http://localhost:3552&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;PROJECTS_DIRECTORY=/opt/docker/projects&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# doit être identique au volume monté&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;PUID=1000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;PGID=1000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;TZ=Europe/Paris      &lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;ENCRYPTION_KEY=secret_key&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;JWT_SECRET=secret_jwt&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;unless-stopped&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vous devrez adapter ce fichier à votre environnement de travail Docker. J&amp;rsquo;utilise le chemin &lt;strong&gt;/opt/docker/data/mon_container&lt;/strong&gt; pour tous mes containers docker.&#xA;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;PROJECTS_DIRECTORY : Contient le chemin de vos piles dockers (doit être identique au volume monté si vous souhaiter déposer vos piles à la main dans le repertoire projet).&lt;/li&gt;&#xA;&lt;li&gt;ENCRYPTION_KEY : Votre clé secrête (voir plus bas).&lt;/li&gt;&#xA;&lt;li&gt;JWT_SECRET : Votre jeton secret (voir plus bas).&lt;/li&gt;&#xA;&lt;li&gt;PUID/GUID : L&amp;rsquo;utilisateur utilisé pour lancer le container.&#xA;&lt;br/&gt;&lt;br/&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Pour créer la clé secrête et le jeton, ouvrez une ligne de commande et taper la commande &lt;code&gt;openssl rand -base64 32&lt;/code&gt; deux fois et recopier les valeurs obtenues.&lt;/p&gt;&#xA;&lt;p&gt;Une fois le fichier créer ; déployer l&amp;rsquo;image soit en ligne de commande : &lt;code&gt;sudo docker compose up -d&lt;/code&gt; ; soit via votre interface de gestion.&#xA;&lt;br/&gt;&lt;br/&gt;&#xA;Vous pouvez maintenant accèder à l&amp;rsquo;interface de NPM : &lt;strong&gt;http://votreip:3552&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;configuration&#34;&gt;Configuration&#xA;&lt;/h2&gt;&lt;h3 id=&#34;1er-lancement&#34;&gt;1er Lancement&#xA;&lt;/h3&gt;&lt;p&gt;Il faut dans un premier temps créer un compte Administrateur :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;création du compte Administrateur&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;426px&#34; data-flex-grow=&#34;177&#34; data-title-escaped=&#34;Creation du compte Administrateur&#34; height=&#34;450&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_01.png&#34; title=&#34;Creation du compte Administrateur&#34; width=&#34;800&#34;&gt;&#xA;&lt;br/&gt;&lt;br/&gt;&#xA;Une fois le compte créé, vous arrivez au niveau du tableau de Bord :&#xA;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Tableau de bord&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;490px&#34; data-flex-grow=&#34;204&#34; data-title-escaped=&#34;Tableau de bord&#34; height=&#34;939&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_02.png&#34; srcset=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_02_hu_e50472d85e4b229d.png 800w, https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_02_hu_10b48c7cf8270b85.png 1600w, https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_02.png 1920w&#34; title=&#34;Tableau de bord&#34; width=&#34;1920&#34;&gt;&#xA;&lt;br/&gt;&lt;br/&gt;&#xA;L&amp;rsquo;onglet environnement contient les différents hôte géré par Arcane :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Hotes&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;837px&#34; data-flex-grow=&#34;349&#34; data-title-escaped=&#34;Hotes&#34; height=&#34;550&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_03.png&#34; srcset=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_03_hu_528cfaa4c5fc25a6.png 800w, https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_03_hu_2e7240e138b9ea11.png 1600w, https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_03.png 1920w&#34; title=&#34;Hotes&#34; width=&#34;1920&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;ajour-dun-hôte-distant&#34;&gt;Ajour d&amp;rsquo;un hôte distant&#xA;&lt;/h3&gt;&lt;p&gt;Arcane permet de gérer sur une même interface des hôtes locaux et distants.&lt;/p&gt;&#xA;&lt;p&gt;Nous allons ajouter un hôte distant ; pour cela un click sur &amp;ldquo;&lt;strong&gt;Ajouter Environnement&lt;/strong&gt;&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Ajout Hote - Etape 1&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;277px&#34; data-flex-grow=&#34;115&#34; data-title-escaped=&#34;Ajout Hote - Etape 1&#34; height=&#34;557&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_04.png&#34; title=&#34;Ajout Hote - Etape 1&#34; width=&#34;645&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il faut renseigner l&amp;rsquo;adresse IP de votre hôte distant. Une fois le formulaire rempli, cliquez sur &amp;ldquo;&lt;strong&gt;Générer la configuration de l&amp;rsquo;agent&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Ajout Hote - Etape 2&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;188px&#34; data-flex-grow=&#34;78&#34; data-title-escaped=&#34;Ajout Hote - Etape 2&#34; height=&#34;823&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_05.png&#34; title=&#34;Ajout Hote - Etape 2&#34; width=&#34;645&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il vous proposera le fichier compose.yaml à déployer sur votre serveur distant. Je n&amp;rsquo;utilise pas celui proposé, mais noté bien par contre la clé API généré par Aracne.&lt;/p&gt;&#xA;&lt;h3 id=&#34;le-fichier-compose-de-lhôte-distant&#34;&gt;Le fichier compose de l&amp;rsquo;hôte distant&#xA;&lt;/h3&gt;&lt;p&gt;J&amp;rsquo;ai constaté un problème de communication entre Arcane et son agent en utilisant l&amp;rsquo;image Docker proposé dans le fichier compose.yaml généré par l&amp;rsquo;interface Arcane.&#xA;J&amp;rsquo;utilise un fichier compose légèrement différent, en selectionnant une image différente que celle proposée à l&amp;rsquo;étape précèdante.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;arcane-agent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;ghcr.io/getarcaneapp/arcane-headless:latest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;arcane-agent&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;unless-stopped&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;AGENT_MODE=true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;EDGE_TRANSPORT=poll&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;AGENT_TOKEN=votre-token-generer-precedamment&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;MANAGER_API_URL=http://IP_ARCANE:3552&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;PROJECTS_DIRECTORY=/opt/docker/projects&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;PUID=1000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;PGID=1000&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;TZ=Europe/Paris&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;3553&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3553&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/var/run/docker.sock:/var/run/docker.sock&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/opt/docker/data/arcane:/app/data&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/opt/docker/projects:/opt/docker/projects&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Une fois le fichier créer ; déployer l&amp;rsquo;image soit en ligne de commande : &lt;code&gt;sudo docker compose up -d&lt;/code&gt; ; soit via votre interface de gestion.&lt;/p&gt;&#xA;&lt;p&gt;Retourner sur l&amp;rsquo;interface d&amp;rsquo;Arcane et vous devriez voir votre hote passé de l&amp;rsquo;état &amp;ldquo;&lt;strong&gt;Pending&lt;/strong&gt;&amp;rdquo; à &amp;ldquo;&lt;strong&gt;Online&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;Pour des besoins d&amp;rsquo;illustrations ; sur mon interface, cet hôte se prénomme &amp;ldquo;&lt;strong&gt;Test Docker&lt;/strong&gt;&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Ajout Hote - Etape 3&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;715px&#34; data-flex-grow=&#34;298&#34; data-title-escaped=&#34;Ajout Hote - Etape 3&#34; height=&#34;643&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_06.png&#34; srcset=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_06_hu_20303196436c8035.png 800w, https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_06_hu_891742bcb0fd4e61.png 1600w, https://dockerlab.cloud.yannickinformatik.fr/p/installation-arcane/arcane_06.png 1917w&#34; title=&#34;Ajout Hote - Etape 3&#34; width=&#34;1917&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Recommencer la procédure autant de fois que vous avez d&amp;rsquo;hôtes distants.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Security Headers pour Nginx Proxy Manager</title>
            <link>https://dockerlab.cloud.yannickinformatik.fr/p/security-headers-pour-nginx-proxy-manager/</link>
            <pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate>
            <guid>https://dockerlab.cloud.yannickinformatik.fr/p/security-headers-pour-nginx-proxy-manager/</guid>
            <description>&lt;img src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/security-headers-pour-nginx-proxy-manager/npm.png&#34; alt=&#34;Featured image of post Security Headers pour Nginx Proxy Manager&#34; /&gt;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&#xA;&lt;/h2&gt;&lt;p&gt;NPM (Nginx Proxy Manager) propose par défaut une configuration minimale des en-têtes HTTP. En faisant un test de vulnérabilité en ligne sur &lt;a class=&#34;link&#34; href=&#34;https://securityheaders.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://securityheaders.com/&lt;/a&gt; ; vos services web sortiront avec un mauvais score &amp;ldquo;&lt;strong&gt;D&lt;/strong&gt;&amp;rdquo;.&#xA;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Score Security Headers&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;482px&#34; data-flex-grow=&#34;201&#34; data-title-escaped=&#34;Score Security Headers&#34; height=&#34;729&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/security-headers-pour-nginx-proxy-manager/npm_secu01.png&#34; srcset=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/security-headers-pour-nginx-proxy-manager/npm_secu01_hu_e1b5584d97503393.png 800w, https://dockerlab.cloud.yannickinformatik.fr/p/security-headers-pour-nginx-proxy-manager/npm_secu01.png 1467w&#34; title=&#34;Score Security Headers&#34; width=&#34;1467&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Nous allons donc utiliser un template global pour NPM afin de  sécuriser l&amp;rsquo;ensemble de vos hôtes proxy.&lt;/p&gt;&#xA;&lt;h2 id=&#34;ajout-dun-template-htst-global-pour-npm&#34;&gt;Ajout d&amp;rsquo;un template HTST global pour NPM&#xA;&lt;/h2&gt;&lt;h3 id=&#34;modification-de-votre-fichier-composeyaml&#34;&gt;Modification de votre fichier compose.yaml&#xA;&lt;/h3&gt;&lt;p&gt;Reprenons le fichier &lt;em&gt;compose.yaml&lt;/em&gt; initial du précédant article &lt;a class=&#34;link&#34; href=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/&#34; &gt;Installation de Nginx Proxy Manager&lt;/a&gt;.&#xA;&lt;br/&gt;&lt;br/&gt;&#xA;Nous allons y ajouter un volume qui contiendra notre fichier de configurqtion _HTST opersonnalisé.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;docker.io/jc21/nginx-proxy-manager:latest&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;unless-stopped&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;npm&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;TZ=Europe/Paris    &lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;443&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;443&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/opt/docker/data/npm:/data&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/opt/docker/data/log:/data/logs&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/opt/docker/data/npm/letsencrypt:/etc/letsencrypt&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/opt/docker/data/npm/templates/_hsts.conf:/app/templates/_hsts.conf:ro&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# A rajouter &lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vous devrez adapter ce fichier à votre environnement de travail Docker. J&amp;rsquo;utilise le chemin &lt;strong&gt;/opt/docker/data/mon_container&lt;/strong&gt; pour tous mes containers docker.&#xA;&lt;br/&gt;&lt;br/&gt;&#xA;Le fichier &lt;strong&gt;/opt/docker/data/npm/templates/_hsts.conf&lt;/strong&gt; contient le templates global de modifications des en-têtes HTTP.&#xA;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;p&gt;Pour l&amp;rsquo;instant ne redemarrer pas votre container NPM.&lt;/p&gt;&#xA;&lt;h3 id=&#34;fichier-template-_htstconf&#34;&gt;Fichier template _htst.conf&#xA;&lt;/h3&gt;&lt;p&gt;Le fichier template à rajouter est le suivant :&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;certificate&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;certificate_id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ssl_forced&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ssl_forced&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;true&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;hsts_enabled&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;hsts_enabled&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;true&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;# HSTS (ngx_http_headers_module is required) (63072000 seconds = 2 years)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;add_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Strict&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Transport&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Security&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;max-age=63072000;{&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;% i&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;f hsts_subdomains == 1 or hsts_subdomains == true -%} includeSubDomains;{&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;% e&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;ndif %} preload&amp;#34;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;always&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;add_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Referrer&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Policy&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;strict&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;origin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;when&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cross&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;origin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;add_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;X&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Options&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nosniff&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;add_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;X&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;XSS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Protection&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1; mode=block&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;add_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;X&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Frame&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Options&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SAMEORIGIN&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;add_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Security&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Policy&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;upgrade&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;insecure&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;requests&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;add_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Permissions&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Policy&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;interest&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cohort&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;add_header&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Expect&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CT&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;enforce; max-age=604800&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;more_set_headers&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Server: Proxy&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;more_clear_headers&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;X-Powered-By&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;proxy_cookie_flags&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Secure&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HttpOnly&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SameSite&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Strict&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;endif&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;endif&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;endif&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vous pouvez personnaliser la réponse du serveur via la ligne &amp;ldquo;&lt;strong&gt;more_set_headers &amp;lsquo;Server: Proxy&amp;rsquo;;&lt;/strong&gt;&amp;rdquo; et remplacer &amp;ldquo;&lt;strong&gt;Proxy&lt;/strong&gt;&amp;rdquo; par ce que vous souhaitez. Cette ligne permet de rendre la détection de la technonologie utilisée (&lt;em&gt;NPM&lt;/em&gt;) plus difficile.&lt;/p&gt;&#xA;&lt;p&gt;Une fois ce fichier créé, vous pouvez relancer votre container NPM.&lt;/p&gt;&#xA;&lt;h3 id=&#34;verification-du-template&#34;&gt;Verification du template&#xA;&lt;/h3&gt;&lt;p&gt;Vous pouvez maintenant refaire un test en ligne sur le site &lt;a class=&#34;link&#34; href=&#34;https://securityheaders.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://securityheaders.com/&lt;/a&gt; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Score Security Headers&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;482px&#34; data-flex-grow=&#34;201&#34; data-title-escaped=&#34;Score Security Headers&#34; height=&#34;729&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/security-headers-pour-nginx-proxy-manager/npm_secu02.png&#34; srcset=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/security-headers-pour-nginx-proxy-manager/npm_secu02_hu_634eeafd7c43323d.png 800w, https://dockerlab.cloud.yannickinformatik.fr/p/security-headers-pour-nginx-proxy-manager/npm_secu02.png 1467w&#34; title=&#34;Score Security Headers&#34; width=&#34;1467&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Vous obtenez maintenant la note maximale &amp;ldquo;&lt;strong&gt;A+&lt;/strong&gt;&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Remarque&lt;/strong&gt; : Pour chaque hôte proxy il faut décocher puis recocher l&amp;rsquo;option &lt;strong&gt;HSTS&lt;/strong&gt; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Options SSL&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;326px&#34; data-flex-grow=&#34;135&#34; data-title-escaped=&#34;Options SSL&#34; height=&#34;429&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/security-headers-pour-nginx-proxy-manager/npm_08.png&#34; title=&#34;Options SSL&#34; width=&#34;583&#34;&gt;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Installation de Nginx Proxy Manager</title>
            <link>https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/</link>
            <pubDate>Thu, 23 Jul 2026 00:00:00 +0000</pubDate>
            <guid>https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/</guid>
            <description>&lt;img src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm.png&#34; alt=&#34;Featured image of post Installation de Nginx Proxy Manager&#34; /&gt;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&#xA;&lt;/h2&gt;&lt;p&gt;NPM (Nginx Proxy Manager) est une image Docker contenant le proxy inverse &lt;strong&gt;&amp;lsquo;Nginx&amp;rsquo;&lt;/strong&gt; et une interface WebUI permettant une configuration simple et convivial du serveur proxy. Il permet entre autres de gérer simplement les cerificats SSL via &lt;em&gt;Let&amp;rsquo;s Encrypt&lt;/em&gt;.&#xA;&lt;br/&gt;&lt;br/&gt;&#xA;Pour cette installation j’utilise l’image officielle qui est présente ici : &lt;a class=&#34;link&#34; href=&#34;https://github.com/NginxProxyManager/nginx-proxy-manager&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;NginxProxyManager&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;le-fichier-composeyaml&#34;&gt;Le fichier compose.yaml&#xA;&lt;/h2&gt;&lt;p&gt;Voici le fichier &lt;em&gt;compose.yaml&lt;/em&gt; à deposer dans le répertoire contenant vos piles (par exemple &lt;strong&gt;/opt/docker/projects/&lt;/strong&gt;) ou à coller dans votre interface de gestion (Arcane, Dockge, Portainer&amp;hellip;).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;docker.io/jc21/nginx-proxy-manager:latest&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;unless-stopped&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;npm&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;TZ=Europe/Paris    &lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ports&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Vous pouvez spécifier l&amp;#39;IP de l&amp;#39;Hote ; Par défaut 0.0.0.0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;81&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Port pour l&amp;#39;interface WebUI&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;m&#34;&gt;443&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;443&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;volumes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/opt/docker/data/npm:/data&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/opt/docker/data/log:/data/logs  &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# Pour analyser les logs en dehors du container&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;- &lt;span class=&#34;l&#34;&gt;/opt/docker/data/npm/letsencrypt:/etc/letsencrypt&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vous devrez adapter ce fichier à votre environnement de travail Docker. J&amp;rsquo;utilise le chemin &lt;strong&gt;/opt/docker/data/mon_container&lt;/strong&gt; pour tous mes containers docker.&#xA;&lt;br/&gt;&lt;br/&gt;&#xA;Le volume &amp;lsquo;&lt;strong&gt;/opt/docker/data/log&lt;/strong&gt;&amp;rsquo; me permet de visualiser et d&amp;rsquo;externalyser les logs produits par NPM pour qu&amp;rsquo;ils puissent être analysés par des outils tiers (&lt;em&gt;fail2ban&lt;/em&gt;, &lt;em&gt;reaction&lt;/em&gt;&amp;hellip; etc).&#xA;&lt;br/&gt;&lt;br/&gt;&#xA;&lt;strong&gt;Remarque&lt;/strong&gt; : Vous pouvez rajouter l&amp;rsquo;adresse IP de votre hôte au niveau des ports pour restreindre l&amp;rsquo;accès à votre seul hôte (exemple : &lt;strong&gt;192.168.x.x:80:80&lt;/strong&gt;).&#xA;&lt;br/&gt;&lt;br/&gt;&#xA;Une fois le fichier créer ; déployer l&amp;rsquo;image soit en ligne de commande : &lt;code&gt;sudo docker compose up -d&lt;/code&gt; ; soit via votre interface de gestion.&#xA;&lt;br/&gt;&lt;br/&gt;&#xA;Vous pouvez maintenant accèder à l&amp;rsquo;interface de NPM : &lt;strong&gt;http://votreip:81&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;configuration&#34;&gt;Configuration&#xA;&lt;/h2&gt;&lt;h3 id=&#34;1er-lancement&#34;&gt;1er Lancement&#xA;&lt;/h3&gt;&lt;p&gt;Il faut dans un premier temps créer un compte Administrateur :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;création du compte Administrateur&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;193px&#34; data-flex-grow=&#34;80&#34; data-title-escaped=&#34;Creation du compte Administrateur&#34; height=&#34;678&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_01.png&#34; title=&#34;Creation du compte Administrateur&#34; width=&#34;546&#34;&gt;&#xA;&lt;br/&gt;&lt;br/&gt;&#xA;Une fois le compte créé, vous arrivez au niveau du tableau de Bord :&#xA;&lt;br/&gt;&lt;br/&gt;&#xA;&lt;img alt=&#34;Tableau de bord&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;1102px&#34; data-flex-grow=&#34;459&#34; data-title-escaped=&#34;Tableau de bord&#34; height=&#34;329&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_02.png&#34; srcset=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_02_hu_1d88e1be7ff0fce0.png 800w, https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_02.png 1512w&#34; title=&#34;Tableau de bord&#34; width=&#34;1512&#34;&gt;&#xA;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;création-dun-certificat&#34;&gt;Création d&amp;rsquo;un certificat&#xA;&lt;/h3&gt;&lt;p&gt;NPM gère la création de certificat via Let&amp;rsquo;s Encrypt. Nous utiliserons comme exemple la méthode via DNS avec l&amp;rsquo;hébergeur OVH.&lt;/p&gt;&#xA;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&#xA;&lt;img alt=&#34;Création certificat - Etape 1&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;639px&#34; data-flex-grow=&#34;266&#34; data-title-escaped=&#34;Création certificat - Etape 1&#34; height=&#34;580&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_03.png&#34; srcset=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_03_hu_bf366ec449208580.png 800w, https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_03.png 1545w&#34; title=&#34;Création certificat - Etape 1&#34; width=&#34;1545&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Une fois le choix sélectioné, nous arrivons sur l&amp;rsquo;écran de création du certificat pour votre domaine.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Création certificat - Etape 2&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;160px&#34; data-flex-grow=&#34;66&#34; data-title-escaped=&#34;Création certificat - Etape 2&#34; height=&#34;895&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_04.png&#34; title=&#34;Création certificat - Etape 2&#34; width=&#34;598&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Je choisi mon hébergeur (&lt;em&gt;Provider DNS&lt;/em&gt;) et je choisi mon domaine.&lt;/p&gt;&#xA;&lt;p&gt;Remarque : J&amp;rsquo;utilise ici un wildcard &amp;lsquo;&lt;strong&gt;*&lt;/strong&gt;&amp;rsquo; pour générer un certificat pour tous les sous/sous domaines de mon domaine &amp;lsquo;&lt;strong&gt;subdomain.domain.fr&lt;/strong&gt;&amp;rsquo;. Le wildcard permet de cacher les services derriere le Proxy et seul les personnes connaissants le lien complet (&lt;strong&gt;service.subdomain.domain.fr&lt;/strong&gt; par exemple) pourront traverser le proxy.&lt;/p&gt;&#xA;&lt;p&gt;Chaque hébergeur à sa propre procédure de création de certificat et les informations demandées sur l&amp;rsquo;écran précédant seront différents.&lt;/p&gt;&#xA;&lt;p&gt;Pour OVH, il faut vous connecter et aller à cette adresse : &lt;a class=&#34;link&#34; href=&#34;https://www.ovh.com/auth/api/createToken&#34;  title=&#34;OVH Creation Token&#34;&#xA;     target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;OVH Creation Token&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Vous devez remplir le formulaire tel quel :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Création certificat - Etape 3&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;187px&#34; data-flex-grow=&#34;78&#34; data-title-escaped=&#34;Création certificat - Etape 3&#34; height=&#34;690&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_05.png&#34; title=&#34;Création certificat - Etape 3&#34; width=&#34;539&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il faut utilisez pour chaque ligne le texte suivant : &lt;code&gt;/domain/zone/*&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Vous aurez en retour les 3 Tokens nécessaires à remplacer dans l&amp;rsquo;écran plus haut au niveau de la zone &amp;lsquo;&lt;strong&gt;Credentials File Content&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Application Key&lt;/li&gt;&#xA;&lt;li&gt;Application Secret&lt;/li&gt;&#xA;&lt;li&gt;Consumer Key&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Une fois cela fait, vous pourrez voir vos certificats au niveau du tableau de bord :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Certificats&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;1008px&#34; data-flex-grow=&#34;420&#34; data-title-escaped=&#34;Certificats&#34; height=&#34;350&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_06.png&#34; srcset=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_06_hu_db2ee283a9b4c869.png 800w, https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_06.png 1471w&#34; title=&#34;Certificats&#34; width=&#34;1471&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;création-dun-hôte-proxy&#34;&gt;Création d&amp;rsquo;un hôte proxy&#xA;&lt;/h3&gt;&lt;p&gt;Le hôte proxy permet d&amp;rsquo;exposer de facon sécurisé votre service interne avec le monde extérieur. Il fait le lien entre une URL externe publique et votre service privé situé derriere votre serveur proxy.&lt;/p&gt;&#xA;&lt;p&gt;Nous allons créér un hôte proxy en prenant comme exmple le nom de domaine &amp;ldquo;&lt;strong&gt;exemple.subdomain.domain.fr&lt;/strong&gt;&amp;rdquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Creation Hôte proxy - Etape 1&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;220px&#34; data-flex-grow=&#34;91&#34; data-title-escaped=&#34;Creation Hôte proxy - Etape 1&#34; height=&#34;688&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_07.png&#34; title=&#34;Creation Hôte proxy - Etape 1&#34; width=&#34;631&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il vous faudra compléter la zone &amp;lsquo;&lt;em&gt;Forward&lt;/em&gt;&amp;rsquo; de votre formulaire en ajoutant l&amp;rsquo;adresse &lt;strong&gt;IP&lt;/strong&gt; de votres service interne, ainsi que son &lt;strong&gt;port&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Cocher aussi l&amp;rsquo;option &amp;ldquo;&lt;strong&gt;Block Common Exploits&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;On passe maintenant à l&amp;rsquo;onglet &amp;lsquo;&lt;strong&gt;SSL&lt;/strong&gt;&amp;rsquo; :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Creation Hôte proxy - Etape 2&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;326px&#34; data-flex-grow=&#34;135&#34; data-title-escaped=&#34;Creation Hôte proxy - Etape 2&#34; height=&#34;429&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_08.png&#34; title=&#34;Creation Hôte proxy - Etape 2&#34; width=&#34;583&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sélectionner le certificat associé à votre domaine et cocher les 4 options.&lt;/p&gt;&#xA;&lt;p&gt;Une fois la validation du formulaire effectué ; votre service exposé apparaitra dans la liste des Hôtes proxy :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Creation Hôte proxy - Etape 3&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;482px&#34; data-flex-grow=&#34;201&#34; data-title-escaped=&#34;Creation Hôte proxy - Etape 3&#34; height=&#34;729&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_09.png&#34; srcset=&#34;https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_09_hu_99143e911c341c98.png 800w, https://dockerlab.cloud.yannickinformatik.fr/p/installation-de-nginx-proxy-manager/npm_09.png 1467w&#34; title=&#34;Creation Hôte proxy - Etape 3&#34; width=&#34;1467&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;pour-aller-plus-loin&#34;&gt;Pour aller plus loin&#xA;&lt;/h3&gt;&lt;p&gt;Nous avons vus l&amp;rsquo;installation et la configuration de bases de NPM. Pour plus de sécurité et de personnalisations, il est nécessaire parfois de passer par l&amp;rsquo;édition manuelle des fichiers de configurations quand cela n&amp;rsquo;est pas possible par l&amp;rsquo;interface graphique (la personnalisation reste possible, mais est fortement limitée).&lt;/p&gt;&#xA;&lt;p&gt;Nous verrons cela dans d&amp;rsquo;autres articles à paraitre sur le blog.&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
