Outils pour utilisateurs

Outils du site


software:applications:mosquitto

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
software:applications:mosquitto [2022/02/02 20:50] yoannsoftware:applications:mosquitto [2023/02/15 10:28] (Version actuelle) – Complétion modification authentification yoann
Ligne 44: Ligne 44:
  
 Pour envoyer des messages MQTT via une application Python, voir note [[dev:python:mqtt | Publier des messages MQTT en Python]]. Pour envoyer des messages MQTT via une application Python, voir note [[dev:python:mqtt | Publier des messages MQTT en Python]].
 +
 +3 répertoire sont dédiés dans l'image pour la configuration le stockage persistant et les logs:
 +
 +  * /mosquitto/config
 +  * /mosquitto/data
 +  * /mosquitto/log
 +
 +===== Horodatage des logs Docker =====
 +
 +Par défaut les logs sont générés sur la sortie erreur standard et le timestamp n'est pas mis en forme.
 +
 +Lorsqu'on affiche les logs via **docker logs** ou **docker-compose logs** on obtient une sortie de la forme:
 +
 +<file>
 +mosquitto_1        | chown: /mosquitto/config/mosquitto.conf: Read-only file system
 +mosquitto_1        | chown: /mosquitto/config/password_file: Read-only file system
 +mosquitto_1        | 1649928188: mosquitto version 2.0.14 starting
 +mosquitto_1        | 1649928188: Config loaded from /mosquitto/config/mosquitto.conf.
 +mosquitto_1        | 1649928188: Opening ipv4 listen socket on port 1883.
 +mosquitto_1        | 1649928188: Opening ipv6 listen socket on port 1883.
 +mosquitto_1        | 1649928188: mosquitto version 2.0.14 running
 +. . .
 +</file>
 +
 +Pour faciliter la relecture des logs, on peut modifier cette sortie par défaut et définir une mise en forme pour le timestamp dans le fichier de configuration de Mosquitto:
 +
 +<file conf>
 + Set the format of the log timestamp. If left unset, this is the number of
 +# seconds since the Unix epoch.
 +# This is a free text string which will be passed to the strftime function. To
 +# get an ISO 8601 datetime, for example:
 +#log_timestamp_format
 +log_timestamp_format %Y-%m-%dT%H:%M:%S
 +</file>
 +
 +Après redémarrage du service, les dates sont affichées correctement:
 +
 +<file>
 +mosquitto_1        | 2022-04-14T09:33:08: mosquitto version 2.0.14 starting
 +mosquitto_1        | 2022-04-14T09:33:08: Config loaded from /mosquitto/config/mosquitto.conf.
 +mosquitto_1        | 2022-04-14T09:33:08: Opening ipv4 listen socket on port 1883.
 +mosquitto_1        | 2022-04-14T09:33:08: Opening ipv6 listen socket on port 1883.
 +mosquitto_1        | 2022-04-14T09:33:08: mosquitto version 2.0.14 running
 +</file>
 +
 +
 +===== Gestion de l'authentification =====
 +
 +Lors du développement, on peut vouloir autoriser les connexions clientes sans authentification:
 +
 +<file>
 +# Mosquitto écoute sur le port 1883
 +listener 1883
 +
 +# Accepte les connexions clientes sans authentification
 +allow_anonymous true
 +</file>
 +
 +Il est important de restreindre l'accès au Broker pour que seuls les clients autorisés puissent se connecter. Plusieurs méthodes d'authentification existent, au minima on pourra utiliser 
 +
 +Modifier le fichier de configuration pour utiliser une authentification par mot de passe:
 +<code bash>
 +password_file /etc/mosquitto/password_file
 +</code>
 +
 +L'utilitaire **mosquitto_passwd** permet d'enregistrer des couples user/password dans un fichier:
 +<code bash>
 +# créer un nouveau fichier
 +mosquitto_passwd -c password_file username
 +
 +# Pour altérer un fichier existant, ne pas utiliser l'option -c
 +# créer ou modifier l'utilisateur username
 +mosquitto_passwd password_file username
 +
 +# supprimer l'utilisateur username
 +mosquitto_passwd password_file -D username
 +</code>
 +
 +Dans l'exemple ci-dessous on crée un fichier vide et on utilise un conteneur Docker pour peupler le fichier:
 +
 +<code bash>
 +touch password_file
 +
 +# Création d'un conteneur éphémère pour exécuter la commande mosquitto_pwd et peupler le fichier monté
 +# en écriture dans le conteneur
 +docker container run -it --rm --name 'create_conf' -v ${PWD}/password_file:/password_file:rw eclipse-mosquitto:2.0.14 mosquitto_passwd /password_file user-test
 +</code>
 +
 +Envoyer un signal **SIGHUP** à Mosquitto pour que les modifications apportées au fichier de configuration soient prises en compte ou redémarrer le service:
 +<code bash>
 +docker container kill --signal SIGHUP mqtt_mosquitto
 +</code>
 +
  
 ===== Références ===== ===== Références =====
Ligne 50: Ligne 143:
   * http://mosquitto.org/man/mosquitto_pub-1.html   * http://mosquitto.org/man/mosquitto_pub-1.html
   * http://mosquitto.org/man/mosquitto_sub-1.html   * http://mosquitto.org/man/mosquitto_sub-1.html
 +  * https://mosquitto.org/documentation/authentication-methods/
 +  * https://hub.docker.com/_/eclipse-mosquitto
software/applications/mosquitto.1643835031.txt.gz · Dernière modification : 2022/02/02 20:50 de yoann