Inicio Broker MQTT con Mosquitto
Entrada
Cancelar

Broker MQTT con Mosquitto

Un broker MQTT es un servicio de mensajería donde existen diferentes salas donde los clientes comparten información, en este caso Owntracks en android. En cristiano: La aplicación Owntracks, que sirve para compartir la localización del teléfono, necesita un sitio donde ir poniendo dónde está para que los otros clientes lo sepan. Ese sitio es Mosquitto.

Lo voy a instalar con docker.

Empecemos:

  1. Primero vamos a crear los directorios necesarios, que como siempre, van a ir en ~/docker/mosquitto porque a mí me gusta tenerlo ahí. Lo vamos a hacer desde el usuario root para que Mosquitto no nos de problemas.
1
2
3
4
su
mkdir ~/docker/mosquitto
cd ~/docker/mosquitto
nvim docker-compose.yml
  1. El compose queda así:
1
2
3
4
5
6
7
8
9
10
11
12
13
services:
  mosquitto:
    image: eclipse-mosquitto
    container_name: mosquitto
    volumes:
      - ./config:/mosquitto/config
      - ./data:/mosquitto/data
      - ./log:/mosquitto/log
    ports:
      - 1883:1883
      - 9001:9001
    stdin_open: true
    tty: true
  1. Creamos el archivo de configuración.
1
2
mkdir config
nvim ./config/mosquitto.conf
  1. Añadimos esto al archivo:
1
2
3
4
5
6
7
8
9
10
listener 1883
listener 9001
protocol websockets
persistence true
persistence_file mosquitto.db
persistence_location /mosquitto/data/

#Authentication
allow_anonymous false
password_file /mosquitto/config/pwfile
  1. Creamos el archivo donde irán nuestros usuarios con sus contraseñas y le cambiamos los permisos.
1
2
touch ./config/pwfile
chmod 0700 ./config/pwfile
  1. Ya podemos lanzar el compose.
1
docker-compose up -d
  1. Creamos el primer usuario entrando en la shell del docker y le damos una contraseña que va a guardar en ./config/pwfile . Si vamos a añadir más usuarios, en los siguientes, quitamos la -c para que no borre los usuarios anteriores (la c se ve que es de clear, o sea, todo lo que haya lo mando al carajo y pongo sólo lo nuevo).
1
2
3
docker-compose exec mosquitto sh
mosquitto_passwd -c /mosquitto/config/pwfile <USERNAME>
mosquitto_passwd /mosquitto/config/pwfile <USERNAME2>

Si al crear el usuario te dice que cambies el propietario del archivo pwfile con chown, lo haces desde la misma terminal de docker antes de salir.

1
2
chown root:root /mosquitto/config/pwfile
exit
  1. Reiniciamos el docker con docker-compose restart mosquitto.

  2. Ya que tenemos el broker funcionando, vamos con caddy. Abrimos el archivo /etc/caddy/Caddyfile con el editor de texto y añadimos el virtualhost.

1
2
3
mosquitto.tudominio.es {
        reverse_proxy localhost:9001
}
  1. Reiniciamos caddy y sanseacabó, ya tenemos mosquitto funcionando.

Más información en:

Esta entrada está licenciada bajo CC BY 4.0 por el autor.