Gerador de mosquitto.conf

Escolha listeners, TLS, WebSockets, autenticação, persistência e logs e receba uma configuração comentada do Mosquitto 2.x com os comandos de mosquitto_passwd, Docker e systemd correspondentes.

Caminhos para
Listeners
Autenticação
Persistência
Limites
Logs
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

Criar usuários

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

Rodar com 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.

Aplicar em um servidor 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

O padrão somente-local do Mosquitto 2.0

O Mosquitto 2.0 mudou os padrões para ser seguro logo de cara. Se a configuração não tiver nenhuma linha listener, o broker só escuta em localhost, e clientes anônimos são recusados a menos que você os permita explicitamente. É por isso que uma instalação nova costuma funcionar com mosquitto_sub na mesma máquina, mas rejeita todos os outros dispositivos. A solução é um listener explícito e uma decisão sobre autenticação — exatamente o que este gerador escreve. Instalando do zero? Comece por como instalar o Mosquitto.

Listeners

Cada linha listener abre uma porta e inicia um bloco: as linhas seguintes (protocolo, certificados, max_connections) pertencem a esse listener até o próximo. A porta 1883 é MQTT puro, a 8883 é MQTT sobre TLS, e um listener com protocol websockets atende clientes de navegador — 9001 é a escolha mais comum. Adicione um endereço de bind opcional como 127.0.0.1 para manter um listener acessível só no próprio host. O guia de portas MQTT e MQTT sobre WebSockets explicam as convenções.

Listeners TLS precisam de um certfile e um keyfile; com Let’s Encrypt eles são fullchain.pem e privkey.pem. O cafile só é obrigatório quando você ativa require_certificate para autenticar clientes com certificados próprios.

Autenticação e ACLs

allow_anonymous false junto com um password_file é o mínimo para qualquer broker acessível pela rede. Crie o arquivo com mosquitto_passwd -c — atenção: -c sobrescreve um arquivo existente, então não use ao adicionar mais usuários. Depois, um acl_file restringe quais tópicos cada usuário pode ler ou escrever; o exemplo gerado mostra regras de usuário e regras pattern com as substituições %u e %c. Leia autenticação no Mosquitto para o passo a passo completo.

per_listener_settings precisa aparecer antes dos listeners. Deixe em false para um único conjunto de regras compartilhado; use true quando, por exemplo, um listener em localhost deve continuar anônimo enquanto o público exige senha.

Persistência, logs e limites

Com persistence true, mensagens retidas, sessões persistentes e mensagens QoS 1 e 2 na fila sobrevivem a reinicializações em mosquitto.db dentro de persistence_location (mantenha a barra no final). Em um servidor, grave os logs em arquivo; no Docker, em stdout para que docker logs mostre tudo. max_packet_size rejeita pacotes grandes demais e substitui o obsoleto message_size_limit; max_connections limita os clientes por listener.

Colocando para rodar

Para containers, mude os caminhos para Docker para que batam com a estrutura da imagem oficial e siga como rodar o Mosquitto no Docker. Em um servidor, teste o arquivo em primeiro plano com mosquitto -c … -v antes de reiniciar o serviço. Com tudo no ar, conecte-se pelo cliente MQTT online via WebSockets e revise as boas práticas de segurança MQTT antes de expor o broker à internet.

Perguntas frequentes sobre mosquitto.conf

Por que os clientes não conseguem se conectar ao Mosquitto 2.0 a partir de outra máquina?

Desde a versão 2.0, o Mosquitto iniciado sem uma diretiva listener só escuta em localhost e recusa clientes anônimos. Adicione um listener explícito como "listener 1883" e configure um password_file ou defina allow_anonymous true.

Onde fica o mosquitto.conf?

Os pacotes Linux o instalam em /etc/mosquitto/mosquitto.conf, o Homebrew usa /opt/homebrew/etc/mosquitto/mosquitto.conf e a imagem Docker oficial lê /mosquitto/config/mosquitto.conf.

O que faz o per_listener_settings?

Quando é false (o padrão), allow_anonymous, password_file e acl_file valem para todos os listeners. Quando é true, cada listener tem suas próprias configurações de autenticação — por exemplo, acesso anônimo em uma porta só de localhost e senhas na porta pública.

Preciso reiniciar o Mosquitto depois de adicionar um usuário?

O Mosquitto relê os arquivos de senha e ACL quando recebe SIGHUP, então systemctl reload mosquitto ou um restart bastam. Mudanças nos listeners sempre exigem um restart completo.

Dos criadores do TestMQTT

Prefere não manter seu próprio broker?

Brokers públicos de teste são compartilhados com milhares de desconhecidos. O ConnectMQ oferece um broker MQTT privado, confiável para dispositivos reais — pronto em minutos.

  • Seu próprio broker isolado — ninguém mais lê seus tópicos
  • Autenticação por usuário e senha e controle de acesso por tópico
  • TLS e WebSocket seguro, MQTT 3.1.1 e MQTT 5
  • O mesmo código de cliente do primeiro teste até a produção