MQTT managé dans le cloud

Broker MQTT public ou privé : lequel convient à votre projet ?

Les brokers de test publics sont parfaits pour apprendre et faire des démos ; les vrais appareils ont leur place sur un broker privé. Découvrez les différences concrètes et comment passer de l'un à l'autre sans réécrire vos clients.

Illustration d'un broker MQTT public et d'un broker privé, avec un espace de topics ouvert et partagé d'un côté et un broker privé verrouillé de l'autre
Essayez-le sur votre propre broker MQTTObtenez un broker MQTT privé et managé avec l’offre Free et partez d’exemples de code prêts à l’emploi.
Essayer gratuitement Exemples de code Aucune carte bancaire requise

Choisir entre un broker MQTT public ou privé se résume à une question : qui d'autre peut voir et manipuler vos messages ? Ce guide explique en quoi les deux diffèrent en matière de confidentialité, d'authentification, de limites et de fiabilité, et montre précisément quand et comment passer d'un serveur MQTT public gratuit à un broker privé sans réécrire votre code.

Qu'est-ce qu'un broker MQTT public ?

Un broker public est un serveur MQTT accessible depuis Internet auquel n'importe qui peut se connecter sans compte. Vous choisissez un client ID, vous vous abonnez à un topic et vous commencez à publier. Il en existe plusieurs ; ConnectMQ exploite le serveur MQTT public gratuit broker.connectmq.com, réservé aux tests et aux prototypes.

Les brokers publics sont conçus pour l'apprentissage, les démos, les tests de connectivité rapides et le partage d'exemples. Ils sont volontairement ouverts, et c'est précisément pour cette raison qu'ils ne sont pas faits pour de vraies données d'appareils.

Principales caractéristiques d'un broker public :

  • Accès anonyme. Pas de nom d'utilisateur ni de mot de passe : n'importe qui peut se connecter.
  • Espace de topics partagé. Tous les clients voient la même arborescence de topics. Si vous vous abonnez à un topic, un inconnu peut le faire aussi.
  • Limites de protection. Pour rester utilisables par tous, les brokers publics plafonnent la taille des messages, le débit et les abonnements.
  • Aucune garantie. Il s'agit d'un service communautaire gratuit, pas d'une plateforme de production.

Qu'est-ce qu'un broker MQTT privé ?

Un broker privé n'accepte que les clients disposant d'identifiants valides. Son espace de topics vous appartient, à vous et à vos appareils. Il peut être auto-hébergé ou managé ; dans les deux cas, ses traits distinctifs sont :

  • Authentification. Les clients présentent un nom d'utilisateur, un mot de passe et généralement un client ID que le broker reconnaît.
  • Isolation. Les autres tenants ne peuvent ni lire vos topics ni y publier.
  • Chiffrement par défaut. TLS sur le port 8883 et Secure WebSocket sur le port 8084 pour les navigateurs.
  • Des limites dimensionnées selon votre plan et non selon une foule d'utilisateurs anonymes.

Pour un contexte plus large sur les brokers MQTT, cet article présente le modèle publish/subscribe lui-même.

Broker MQTT public ou privé : vue d'ensemble

Aspect Serveur MQTT public gratuit (broker.connectmq.com) Broker MQTT managé privé
Compte requis Non Oui, inscription gratuite
Authentification Anonyme, tout client ID unique non vide Nom d'utilisateur, mot de passe et client ID générés
Qui peut lire vos topics Quiconque s'y abonne Uniquement vos clients authentifiés
Taille des messages Jusqu'à 64 Ko 256 Ko en Serverless gratuit, 1 Mo en Serverless payant
Débit 10 messages par seconde et par client Quotas du plan
Abonnements 10 par client, 8 niveaux de topic Quotas du plan
QoS 0, 1 et 2 Jusqu'à 1 en gratuit, 2 en payant
Expiration de session Jusqu'à 30 minutes Configurée par vos clients dans les limites du plan
Idéal pour Tutoriels, démos, tests rapides Prototypes avec données réelles, pilotes, production

Le protocole est identique. MQTT 3.1.1 et MQTT 5.0 se comportent de la même façon des deux côtés ; seuls l'accès et les limites changent.

Quand un broker public est le bon outil

Utilisez un broker public lorsque les données n'ont de valeur pour personne d'autre et que la rapidité prime :

  1. Apprendre MQTT. Publiez, abonnez-vous, testez les wildcards et les retained messages en quelques minutes.
  2. Ateliers et salles de cours. Chaque participant se connecte sans rien configurer.
  3. Tester une nouvelle bibliothèque ou une nouvelle carte. Vérifiez que votre ESP32 ou votre script Python parvient tout simplement à joindre un broker.
  4. Partager un exemple reproductible. Un article de blog ou un rapport de bug que tout le monde peut exécuter.

Un test rapide ressemble à ceci :

# Abonnement avec un préfixe unique pour ne pas vous mélanger aux autres utilisateurs
mosquitto_sub -h broker.connectmq.com -p 1883 -i demo-sub-c41d -t "connectmq/demo/c41d/#" -v

# Publication depuis un autre terminal
mosquitto_pub -h broker.connectmq.com -p 1883 -i demo-pub-c41d -t "connectmq/demo/c41d/hello" -m "it works"

Utilisez toujours un préfixe de topic aléatoire et unique comme connectmq/demo/c41d/. Il sépare votre trafic de test de celui des autres, mais ne le rend pas privé pour autant.

Quand il vous faut un broker privé

Passez à un broker privé dès que l'une de ces conditions est remplie :

  • Les données identifient une personne, un logement, un véhicule ou un lieu. Des valeurs de capteurs qui révèlent quand une maison est vide sont sensibles.
  • Les appareils acceptent des commandes. Sur un broker public, n'importe qui peut publier sur votre topic de commande.
  • Vous menez un pilote avec un client. Il attendra de l'authentification et du chiffrement.
  • Vous avez besoin de messages plus volumineux, de plus de débit ou de plus d'abonnements que ne le permettent les limites publiques.
  • La disponibilité compte. On ne bâtit pas un produit sur un service de test public.

L'article sur les limites d'un broker MQTT public détaille chacune de ces contraintes.

Passer du public au privé sans réécriture

Comme les deux parlent MQTT standard, le changement se résume à une modification de configuration. Voici un exemple Python avec paho-mqtt 2.x qui lit sa cible dans des variables d'environnement, si bien que le même code fonctionne avec les deux :

import os
import ssl
import paho.mqtt.client as mqtt

HOST = os.getenv("MQTT_HOST", "broker.connectmq.com")
PORT = int(os.getenv("MQTT_PORT", "1883"))
USERNAME = os.getenv("MQTT_USERNAME")          # non défini pour le broker public
PASSWORD = os.getenv("MQTT_PASSWORD")
CLIENT_ID = os.getenv("MQTT_CLIENT_ID", "demo-c41d-py")
TOPIC = os.getenv("MQTT_TOPIC", "connectmq/demo/c41d/temp")


def on_connect(client, userdata, flags, reason_code, properties):
    print("Connected:", reason_code)
    client.subscribe(TOPIC, qos=1)
    client.publish(TOPIC, "21.7", qos=1)


def on_message(client, userdata, msg):
    print(msg.topic, msg.payload.decode())


client = mqtt.Client(
    mqtt.CallbackAPIVersion.VERSION2,
    client_id=CLIENT_ID,
    protocol=mqtt.MQTTv5,
)
client.on_connect = on_connect
client.on_message = on_message

if USERNAME:
    client.username_pw_set(USERNAME, PASSWORD)
if PORT == 8883:
    client.tls_set(cert_reqs=ssl.CERT_REQUIRED)

client.connect(HOST, PORT, keepalive=60)

try:
    client.loop_forever()
except KeyboardInterrupt:
    client.disconnect()

Pour le broker privé, définissez les variables à partir de votre portail ConnectMQ :

export MQTT_HOST=broker.connectmq.com
export MQTT_PORT=8883
export MQTT_USERNAME=YOUR_USERNAME
export MQTT_PASSWORD=YOUR_PASSWORD
export MQTT_CLIENT_ID=YOUR_CLIENT_ID
export MQTT_TOPIC=plant1/line1/temp
python client.py

Notez que sur ConnectMQ, le client ID est lié aux identifiants délivrés : utilisez le client ID généré par le portail plutôt que d'en inventer un nouveau.

Erreurs fréquentes lors du passage

  • Laisser le port 1883 dans le firmware de production. Utilisez 8883 (TLS) pour les appareils et 8084 avec le chemin /mqtt pour les navigateurs.
  • Conserver le préfixe de topic de démo. Renommez les topics selon une vraie structure, par exemple site/zone/ligne/appareil. Le guide du broker MQTT cloud donne des conseils de conception de topics pour les brokers hébergés.
  • Coder les identifiants en dur dans un dépôt public. Chargez-les depuis des variables d'environnement, un coffre de secrets ou le provisioning des appareils.
  • Réutiliser un même client ID sur plusieurs appareils. Le broker déconnecte l'ancienne session chaque fois que l'autre se connecte, ce qui provoque une boucle de reconnexion.
  • Supposer que QoS 2 est disponible partout. Le plan Serverless gratuit prend en charge QoS jusqu'à 1. Si vous avez besoin de QoS 2, utilisez un plan payant ou concevez un traitement QoS 1 idempotent. Voir les niveaux de QoS MQTT expliqués.

Liste de contrôle de sécurité pour votre broker privé

Passer à un broker privé supprime l'accès anonyme, mais quelques habitudes déterminent le niveau de sécurité réel du résultat :

  1. Un jeu d'identifiants par appareil ou par service. Si un appareil est perdu ou compromis, vous pouvez le révoquer sans toucher aux autres.
  2. TLS partout en dehors du laboratoire. Vérifiez le certificat du serveur dans votre client au lieu de désactiver la vérification pour contourner une erreur.
  3. Séparer les topics de télémétrie et de commande. Faites apparaître clairement dans l'arborescence quels messages modifient l'état d'équipements réels, et contrôlez qui y publie.
  4. Surveiller le journal des connexions. Des échecs de connexion répétés signalent généralement un appareil mal configuré ou un identifiant qui a fuité. Votre broker peut bloquer une IP après des échecs répétés, mais vous voudrez quand même en trouver la cause.
  5. Garder un préfixe de topic de test pour les expérimentations, afin que le trafic de débogage ne se mélange jamais aux données de production.

Le guide des bonnes pratiques de sécurité MQTT approfondit chacun de ces points.

Une règle simple

Utilisez le broker public pour tout ce que vous seriez prêt à publier sur un forum. Utilisez un broker privé pour tout le reste. Comme le passage ne coûte que quelques valeurs de configuration, il n'y a aucune raison de laisser de vrais appareils sur un broker public au-delà du premier après-midi.

Obtenez votre broker privé sur ConnectMQ

Quand vous êtes prêt à dépasser le stade des tests, inscrivez-vous gratuitement au plan Serverless, sans carte bancaire. Créez un broker, copiez le nom d'utilisateur, le mot de passe et le client ID générés, puis pointez le même code vers le port 8883. Le client MQTT intégré au navigateur et l'explorateur de topics en direct du portail vous permettent de confirmer le trafic immédiatement. Découvrez ConnectMQ et comment un broker MQTT managé vous libère du travail d'exploitation.

Questions fréquentes

D'autres personnes peuvent-elles voir mes messages sur un broker MQTT public ?

Oui. N'importe qui peut s'abonner à n'importe quel topic sur un broker public, y compris avec des wildcards comme #. N'envoyez jamais de données personnelles, d'identifiants ni de commandes pilotant de vrais équipements.

Un broker MQTT privé est-il toujours chiffré ?

Pas automatiquement, mais un bon broker MQTT managé privé propose TLS sur le port 8883 et Secure WebSocket sur le port 8084. Utilisez ces ports en production plutôt que du TCP en clair sur le port 1883.

Dois-je modifier mon code pour passer du public au privé ?

En général, seuls l'hôte, le port, les identifiants et le client ID changent. Si votre code les lit depuis la configuration, le passage prend quelques minutes.

Un broker privé gratuit suffit-il pour un prototype ?

Pour de nombreux prototypes, oui. Le plan Serverless gratuit de ConnectMQ autorise jusqu'à 25 connexions, QoS jusqu'à 1 et des messages de 256 Ko, ce qui couvre la plupart des petits pilotes.

Articles liés

Broker MQTT BYOC : le modèle Bring Your Own Cloud expliqué

Un broker MQTT BYOC tourne dans votre compte cloud mais est exploité par un fournisseur. Découvrez le fonctionnement du modèle, la répartition des responsabilités et comment préparer votre compte.

9 min de lecture

Messages MQTT par seconde : comment estimer et mesurer le débit

La planification du débit MQTT se résume à quelques formules et à une mesure honnête. Découvrez comment estimer les messages entrants et sortants par seconde, tenir compte des pics et faire correspondre le résultat à une offre de broker.

8 min de lecture

Tous les articles →

Votre broker MQTT privé, à quelques clics

Créez un compte, récupérez les identifiants de votre broker et connectez votre premier appareil — aucun serveur à installer, mettre à jour ou dimensionner.