Mosquitto Docker : Comment configurer le courtier MQTT Eclipse Mosquitto avec Docker et Docker Compose
Guide étape par étape pour le déploiement d'un broker Mosquitto MQTT prêt pour la production à l'aide de conteneurs Docker. Comprend l'authentification, le chiffrement TLS, la configuration de persistance et l'intégration avec Home Assistant.
La configuration d'un courtier MQTT à partir de zéro ne devrait pas nécessiter des heures de configuration et de dépannage.
Eclipse Mosquitto est un courtier MQTT open source qui implémente les protocoles MQTT v5, 3.1.1 et 3.1, ce qui le rend idéal pour les appareils IoT, les systèmes domotiques, les applications cloud et toute architecture orientée messages. Cependant, l'installation et la configuration de Mosquitto directement sur votre système entraînent souvent des conflits de dépendances, des problèmes d'autorisation et des difficultés spécifiques à la plateforme qui peuvent nuire à votre temps de développement. Vous finissez par consacrer plus de temps à la configuration qu'au développement de votre application proprement dite.
Docker élimine ces difficultés en fournissant un environnement cohérent et isolé pour exécuter Mosquitto sur n'importe quelle plateforme. Vous pouvez disposer d'un courtier MQTT entièrement fonctionnel en quelques minutes, avec des configurations personnalisées, une authentification et une persistance.
Dans ce guide, je vous guiderai à travers le déploiement d'Eclipse Mosquitto à l'aide de Docker et Docker Compose, la configuration de l'authentification et de la journalisation, la mise en place de la persistance des données et le test de votre courtier avec de véritables clients MQTT.
Êtes-vous totalement novice en matière de Docker ? Je vous recommande de commencer par notre cours d'introduction à Docker pour acquérir les bases.
Qu'est-ce que Mosquitto et pourquoi l'utiliser dans Docker ?
Vous n'avez pas besoin d'un système de messagerie complexe lorsque vous recherchez simplement une communication rapide et fiable entre les appareils.
MQTT est un protocole de publication-abonnement léger conçu pour les situations où la bande passante est limitée et où la fiabilité est essentielle. Pensez aux capteurs IoT, aux applications mobiles ou à tout scénario dans lequel des appareils doivent échanger rapidement de petits messages sans interrogation constante.
Mosquitto agit en tant qu'intermédiaire, ou courtier, entre les éditeurs et les abonnés.
Les éditeurs transmettent des messages sur des sujets spécifiques. Les abonnés suivent ces sujets. Mosquitto gère le routage, garantissant que les messages sont acheminés aux bons endroits sans que les éditeurs et les abonnés aient besoin de se connaître.
Voici pourquoi Docker améliore encore davantage les configurations Docker Mosquitto :
Configuration cohérente sur toutes les plateformes : Windows, macOS ou Linux : le conteneur Docker fonctionne exactement de la même manière. Il n'est pas nécessaire de rechercher des programmes d'installation spécifiques à une plateforme ni de gérer les conflits de dépendances.
Gestion simplifiée des versions : Vous pouvez épingler des versions spécifiques de Mosquitto à l'aide de balises d'image, revenir en arrière en cas de problème et tester de nouvelles versions sans affecter votre système hôte.
Véritable portabilité : La même configuration Docker Mosquitto est applicable en développement, en préproduction et en production. Votre environnement local correspond à ce qui est exécuté sur vos serveurs.
Mosquitto est disponible en deux versions : la version open source (qui couvre la plupart des cas d'utilisation) et la version commerciale Pro Edition de Cedalo, qui offre des fonctionnalités avancées telles que le clustering et une sécurité renforcée. Pour la plupart des projets, la version open source répond à tous vos besoins.
Ensuite, je vais passer en revue les prérequis, puis nous allons nous plonger dans l'installation de Mosquitto.
Conditions préalables
Il est nécessaire que Docker soit installé et opérationnel sur votre système avant de pouvoir déployer Mosquitto.
Docker Desktop est particulièrement adapté aux utilisateurs Windows et macOS, car il regroupe tous les éléments nécessaires dans un seul package. Les utilisateurs Linux peuvent installer l'interfaceCLI Docker d' directement via leur gestionnaire de paquets ou à partir du référentiel officiel de Docker.
Docker Compose n'est pas obligatoire, mais il facilite considérablement la gestion des configurations multi-conteneurs. La plupart des installations de Docker Desktop incluent Compose par défaut. Si vous utilisez Linux, il se peut que vous deviez l'installer séparément.
Vous devrez également posséder des compétences de base en matière de ligne de commande. Rien d'extraordinaire, simplement la possibilité d'exécuter des commandes, de naviguer dans les répertoires et de modifier des fichiers texte.
Configuration étape par étape
Pour exécuter Mosquitto Docker, trois étapes sont nécessaires : créer des répertoires, exécuter le conteneur et, éventuellement, configurer Docker Compose pour faciliter la gestion.
Création des répertoires requis
Mosquitto nécessite un stockage organisé pour sa configuration, ses données et ses journaux.
Veuillez les créer pour commencer :
mkdir mosquitto-docker
cd mosquitto-docker
mkdir config data logsPropulsé par
Cela vous fournit des dossiers organisés pour les fichiers de configuration de Mosquitto, les données persistantes et la sortie des journaux.
Voici les fonctions de chaque répertoire :
/mosquitto/config stocke mosquitto.conf et tout fichier de configuration supplémentaire
/mosquitto/data contient des données de messages persistants et des informations d'abonnement
/mosquitto/log contient les fichiers journaux de Mosquitto destinés au débogage et à la surveillance.
Ces répertoires sont montés en tant que volumes à l'intérieur du conteneur Docker, ce qui permet de conserver vos paramètres et vos données après le redémarrage du conteneur.
Exécution de Mosquitto avec Docker
La commande Docker de base permet de lancer Mosquitto avec un mappage de ports et des montages de volumes appropriés.
docker run -d\--name mosquitto \-p1883:1883 \-v$(pwd)/mosquitto/config:/mosquitto/config \-v$(pwd)/mosquitto/data:/mosquitto/data \-v$(pwd)/mosquitto/log:/mosquitto/log \
eclipse-mosquitto:latestPropulsé par
Image 1 - Exécution de Mosquitto avec Docker
Permettez-moi de vous expliquer ces drapeaux :
-d exécute le conteneur en arrière-plan (mode détaché)
--name mosquitto attribue au conteneur un nom convivial pour faciliter la référence
-p 1883:1883 mappe le port 1883 de votre hôte vers le port 1883 du conteneur
-v monte les répertoires locaux en tant que volumes à l'intérieur du conteneur
Mosquitto 2.0+ fonctionne par défaut en mode local uniquement. Cela signifie qu'il n'accepte que les connexions provenant de localhost, à moins que vous ne le configuriez autrement. Il vous sera nécessaire de créer un fichier de configuration pour autoriser les connexions externes.
Utilisation de Docker Compose
Mosquitto Docker Compose simplifie considérablement la gestion de l'installation, en particulier lorsque vous exécutez plusieurs services.
Veuillez créer un fichier docker-compose.yml et y insérer le contenu suivant :
Image 2 - Exécution de Mosquitto avec Docker Compose
Les mappages de volume fonctionnent de la même manière que la commande Docker, mais Compose gère la complexité. La configuration du port couvre tous les protocoles MQTT courants : MQTT standard (1883), MQTTS sécurisé (8883) et connexions WebSocket (9001).
Compose est particulièrement performant dans les configurations multiservices. Par exemple, si vous utilisez Home Assistant, Node-RED ou d'autres outils IoT avec Mosquitto, vous pouvez définir tous les paramètres dans un seul fichier et démarrer tous les services simultanément.
Examinons maintenant la configuration plus en détail.
Trouvez-vous les concepts avancés de Docker complexes ? Notre cours Docker intermédiaire va au-delà des notions fondamentales.
Configuration de Mosquitto
Mosquitto n'accepte pas les connexions externes par défaut. Un fichier de configuration est nécessaire pour activer cette fonctionnalité.
Configuration de base (mosquitto.conf)
Veuillez créer un fichier mosquitto.conf dans votre répertoire mosquitto/config et y ajouter les éléments suivants :
Le paramètre allow_anonymous true permet aux clients de se connecter sans informations d'identification. Cela fonctionne bien pour le développement ou les réseaux internes, mais il est recommandé de le désactiver pour les environnements de production. Lorsque vous définissez allow_anonymous false, chaque client doit s'authentifier à l'aide d'un nom d'utilisateur et d'un mot de passe.
Le récepteur WebSocket sur le port 9001 permet l'utilisation de clients MQTT basés sur un navigateur. Les applications Web peuvent se connecter directement à votre courtier à l'aide de bibliothèques JavaScript telles que Paho MQTT.
Configuration de l'authentification
L'authentification nécessite la création d'un fichier de mots de passe et la mise à jour de votre configuration.
Veuillez générer un fichier de mots de passe à l'intérieur du conteneur :
dockerexec-it mosquitto mosquitto_passwd -c /mosquitto/config/passwd usernamePropulsé par
Image 3 - Authentification Mosquitto
Cela crée un nouveau fichier de mot de passe et vous invite à saisir un mot de passe. Pour les utilisateurs supplémentaires, veuillez désactiver le drapeau d'-c:
dockerexec-it mosquitto mosquitto_passwd /mosquitto/config/passwd another_userPropulsé par
Veuillez maintenant mettre à jour votre fichier mosquitto.conf afin de forcer l'authentification :
Il vous sera nécessaire d'obtenir des certificats SSL pour votre domaine. Let's Encrypt fournit des certificats gratuits, ou vous pouvez utiliser des proxys inversés tels que Caddy Server qui gèrent automatiquement la génération de certificats. Veuillez placer vos fichiers de certificats dans le répertoire mosquitto/config afin qu'ils soient accessibles à l'intérieur du conteneur.
Persistance et journalisation
La persistance enregistre les messages et les abonnements sur le disque, tandis qu'une journalisation adéquate vous aide à résoudre les problèmes de connexion.
Vous pouvez configurer la persistance dans mosquitto.conf de la manière suivante :
# Enable persistence
persistence true
persistence_location /mosquitto/data/
# Save to disk every 300 seconds
autosave_interval 300# Keep messages for offline clients
persistent_client_expiration 1dPropulsé par
En ce qui concerne la journalisation, voici comment vous pouvez configurer une journalisation détaillée :
# Log to file and stdout
log_dest file /mosquitto/log/mosquitto.log
log_dest stdout
# Choose what to log
log_type error
log_type warning
log_type notice
log_type information
log_type debug
# Log connection details
connection_messages true
log_timestamp truePropulsé par
Les options de l'log_type permettent de filtrer les éléments enregistrés :
error et warning pour le suivi de la production
notice et information pour des informations générales sur le fonctionnement.
debug pour le dépannage des problèmes de connexion
Vos montages de volume garantissent que les données persistantes et les journaux sont conservés après le redémarrage des conteneurs. Le répertoire de données stocke tous les messages persistants et les informations d'abonnement, tandis que le répertoire de journaux conserve vos informations de débogage accessibles depuis le système hôte.
Les fichiers de configuration vous permettent de contrôler entièrement le comportement de Mosquitto sans avoir à reconstruire les conteneurs.
Vérification de la configuration
Votre courtier n'est utile qu'une fois que vous avez vérifié que les clients peuvent se connecter et échanger des messages.
Utilisation de mosquitto_pub et mosquitto_sub
Les outils en ligne de commande mosquitto_pub et mosquitto_sub constituent le moyen le plus rapide de tester votre courtier.
Veuillez commencer par installer Mosquitto, en fonction de votre plateforme :
Linux (Ubuntu/Debian) : sudo apt-get install mosquitto-clients
macOS :brew install mosquitto
Windows : Veuillez télécharger depuis le site officiel d'Eclipse Mosquitto ou utiliser WSL.
Commençons par le tester sans authentification. Vous aurez besoin de deux fenêtres ou onglets de terminal. Veuillez exécuter ces commandes dans des sessions distinctes :
# Subscribe to a topic (run this first)
mosquitto_sub -h localhost -p1883-t test/topic
# Publish a message (run in another terminal)
mosquitto_pub -h localhost -p1883-t test/topic -m"Hello MQTT"Propulsé par
Dans l'onglet Publication, vous constaterez ce qui suit :
Image 4 - Publication d'un message
Dans l'onglet « S'abonner », vous verrez immédiatement le message suivant :
Image 5 - Abonnement à un sujet Mosquitto
Si une authentification est requise, les commandes sont similaires ; il vous suffira de fournir votre nom d'utilisateur et votre mot de passe :
# Subscribe with username and password
mosquitto_sub -h localhost -p1883-t test/topic -u username -P password
# Publish with credentials
mosquitto_pub -h localhost -p1883-t test/topic -m"Authenticated message"-u username -P passwordPropulsé par
Si vous ne souhaitez pas installer les clients Mosquitto localement, veuillez les exécuter dans votre conteneur Docker :
# Subscribe using the containerdockerexec-it mosquitto mosquitto_sub -h localhost -t test/topic
# Publish using the containerdockerexec-it mosquitto mosquitto_pub -h localhost -t test/topic -m"Container message"Propulsé par
Vous trouverez ceci dans l'onglet « Publication » :
Image 6 - Publication d'un message sans authentification
Dans l'onglet « S'abonner », vous verrez le message suivant :
Image 7 - Abonnement à un sujet Mosquitto sans authentification
Test avec des clients MQTT
Les clients GUI facilitent le test de scénarios complexes et la surveillance du trafic de messages en cours.
MQTT Explorer offre une interface claire pour parcourir les sujets et envoyer des messages. Veuillez vous connecter à localhost:1883 et vous verrez une arborescence de tous les sujets actifs. Il est idéal pour déboguer les flux de messages et comprendre la structure de vos sujets.
Image 8 - Application MQTT Explorer
MQTTX propose des fonctionnalités plus avancées telles que la création de scripts et l'envoi groupé de messages. Les deux clients prennent en charge l'authentification, les connexions TLS et les protocoles WebSocket.
Les utilisateurs de Home Assistant peuvent tester l'intégration MQTT directement à partir des outils de développement. Veuillez ajouter les informations relatives à votre courtier à l'intégration MQTT et utiliser l'interface de publication/abonnement intégrée.
Pour les tests programmatiques, le client Python Paho MQTT fonctionne efficacement :
import paho.mqtt.client as mqtt
defon_connect(client, userdata, flags, rc):print(f"Connected with result code {rc}")
client.subscribe("test/topic")defon_message(client, userdata, msg):print(f"Received: {msg.payload.decode()}")
client = mqtt.Client()# client.username_pw_set("username", "password") # If using auth
client.on_connect = on_connect
client.on_message = on_message
client.connect("localhost",1883,60)
client.loop_forever()Propulsé par
Veuillez exécuter ce script dans un terminal, puis publier les messages à partir d'un autre terminal ou d'un client GUI. Le script affichera tous les messages qu'il reçoit, confirmant ainsi que votre courtier achemine correctement le trafic.
Voici la procédure à suivre pour publier un message :
Image 9 - Publication d'un message pour l'exemple Python
Vous constaterez cela dans la session du terminal où le script Python est exécuté :
Image 10 - Réception d'un message pour l'exemple Python
Les opérations de publication et d'abonnement fonctionnelles indiquent que votre configuration Docker Mosquitto est prête pour des applications réelles.
Intégration de Mosquitto Docker avec Home Assistant
L'exécution de Mosquitto parallèlement à Home Assistant dans Docker permet de créer un hub de messagerie IoT complet sans aucune configuration réseau complexe.
Docker Compose simplifie considérablement cette opération. Les deux services peuvent communiquer via le réseau interne de Docker sans exposer de ports supplémentaires ni gérer d'adresses IP.
Voici un exemple complet d'docker-compose.yml ation qui exécute les deux services :
La section networks crée un réseau partagé où les deux conteneurs peuvent se joindre mutuellement par leur nom. Home Assistant peut se connecter à mosquitto:1883 au lieu d'utiliser localhost ou des adresses IP.
Veuillez ensuite configurer l'intégration MQTT via l'interface web de Home Assistant. Veuillez vous rendre dans Paramètres > Appareils et services > Ajouter une intégration, puis recherchez « MQTT ».
Veuillez saisir les informations de connexion suivantes :
Courtier : mosquitto (nom du conteneur)
Port : 1883
Nom d'utilisateur/Mot de passe : Vos identifiants si l'authentification est activée
Veuillez conserver les autres paramètres par défaut.
Veuillez cliquer sur « Soumettre » et Home Assistant testera la connexion. Si l'opération est réussie, MQTT apparaîtra dans votre liste d'intégrations.
Image 11 - Configuration de Mosquitto avec Homelab
Vous pouvez désormais ajouter des appareils MQTT, créer des automatisations qui publient des messages et surveiller les données des capteurs via des sujets. L'intégration MQTT de Home Assistant gère automatiquement la détection des appareils compatibles.
Dépannage des problèmes courants
La plupart des problèmes rencontrés avec Docker Mosquitto sont liés à des autorisations, des ports ou des erreurs de configuration qui bloquent les connexions.
Erreurs d'autorisation avec les volumes montés
Ces problèmes surviennent lorsque le conteneur ne peut pas écrire dans vos répertoires hôtes. Vous observerez des messages d'erreur tels que « Permission refusée » ou « Impossible de créer le répertoire » dans les journaux.
Veuillez corriger cela en définissant les droits d'accès appropriés sur vos répertoires :
Le conteneur Mosquitto s'exécute sous l'ID utilisateur 1883, il est donc nécessaire que vos répertoires hôtes correspondent. Sur certains systèmes, il peut être nécessaire de créer l'utilisateur au préalable :
sudouseradd-u1883 mosquitto
sudochown-R mosquitto:mosquitto mosquitto/Propulsé par
Conflits de ports
Ces problèmes surviennent lorsque le port 1883 est déjà utilisé par un autre élément. Veuillez vérifier ce qui est en cours d'exécution sur ce port :
# Linux/macOSsudolsof-i :1883
# Windowsnetstat-an| findstr :1883Propulsé par
Si un autre service utilise le port, veuillez soit l'arrêter, soit attribuer un autre port à Mosquitto :
docker run -p1884:1883 eclipse-mosquitto:latestPropulsé par
Le mode local uniquement empêche les connexions externes.
Ceci se produit même lorsque votre conteneur est en cours d'exécution. Mosquitto 2.0+ accepte par défaut uniquement les connexions provenant de localhost, sauf si vous le configurez autrement.
Veuillez créer un fichier mosquitto.conf de base pour autoriser les connexions externes :
Veuillez placer ce fichier dans votre répertoire mosquitto/config et redémarrer le conteneur.
Vider les répertoires au démarrage
Cela signifie que vos montages de volume ne fonctionnent pas correctement. Veuillez vérifier que vos chemins d'accès sont absolus et que les répertoires existent :
# Wrong - relative path might not work-v ./mosquitto/config:/mosquitto/config
# Better - absolute path-v$(pwd)/mosquitto/config:/mosquitto/configPropulsé par
Veuillez créer les répertoires avant de démarrer le conteneur :
Conflit entre les identifiants UID/GID de l'hôte et du conteneur
Cela entraînera des problèmes persistants liés aux autorisations. Le conteneur est configuré pour fonctionner sous l'utilisateur 1883, mais il est possible que votre système hôte ait des exigences différentes en matière de propriété.
Veuillez forcer le conteneur à s'exécuter en tant qu'utilisateur :
docker run --user$(id-u):$(id-g) eclipse-mosquitto:latestPropulsé par
Ou modifiez les autorisations de votre répertoire hôte afin qu'elles correspondent aux attentes du conteneur. L'approche par conteneur est plus efficace pour le développement, tandis que la correction des autorisations de l'hôte est plus efficace pour les déploiements en production.
Veuillez vérifier les journaux du conteneur lorsque les éléments ne fonctionnent pas correctement ; ils indiquent généralement avec précision le problème rencontré.
Avancé : Fonctionnalités de Mosquitto Pro Edition
La version open source de Mosquitto couvre la plupart des cas d'utilisation, mais les environnements d'entreprise nécessitent des fonctionnalités que seule la version Pro Edition offre.
L' s de gestion des utilisateurs basée sur les rôles vous permet de définir des autorisations granulaires pour différents groupes d'utilisateurs. Au lieu de gérer l'accès de chaque utilisateur individuellement, vous pouvez créer des rôles tels que « lecteurs de capteurs », « contrôleurs d'actionneurs » ou « utilisateurs administrateurs » et attribuer des autorisations à l'ensemble des rôles. Les utilisateurs héritent des autorisations des rôles qui leur sont attribués, ce qui facilite la gestion des accès sur des centaines, voire des milliers d'appareils.
Vous pouvez restreindre l'accès par modèles de sujets, plages d'adresses IP ou fenêtres temporelles. Cela est plus efficace que de configurer manuellement les fichiers ACL lorsque vous gérez des déploiements IoT complexes avec différentes exigences de sécurité.
Les options d'authentification avancées vont au-delà des simples combinaisons nom d'utilisateur/mot de passe. L'authentification par jeton JWT s'intègre aux fournisseurs d'identité existants tels que Auth0, Okta ou le système SSO de votre entreprise. L'intégration LDAP se connecte directement à Active Directory ou à d'autres services d'annuaire d'entreprise.
L'inspection approfondie et l'de surveillance vous offrent une visibilité en temps réel sur les flux de messages, les modèles de connexion et les performances des courtiers. La version Pro comprend des tableaux de bord intégrés qui indiquent quels clients consomment le plus de bande passante, quels sujets génèrent le plus grand nombre de messages et où se forment les goulots d'étranglement.
Vous obtenez des mesures détaillées sur la latence des messages, la profondeur des files d'attente et les modèles de comportement des clients. Ces données vous permettent d'optimiser les structures thématiques et d'identifier les clients problématiques avant qu'ils n'aient un impact sur l'ensemble du système.
Les intégrations de bases de données et de services cloud éliminent le besoin d'applications passerelles personnalisées. La version Pro peut transférer automatiquement les messages vers PostgreSQL, MongoDB, InfluxDB, AWS IoT Core, Azure IoT Hub ou Google Cloud IoT. Vous définissez des règles de routage qui déterminent la destination des messages en fonction des modèles de sujet, du contenu des messages ou des métadonnées client.
Les files d'attente persistantes gèrent les scénarios à haut volume où la persistance standard de Mosquitto n'est pas suffisante. La version Pro peut mettre en mémoire tampon des millions de messages pour les clients hors ligne et répartir la charge sur plusieurs instances de courtier. Il comprend une gestion automatique des files d'attente qui empêche l'épuisement de la mémoire et garantit l'ordre des messages.
La prise en charge du clustering vous permet d'exécuter plusieurs instances de courtier qui partagent la charge des messages et offrent une protection en cas de défaillance. Lorsqu'un courtier tombe en panne, les clients se reconnectent automatiquement à des instances saines sans perdre de messages ni d'abonnements.
La version Pro est particulièrement utile lorsque vous avez besoin d'une fiabilité et de fonctionnalités de gestion de niveau professionnel qui prendraient des mois à développer par vous-même.
Avantages et inconvénients de l'utilisation de Mosquitto dans Docker
Docker facilite le déploiement, mais ce n'est pas la solution idéale dans tous les cas.
Avantages
La cohérence multiplateforme élimine les difficultés liées aux installations spécifiques à chaque système d'exploitation. La même commande Docker fonctionne sous Windows, macOS et Linux sans qu'il soit nécessaire de rechercher différents gestionnaires de paquets ou de gérer les conflits de dépendances. Votre environnement de développement correspond exactement à l'environnement de production, ce qui réduit les imprévus lors du déploiement.
Les mises à niveau de version simples s'effectuent en modifiant les balises d'image. Au lieu de désinstaller l'ancienne version et d'espérer que la mise à niveau ne perturbe pas votre configuration, il vous suffit de télécharger une nouvelle image et de redémarrer le conteneur. La restauration ne prend que quelques secondes en cas de problème.
La facilité de sauvegarde et de migration est obtenue grâce à l'utilisation de volumes pour vos données. Veuillez copier le répertoire mosquitto sur un autre ordinateur, exécutez la même commande Docker, et vous serez de nouveau en ligne. Le transfert entre différents fournisseurs de services cloud ou la mise à niveau du matériel informatique se résume à un simple transfert de fichiers.
Inconvénients
Docker ne présente pas que des avantages.
Les problèmes d'autorisation de volume affectent certains systèmes d'exploitation, en particulier lors du passage entre des hôtes Windows et Linux. Vous devrez consacrer du temps à résoudre des problèmes de propriété et à gérer des incompatibilités UID/GID qui n'existeraient pas avec une installation native.
La configuration supplémentaire requise pour l' s de sécurité de niveau production implique que Docker ajoute de la complexité plutôt que de la supprimer. Il est nécessaire de gérer les politiques réseau, les contextes de sécurité des conteneurs et le chiffrement des volumes en plus des fonctionnalités de sécurité propres à Mosquitto. Les installations natives vous permettent d'utiliser directement les cadres de sécurité existants de votre système d'exploitation.
Une baisse potentielle des performances peut survenir dans les scénarios à haut débit où chaque microseconde compte. La couche réseau du conteneur et les montages de volumes ajoutent une surcharge que les installations natives évitent. Pour la plupart des applications IoT, cette différence est négligeable, mais les systèmes industriels en temps réel pourraient être affectés par la latence.
Docker est la solution idéale lorsque vous avez besoin de déploiements cohérents et d'une gestion simplifiée dans différents environnements.
Conclusion
L'exécution de Mosquitto dans Docker vous offre un courtier MQTT fiable qui fonctionne de manière cohérente dans tous les environnements. Que vous réalisiez des prototypes d'appareils IoT, développiez des systèmes domotiques ou connectiez des capteurs, Docker élimine la complexité de la configuration et vous permet de vous concentrer sur votre projet.
Si vous envisagez d'utiliser Mosquitto en production, veuillez garder à l'esprit les points suivants :
Veuillez sécuriser votre courtier avant de l'exposer à Internet.
Veuillez activer l'authentification avec mosquitto_passwd et configurer le chiffrement TLS avec les certificats appropriés.
Limiter l'accès aux clients qui en ont besoin
Un courtier MQTT non sécurisé constitue une porte ouverte aux attaquants qui souhaitent surveiller les communications des appareils ou injecter des commandes malveillantes.
Pour les déploiements d'entreprise qui nécessitent des fonctionnalités avancées telles que le contrôle d'accès basé sur les rôles, le clustering ou l'intégration LDAP, Mosquitto Pro Edition fournit des outils de gestion et une évolutivité qui surpassent la version open source.
Quelle est la différence entre l'exécution native de Mosquitto et son exécution dans Docker ?⌄
Docker assure une cohérence multiplateforme et élimine les conflits de dépendances qui affectent les installations natives. Votre configuration Mosquitto fonctionne de manière identique sous Windows, macOS et Linux, sans qu'il soit nécessaire de rechercher des paquets spécifiques à chaque plateforme. Docker simplifie également les mises à niveau et les restaurations de versions : il suffit de modifier la balise de l'image et de redémarrer le conteneur. Cependant, les installations natives peuvent offrir des performances légèrement supérieures dans les scénarios à haut débit.
Ai-je besoin de Docker Compose pour exécuter Mosquitto, ou puis-je utiliser les commandes Docker habituelles ?⌄
Vous pouvez tout à fait exécuter Mosquitto avec les commandes Docker habituelles en utilisant docker run. Docker Compose simplifie la gestion, en particulier lorsque vous exécutez plusieurs services tels que Home Assistant ou Node-RED en parallèle de Mosquitto. Si vous utilisez uniquement Mosquitto, une simple commande docker run fonctionne parfaitement.
Mosquitto dans Docker est-il suffisamment sécurisé pour une utilisation en production ?⌄
Mosquitto Docker peut être utilisé en production avec une configuration adéquate. Il sera nécessaire de désactiver l'accès anonyme, de configurer l'authentification avec mosquitto_passwd, de paramétrer le chiffrement TLS et de limiter l'accès au réseau aux clients de confiance uniquement. Le conteneur en lui-même ne présente pas de failles de sécurité, mais il est de votre responsabilité de sécuriser à la fois la configuration de Mosquitto et l'environnement Docker.
Pourquoi mon conteneur Mosquitto démarre-t-il mais refuse-t-il les connexions externes ?⌄
Mosquitto 2.0+ est configuré par défaut en mode local uniquement, ce qui signifie qu'il n'accepte que les connexions provenant de localhost à l'intérieur du conteneur. Il est nécessaire de créer un fichier mosquitto.conf avec listener 1883 et allow_anonymous true (à des fins de test) ou les paramètres d'authentification appropriés. Veuillez placer ce fichier de configuration dans votre répertoire /mosquitto/config monté et redémarrer le conteneur.
Comment puis-je résoudre les erreurs « Permission refusée » lorsque Mosquitto tente d'écrire sur des volumes montés ?⌄
Le conteneur Mosquitto s'exécute sous l'ID utilisateur 1883, mais vos répertoires hôtes peuvent avoir des propriétaires différents. Veuillez exécuter la commande « sudo chown -R 1883:1883 mosquitto/ » pour corriger les droits d'accès, ou bien créez d'abord l'utilisateur «mosquitto» à l'aide de la commande « sudo useradd -u 1883 mosquitto », puis modifiez les droits d'accès. Sur certains systèmes, il est également possible d'exécuter le conteneur avec l'option ` --user $(id -u):$(id -g) ` afin de l'associer à votre utilisateur hôte.
Scientifique de données senior basé en Croatie. Rédacteur technique de premier plan avec plus de 700 articles publiés, générant plus de 10 millions de vues. Auteur du livre Machine Learning Automation with TPOT.
Apprenez l'essentiel de l'architecture d'un entrepôt de données, des composants clés aux meilleures pratiques, pour construire un système de données évolutif et efficace !
Découvrez le match-case de Python : un guide sur sa syntaxe, ses applications en data science, ML, et une analyse comparative avec le switch-case traditionnel.
Apprenez à utiliser JSON en Python, notamment la sérialisation, la désérialisation, le formatage, l'optimisation des performances, la gestion des API, ainsi que les limites et les alternatives de JSON.
Découvrez Docker et son importance dans la boîte à outils du professionnel des données. Découvrez les conteneurs Docker, les images et bien plus encore.
Découvrez toute la puissance de Docker et Kubernetes : ce cursus interactif vous permettra de créer et de déployer des applications dans des environnements modernes.
La configuration d'un courtier MQTT à partir de zéro ne devrait pas nécessiter des heures de configuration et de dépannage.
Eclipse Mosquitto est un courtier MQTT open source qui implémente les protocoles MQTT v5, 3.1.1 et 3.1, ce qui le rend idéal pour les appareils IoT, les systèmes domotiques, les applications cloud et toute architecture orientée messages. Cependant, l'installation et la configuration de Mosquitto directement sur votre système entraînent souvent des conflits de dépendances, des problèmes d'autorisation et des difficultés spécifiques à la plateforme qui peuvent nuire à votre temps de développement. Vous finissez par consacrer plus de temps à la configuration qu'au développement de votre application proprement dite.
Docker élimine ces difficultés en fournissant un environnement cohérent et isolé pour exécuter Mosquitto sur n'importe quelle plateforme. Vous pouvez disposer d'un courtier MQTT entièrement fonctionnel en quelques minutes, avec des configurations personnalisées, une authentification et une persistance.
Dans ce guide, je vous guiderai à travers le déploiement d'Eclipse Mosquitto à l'aide de Docker et Docker Compose, la configuration de l'authentification et de la journalisation, la mise en place de la persistance des données et le test de votre courtier avec de véritables clients MQTT.
Êtes-vous totalement novice en matière de Docker ? Je vous recommande de commencer par notre cours d'introduction à Docker pour acquérir les bases.
Qu'est-ce que Mosquitto et pourquoi l'utiliser dans Docker ?
Vous n'avez pas besoin d'un système de messagerie complexe lorsque vous recherchez simplement une communication rapide et fiable entre les appareils.
MQTT est un protocole de publication-abonnement léger conçu pour les situations où la bande passante est limitée et où la fiabilité est essentielle. Pensez aux capteurs IoT, aux applications mobiles ou à tout scénario dans lequel des appareils doivent échanger rapidement de petits messages sans interrogation constante.
Mosquitto agit en tant qu'intermédiaire, ou courtier, entre les éditeurs et les abonnés.
Les éditeurs transmettent des messages sur des sujets spécifiques. Les abonnés suivent ces sujets. Mosquitto gère le routage, garantissant que les messages sont acheminés aux bons endroits sans que les éditeurs et les abonnés aient besoin de se connaître.
Voici pourquoi Docker améliore encore davantage les configurations Docker Mosquitto :
Mosquitto est disponible en deux versions : la version open source (qui couvre la plupart des cas d'utilisation) et la version commerciale Pro Edition de Cedalo, qui offre des fonctionnalités avancées telles que le clustering et une sécurité renforcée. Pour la plupart des projets, la version open source répond à tous vos besoins.
Ensuite, je vais passer en revue les prérequis, puis nous allons nous plonger dans l'installation de Mosquitto.
Conditions préalables
Il est nécessaire que Docker soit installé et opérationnel sur votre système avant de pouvoir déployer Mosquitto.
Docker Desktop est particulièrement adapté aux utilisateurs Windows et macOS, car il regroupe tous les éléments nécessaires dans un seul package. Les utilisateurs Linux peuvent installer l'interfaceCLI Docker d' directement via leur gestionnaire de paquets ou à partir du référentiel officiel de Docker.
Docker Compose n'est pas obligatoire, mais il facilite considérablement la gestion des configurations multi-conteneurs. La plupart des installations de Docker Desktop incluent Compose par défaut. Si vous utilisez Linux, il se peut que vous deviez l'installer séparément.
Vous devrez également posséder des compétences de base en matière de ligne de commande. Rien d'extraordinaire, simplement la possibilité d'exécuter des commandes, de naviguer dans les répertoires et de modifier des fichiers texte.
Configuration étape par étape
Pour exécuter Mosquitto Docker, trois étapes sont nécessaires : créer des répertoires, exécuter le conteneur et, éventuellement, configurer Docker Compose pour faciliter la gestion.
Création des répertoires requis
Mosquitto nécessite un stockage organisé pour sa configuration, ses données et ses journaux.
Veuillez les créer pour commencer :
Cela vous fournit des dossiers organisés pour les fichiers de configuration de Mosquitto, les données persistantes et la sortie des journaux.
Voici les fonctions de chaque répertoire :
/mosquitto/configstockemosquitto.confet tout fichier de configuration supplémentaire/mosquitto/datacontient des données de messages persistants et des informations d'abonnement/mosquitto/logcontient les fichiers journaux de Mosquitto destinés au débogage et à la surveillance.Ces répertoires sont montés en tant que volumes à l'intérieur du conteneur Docker, ce qui permet de conserver vos paramètres et vos données après le redémarrage du conteneur.
Exécution de Mosquitto avec Docker
La commande Docker de base permet de lancer Mosquitto avec un mappage de ports et des montages de volumes appropriés.
Image 1 - Exécution de Mosquitto avec Docker
Permettez-moi de vous expliquer ces drapeaux :
-dexécute le conteneur en arrière-plan (mode détaché)--name mosquittoattribue au conteneur un nom convivial pour faciliter la référence-p 1883:1883mappe le port 1883 de votre hôte vers le port 1883 du conteneur-vmonte les répertoires locaux en tant que volumes à l'intérieur du conteneurMosquitto 2.0+ fonctionne par défaut en mode local uniquement. Cela signifie qu'il n'accepte que les connexions provenant de localhost, à moins que vous ne le configuriez autrement. Il vous sera nécessaire de créer un fichier de configuration pour autoriser les connexions externes.
Utilisation de Docker Compose
Mosquitto Docker Compose simplifie considérablement la gestion de l'installation, en particulier lorsque vous exécutez plusieurs services.
Veuillez créer un fichier
docker-compose.ymlet y insérer le contenu suivant :Commencez par :
Image 2 - Exécution de Mosquitto avec Docker Compose
Les mappages de volume fonctionnent de la même manière que la commande Docker, mais Compose gère la complexité. La configuration du port couvre tous les protocoles MQTT courants : MQTT standard (1883), MQTTS sécurisé (8883) et connexions WebSocket (9001).
Compose est particulièrement performant dans les configurations multiservices. Par exemple, si vous utilisez Home Assistant, Node-RED ou d'autres outils IoT avec Mosquitto, vous pouvez définir tous les paramètres dans un seul fichier et démarrer tous les services simultanément.
Examinons maintenant la configuration plus en détail.
Trouvez-vous les concepts avancés de Docker complexes ? Notre cours Docker intermédiaire va au-delà des notions fondamentales.
Configuration de Mosquitto
Mosquitto n'accepte pas les connexions externes par défaut. Un fichier de configuration est nécessaire pour activer cette fonctionnalité.
Configuration de base (mosquitto.conf)
Veuillez créer un fichier
mosquitto.confdans votre répertoiremosquitto/configet y ajouter les éléments suivants :Le paramètre
allow_anonymous truepermet aux clients de se connecter sans informations d'identification. Cela fonctionne bien pour le développement ou les réseaux internes, mais il est recommandé de le désactiver pour les environnements de production. Lorsque vous définissezallow_anonymous false, chaque client doit s'authentifier à l'aide d'un nom d'utilisateur et d'un mot de passe.Le récepteur WebSocket sur le port 9001 permet l'utilisation de clients MQTT basés sur un navigateur. Les applications Web peuvent se connecter directement à votre courtier à l'aide de bibliothèques JavaScript telles que Paho MQTT.
Configuration de l'authentification
L'authentification nécessite la création d'un fichier de mots de passe et la mise à jour de votre configuration.
Veuillez générer un fichier de mots de passe à l'intérieur du conteneur :
Image 3 - Authentification Mosquitto
Cela crée un nouveau fichier de mot de passe et vous invite à saisir un mot de passe. Pour les utilisateurs supplémentaires, veuillez désactiver le drapeau d'
-c:Veuillez maintenant mettre à jour votre fichier
mosquitto.confafin de forcer l'authentification :Le fichier de mot de passe est stocké dans votre volume de configuration monté, il est donc conservé entre les redémarrages du conteneur.
Activation de TLS/SSL
Le chiffrement TLS protège votre trafic MQTT contre l'espionnage et la falsification.
Veuillez ajouter ces lignes à votre fichier
mosquitto.conf:Il vous sera nécessaire d'obtenir des certificats SSL pour votre domaine. Let's Encrypt fournit des certificats gratuits, ou vous pouvez utiliser des proxys inversés tels que Caddy Server qui gèrent automatiquement la génération de certificats. Veuillez placer vos fichiers de certificats dans le répertoire
mosquitto/configafin qu'ils soient accessibles à l'intérieur du conteneur.Persistance et journalisation
La persistance enregistre les messages et les abonnements sur le disque, tandis qu'une journalisation adéquate vous aide à résoudre les problèmes de connexion.
Vous pouvez configurer la persistance dans
mosquitto.confde la manière suivante :En ce qui concerne la journalisation, voici comment vous pouvez configurer une journalisation détaillée :
Les options de l'
log_typepermettent de filtrer les éléments enregistrés :erroretwarningpour le suivi de la productionnoticeetinformationpour des informations générales sur le fonctionnement.debugpour le dépannage des problèmes de connexionVos montages de volume garantissent que les données persistantes et les journaux sont conservés après le redémarrage des conteneurs. Le répertoire de données stocke tous les messages persistants et les informations d'abonnement, tandis que le répertoire de journaux conserve vos informations de débogage accessibles depuis le système hôte.
Les fichiers de configuration vous permettent de contrôler entièrement le comportement de Mosquitto sans avoir à reconstruire les conteneurs.
Vérification de la configuration
Votre courtier n'est utile qu'une fois que vous avez vérifié que les clients peuvent se connecter et échanger des messages.
Utilisation de mosquitto_pub et mosquitto_sub
Les outils en ligne de commande
mosquitto_pubetmosquitto_subconstituent le moyen le plus rapide de tester votre courtier.Veuillez commencer par installer Mosquitto, en fonction de votre plateforme :
sudo apt-get install mosquitto-clientsbrew install mosquittoCommençons par le tester sans authentification. Vous aurez besoin de deux fenêtres ou onglets de terminal. Veuillez exécuter ces commandes dans des sessions distinctes :
Dans l'onglet Publication, vous constaterez ce qui suit :
Image 4 - Publication d'un message
Dans l'onglet « S'abonner », vous verrez immédiatement le message suivant :
Image 5 - Abonnement à un sujet Mosquitto
Si une authentification est requise, les commandes sont similaires ; il vous suffira de fournir votre nom d'utilisateur et votre mot de passe :
Si vous ne souhaitez pas installer les clients Mosquitto localement, veuillez les exécuter dans votre conteneur Docker :
Vous trouverez ceci dans l'onglet « Publication » :
Image 6 - Publication d'un message sans authentification
Dans l'onglet « S'abonner », vous verrez le message suivant :
Image 7 - Abonnement à un sujet Mosquitto sans authentification
Test avec des clients MQTT
Les clients GUI facilitent le test de scénarios complexes et la surveillance du trafic de messages en cours.
MQTT Explorer offre une interface claire pour parcourir les sujets et envoyer des messages. Veuillez vous connecter à
localhost:1883et vous verrez une arborescence de tous les sujets actifs. Il est idéal pour déboguer les flux de messages et comprendre la structure de vos sujets.Image 8 - Application MQTT Explorer
MQTTX propose des fonctionnalités plus avancées telles que la création de scripts et l'envoi groupé de messages. Les deux clients prennent en charge l'authentification, les connexions TLS et les protocoles WebSocket.
Les utilisateurs de Home Assistant peuvent tester l'intégration MQTT directement à partir des outils de développement. Veuillez ajouter les informations relatives à votre courtier à l'intégration MQTT et utiliser l'interface de publication/abonnement intégrée.
Pour les tests programmatiques, le client Python Paho MQTT fonctionne efficacement :
Veuillez exécuter ce script dans un terminal, puis publier les messages à partir d'un autre terminal ou d'un client GUI. Le script affichera tous les messages qu'il reçoit, confirmant ainsi que votre courtier achemine correctement le trafic.
Voici la procédure à suivre pour publier un message :
Image 9 - Publication d'un message pour l'exemple Python
Vous constaterez cela dans la session du terminal où le script Python est exécuté :
Image 10 - Réception d'un message pour l'exemple Python
Les opérations de publication et d'abonnement fonctionnelles indiquent que votre configuration Docker Mosquitto est prête pour des applications réelles.
Intégration de Mosquitto Docker avec Home Assistant
L'exécution de Mosquitto parallèlement à Home Assistant dans Docker permet de créer un hub de messagerie IoT complet sans aucune configuration réseau complexe.
Docker Compose simplifie considérablement cette opération. Les deux services peuvent communiquer via le réseau interne de Docker sans exposer de ports supplémentaires ni gérer d'adresses IP.
Voici un exemple complet d'
docker-compose.ymlation qui exécute les deux services :La section
networkscrée un réseau partagé où les deux conteneurs peuvent se joindre mutuellement par leur nom. Home Assistant peut se connecter àmosquitto:1883au lieu d'utiliser localhost ou des adresses IP.Veuillez démarrer les deux services avec :
Veuillez ensuite configurer l'intégration MQTT via l'interface web de Home Assistant. Veuillez vous rendre dans Paramètres > Appareils et services > Ajouter une intégration, puis recherchez « MQTT ».
Veuillez saisir les informations de connexion suivantes :
mosquitto(nom du conteneur)1883Veuillez cliquer sur « Soumettre » et Home Assistant testera la connexion. Si l'opération est réussie, MQTT apparaîtra dans votre liste d'intégrations.
Image 11 - Configuration de Mosquitto avec Homelab
Vous pouvez désormais ajouter des appareils MQTT, créer des automatisations qui publient des messages et surveiller les données des capteurs via des sujets. L'intégration MQTT de Home Assistant gère automatiquement la détection des appareils compatibles.
Dépannage des problèmes courants
La plupart des problèmes rencontrés avec Docker Mosquitto sont liés à des autorisations, des ports ou des erreurs de configuration qui bloquent les connexions.
Erreurs d'autorisation avec les volumes montés
Ces problèmes surviennent lorsque le conteneur ne peut pas écrire dans vos répertoires hôtes. Vous observerez des messages d'erreur tels que « Permission refusée » ou « Impossible de créer le répertoire » dans les journaux.
Veuillez corriger cela en définissant les droits d'accès appropriés sur vos répertoires :
Le conteneur Mosquitto s'exécute sous l'ID utilisateur 1883, il est donc nécessaire que vos répertoires hôtes correspondent. Sur certains systèmes, il peut être nécessaire de créer l'utilisateur au préalable :
Conflits de ports
Ces problèmes surviennent lorsque le port 1883 est déjà utilisé par un autre élément. Veuillez vérifier ce qui est en cours d'exécution sur ce port :
Si un autre service utilise le port, veuillez soit l'arrêter, soit attribuer un autre port à Mosquitto :
Le mode local uniquement empêche les connexions externes.
Ceci se produit même lorsque votre conteneur est en cours d'exécution. Mosquitto 2.0+ accepte par défaut uniquement les connexions provenant de localhost, sauf si vous le configurez autrement.
Veuillez créer un fichier
mosquitto.confde base pour autoriser les connexions externes :Veuillez placer ce fichier dans votre répertoire
mosquitto/configet redémarrer le conteneur.Vider les répertoires au démarrage
Cela signifie que vos montages de volume ne fonctionnent pas correctement. Veuillez vérifier que vos chemins d'accès sont absolus et que les répertoires existent :
Veuillez créer les répertoires avant de démarrer le conteneur :
Conflit entre les identifiants UID/GID de l'hôte et du conteneur
Cela entraînera des problèmes persistants liés aux autorisations. Le conteneur est configuré pour fonctionner sous l'utilisateur 1883, mais il est possible que votre système hôte ait des exigences différentes en matière de propriété.
Veuillez forcer le conteneur à s'exécuter en tant qu'utilisateur :
Ou modifiez les autorisations de votre répertoire hôte afin qu'elles correspondent aux attentes du conteneur. L'approche par conteneur est plus efficace pour le développement, tandis que la correction des autorisations de l'hôte est plus efficace pour les déploiements en production.
Veuillez vérifier les journaux du conteneur lorsque les éléments ne fonctionnent pas correctement ; ils indiquent généralement avec précision le problème rencontré.
Avancé : Fonctionnalités de Mosquitto Pro Edition
La version open source de Mosquitto couvre la plupart des cas d'utilisation, mais les environnements d'entreprise nécessitent des fonctionnalités que seule la version Pro Edition offre.
L' s de gestion des utilisateurs basée sur les rôles vous permet de définir des autorisations granulaires pour différents groupes d'utilisateurs. Au lieu de gérer l'accès de chaque utilisateur individuellement, vous pouvez créer des rôles tels que « lecteurs de capteurs », « contrôleurs d'actionneurs » ou « utilisateurs administrateurs » et attribuer des autorisations à l'ensemble des rôles. Les utilisateurs héritent des autorisations des rôles qui leur sont attribués, ce qui facilite la gestion des accès sur des centaines, voire des milliers d'appareils.
Vous pouvez restreindre l'accès par modèles de sujets, plages d'adresses IP ou fenêtres temporelles. Cela est plus efficace que de configurer manuellement les fichiers ACL lorsque vous gérez des déploiements IoT complexes avec différentes exigences de sécurité.
Les options d'authentification avancées vont au-delà des simples combinaisons nom d'utilisateur/mot de passe. L'authentification par jeton JWT s'intègre aux fournisseurs d'identité existants tels que Auth0, Okta ou le système SSO de votre entreprise. L'intégration LDAP se connecte directement à Active Directory ou à d'autres services d'annuaire d'entreprise.
L'inspection approfondie et l' de surveillance vous offrent une visibilité en temps réel sur les flux de messages, les modèles de connexion et les performances des courtiers. La version Pro comprend des tableaux de bord intégrés qui indiquent quels clients consomment le plus de bande passante, quels sujets génèrent le plus grand nombre de messages et où se forment les goulots d'étranglement.
Vous obtenez des mesures détaillées sur la latence des messages, la profondeur des files d'attente et les modèles de comportement des clients. Ces données vous permettent d'optimiser les structures thématiques et d'identifier les clients problématiques avant qu'ils n'aient un impact sur l'ensemble du système.
Les intégrations de bases de données et de services cloud éliminent le besoin d'applications passerelles personnalisées. La version Pro peut transférer automatiquement les messages vers PostgreSQL, MongoDB, InfluxDB, AWS IoT Core, Azure IoT Hub ou Google Cloud IoT. Vous définissez des règles de routage qui déterminent la destination des messages en fonction des modèles de sujet, du contenu des messages ou des métadonnées client.
Les files d'attente persistantes gèrent les scénarios à haut volume où la persistance standard de Mosquitto n'est pas suffisante. La version Pro peut mettre en mémoire tampon des millions de messages pour les clients hors ligne et répartir la charge sur plusieurs instances de courtier. Il comprend une gestion automatique des files d'attente qui empêche l'épuisement de la mémoire et garantit l'ordre des messages.
La prise en charge du clustering vous permet d'exécuter plusieurs instances de courtier qui partagent la charge des messages et offrent une protection en cas de défaillance. Lorsqu'un courtier tombe en panne, les clients se reconnectent automatiquement à des instances saines sans perdre de messages ni d'abonnements.
La version Pro est particulièrement utile lorsque vous avez besoin d'une fiabilité et de fonctionnalités de gestion de niveau professionnel qui prendraient des mois à développer par vous-même.
Avantages et inconvénients de l'utilisation de Mosquitto dans Docker
Docker facilite le déploiement, mais ce n'est pas la solution idéale dans tous les cas.
Avantages
mosquittosur un autre ordinateur, exécutez la même commande Docker, et vous serez de nouveau en ligne. Le transfert entre différents fournisseurs de services cloud ou la mise à niveau du matériel informatique se résume à un simple transfert de fichiers.Inconvénients
Docker ne présente pas que des avantages.
Docker est la solution idéale lorsque vous avez besoin de déploiements cohérents et d'une gestion simplifiée dans différents environnements.
Conclusion
L'exécution de Mosquitto dans Docker vous offre un courtier MQTT fiable qui fonctionne de manière cohérente dans tous les environnements. Que vous réalisiez des prototypes d'appareils IoT, développiez des systèmes domotiques ou connectiez des capteurs, Docker élimine la complexité de la configuration et vous permet de vous concentrer sur votre projet.
Si vous envisagez d'utiliser Mosquitto en production, veuillez garder à l'esprit les points suivants :
mosquitto_passwdet configurer le chiffrement TLS avec les certificats appropriés.Un courtier MQTT non sécurisé constitue une porte ouverte aux attaquants qui souhaitent surveiller les communications des appareils ou injecter des commandes malveillantes.
Pour les déploiements d'entreprise qui nécessitent des fonctionnalités avancées telles que le contrôle d'accès basé sur les rôles, le clustering ou l'intégration LDAP, Mosquitto Pro Edition fournit des outils de gestion et une évolutivité qui surpassent la version open source.
Êtes-vous prêt à améliorer vos compétences en matière de Docker et Kubernetes ? Inscrivez-vous à notre formation sur la conteneurisation et la virtualisation avec Docker et Kubernetes pour suivre un cursus de compétences pertinentes et trouver un emploi.