Mosquitto: Configurar o Mosquitto para conectar a outro servidor (ponte)
Esta documentação faz parte do guia Pontes. Consulte o guia completo aqui: Como conectar servidores Mosquitto juntos (ponte).
👋 Bem-vindo à documentação da Stackhero!
A Stackhero oferece-lhe um ambiente Mosquitto MQTT cloud totalmente gerido, concebido para garantir fiabilidade e flexibilidade:
- Débito ilimitado de mensagens e transferências de dados, para que os seus workflows nunca encontrem limites artificiais.
- Autenticação ilimitada de dispositivos através da sua própria API externa, facilitando o onboarding e a gestão de acessos.
- ACLs avançadas para controlo detalhado sobre tópicos, utilizadores e ações.
- Um domínio personalizado com HTTPS integrado para endpoints seguros e com a sua marca (por exemplo: https://mqtt.sua-empresa.com).
- Atualizações sem complicações: aplique melhorias ou patches de segurança com um simples clique.
- Desempenho consistente e segurança reforçada, com cada instância a funcionar numa infraestrutura privada e dedicada.
Acelere os seus projetos IoT e reduza o esforço operacional. Pode ter uma instância Mosquitto MQTT cloud hosting segura e pronta para produção em apenas alguns minutos.
Neste exemplo, um servidor remoto irá conectar-se a uma instância Stackhero usando um utilizador dedicado com encriptação TLS para máxima segurança.
Primeiro, crie um novo utilizador na instância MQTT Stackhero. Vamos chamá-lo de bridge-1, com a palavra-passe secretPassword.
Em seguida, no servidor Mosquitto remoto, pode editar o ficheiro de configuração mosquitto.conf (geralmente localizado em /etc/mosquitto/mosquitto.conf) adicionando as seguintes linhas no final:
# TODO: substituir "<XXXXXX>.stackhero-network.com" e "<PORT_TLS>" com as informações da sua instância Stackhero
connection <XXXXXX>.stackhero-network.com
address <XXXXXX>.stackhero-network.com:<PORT_TLS>
# TODO: substituir "bridge-1" e "secretPassword" com as credenciais do utilizador recém-criado
remote_clientid bridge-1
remote_username bridge-1
remote_password secretPassword
start_type automatic
try_private true
# Tópicos a partilhar, direção e QOS.
# Note que "both" parece não funcionar por uma razão desconhecida.
topic # out 2
topic # in 2
# Ativar a conexão TLS para encriptar dados entre o seu servidor Mosquitto remoto e a sua instância Stackhero.
bridge_insecure false
bridge_capath /etc/ssl/certs
Antes de reiniciar o Mosquitto com a sua nova configuração, certifique-se de que os certificados TLS existem no seu servidor remoto.
Verifique se o diretório /etc/ssl/certs existe e contém ficheiros com o comando:
ls /etc/ssl/certs
Se existir e contiver ficheiros, pode simplesmente reiniciar o seu servidor Mosquitto.
Se não existir, pode considerar executar um destes comandos:
-
No Ubuntu/Debian, pode executar:
sudo apt-get install ca-certificates -
No Alpine Linux, pode executar:
apk add ca-certificates
Alternativamente, pode descarregar manualmente o certificado. Para isso, descarregue o certificado CA para /etc/mosquitto/isrgrootx1.pem usando o seguinte comando:
wget https://letsencrypt.org/certs/isrgrootx1.pem -O /etc/mosquitto/isrgrootx1.pem
Depois, edite o ficheiro mosquitto.conf para substituir bridge_capath /etc/ssl/certs por bridge_cafile /etc/mosquitto/isrgrootx1.pem.
Finalmente, reinicie o seu servidor Mosquitto.
Para mais informações sobre a configuração de pontes, pode consultar a documentação oficial do Mosquitto.