Tutoriales

Cómo instalar el broker MQTT Mosquitto (Ubuntu, Debian, Windows, macOS)

Instala el broker MQTT Mosquitto en Ubuntu, Debian, Windows o macOS, ejecútalo como servicio, pruébalo con mosquitto_sub/pub y evita el modo solo local de 2.x.

Actualizado · 7 min de lectura

Eclipse Mosquitto es el broker MQTT open source más usado: pequeño, rápido y disponible para prácticamente cualquier sistema operativo. Este tutorial muestra cómo instalar Mosquitto en Ubuntu, Debian, Windows y macOS, ejecutarlo como servicio en segundo plano, verificarlo con los clientes de línea de comandos y evitar la trampa más común de Mosquitto 2.x — el broker que rechaza en silencio las conexiones remotas.

¿Eres nuevo en MQTT? Lee primero qué es MQTT; si prefieres no instalar nada en el host, consulta Mosquitto en Docker.

Instalar Mosquitto en Ubuntu y Debian

Mosquitto está en los repositorios por defecto de Ubuntu y Debian. El broker y los clientes CLI son paquetes separados, así que instala ambos:

Ubuntu / Debian
sudo apt update
sudo apt install -y mosquitto mosquitto-clients

Los paquetes de las distribuciones pueden ir por detrás de las versiones oficiales. Si necesitas la versión más reciente en Ubuntu, el proyecto Mosquitto publica un PPA:

Opcional: la última versión desde el PPA (Ubuntu)
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt update
sudo apt install -y mosquitto mosquitto-clients

Comprueba qué versión tienes:

bash
mosquitto -h | head -n 1

Ejecutar Mosquitto como servicio de systemd

El paquete de Debian registra una unidad systemd mosquitto y normalmente la arranca de inmediato. Usa los comandos habituales para gestionarla:

systemd
sudo systemctl enable --now mosquitto   # start now and at boot
sudo systemctl status mosquitto         # is it running?
sudo systemctl restart mosquitto        # after editing the config
journalctl -u mosquitto -f              # follow the logs

El archivo de configuración principal es /etc/mosquitto/mosquitto.conf. Incluye todos los archivos *.conf de /etc/mosquitto/conf.d/, que es el lugar más limpio para tus propios ajustes.

Instalar Mosquitto en Windows

  1. Descarga el instalador de Windows (.exe de 64 bits) desde la página oficial de descargas en mosquitto.org/download.
  2. Ejecútalo. Deja seleccionado el componente Service si quieres que Mosquitto se ejecute como servicio de Windows. La ruta de instalación por defecto es C:\Program Files\mosquitto.
  3. Añade esa carpeta a tu PATH para que mosquitto_pub y mosquitto_sub funcionen desde cualquier terminal.

Inicia el servicio desde un PowerShell o Símbolo del sistema como administrador:

Windows (administrador)
net start mosquitto
# or run in the foreground with verbose logging:
cd "C:\Program Files\mosquitto"
.\mosquitto.exe -c mosquitto.conf -v

Instalar Mosquitto en macOS

Con Homebrew basta una línea, y el gestor de servicios de Homebrew lo mantiene ejecutándose en segundo plano:

macOS (Homebrew)
brew install mosquitto
brew services start mosquitto     # run as a background service
brew services info mosquitto      # check status

El archivo de configuración está bajo el prefijo de Homebrew: /opt/homebrew/etc/mosquitto/mosquitto.conf en Apple Silicon o /usr/local/etc/mosquitto/mosquitto.conf en Macs Intel. Los clientes vienen incluidos en la misma fórmula.

Verificar la instalación con mosquitto_sub y mosquitto_pub

Abre dos terminales en la máquina donde corre el broker. Suscríbete en la primera:

Terminal 1 — suscribirse
mosquitto_sub -h localhost -t 'test/#' -v

Publica desde la segunda:

Terminal 2 — publicar
mosquitto_pub -h localhost -t 'test/hello' -m 'Mosquitto works'

La terminal 1 debería mostrar test/hello Mosquitto works. Para ver todas las opciones, ten a mano nuestra chuleta de mosquitto_pub y mosquitto_sub.

La trampa del “local only mode” de Mosquitto 2.x

La prueba en localhost funciona, pero un cliente en otra máquina recibe connection refused. Es así por diseño. Desde la versión 2.0, si mosquitto.conf no define ningún listener, Mosquitto solo escucha en la interfaz de loopback y escribe en el log algo como:

log de mosquitto
Starting in local only mode. Connections will only be possible from clients running on this machine.
Create a configuration file which defines a listener to allow remote access.

Además, Mosquitto 2.x usa por defecto allow_anonymous false en cuanto defines un listener. Así que abrir el puerto no basta — también tienes que decidir cómo se autentican los clientes. Crea un pequeño archivo de configuración:

/etc/mosquitto/conf.d/local.conf — solo para una prueba rápida
listener 1883
allow_anonymous true
/etc/mosquitto/conf.d/local.conf — recomendado
listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwd

Reinicia el broker (sudo systemctl restart mosquitto) y el puerto será accesible desde la red. Crear el archivo de contraseñas y añadir ACL y TLS se explica paso a paso en cómo proteger Mosquitto. Para generar una configuración sin memorizar directivas, usa el generador de mosquitto.conf.

Opcional: activar WebSockets

Los clientes en el navegador no pueden usar TCP directo. Para probar tu broker desde una página web, añade un segundo listener con el protocolo WebSockets (consulta MQTT sobre WebSockets y los puertos MQTT):

Listener WebSocket
listener 9001
protocol websockets

Ten en cuenta que una página servida por HTTPS solo puede abrir conexiones wss://, así que para un cliente web en internet también necesitarás TLS en ese listener. Antes de llegar tan lejos, puedes hacerte una idea de MQTT con un broker público de prueba en el navegador:

Pruébalo en el cliente MQTT online

Dónde guarda Mosquitto sus archivos

PlataformaConfiguraciónLogs
Ubuntu / Debian/etc/mosquitto/mosquitto.conf + conf.d//var/log/mosquitto/mosquitto.log y journalctl -u mosquitto
WindowsC:\Program Files\mosquitto\mosquitto.confDonde apunte log_dest file; si no, usa -v en primer plano
macOS (Homebrew)$(brew --prefix)/etc/mosquitto/mosquitto.confbrew services info mosquitto muestra la ruta del log

Sea cual sea la plataforma, ejecuta mosquitto -c <path-to-conf> -v en una terminal cuando algo no arranque: muestra los errores de configuración directamente en lugar de esconderlos en el log de un servicio. Detén antes el servicio, o la instancia en primer plano fallará porque el puerto ya está ocupado.

Solución de problemas en una instalación nueva

SíntomaCausa probableSolución
Connection refused desde otro hostModo solo local (sin listener)Añade listener 1883 y reinicia
“not authorised” / código CONNACK 5Acceso anónimo desactivadoPasa -u/-P o configura un archivo de contraseñas
“Address already in use”Otro broker u otra instancia ocupa el puerto 1883Detenlo, o compruébalo con sudo ss -ltnp | grep 1883
El servicio no arranca tras editar la configuraciónErrata o permisos de archivo incorrectosEjecuta mosquitto -c /etc/mosquitto/mosquitto.conf -v en primer plano para ver el error

Para otros códigos CONNACK y timeouts, consulta la guía de errores de conexión MQTT.

Próximos pasos

Preguntas frecuentes

¿Por qué Mosquitto solo acepta conexiones desde localhost?

Desde Mosquitto 2.0, el broker arranca en modo solo local (local only mode) cuando no hay ningún listener configurado. Añade una línea de listener como listener 1883 a mosquitto.conf y además allow_anonymous true o un password_file, y reinicia el broker.

¿Instalar mosquitto en Ubuntu instala también mosquitto_pub y mosquitto_sub?

No. En Debian y Ubuntu los clientes de línea de comandos están en el paquete separado mosquitto-clients. Instálalo con sudo apt install mosquitto-clients.

¿Dónde está el archivo mosquitto.conf?

En Linux está en /etc/mosquitto/mosquitto.conf, en Windows en la carpeta de instalación (normalmente C:\Program Files\mosquitto) y con Homebrew bajo el directorio etc de Homebrew, por ejemplo /opt/homebrew/etc/mosquitto/mosquitto.conf en Apple Silicon.