Diferència entre revisions de la pàgina «Instal·lació de MQTT a un servidor remot basat en Debian 9»

De Wiki d'en Jordi Binefa
Dreceres ràpides: navegació, cerca
m
Línia 1: Línia 1:
Les passes descrites a aquesta pàgina les he fet a un [https://www.ovh.es/vps/vps-ssd.xml 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).
+
Les passes descrites a aquesta pàgina les he fet a un [https://www.ovh.es/vps/vps-ssd.xml 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ó =
 
= Instal·lació =
Línia 41: Línia 41:
 
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.
 
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 als subtemes que pengen del tema ''/house/''  
+
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 iot.electronics.cat -t /house/#
+
  popotamo@popotamo:~$ mosquitto_sub -h broker.electronics.cat -t /house/#
 
  Hola
 
  Hola
 
  Hola i A10
 
  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''
 
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 iot.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 joMateix
  jordi@debianJB:~$ mosquitto_pub -h iot.electronics.cat -t /house/casa/meva -m "Hola i A10" -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 =
 
= 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

Revisió del 20:01, 1 ago 2018

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

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