Instalar y configurar MQTT (Mosquitto)

Fecha publicación
#
20
Dificultad
Básico
3 more properties
Publicado
tags
i40sys, industry 4.0, industry40.systems, industrial, remote access, acceso remoto, plc, siemens, omron, ubuntu, linux, iot gateway, gateway, iot, internet of things, docker, container, ubuntu, node-red, programming, mqtt, mosquitto

Descripción

Se describe como instalar el broker de mensajes MQTT, concretamente Mosquitto. Se usará docker-compose para simplificar el proceso de ejecución, gestión y migración. Además también se describe como hacer la gestión de usuarios.

Contenidos:


Añadir usuario y grupo con UID/GID fijos

Plain Text
groupadd mqtt -g 1883
useradd mqtt -u 1883 -g 1883 -m -s /bin/true

Árbol de ficheros y directorios

Shell
/docker-data/mqtt# tree
.
├── data
│   └── persistence.db
├── etc
│   ├── mosquitto.conf
│   └── mqtt_users
├── launch.sh
└── log
    └── mosquitto.log

Comandos para la creación de los directorios y ficheros requeridos

Bash
mkdir -p /docker-data/mqtt/data
mkdir /docker-data/mqtt/etc
mkdir /docker-data/mqtt/log
touch /docker-data/mqtt/etc/mqtt_users
touch /docker-data/mqtt/etc/mosquitto.conf

Cambio de propietarios

Bash
chown -R mqtt.mqtt /docker-data/mqtt

Fichero de configuración

/docker-data/mqtt/etc/mosquitto.conf
Bash
listener 1883

listener 9001
protocol websockets

persistence true
autosave_interval 60
persistence_file /mosquitto/data/persistence.db
persistent_client_expiration 1d

allow_anonymous false
password_file /mosquitto/config/mqtt_users

log_type information
log_timestamp true
log_dest file /mosquitto/log/mosquitto.log

docker-compose.yml

YAML
version: '3.3'
services:
  mqtt:
    container_name: mqtt
    ports:
      - '1883:1883'
      - '9001:9001'
    volumes:
      - './etc/mosquitto.conf:/mosquitto/config/mosquitto.conf:ro'
      - './etc/mqtt_users:/mosquitto/config/mqtt_users:ro'
      - './data:/mosquitto/data'
      - './log:/mosquitto/log'
    restart: unless-stopped
    image: eclipse-mosquitto

Añadir usuarios

Bash
docker exec -it mqtt /bin/sh
cd /mosquitto/data
mosquitto_passwd -c tmp <username>
#
# enter user password
#
exit
cd /docker-data/mqtt/etc
cat ../data/tmp >> mqtt_users
rm ../data/tmp