Instalación
El broker es un ejecutable. En Linux el paquete Debian añade además una unidad systemd, crea el directorio de trabajo y arranca el servicio; en Windows el archivo funciona donde lo deje.
wget https://elxsoftware.com/download/elxmqttbroker-linux-amd64
sudo install -m 755 elxmqttbroker-linux-amd64 /usr/local/bin/elxmqttbroker
sudo elxmqttbroker --install-service
sudo systemctl enable --now elxmqttbroker
Para las placas ARM de 32 y 64 bits el procedimiento es el mismo — tome arm64 o armhf. Cuál tiene se lo dice uname -m: aarch64 significa arm64, armv7l significa armhf.
Ejecute el instalador, o descomprima la compilación portátil y abra elxmqttbroker.exe.
La interfaz se abre en http://127.0.0.1:8567
Acceso inicial: admin / admin
admin / admin, para que el primer arranque salga bien sin configuración. Cámbiela en la interfaz antes de que la máquina sea alcanzable desde algo que no sea su mesa.El primer arranque
- Abra
http://<dirección>:8567y entre. - Cambie la contraseña del administrador desde el menú del perfil.
- Cree en Usuarios una cuenta para sus dispositivos y déle los temas que necesite — la lista de permisos empieza vacía, y una lista vacía significa ningún acceso.
- Conecte un cliente y véalo aparecer en Clientes: eso confirma de una vez dirección, puerto y credenciales.
- Publique un mensaje de prueba desde Publicar y compruebe que el suscriptor lo recibe.
Usuarios y permisos
Cada cuenta lleva una lista de reglas. Una regla es un filtro de temas, un tipo de acceso — suscribirse, publicar o ambos — y un veredicto: permitir o denegar. No se permite nada que no esté escrito: una cuenta sin reglas se conecta y no puede hacer nada.
| Regla | Significado |
|---|---|
sensors/# · suscribirse · permitir | Puede leer toda la rama de sensores |
sensors/kitchen/+ · publicar · permitir | Puede escribir en cualquier tema un nivel por debajo de kitchen |
devices/$u/# · ambos · permitir | Puede hacerlo todo en su propia rama y nada fuera de ella |
# · ambos · denegar | Deniega expresamente todo lo que arriba no se ha permitido |
El comodín $u se convierte en el nombre de la cuenta al conectar. Una sola regla sirve así a mil dispositivos sin mil reglas: cada uno ve solo su propio subárbol.
De dónde vienen las credenciales
El broker puede llevar su propia lista de cuentas o preguntar a otra cosa. La fuente se cambia en caliente, sin reiniciar, de modo que se puede probar una nueva mientras la vieja sigue sirviendo.
- Interna. Cuentas en la base del propio broker. Adecuada para unas decenas de dispositivos.
- MariaDB / MySQL. Una tabla que ya tiene, con la consulta escrita en los ajustes. Adecuada cuando ya existe en otro sitio un inventario de dispositivos.
- SQLite. Un archivo de la misma forma, para un sistema que guarda sus datos en local.
- CSV. Un archivo sencillo, releído cuando cambia. Cómodo para una lista fija que produce otra herramienta.
- JWT. El dispositivo presenta un testigo firmado en lugar de una contraseña; el broker verifica la firma y lee los permisos de sus campos.
- HTTP. El broker pregunta a su servicio si este cliente puede conectarse, y su servicio responde. Todo lo que usted ya aplica — bloqueo de dispositivos, tarifas, cuotas — vale entonces sin duplicarse.
TLS
Indique al broker un certificado y una clave y la escucha cifrada arranca en el puerto 8883; la interfaz puede usar el mismo par. Para una red cerrada el broker sabe generar por sí mismo un par autofirmado, y con eso basta para que las contraseñas no viajen por el cable.
openssl s_client -connect broker.example.com:8883 -servername broker.example.com </dev/null | head -20
Puentes
Un puente es una conexión permanente hacia otro broker, con la lista de temas que hay que transportar. La dirección se fija tema por tema: hacia fuera empuja los mensajes locales, hacia dentro trae los remotos, ambas hace las dos cosas.
- En cada lado se puede añadir un prefijo, para que los mensajes de una sede remota lleguen bajo
site-b/…y nunca choquen con los locales. - La protección contra bucles impide que un mensaje llegado por el puente vuelva a salir enseguida.
- Una conexión caída se reintenta con una pausa creciente; la cola sigue mientras tanto.
- TLS y credenciales se configuran por puente, de modo que dos sedes pueden usar certificados distintos.
Publicación diferida
Publicar en $delayed/<segundos>/<tema> entrega al broker un mensaje para repartir más tarde. Se guarda, sobrevive a un reinicio y aparece en la interfaz, donde puede cancelarse antes de que salte.
mosquitto_pub -h broker -t '$delayed/300/home/light/kitchen' -m 'off'
La sintaxis coincide con la de EMQX, así que los guiones escritos para aquel broker funcionan sin retoques.
Límites de ritmo
Dos mecanismos para dos problemas distintos. Un cubo de fichas por conexión impide que un cliente inunde el broker. Las reglas por tema atienden el otro caso — un dispositivo sencillamente demasiado entusiasta: en lugar de desconectarlo, se aclara el flujo a cierto ritmo conservando el valor más reciente.
| Regla | Efecto |
|---|---|
sensors/+/raw · 1 por segundo | Como mucho un mensaje por segundo y tema; gana el más nuevo |
debug/# · descartar | Descartado en el broker, los suscriptores nunca lo ven |
| Conexión · 200 por segundo | Un cliente que se pase se frena y luego se desconecta |
API REST
La interfaz es un cliente de la misma API que usted puede usar. Cree un testigo en los ajustes, decida si puede escribir y llámela desde su propio sistema.
curl -X POST https://broker.example.com/api/users \
-H 'Authorization: Bearer <testigo>' \
-H 'Content-Type: application/json' \
-d '{"name":"sensor-42","password":"...","acl":[{"filter":"devices/sensor-42/#","access":"both","allow":true}]}'
Qué sobrevive a un reinicio
- Los mensajes retenidos — el último valor de cada tema que lo pidió.
- Las sesiones persistentes — las suscripciones de los clientes conectados con
clean_sessiondesactivado. - Las colas QoS 1 y 2 de esas sesiones mientras el cliente está ausente.
- Los mensajes diferidos cuyo plazo aún no ha llegado.
- Usuarios, permisos, puentes, reglas y ajustes.
Todo eso cabe en un archivo SQLite. Respaldar el broker es copiar ese archivo; mudarlo es llevárselo.
Cuando algo no va
| Síntoma | Dónde mirar |
|---|---|
| El cliente se conecta y se desconecta enseguida | Credenciales, o una lista de permisos que lo deniega todo. El flujo de sucesos dice el motivo. |
| Se publican mensajes pero nadie los recibe | Los permisos de quien publica permiten escribir, los del suscriptor no permiten leer ese filtro. |
| El valor retenido no vuelve tras un reinicio | La persistencia está desactivada, o el directorio de trabajo no es escribible por el usuario del servicio. |
| Un dispositivo se reconecta sin parar | Dos clientes con el mismo identificador — cada conexión echa a la otra. |
| Un cliente TLS se queja del certificado | Un certificado autofirmado en el que no confía, o un nombre que no coincide con el certificado. |
| La interfaz no es alcanzable desde otra máquina | Está atada a la dirección de bucle; cambie la dirección de escucha en los ajustes. |