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
groupadd mqtt -g 1883
useradd mqtt -u 1883 -g 1883 -m -s /bin/trueÁrbol de ficheros y directorios
/docker-data/mqtt# tree
.
├── data
│ └── persistence.db
├── etc
│ ├── mosquitto.conf
│ └── mqtt_users
├── launch.sh
└── log
└── mosquitto.logComandos para la creación de los directorios y ficheros requeridos
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.confCambio de propietarios
chown -R mqtt.mqtt /docker-data/mqttFichero de configuración
/docker-data/mqtt/etc/mosquitto.conf
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.logdocker-compose.yml
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-mosquittoAñadir usuarios
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
