<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>MQTT on Docker Lab</title>
        <link>https://dockerlab.cloud.yannickinformatik.fr/tags/mqtt/</link>
        <description>Recent content in MQTT 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/tags/mqtt/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></channel>
</rss>
