Instal·lació de MQTT a un servidor remot basat en Debian 9
Les passes descrites a aquesta pàgina les he fet a un servidor virtual privat (VPS) d'OVH (al primer d'agost de 2018 el preu és 3€ al mes, més IVA, per un ordinador VPS al núvol amb 1 vCore, 2,4 GHz, 2 GB RAM i 20 GB SSD). De les opcions de sistema operatiu he escollit un Debian 9 (Stretch).
Instal·lació
Fent una connexió remota mitjançant SSH accedim al terminal remot.
No farem servir el paquet mosquitto que ve per defecte als dipòsits de Debian, farem servir els dipòsits propis de mosquitto.org
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key apt-key add mosquitto-repo.gpg.key cd /etc/apt/sources.list.d/ wget http://repo.mosquitto.org/debian/mosquitto-stretch.list apt-get update apt-get install mosquitto mosquitto-clients service mosquitto status
Configuració per defecte
root@remot:/etc/mosquitto# cat /etc/mosquitto/mosquitto.conf # Place your local configuration in /etc/mosquitto/conf.d/ # # A full description of the configuration file is at # /usr/share/doc/mosquitto/examples/mosquitto.conf.example pid_file /var/run/mosquitto.pid persistence true persistence_location /var/lib/mosquitto/ log_dest file /var/log/mosquitto/mosquitto.log include_dir /etc/mosquitto/conf.d
A l'arxiu de bitàcola /var/log/mosquitto/mosquitto.log es pot veure tot el que està passant al servei mosquitto.
1533141525: mosquitto version 1.5 starting 1533141525: Config loaded from /etc/mosquitto/mosquitto.conf. 1533141525: Opening ipv4 listen socket on port 1883. 1533141525: Opening ipv6 listen socket on port 1883. 1533141550: New connection from 37.133.159.153 on port 1883. 1533141550: New client connected from 37.133.159.153 as mosqsub|2034-popotamo (c1, k60). 1533141567: New connection from 2.152.69.183 on port 1883. 1533141567: New client connected from 2.152.69.163 as joMateix (c1, k60). 1533141567: Client joMateix disconnected. 1533141721: New connection from 2.152.69.163 on port 1883.
Aquest registre recull que dos ordinadors des de dues IP públiques diferents s'han connectat mitjançant el protocol MQTT. Un com a subscriptor i un altre com a publicador.
L'ordinador popotamo connectat a Internet amb IP pública 37.133.159.153 s'ha subscrit a tots els subtemes que pengen del tema /house/
popotamo@popotamo:~$ mosquitto_sub -h broker.electronics.cat -t /house/# Hola Hola i A10
L'ordinador debianJB connectat a Internet amb IP pública 2.152.69.163 ha publicat dos missatges al subtema /house/casa/meva identificant-se com a joMateix
jordi@debianJB:~$ mosquitto_pub -h broker.electronics.cat -t /house/casa/meva -m "Hola" -i joMateix jordi@debianJB:~$ mosquitto_pub -h broker.electronics.cat -t /house/casa/meva -m "Hola i A10" -i joMateix
Configuració restrictiva per nom d'usuari i contrasenya
Genereu un arxiu anomenat contrasenyes.txt a partir de mosquitto_passwd
root@remot:/etc/mosquitto# mosquitto_passwd -c contrasenyes.txt ecat Password: Reenter password: root@remot:/etc/mosquitto# mosquitto_passwd -b contrasenyes.txt etpc elClot
A l'arxiu contrasenyes.txt veiem els usuaris i llurs contrasenyes encriptades:
root@remot:/etc/mosquitto# cat contrasenyes.txt ecat:$6$e917HQ4WGHXwk9pZ$4TYPRC6QtAXK+6Kb6BYEtnGCuszjLaQf17euPDeLDOfpunKqES55q2wXCkSeeEoXbSLVPI7WQ== etpc:$6$tl8PZf0GRfsMrnNf$5IrJJh9H85bi85F28VXP5Sr0n8sgFqXLEB97V6mnEDGVe4q/JCwixBNFcPlc7k27jH4j4tuUw==
Editeu l'arxiu de configuració /etc/mosquitto/mosquitto.conf
root@remot:/etc/mosquitto# nano /etc/mosquitto/mosquitto.conf
i afegiu les dues darreres línies (una per a no acceptar usuaris anònims i l'altre per a indicar la ruta absoluta de l'arxiu de contrasenyes):
root@remot:/etc/mosquitto# cat /etc/mosquitto/mosquitto.conf # Place your local configuration in /etc/mosquitto/conf.d/ # # A full description of the configuration file is at # /usr/share/doc/mosquitto/examples/mosquitto.conf.example pid_file /var/run/mosquitto.pid persistence true persistence_location /var/lib/mosquitto/ log_dest file /var/log/mosquitto/mosquitto.log include_dir /etc/mosquitto/conf.d # Two new lines allow_anonymous false password_file /etc/mosquitto/contrasenyes.txt
Si voleu fer una connexió MQTTS (MQTT segura): Configuració de MQTTS a un servidor remot basat en Debian 9