Générateur de mosquitto.conf

Choisissez listeners, TLS, WebSockets, authentification, persistance et logs, et obtenez une configuration Mosquitto 2.x commentée avec les commandes mosquitto_passwd, Docker et systemd correspondantes.

Chemins pour
Listeners
Authentification
Persistance
Limites
Journalisation
log_dest
mosquitto.conf
# mosquitto.conf — Mosquitto 2.x
# Generated with the TestMQTT mosquitto.conf generator.
# Full reference: man mosquitto.conf  /  https://mosquitto.org/man/mosquitto-conf-5.html

# ------------------------------------------------------------------
# General
# ------------------------------------------------------------------
# One set of authentication settings shared by every listener.
per_listener_settings false

# ------------------------------------------------------------------
# Persistence
# ------------------------------------------------------------------
# Save retained messages, subscriptions and queued QoS 1/2 messages to disk.
persistence true
persistence_location /var/lib/mosquitto/

# ------------------------------------------------------------------
# Logging
# ------------------------------------------------------------------
log_dest file /var/log/mosquitto/mosquitto.log
log_type error
log_type warning
log_type notice
log_type information
log_timestamp true
log_timestamp_format %Y-%m-%dT%H:%M:%S

# ------------------------------------------------------------------
# Security (applies to all listeners)
# ------------------------------------------------------------------
allow_anonymous false
password_file /etc/mosquitto/passwd

# ------------------------------------------------------------------
# Listeners
# ------------------------------------------------------------------
# MQTT over TCP
listener 1883

# MQTT over WebSockets
listener 9001
protocol websockets

Créer les utilisateurs

shell
# Create the password file with the first user (-c creates / overwrites it)
sudo mosquitto_passwd -c /etc/mosquitto/passwd alice

# Add more users later — without -c
sudo mosquitto_passwd /etc/mosquitto/passwd bob

# Mosquitto 2.x warns if the file is readable by other users
sudo chown mosquitto:mosquitto /etc/mosquitto/passwd
sudo chmod 0700 /etc/mosquitto/passwd

Lancer avec Docker

shell
# Layout: ./config/mosquitto.conf, ./config/passwd
mkdir -p config data log
cp mosquitto.conf config/mosquitto.conf

docker run -d --name mosquitto --restart unless-stopped \
  -p 1883:1883 \
  -p 9001:9001 \
  -v "$PWD/config:/mosquitto/config" \
  -v "$PWD/data:/mosquitto/data" \
  -v "$PWD/log:/mosquitto/log" \
  eclipse-mosquitto:2

docker logs -f mosquitto

# Tip: set "Paths for" to Docker so the file paths in the config match the container.

Appliquer sur un serveur Linux (systemd)

shell
# Install the config
sudo cp mosquitto.conf /etc/mosquitto/mosquitto.conf

# Optional: run in the foreground to spot config errors (Ctrl+C to stop)
sudo systemctl stop mosquitto
sudo mosquitto -c /etc/mosquitto/mosquitto.conf -v

# Restart the service and follow its log
sudo systemctl restart mosquitto
sudo systemctl status mosquitto
sudo journalctl -u mosquitto -f

Le mode local par défaut de Mosquitto 2.0

Mosquitto 2.0 a modifié ses valeurs par défaut pour être sécurisé dès l’installation. Si la configuration ne contient aucune ligne listener, le broker n’écoute que sur localhost et refuse les clients anonymes sauf autorisation explicite. Voilà pourquoi une installation neuve fonctionne souvent avec mosquitto_sub sur la même machine mais rejette tous les autres appareils. La solution : un listener explicite et un choix clair d’authentification — exactement ce qu’écrit ce générateur. Vous partez de zéro ? Commencez par installer Mosquitto.

Listeners

Chaque ligne listener ouvre un port et démarre un bloc : les lignes suivantes (protocole, certificats, max_connections) appartiennent à ce listener jusqu’au suivant. Le port 1883 correspond au MQTT simple, le 8883 au MQTT sur TLS, et un listener avec protocol websockets sert les clients navigateur — 9001 est le choix habituel. Ajoutez une adresse d’écoute facultative comme 127.0.0.1 pour réserver un listener à l’hôte. Le guide des ports MQTT et MQTT sur WebSockets expliquent les conventions.

Les listeners TLS nécessitent un certfile et un keyfile ; avec Let’s Encrypt, il s’agit de fullchain.pem et privkey.pem. cafile n’est requis que si vous activez require_certificate pour authentifier les clients par leur propre certificat.

Authentification et ACL

allow_anonymous false associé à un password_file est le minimum pour tout broker accessible depuis un réseau. Créez le fichier avec mosquitto_passwd -c — attention, -c écrase un fichier existant : omettez-le pour ajouter d’autres utilisateurs. Un acl_file limite ensuite les topics que chaque utilisateur peut lire ou écrire ; l’exemple généré montre des règles par utilisateur et des règles pattern avec les substitutions %u et %c. Lisez l’authentification Mosquitto pour un guide complet.

per_listener_settings doit figurer avant les listeners. Laissez-le à false pour un jeu de règles commun ; passez-le à true lorsque, par exemple, un listener localhost doit rester anonyme alors que le listener public exige des mots de passe.

Persistance, logs et limites

Avec persistence true, les messages retenus, les sessions persistantes et les messages QoS 1 et 2 en file d’attente survivent aux redémarrages dans mosquitto.db, à l’intérieur de persistence_location (gardez la barre oblique finale). Sur un serveur, journalisez dans un fichier ; dans Docker, vers stdout pour que docker logs affiche tout. max_packet_size rejette les paquets trop volumineux et remplace l’ancien message_size_limit ; max_connections plafonne le nombre de clients par listener.

Mise en service

Pour les conteneurs, basculez les chemins sur Docker afin qu’ils correspondent à l’arborescence de l’image officielle, puis suivez exécuter Mosquitto avec Docker. Sur un serveur, testez le fichier au premier plan avec mosquitto -c … -v avant de redémarrer le service. Une fois le broker lancé, connectez-vous avec le client MQTT en ligne via WebSockets et consultez les bonnes pratiques de sécurité MQTT avant de l’exposer sur Internet.

FAQ mosquitto.conf

Pourquoi les clients n’arrivent-ils pas à se connecter à Mosquitto 2.0 depuis une autre machine ?

Depuis la version 2.0, Mosquitto démarré sans directive listener n’écoute que sur localhost et refuse les clients anonymes. Ajoutez un listener explicite comme "listener 1883" et configurez un password_file ou définissez allow_anonymous true.

Où se trouve le fichier mosquitto.conf ?

Les paquets Linux l’installent dans /etc/mosquitto/mosquitto.conf, Homebrew utilise /opt/homebrew/etc/mosquitto/mosquitto.conf et l’image Docker officielle lit /mosquitto/config/mosquitto.conf.

À quoi sert per_listener_settings ?

À false (valeur par défaut), allow_anonymous, password_file et acl_file s’appliquent à tous les listeners. À true, chaque listener a ses propres réglages d’authentification — par exemple un accès anonyme sur un port limité à localhost et des mots de passe sur le port public.

Faut-il redémarrer Mosquitto après l’ajout d’un utilisateur ?

Mosquitto relit les fichiers de mots de passe et d’ACL lorsqu’il reçoit SIGHUP : systemctl reload mosquitto ou un redémarrage suffit. Les modifications de listeners nécessitent toujours un redémarrage complet.

Par les créateurs de TestMQTT

Vous préférez ne pas gérer votre propre broker ?

Les brokers de test publics sont partagés avec des milliers d’inconnus. ConnectMQ vous offre un broker MQTT privé, fiable pour de vrais appareils — prêt en quelques minutes.

  • Votre propre broker isolé — personne d’autre ne peut lire vos topics
  • Authentification par identifiant / mot de passe et contrôle d’accès par topic
  • TLS et WebSocket sécurisé, MQTT 3.1.1 et MQTT 5
  • Le même code client, du premier test à la production