Objetivos
- Pondremos una SD configurada con el sevidor IOT completo.
- Veremos como descargar la imagen completa.
- Veremos los detalles de administracion y los usuarios configurados.
Material requerido.
Una Raspberry Pi | |
Servidor IOT Configurado
En nuestra serie de tutoriales sobre como montar un servidor IOT completo, mediante Mosquitto, Telegraf, Influx DB y Grafana, hemos descrito y espero que definido, como instalar todo esto en una Raspberry Pi (No sería muy diferente en Windows) y confío en que, siguiendo cuidadosamente las instrucciones descritas, podáis instalar el vuestro a plena satisfacción.
Pero dado que la Raspberry Pi arranca desde una tarjeta SD… ¿Podríamos hacer una imagen de la misma para que la descargues directamente? La respuesta es por supuesto que sí. Y en mi caso he visto que puedo comprimir la tarjeta SD funcional con el Sistema Operativo y los servidores arriba descritos en unos 3,5 Gb, que, si bien no son poca cosa, es una cantidad accesible a ser descargada desde algún sitio de red
Naturalmente, habrá que configurar alguna cosa como las direcciones IP del servidor IOT y de los servicios, así como los usuarios o las políticas de seguridad, pero el objetivo de esta sesión será indicaros desde donde podéis descargar esa imagen ya configurada y mostrar algunas directrices de cómo realizar esa configuración para adaptarla vuestros requerimientos.
Por eso, dedicaremos esta última sesión sobre el Servidor IOT a mostraros como configurar la imagen descargada. Puedes descargar la imagen SD aquí:
Está generada con Win32DiskImager y solo tienes que copiarla a tu Tarjeta SD, de al menos 32 Gb de tamaño, aunque he tenido problemas con algunas marcas, pero a mi me funciona genial con una SanDisk Ultra de 32 Gb:
Para grabarla puedes usar Win32diskImager:
Ten en cuenta un par de cosas:
- La imagen está comprimida con Winrar. Descomprímela y tenla localizada en tu disco duro.
- Asegúrate de que apuntas a la imagen de un fichero en disco con el cuadro de «Image file». En mi caso «D:/Raspi OS/Raspi_IOT_Server 2.img» en el tuyo sera distinto.
- A la derecha del nombre del archivo en donde dice «Device» asegúrate de apuntar a la tarjeta SD correcta. SI te equivocas y apuntas al disco que no es borraras el disco duro indicado y no quiero ser responsable de la destrucción de cientos de películas o cosas así.
- Cuando estés seguro pulsa el botón Write, que te marco con la flecha roca y empezará la copia. Tomatelo con calma, puede tardar 15 minutos
- Al finalizar puedes introducir la tarjeta en tu Raspberry y si no hay errores hará un arranque elegante con todos los servicios activos.
Superusuario de la imagen
La imagen del sistema que publicamos tiene por defecto dos usuarios con derechos de root:
Puedes acceder a todo el sistema utilizando cualquiera de ellos, pero al ser públicos estos detalles, te recomiendo cambiar cuanto antes estos usuarios, sobre todo si vas a exponer tu Raspberry a Internet. Solo pretendo que puedas usar la imagen desde el primer momento, pero no cambiar estos usuarios es un riesgo que no quieres correr.
También necesitas saber que la red local está configurada como cable Ethernet y recibe la dirección IP mediante DHCP, que en mi caso era 192.168.1.52, pero que naturalmente, cambiará cuando lo conectes a tu red.
- He intentado, en toda ocasión, que las referencias a la dirección IP fueran como localhost o 127.0.0.1, ambas son sinónimos de la dirección IP local sin necesidad de especificarla.
Si, en tu caso, conectas mediante WIFI no debería suponer ningún cambio tampoco. Obtendrás la dirección IP por DHCP o mediante una dirección fija, pero en cualquier caso localhost debería funcionar sin problemas igualmente.
Configurando Mosquitto
Como ya vimos en la sesión de Mosquitto, Podemos configurarlo desde su fichero mosquitto.conf, situado en /etc/mosquitto:
listener 1883 allow_anonymous true #persistence true #persistence_location /var/lib/mosquitto/ log_dest file /etc/mosquitto/mosquitto.log password_file /etc/mosquitto/passwd
En este fichero podemos cambiar el puerto de escucha del 1883 (El estándard) al valor que prefieras y también usar un fichero de passwords diferente del que aquí os indico en la línea superior. De hecho, os recomiendo usar otro fichero de configuración con otros usuarios diferentes para evitar problemas.
Pero por si quieres modificar algo del sistema MQTT, existe en ese fichero un usuario con derechos de administrador, que puedes usar:
Como norma general este usuario existe con todos los derechos en todos los servicios y como norma (Ya sé que me pongo pesado) conviene que cambies este usuario cuanto antes. Si revisas la sesión de configuración del MQTT, veras como cambiar todo esto.
Configurando Influx DB
En la sesión correspondiente a la instalación de Influx DB, encontraras todo lo necesario para instalar la BD pero también para crear usuarios y asignarles derechos en Bases de Datos.
Como es habitual hay un usuario con privilegios:
Y una base de datos llamada test en la que este usuario es el administrador y a la que, por defecto, Telegraf envía los datos (Luego hablamos de Telegraf) con ese usuario/contraseña, lo mismo que Node-red.
Mi recomendación es que cambien tanto el usuario como la contraseña e incluso que crees otra BD, pero una parte de lo interesante de esta imagen es que no haya que trabajar mucho, así que tu verás.
Configurando Telegraf
La imagen del sistema emplea Telegraf como herramienta para leer el Broker Mosquitto y enviar los datos a Influx DB. SI has seguido las instrucciones de la sesión referente a Telegraf , encontraras estas líneas en el fichero de configuración (/etc/Telegraf/Telegraf.com) para enviar datos leídos a Influx:
[[outputs.influxdb]] urls = ["http://127.0.0.1:8086"] database = "test" skip_database_creation = false ## HTTP Basic Auth username = "charly" password = "contrase"
Aquí tienes las líneas a cambiar si modificas el nombre de la BD Influx y el nombre y pass del usuario que crees o quieras usar, así como la IP del servidor Influx y del puerto a usar.
También encontraras las líneas que especifican la suscripción de Telegraf al Broker MQTT:
# Read metrics from MQTT topic(s) [[inputs.mqtt_consumer]] servers = ["tcp://127.0.0.1:1883"] # ## Broker URLs for the MQTT server topics = [ "Prosensor/CO2", "Prosensor/TEMP", "Prosensor/HUMED", ] #qos = 2 username = "charly" ## Username and password to connect MQTT server. password = "contrase" data_format = "influx"
De nuevo el servidor MQTT esta especificado como 127.0.0.1:1883, para indicar le puerto estándar y el servidor local. Las ultimas líneas indican el usuario y contraseña a emplear en la conexión al servidor MQTT.
La última línea indica que el String de datos que recibiremos del servidor MQTT, está en formato line de Influx (Es decir comandos como los que vimos en la sesión correspondiente). Aquí es interesante destacar que podríamos enviar los datos en formato JSON, por ejemplo, con la ventaja adicional de formateo que podríamos conseguir, pero he optado por la forma mas simple para no complicar la historia,
- El formato JSON tiene muchas ventajas, pero nos obligaría a reescribir el formato que envía nuestro ESP32 al broker MQTT y prefiero usar un solo programa
Configurando Grafana
De nuevo y como es habitual existe el usuario habitual con derechos de administración en Grafana:
En la sesión correspondiente a Grafana nos dedicamos con bastante intensidad a mostrar como generar los reportes gráficos, pero no entramos en los temas de crear usuarios y grupos así como sus derechos por lo que creo que nos conviene dedicar algo de tiempo a ello.
La primera vez que entres a Grafana te pedirá el login que puedes pasar con el usuario de arriba, pero luego te recomiendo con intensidad que crees tu propio usuario y borres este, porque sin duda querrás acceder a Grafana desde internet y dejar un usuario publico como este es pedir a gritos que te la líen. Hazme caso y cámbialo.
Si has hecho el login con cualquiera de los dos usuarios de arriba, deberías ver en la primera columna a la izquierda el icono del escudo, debajo del icono de los ajustes, pincha en:
Si no ves el ultimo icono es que no tienes derechos de administración. Voy a crear un nuevo usuario llamado charlymacho (No tengo más emails, ¿Qué queréis que os diga? Te aparecerá esto otro. rellena los datos del nuevo usuario:
Al terminar pulsa en el botón azul “créate user” y veras el usuario recién creado, pero si te fijas no hemos definido su rol en ningún momento. Para hacerlo tenemos que ir a el icono del engranaje:
Veras los usuarios existentes y sus roles, y comprobarás que el usuario charlymacho tiene derecho de viewer. Si pulsas en el desplegable puedes asignarle el rol de admin. Lo lógico es que tu crees un par de usuarios propios con derechos de admin (Que las cosas raras son frecuentes) y una vez creado borres los dos que heredas de la instalación.
Lo primero que tienes que hacer es crear un usuario con permisos de Admin, para que puedas gestionar Grafana y que será el que usarás en el futuro con tus especificaciones. Observa en la imagen que he marcado la opción Admin en Role para asegurar esto. Los roles disponibles son:
- Viewer : Permite acceder a ver la pagina web, pero no a modificarla,
- Editor : Permite modificar el grafico a diferencia del Rol Viewer.
- Admin : Tien todos los derechos anteriores y además a crear y modificar usuarios y asignar sus derechos en el Dashboard, crear data Sources.
Configurando Node-red
En la sesión de Node-red, aprendimos a configurar usuarios y de hecho creamos dos, y mostramos con detalle como cambiar las contraseñas y los usuarios en el fichero de configuración “settings.js”. Si es la primera vez que entras puedes usar:
Para crear tus propios usuarios, tienes que editar el fichero settings.js que se en encuentra en $HOME/.node-red/settings.js con tu editor preferido:
- Observa que el nombre del directorio empieza por un punto (No es un error, no). Por si acabas de aterrizar en Linux, los ficheros cuyo nombre empican por punto, significa que están ocultos y no se ven con un comando ls por las buenas.
- Pero si puedes verlos usando el comando «ls -a» , es decir all[/fancy-ul] [/three-fourth]
Tienes que buscar la sección adminAuth y modificar los usuarios, según el tutorial de Instalación de Node-red:
adminAuth: { type: "credentials", users: [ { username: "admin", password: "$2b$10$2DiQRwQ/yi7OZyBYxGd4keFwmxj9RpitnzOyTwBh8oP3SYqPouEQa", permissions: "*" }, { username: "charly", password: "$2b$10$P8UmP07PNO6FZ2PwT2v34OY9RNCJbR3Wt9bsRW9No4EjTgWQb5vM.", permissions: "*" } ] },
Desde aquí puedes crear los usuarios que necesites, pero recuerda que antes, tienes que encriptar las contraseñas con Bcrypt para poder usarlas desde aquí.
Y eso es todo. Espero que puedas arrancar tu servidor IOT sin mas complicaciones y enseguida podrás hacer tus pruebas de servicio. Espero que os resulte útil.