MQTT gestionado en la nube

Broker MQTT público vs privado: ¿cuál encaja en tu proyecto?

Los brokers públicos de pruebas son perfectos para aprender y hacer demos; los brokers privados son donde deben estar los dispositivos reales. Descubre las diferencias prácticas y cómo pasar de uno a otro sin reescribir tus clientes.

Ilustración de un broker MQTT público vs privado, con un espacio de topics abierto y compartido a un lado y un broker privado protegido con candado al otro
Pruébalo en tu propio broker MQTTConsigue un broker MQTT privado y gestionado con el plan Free y empieza con ejemplos de código listos para usar.
Pruébalo gratis Ejemplos de código Sin tarjeta

Elegir entre un broker MQTT público o privado se reduce a una pregunta: ¿quién más puede ver y manipular tus mensajes? Esta guía explica en qué se diferencian en privacidad, autenticación, límites y fiabilidad, y muestra exactamente cuándo y cómo pasar de un broker público de pruebas a uno privado sin reescribir tu código.

Qué es un broker MQTT público

Un broker público es un servidor MQTT accesible desde Internet al que cualquiera puede conectarse sin cuenta. Eliges un client ID, te suscribes a un topic y empiezas a publicar. Existen varios; ConnectMQ ofrece uno en broker.connectmq.com, descrito en detalle en el artículo sobre el servidor MQTT público gratuito, pensado para pruebas y prototipos, nunca para datos de producción.

Los brokers públicos están pensados para aprender, hacer demos, comprobar rápidamente la conectividad y compartir ejemplos. Son abiertos a propósito, y precisamente por eso no son lugar para datos reales de dispositivos.

Propiedades clave de un broker público:

  • Acceso anónimo. Sin usuario ni contraseña, así que cualquiera puede conectarse.
  • Espacio de topics compartido. Todos los clientes ven el mismo árbol de topics. Si tú te suscribes a un topic, también puede hacerlo un desconocido.
  • Límites de protección. Para seguir siendo utilizables por todos, los brokers públicos limitan el tamaño de los mensajes, la tasa y las suscripciones.
  • Sin garantías. Son un servicio comunitario gratuito, no una plataforma de producción.

Qué es un broker MQTT privado

Un broker privado solo acepta clientes con credenciales válidas. Su espacio de topics te pertenece a ti y a tus dispositivos. Puede ser autoalojado o un servicio gestionado; en cualquier caso, sus rasgos definitorios son:

  • Autenticación. Los clientes presentan un usuario, una contraseña y normalmente un client ID que el broker reconoce.
  • Aislamiento. Otros tenants no pueden leer ni publicar en tus topics.
  • Cifrado por defecto. TLS en el 8883 y Secure WebSocket en el 8084 para navegadores.
  • Límites dimensionados según tu plan y no según una multitud de usuarios anónimos.

Si quieres el contexto general sobre los brokers MQTT, ese artículo explica el propio modelo de publicación/suscripción.

Broker MQTT público vs privado de un vistazo

Aspecto Broker público (broker.connectmq.com) Broker privado gestionado
Requiere cuenta No Sí, registro gratuito
Autenticación Anónima, cualquier client ID único no vacío Usuario, contraseña y client ID generados
Quién puede leer tus topics Cualquiera que se suscriba Solo tus clientes con credenciales
Tamaño de mensaje Hasta 64 KB 256 KB en Serverless gratuito, 1 MB en Serverless de pago
Tasa 10 mensajes por segundo por cliente Cuotas del plan
Suscripciones 10 por cliente, 8 niveles de topic Cuotas del plan
QoS 0, 1 y 2 Hasta 1 en el gratuito, 2 en el de pago
Caducidad de sesión Hasta 30 minutos La configuran tus clientes dentro de los límites del plan
Ideal para Tutoriales, demos, pruebas rápidas Prototipos con datos reales, pilotos, producción

El protocolo es idéntico. MQTT 3.1.1 y MQTT 5.0 se comportan igual en ambos; solo cambian el acceso y los límites.

Cuándo un broker público es la herramienta adecuada

Usa un broker público cuando los datos no tengan valor para nadie más y lo que más importe sea la rapidez:

  1. Aprender MQTT. Publica, suscríbete y prueba wildcards y retained messages en minutos.
  2. Talleres y clases. Todos los asistentes se conectan sin configurar nada.
  3. Probar una nueva librería o placa. Confirma que tu ESP32 o tu script de Python puede llegar a un broker.
  4. Compartir un ejemplo reproducible. Un artículo de blog o un informe de error que cualquiera pueda ejecutar.

Una prueba rápida tiene este aspecto:

# Subscribe with a unique prefix so you are not mixed with other users
mosquitto_sub -h broker.connectmq.com -p 1883 -i demo-sub-c41d -t "connectmq/demo/c41d/#" -v

# Publish from another terminal
mosquitto_pub -h broker.connectmq.com -p 1883 -i demo-pub-c41d -t "connectmq/demo/c41d/hello" -m "it works"

Usa siempre un prefijo de topic aleatorio y único, como connectmq/demo/c41d/. Mantiene tu tráfico de pruebas separado del de los demás, aunque no lo hace privado.

Cuándo necesitas un broker privado

Pasa a un broker privado en cuanto se cumpla cualquiera de estas condiciones:

  • Los datos identifican a una persona, una vivienda, un vehículo o una ubicación. Los valores de sensores que revelan cuándo una casa está vacía son sensibles.
  • Los dispositivos aceptan comandos. En un broker público, cualquiera puede publicar en tu topic de comandos.
  • Estás haciendo un piloto con un cliente. Esperará autenticación y cifrado.
  • Necesitas mensajes más grandes, más rendimiento o más suscripciones de lo que permiten los límites públicos.
  • La disponibilidad importa. Un servicio público de pruebas no es algo sobre lo que construir un producto.

El artículo sobre las limitaciones de los brokers MQTT públicos explica cada una de estas restricciones con más detalle.

Pasar de público a privado sin reescribir código

Como ambos hablan MQTT estándar, el cambio es solo de configuración. Aquí tienes un ejemplo en Python con paho-mqtt 2.x que lee su destino de variables de entorno, de modo que el mismo código funciona con los dos:

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")          # unset for the public broker
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()

Para el broker privado, define las variables con los datos de tu portal de 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

Ten en cuenta que en ConnectMQ el client ID está vinculado a las credenciales emitidas, así que usa el client ID que generó el portal en lugar de inventarte uno nuevo.

Errores habituales al hacer el cambio

  • Dejar el puerto 1883 en el firmware de producción. Usa el 8883 (TLS) para los dispositivos y el 8084 con la ruta /mqtt para los navegadores.
  • Mantener el prefijo de topic de la demo. Renombra los topics con una estructura real, por ejemplo planta/área/línea/dispositivo. La guía de brokers MQTT en la nube incluye recomendaciones de diseño de topics para brokers alojados.
  • Escribir las credenciales en el código de un repositorio público. Cárgalas desde variables de entorno, un almacén de secretos o el aprovisionamiento del dispositivo.
  • Reutilizar un mismo client ID en varios dispositivos. El broker desconectará la sesión anterior cada vez que se conecte el otro, lo que provoca un bucle de reconexiones.
  • Dar por hecho QoS 2 en todas partes. El plan Serverless gratuito admite QoS hasta 1. Si necesitas QoS 2, usa un plan de pago o diseña un tratamiento idempotente con QoS 1. Consulta los niveles de QoS de MQTT explicados.

Lista de seguridad para tu broker privado

Pasar a un broker privado elimina el acceso anónimo, pero unos cuantos hábitos deciden lo seguro que es realmente el resultado:

  1. Un juego de credenciales por dispositivo o servicio. Si un dispositivo se pierde o se ve comprometido, puedes revocarlo sin tocar los demás.
  2. TLS en todas partes fuera del laboratorio. Verifica el certificado del servidor en tu cliente en lugar de desactivar la verificación para salvar un error.
  3. Separa los topics de telemetría y de comandos. Deja claro en el árbol de topics qué mensajes cambian el estado de equipos reales y revisa quién publica en ellos.
  4. Vigila el registro de conexiones. Los inicios de sesión fallidos repetidos suelen indicar un dispositivo mal configurado o una credencial filtrada. Tu broker puede bloquear una IP tras varios fallos, pero aun así conviene encontrar la causa.
  5. Reserva un prefijo de topic de pruebas para experimentos, de modo que el tráfico de depuración nunca se mezcle con los datos de producción.

La guía de buenas prácticas de seguridad MQTT profundiza en cada uno de estos puntos.

Una regla sencilla

Usa el broker público para todo lo que no te importaría publicar en un foro. Usa un broker privado para todo lo demás. Como el cambio solo cuesta unos pocos valores de configuración, no hay motivo para mantener dispositivos reales en un broker público más allá de la primera tarde.

Consigue tu broker privado en ConnectMQ

Cuando estés listo para ir más allá de las pruebas, regístrate en el plan Serverless gratuito sin necesidad de tarjeta de crédito. Crea un broker, copia el usuario, la contraseña y el client ID generados y apunta el mismo código al puerto 8883. El cliente MQTT en el navegador y el explorador de topics en vivo del portal te permiten confirmar el tráfico al instante. Descubre más sobre ConnectMQ y sobre cómo un broker MQTT gestionado elimina el trabajo de operaciones.

Preguntas frecuentes

¿Pueden otras personas ver mis mensajes en un broker MQTT público?

Sí. Cualquiera puede suscribirse a cualquier topic de un broker público, incluidos wildcards como #. Nunca envíes datos personales, credenciales ni comandos que controlen equipos reales.

¿Un broker MQTT privado está siempre cifrado?

No automáticamente, pero un buen broker privado gestionado ofrece TLS en el 8883 y Secure WebSocket en el 8084. Usa esos puertos en producción en lugar de TCP sin cifrar en el 1883.

¿Tengo que cambiar mi código para pasar de público a privado?

Normalmente solo cambian el host, el puerto, las credenciales y el client ID. Si tu código los lee de la configuración, el cambio lleva minutos.

¿Es suficiente un broker privado gratuito para un prototipo?

Para muchos prototipos, sí. El plan Serverless gratuito de ConnectMQ permite hasta 25 conexiones, QoS hasta 1 y mensajes de 256 KB, lo que cubre la mayoría de los pilotos pequeños.

Artículos relacionados

Broker MQTT BYOC: el modelo Bring Your Own Cloud explicado

Un broker MQTT BYOC se ejecuta en tu cuenta cloud, pero lo opera un proveedor. Descubre cómo funciona el modelo, cómo se reparten las responsabilidades y cómo preparar tu cuenta.

9 min de lectura

Alternativa a Google Cloud IoT Core: opciones y migración tras su cierre

Google retiró Cloud IoT Core en agosto de 2023. Esta guía compara las alternativas realistas, traduce los conceptos de IoT Core a MQTT estándar y muestra cómo mover los dispositivos a un broker MQTT gestionado sin dejar de enviar datos a Google Cloud.

9 min de lectura

Mensajes MQTT por segundo: cómo estimar y medir el rendimiento

Planificar el rendimiento de MQTT se reduce a unas pocas fórmulas y una medición honesta. Aprende a estimar los mensajes entrantes y salientes por segundo, a tener en cuenta los picos y a trasladar el resultado a un plan de broker.

8 min de lectura

Todos los artículos →

Tu broker MQTT privado, a unos pocos clics

Crea una cuenta, obtén las credenciales de tu broker y conecta tu primer dispositivo, sin servidores que instalar, parchear ni escalar.