Node-RED a un servidor intermediari invers emprant Dockers

De things.cat
Salta a: navegació, cerca

Previ

Cal tenir una Servidor intermediari invers. Farem servir la mateixa xarxa interna de dockers al Node-RED i al servidor intermediari invers.

Podeu veure quins dockers són connectats a la xarxa interna:

docker network inspect net

Docker Node-RED

Docker Node-RED a GitHub

Explicació de l'ús de docker a la pàgina oficial de Node-RED

Docker de Node-RED a DockerHub

Volum de dades

Per a tenir persistència de dades caldrà crear un volum (la versió docker de Node-RED no permet una adreça absoluta o relativa). A aquest exemple, el nom del volum és node_red_data_vol:

jordi@vps:~$ docker volume create --name node_red_data_vol
node_red_data_vol
jordi@vps:~$ docker volume ls
DRIVER    VOLUME NAME
local     4c6fef4d8230506f389bfb915256365bac80be875d55077ec4eff4c6672d89
local     316f02665e61720a8165c30d9cec6de5a8b3c6ecc4175c3faecc00dafe548d
local     c278d7565bba5de8fb48f98951c293d27818604683012c4bac202281db07ca
local     e9e43b1bb654f05dedf8352c6f4074a3089e5b1c3cf8e7efddb6400a753893
local     node_red_data_vol
local     reverse-proxy_certs
local     reverse-proxy_dhparam
local     reverse-proxy_html
local     reverse-proxy_vhost

Crida amb docker run

jordi@vps:~$ docker run -d --name=nodered_binefa_cat --restart=always --network=net -v node_red_data_vol:/data -e VIRTUAL_HOST="nodered.binefa.cat" -e LETSENCRYPT_HOST="nodered.binefa.cat" -e VIRTUAL_PORT=1880 -e TZ="Europe/Andorra" nodered/node-red

Podeu verificar que el docker funciona amb normalitat:

jordi@vps:~$ docker ps -a
CONTAINER ID   IMAGE                                           COMMAND                  CREATED          STATUS                    PORTS                                                                      NAMES
70e1824555ad   nodered/node-red                                "./entrypoint.sh"        22 minutes ago   Up 22 minutes (healthy)   1880/tcp                                                                   nodered_binefa_cat
352309551a15   jwilder/nginx-proxy:latest                      "/app/docker-entrypo…"   7 months ago     Up 2 months               0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   reverse-proxy
a39755a6a96b   jrcs/letsencrypt-nginx-proxy-companion:latest   "/bin/bash /app/entr…"   7 months ago     Up 2 months                                                                                          letsencrypt-helper

I ja hi podeu accedir mitjançant un navegador d'internet. Però amb l'inconvenient que no hi ha autenticació d'accés. Al següent apartat incorporem l'autenticació.

Com autenticar (afegir usuari i contrasenya) al Node-RED emprant dockers

Accés per terminal dins del docker funcionant

jordi@vps:~$ docker exec -it nodered_binefa_cat /bin/bash

Dins del docker podeu generar un hash a partir de la contrasenya que escriviu:

0018a55e253d:~$ node-red admin hash-pw
Password: 
$2b$08$cMGvP0XgtMpgSBfAKeomEOjh3N28vTxthMWvXq5HHqD4BGnJulH8u
0018a55e253d:~$ exit
exit
jordi@vps:~$

Accés al volum persistent

Per autenticar el Node-RED cal tenir accés a l'arxiu settings.js de forma persistent. Per a això cal accedir al volum de dades:

jordi@vps:~$ sudo bash
root@vps:/home/jordi/bin# cd /var/lib/docker/volumes/node_red_data_vol/_data
root@vps:/var/lib/docker/volumes/node_red_data_vol/_data# ls -ls
total 40
 4 -rw-r--r-- 1 root   root    1373 Mar 12 17:49 flows.json
 4 drwxr-xr-x 3 debian netdev  4096 Mar 26 17:12 lib
 4 drwxr-xr-x 2 debian netdev  4096 Mar 26 17:12 node_modules
 4 -rw-r--r-- 1 debian netdev   120 Mar 26 17:12 package.json
24 -rw-r--r-- 1 debian netdev 23200 Mar 26 17:12 settings.js
root@vps:/var/lib/docker/volumes/node_red_data_vol/_data# nano settings.js 
root@vps:/var/lib/docker/volumes/node_red_data_vol/_data# exit
exit
jordi@vps:~$

Podeu seguir els suggeriments de la pàgina securing-node-red per autenticar el Node-RED emprant el hash generat anteriorment, editant l'arxiu settings.js.

Per a que prengui efecte el canvi, feu un stop i un start al docker. Recarregueu la pàgina al navegador i verifiqueu que ja és en marxa l'autenticació.