Funciones

El broker se construyó como herramienta de trabajo: todo lo que sigue se configura en el panel y se aplica sin reiniciar.

Protocolo

Las dos versiones a la vez

MQTT 3.1.1 y MQTT 5.0 funcionan simultáneamente en el mismo puerto, y los clientes de cualquiera de las dos intercambian mensajes con libertad. El códec codifica y decodifica los 15 tipos de paquete y valida los límites del Variable Byte Integer, las propiedades duplicadas y los bits reservados.

QoS 0, 1 y 2

Negociaciones completas, supresión de duplicados en QoS 2 y reenvío de los intercambios inacabados tras una reconexión. Las colas sin conexión de las sesiones persistentes sobreviven al reinicio del broker.

Retain y Last Will

Un almacén de mensajes retenidos con borrado mediante carga útil vacía, incluidas ramas enteras, además de Retain Handling 0/1/2 y Retain As Published. El testamento se envía en todos los escenarios de desconexión, incluido el Will Delay Interval de la versión 5.

Capacidades de la versión 5

Alias de topics en ambos sentidos, Session Expiry, Receive Maximum y control de flujo, Maximum Packet Size, identificadores de suscripción, suscripciones compartidas mediante $share, No Local, Message Expiry, Payload Format Indicator con validación UTF-8, Content Type, Response Topic, Correlation Data, User Properties, códigos de razón en cada paquete, DISCONNECT del servidor y el paquete AUTH.

Topics de sistema $SYS

La versión, el tiempo en marcha y los contadores de clientes, mensajes, bytes y errores se publican como mensajes retenidos. La rama está cerrada por defecto: los comodines no alcanzan los topics $, a los clientes anónimos se les niega todo el espacio de nombres y un interruptor en los ajustes desactiva la publicación por completo.

Panel web

Resumen

Fichas de síntesis, salud de la máquina (procesador, memoria y el disco del directorio de datos), gráficas en vivo de ritmo de mensajes, tráfico y conexiones, topics activos, escuchas y un flujo de eventos.

Clientes y topics

Una tabla de sesiones con ficha por cliente, además de desconectar y eliminar sesiones. Aparte: las suscripciones activas con todas las opciones de MQTT 5.0 y el contenido del almacén de retenidos.

Tráfico y publicación

Un flujo en directo de mensajes y eventos del broker, con filtro y pausa. Puede publicar un mensaje con todas las propiedades de la versión 5 desde el propio panel: muy útil al depurar dispositivos.

Siete idiomas, dos temas

Ruso, inglés, alemán, español, francés, italiano y chino. Los temas oscuro y claro se cambian sobre la marcha, y la elección se recuerda como valor por defecto del panel.

Ayuda integrada

Una guía con índice dentro del propio panel, traducida a los siete idiomas: no hace falta buscar la documentación en otro sitio.

Acceso y seguridad

Dos circuitos independientes

Hay un único administrador del panel, definido en config.json, y solo gestiona la interfaz web. Los dispositivos MQTT son una lista de cuentas aparte, con sus propias contraseñas y permisos. Crear un usuario MQTT con el nombre del administrador se rechaza.

ACL por topic

Una regla es un filtro, un modo de acceso (read, write, readwrite) y una decisión de permitir o denegar. Las reglas se comprueban de arriba abajo hasta la primera coincidencia, y todo se deniega por defecto. El comodín $u se convierte en el nombre del cliente, de modo que la regla $u/# confina cada dispositivo a su propia rama. El orden se cambia arrastrando.

Seis fuentes de credenciales

La lista interna, MySQL/MariaDB (un esquema al estilo de EMQX), SQLite, CSV con recarga del archivo, JWT y un servicio HTTP externo. La fuente se cambia desde el panel: primero se comprueba con el botón Probar y después se aplica en caliente.

Resúmenes, no contraseñas

Las contraseñas se guardan como PBKDF2-HMAC-SHA256 con 210 000 iteraciones y sal aleatoria. Los tokens de sesión y de API se guardan solo como resumen. Las fuentes externas entienden plain, sha256, sha512, bcrypt y pbkdf2.

TLS desde el principio

En el primer arranque se genera un certificado autofirmado para que :8883 funcione de inmediato. Para producción, indique su propio certificado en la configuración.

Reglas y flujos

Reescritura de topics

El nombre de un topic se sustituye sobre la marcha: al publicar, al suscribirse o siempre. Un filtro MQTT para una preselección barata, una expresión regular y una plantilla de destino con los grupos $1…$9. Están disponibles %u y %c, se conserva el prefijo $share y UNSUBSCRIBE pasa por la misma reescritura. El panel incluye un banco de pruebas para ensayar una regla.

Suscripción automática

Un cliente recibe sus suscripciones nada más conectarse, sin ningún SUBSCRIBE. Se admiten %u y %c y todas las opciones de la versión 5, y las ACL se comprueban como de costumbre: una regla prohibida se omite en silencio, sin cortar la conexión.

Límites por topic

Una regla por patrón de topic reduce un flujo a un ritmo o lo descarta por completo. La reducción conserva el último valor: un sensor que emite diez veces por segundo pasa a un mensaje por segundo, el más reciente. La ficha de la regla indica cuántos mensajes coincidieron, pasaron y se descartaron.

Control de avalancha

Un cubo de fichas por conexión: mensajes por segundo, ráfaga, bytes por segundo y ráfaga de bytes. Excederlo no corta la conexión ni pierde mensajes: el broker hace una pausa antes de la siguiente lectura del socket, TCP cierra la ventana y el emisor se modera solo.

Publicación diferida

El topic $delayed/{segundos}/{topic} lo retiene el broker hasta que vence, de forma compatible con EMQX. El intervalo va de un segundo a 49 días, la confirmación llega enseguida, y la cola sobrevive a un reinicio y se ve en el panel con cuenta atrás.

Integración

Puente entre brokers

El broker se conecta como cliente a otro broker MQTT y reenvía topics en ambos sentidos. Son configurables la dirección, las credenciales, TLS, la versión del protocolo y reglas de filtro + sentido + QoS + prefijos. Hay protección contra bucles, reconexión automática, No Local en la versión 5 y contadores en el panel.

API REST

Todo lo que hace el panel está disponible con un token bearer: estadísticas, clientes, suscripciones, mensajes retenidos, publicación, eventos, usuarios, ajustes, puentes, reglas, mensajes diferidos, importación y exportación. Un token puede emitirse de solo lectura.

Alta de dispositivos desde su sistema

POST /api/users crea un dispositivo junto con sus permisos, PATCH cambia la contraseña o la ACL y DELETE lo elimina. Los cambios se aplican al instante: el broker corta él mismo las conexiones activas de ese usuario para que las nuevas reglas surtan efecto sin esperar.

MQTT sobre WebSocket

El subprotocolo mqtt en el mismo puerto que el panel: los clientes de navegador se conectan sin pasarela aparte. La RFC 6455 está implementada sobre net/http, sin dependencias.

Importar y exportar

Ajustes, usuarios y reglas se exportan en un solo archivo y se vuelven a cargar: mudarse a otro servidor no exige repetir nada a mano.

Explotación

Un archivo, ninguna dependencia

Un binario en Go puro enlazado estáticamente: sin entorno de ejecución, sin libc y sin base de datos externa. Funciona en Debian y Ubuntu sin preparativos y se compila para amd64, arm64 y armhf.

Almacenamiento SQLite

Los mensajes retenidos se escriben en cuanto cambian, las sesiones persistentes se vuelcan cada diez segundos y al apagar, y los mensajes diferidos se escriben al encolarse. Lo caducado se descarta en el arranque y una línea state restored va al registro.

Salud de la máquina

Carga del procesador, memoria usada y espacio libre en el disco de datos, calculados con la biblioteca estándar, sin cgo, con implementaciones separadas para Linux y Windows. La barra pasa a ámbar por encima del 75 % y a rojo por encima del 90 %.

systemd y nginx

Se incluyen una unidad de systemd, una configuración de nginx y un script de instalación idempotente: el panel escucha solo en localhost y se publica a través de nginx, mientras que los puertos MQTT trabajan directamente.

Sello de compilación

La versión, el número de compilación y la fecha quedan grabados en el binario y se ven en el panel, en la sección Acerca de y con la opción -version: siempre sabe exactamente qué está ejecutando.

Todo ello, gratis

No hay límites de dispositivos, mensajes ni suscripciones.

Descargar el broker