Saltar a contenido

Broker Kuska MQTT

El broker esta hecho para que se despliegue mediante Docker, de esta forma evitamos la complejidad de hacer configuraciones manuales y cosas así.

¿Como desplegar el broker?

Como mencioné antes, este brocker funciona con Docker y mas precisamente con docker compose, así que se debe contar con una instalación de este programa en el lugar donde se requiera instalar.

Hay un articulo para hacer la instalación de docker que me parece que lo explican muy bien.

Cómo instalar y usar Docker en Ubuntu 20.04

Aquí hay otro articulo para los que usan windows

Install Docker Desktop on Windows

Pasos a seguir para un despliegue correcto

  1. Clonar repositorio

    git clone https://gitlab.com/llapanku-kuska/server.git
    git checkout v0.0.1
    

    Información

    Recuerden que si quieren hacer cambios en el repositorio original deben hacer un Fork de este proyecto y luego usar la url con ssh git@gitlab.com:llapanku-kuska/server.git

  2. Crea una carpeta llamada mosquitto en una ruta conocida y agregar la siguiente estructura

 ├─ mosquitto/
    └─ config/
    └─ data/
    └─ log/

Esta estructura es necesaria para configurar el comportamiento del broker. dentro de la carpeta config/ se debe crear un archivo mosquitto.confy se agrega la siguiente configuración

mosquitto.conf
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log

listener 1883 0.0.0.0 # Esto se debe cambiar si se agregar man niveles de seguridad
allow_anonymous true # Esto tambien
  1. Dentro del repositorio que ejecuta el comando
docker compose up --build -d

Esto despliega el contenedor con una base de datos MongoDB y un broker Mosquitto

Comprobar funcionamiento

La IP del broker debe ser la IP de tu computadora mas el puerto 1883

docker run --rm eclipse-mosquitto mosquitto_sub -h [IP] -t "sensor/temp"

Si tienes un sensor publicando en el topic sensor/temp podrás ver este menaje en la terminal

Agregar seguridad al Broker Kuska

Esto es interesante, porque puede controlar quien puede acceder a tu broker MQTT y de esta forma evitar sabotajes como los que tuve yo en mi broker libre.

En el archivo mosquitto.conf cambiamos la linea allow_anonymous y agregamos una nueva linea para el administrador de claves, finalmente el archivo mosquitto.conf quedaría de la siguiente forma.

mosquitto.conf
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
password_file /mosquitto/config/passwords #Nueva línea agregada

listener 1883 0.0.0.0
allow_anonymous false #Cambiado a False

Una vez hecho esto se crea un archivo llamado passwodsdentro de la carpeta config

sudo touch mosquitto/config/passwords

Luego se genera un nuevo usuario con el siguiente comando

docker run --rm -v ~/mosquitto/config:/mosquitto/config eclipse-mosquitto mosquitto_passwd -b /mosquitto/config/passwords usuario1 password1

Se debe nos movemos a la ultima versión en el repositorio

git checkout v0.1.0

Actualizamos en archivo .env con los valores de usuario y password que has creado antes.

.env
MQTT_USER = "usuario1"
MQTT_PASSWORD = "password1"

Verificar que funciona

Reinicia todos los contenedores

docker compose down
docker compose up --build -d

Ahora para poder conectarte al broker debes usar el usuario y password que has creado.

Aplicación MQTT Explorer

También puedes ejecutar para hacerlo desde la terminal

docker run --rm eclipse-mosquitto mosquitto_sub -h localhost -t "#" -u "usuario1" -P "password1"

Bueno esto es todo lo necesario para desplegar este broker, los datos enviados se estarían almacenando en una base de datos mongodb, disponible de forma remota o local si lo has hecho en tu dispositivo personal.

Si necesitas ayuda con el despliegue del broker puedes comentar en el grupo de Telegram

KuskaIOT/broker