O Eclipse Mosquitto é o broker MQTT open source mais usado: pequeno, rápido e disponível para praticamente todo sistema operacional. Este tutorial mostra como instalar o Mosquitto no Ubuntu, Debian, Windows e macOS, rodá-lo como serviço em segundo plano, verificá-lo com os clientes de linha de comando e evitar a armadilha mais comum do Mosquitto 2.x — o broker recusando conexões remotas sem dar aviso.
É novo em MQTT? Leia primeiro o que é MQTT; se preferir não instalar nada no host, veja como rodar o Mosquitto no Docker.
Instalar o Mosquitto no Ubuntu e no Debian
O Mosquitto está nos repositórios padrão do Ubuntu e do Debian. O broker e os clientes de CLI são pacotes separados, então instale os dois:
sudo apt update
sudo apt install -y mosquitto mosquitto-clientsOs pacotes das distribuições podem ficar atrás das versões upstream. Se você precisa da versão mais recente no Ubuntu, o projeto Mosquitto publica um PPA:
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt update
sudo apt install -y mosquitto mosquitto-clientsConfira o que foi instalado:
mosquitto -h | head -n 1Rodar o Mosquitto como serviço do systemd
O pacote do Debian registra uma unit mosquitto no systemd e geralmente já a inicia. Use os comandos de sempre para gerenciá-la:
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 logsO arquivo de configuração principal é /etc/mosquitto/mosquitto.conf. Ele inclui todos os arquivos *.conf em /etc/mosquitto/conf.d/, que é o lugar mais limpo para as suas próprias configurações.
Instalar o Mosquitto no Windows
- Baixe o instalador para Windows (
.exede 64 bits) na página oficial de download emmosquitto.org/download. - Execute-o. Mantenha o componente Service selecionado se quiser que o Mosquitto rode como serviço do Windows. O caminho de instalação padrão é
C:\Program Files\mosquitto. - Adicione essa pasta ao seu
PATHpara quemosquitto_pubemosquitto_subfuncionem em qualquer terminal.
Inicie o serviço em um PowerShell ou Prompt de Comando como administrador:
net start mosquitto
# or run in the foreground with verbose logging:
cd "C:\Program Files\mosquitto"
.\mosquitto.exe -c mosquitto.conf -vInstalar o Mosquitto no macOS
Com o Homebrew é um comando só, e o gerenciador de serviços do Homebrew o mantém rodando em segundo plano:
brew install mosquitto
brew services start mosquitto # run as a background service
brew services info mosquitto # check statusO arquivo de configuração fica sob o prefixo do Homebrew: /opt/homebrew/etc/mosquitto/mosquitto.conf no Apple Silicon ou /usr/local/etc/mosquitto/mosquitto.conf em Macs Intel. Os clientes vêm na mesma fórmula.
Verificar a instalação com mosquitto_sub e mosquitto_pub
Abra dois terminais na máquina que roda o broker. Assine no primeiro:
mosquitto_sub -h localhost -t 'test/#' -vPublique a partir do segundo:
mosquitto_pub -h localhost -t 'test/hello' -m 'Mosquitto works'O terminal 1 deve imprimir test/hello Mosquitto works. Para o conjunto completo de flags, deixe aberta a nossa colinha de mosquitto_pub e mosquitto_sub.
A pegadinha do "local only mode" do Mosquitto 2.x
O teste no localhost funciona, mas um cliente em outra máquina recebe connection refused. Isso é intencional. Desde a versão 2.0, se o mosquitto.conf não define nenhum listener, o Mosquitto escuta apenas na interface de loopback e registra algo como:
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.O Mosquitto 2.x também usa allow_anonymous false por padrão assim que você define um listener. Então abrir a porta não basta — você também precisa decidir como os clientes se autenticam. Crie um pequeno arquivo de configuração:
listener 1883
allow_anonymous truelistener 1883
allow_anonymous false
password_file /etc/mosquitto/passwdReinicie o broker (sudo systemctl restart mosquitto) e a porta fica acessível pela rede. Criar o arquivo de senhas e adicionar ACLs e TLS é explicado passo a passo em como proteger o Mosquitto. Para montar uma configuração sem decorar diretivas, use o gerador de mosquitto.conf.
Opcional: habilitar WebSockets
Clientes no navegador não podem usar TCP bruto. Para testar seu broker a partir de uma página web, adicione um segundo listener com o protocolo WebSockets (veja MQTT sobre WebSockets e portas MQTT):
listener 9001
protocol websocketsObserve que uma página servida via HTTPS só pode abrir conexões wss://, então, para um cliente no navegador na web pública, você também precisará de TLS nesse listener. Antes de ir tão longe, você pode experimentar o MQTT com um broker público de teste no navegador:
Onde o Mosquitto guarda seus arquivos
| Plataforma | Configuração | Logs |
|---|---|---|
| Ubuntu / Debian | /etc/mosquitto/mosquitto.conf + conf.d/ | /var/log/mosquitto/mosquitto.log e journalctl -u mosquitto |
| Windows | C:\Program Files\mosquitto\mosquitto.conf | Onde log_dest file apontar; caso contrário, use -v em primeiro plano |
| macOS (Homebrew) | $(brew --prefix)/etc/mosquitto/mosquitto.conf | brew services info mosquitto mostra o caminho do log |
Seja qual for a plataforma, rode mosquitto -c <path-to-conf> -v em um terminal quando algo não iniciar: ele imprime os erros de configuração diretamente, em vez de escondê-los em um log de serviço. Pare o serviço antes, ou a instância em primeiro plano vai falhar porque a porta já está em uso.
Solução de problemas em uma instalação nova
| Sintoma | Causa provável | Solução |
|---|---|---|
| Connection refused a partir de outro host | Modo somente local (sem listener) | Adicione listener 1883 e reinicie |
| "not authorised" / CONNACK código 5 | Acesso anônimo desabilitado | Passe -u/-P ou configure um arquivo de senhas |
| "Address already in use" | Outro broker ou instância ocupa a porta 1883 | Pare-o, ou verifique com sudo ss -ltnp | grep 1883 |
| O serviço não inicia após editar a configuração | Erro de digitação ou permissões de arquivo incorretas | Rode mosquitto -c /etc/mosquitto/mosquitto.conf -v em primeiro plano para ver o erro |
Para outros códigos de CONNACK e timeouts, veja o guia de erros de conexão MQTT.
Próximos passos
- Proteja-o com senhas, ACLs e TLS: autenticação no Mosquitto.
- Prefere containers? Rode o Mosquitto no Docker.
- Compare o Mosquitto com outros brokers no nosso diretório de brokers.
Perguntas frequentes
Por que o Mosquitto só aceita conexões do localhost?
Desde o Mosquitto 2.0, o broker inicia em modo somente local quando nenhum listener está configurado. Adicione uma linha de listener, como listener 1883, ao mosquitto.conf e também allow_anonymous true ou um password_file, e depois reinicie o broker.
Instalar o mosquitto no Ubuntu também instala o mosquitto_pub e o mosquitto_sub?
Não. No Debian e no Ubuntu, os clientes de linha de comando ficam no pacote separado mosquitto-clients. Instale-o com sudo apt install mosquitto-clients.
Onde fica o arquivo mosquitto.conf?
No Linux fica em /etc/mosquitto/mosquitto.conf, no Windows fica na pasta de instalação (geralmente C:\Program Files\mosquitto) e no Homebrew fica no diretório etc do Homebrew, por exemplo /opt/homebrew/etc/mosquitto/mosquitto.conf no Apple Silicon.