Generador de mosquitto.conf
Elige listeners, TLS, WebSockets, autenticación, persistencia y logs, y obtén una configuración comentada de Mosquitto 2.x con los comandos de mosquitto_passwd, Docker y systemd correspondientes.
# 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 websocketsCrear usuarios
# 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/passwdEjecutar con Docker
# 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.Aplicar en un servidor Linux (systemd)
# 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 -fEl modo solo-local por defecto de Mosquitto 2.0
Mosquitto 2.0 cambió los valores por defecto para ser seguro desde el primer momento. Si la configuración no contiene ninguna línea listener, el broker solo escucha en localhost y rechaza a los clientes anónimos salvo que los permitas explícitamente. Por eso una instalación nueva suele funcionar con mosquitto_sub en la misma máquina pero rechaza cualquier otro dispositivo. La solución es un listener explícito y una decisión sobre la autenticación, justo lo que escribe este generador. ¿Partes de cero? Empieza por cómo instalar Mosquitto.
Listeners
Cada línea listener abre un puerto e inicia un bloque: las líneas que la siguen (protocolo, certificados, max_connections) pertenecen a ese listener hasta el siguiente. El puerto 1883 es MQTT plano, el 8883 es MQTT sobre TLS y un listener con protocol websockets sirve a clientes de navegador; 9001 es la elección habitual. Añade una dirección de enlace opcional como 127.0.0.1 para que un listener solo sea accesible desde el propio host. La guía de puertos MQTT y MQTT sobre WebSockets explican las convenciones.
Los listeners TLS necesitan un certfile y un keyfile; con Let’s Encrypt son fullchain.pem y privkey.pem. cafile solo es obligatorio si activas require_certificate para autenticar a los clientes con sus propios certificados.
Autenticación y ACLs
allow_anonymous false junto con un password_file es lo mínimo para cualquier broker accesible desde una red. Crea el archivo con mosquitto_passwd -c; ten en cuenta que -c sobrescribe un archivo existente, así que omítelo al añadir más usuarios. Después, un acl_file restringe qué topics puede leer o escribir cada usuario; el ejemplo generado muestra reglas de usuario y reglas pattern con las sustituciones %u y %c. Lee autenticación en Mosquitto para una guía completa.
per_listener_settings debe aparecer antes de los listeners. Déjalo en false para un único conjunto de reglas compartido; ponlo en true cuando, por ejemplo, un listener de localhost deba seguir siendo anónimo mientras el público exige contraseñas.
Persistencia, logs y límites
Con persistence true, los mensajes retenidos, las sesiones persistentes y los mensajes QoS 1 y 2 en cola sobreviven a los reinicios en mosquitto.db dentro de persistence_location (mantén la barra final). En un servidor, escribe los logs en un archivo; en Docker, en stdout para que docker logs lo muestre todo. max_packet_size rechaza paquetes demasiado grandes y sustituye al obsoleto message_size_limit; max_connections limita los clientes por listener.
Ponerlo en marcha
Para contenedores, cambia las rutas a Docker para que coincidan con la estructura de la imagen oficial y sigue cómo ejecutar Mosquitto en Docker. En un servidor, prueba el archivo en primer plano con mosquitto -c … -v antes de reiniciar el servicio. Cuando esté en marcha, conéctate con el cliente MQTT online por WebSockets y revisa las buenas prácticas de seguridad MQTT antes de exponerlo a internet.
Preguntas frecuentes sobre mosquitto.conf
¿Por qué los clientes no pueden conectarse a Mosquitto 2.0 desde otra máquina?
Desde la versión 2.0, Mosquitto arrancado sin una directiva listener solo escucha en localhost y rechaza a los clientes anónimos. Añade un listener explícito como "listener 1883" y configura un password_file o establece allow_anonymous true.
¿Dónde está el archivo mosquitto.conf?
Los paquetes de Linux lo instalan en /etc/mosquitto/mosquitto.conf, Homebrew usa /opt/homebrew/etc/mosquitto/mosquitto.conf y la imagen oficial de Docker lee /mosquitto/config/mosquitto.conf.
¿Qué hace per_listener_settings?
Cuando es false (el valor por defecto), allow_anonymous, password_file y acl_file se aplican a todos los listeners. Cuando es true, cada listener tiene su propia configuración de autenticación; por ejemplo, acceso anónimo en un puerto solo de localhost y contraseñas en el público.
¿Tengo que reiniciar Mosquitto después de añadir un usuario?
Mosquitto vuelve a leer los archivos de contraseñas y ACL cuando recibe SIGHUP, así que basta con systemctl reload mosquitto o un reinicio. Los cambios en los listeners siempre requieren un reinicio completo.