Mosquitto est un service MQTT (Message Queuing Telemetry Transport) permettant de mettre en place facilement du queuing de message grace à son protocole publish-subscribe. Il est très largement utilisé dans des applications liées aux objets communiquants.
Il servira a collecter les données de différents capteurs et les rendre accessibles en un point unique, sous forme de queue, à d’autres outils exploitant ces données.
Installation
-
Créer le répertoire pour Mosquitto :
$ sudo mkdir /opt/mosquitto -
Dans Portainer, créer un nouveau stack nommé
mosquitto. -
Ajouter le contenu du fichier compose ci-dessous :
Sans Traefik :
--- version: "3" services: mosquitto: image: eclipse-mosquitto container_name: mosquitto_broker volumes: - /opt/mosquitto/config:/mosquitto/config - /opt/mosquitto/data:/mosquitto/data - /opt/mosquitto/log:/mosquitto/log ports: - 1884:1883 - 9001:9001 restart: unless-stopped networks: - defaultIl n’y a pas de frontal web, donc pas besoin de configuration spécifique pour le reverse proxy. De plus, j’ai modifié le port exposé par défaut, car le port 1883 était déjà utilisé par un autre service.
-
Cliquer sur
Deploy the stacken bas de la page. -
Depuis le client MQTT Explorer, vous pouvez vérifier que l’accès au serveur fonctionne bien. Néanmoins, vous ne verrez pas grand chose tant qu’aucune donnée ne lui est envoyé.
Utilisateurs
Gestion des utilisateurs
La manuipulation des utilisateur se fait directement depuis la console du container, celui-ci disposant de l’outil nécessaire.
Attacher la console du container :
$ sudo docker exec -it mosquitto_broker sh
- Créer le fichier d’utilisateur intial (à utilisateur une seule fois seulement, sinon le fichier est écrasé) :
/ # mosquitto_passwd -c /mosquitto/config/pwfile <USERNAME>
- Ajouter un utilisateur supplémentaire :
/ # mosquitto_passwd /mosquitto/config/pwfile <USERNAME>
- Pour supprimer un utilisateur :
/ # mosquitto_passwd -D /mosquitto/config/pwfile <USERNAME>
ACLs
La gestion des ACLs peut se faire depuis l’hôte, car il ne s’agit que d’un fichier texte.
Editer le fichier /opt/mosquitto/config/acl :
# Allow anonymous to read all
topic read #
# Allow readwrite to user1
user user1
topic readwrite foo/bar/#
# Allow readwrite to user2
user user2
topic readwrite foo/+/bar
+: wildcard simple
#: wildcard multiple
Sources :