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:
- 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
|
- 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
|
- Creamos el archivo de configuración.
1
2
| mkdir config
nvim ./config/mosquitto.conf
|
- 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
|
- 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
|
- Ya podemos lanzar el compose.
- 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
|
-
Reiniciamos el docker con docker-compose restart mosquitto
.
-
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
}
|
- Reiniciamos caddy y sanseacabó, ya tenemos mosquitto funcionando.
Más información en: