Diferència entre revisions de la pàgina «Node-RED a un servidor intermediari invers emprant Dockers»

De things.cat
Salta a: navegació, cerca
m (Crida amb docker run)
m (Accés al volum persistent)
 
(Hi ha 13 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
 
= Previ =
 
= Previ =
Cal tenir una [[Servidor intermediari invers]]. Farem servir la mateixa xarxa interna de ''dockers'' a la base de dades de Moodle, al mateix Moodle i al servidor intermediari invers.
+
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:
 
Podeu veure quins ''dockers'' són connectats a la xarxa interna:
Línia 6: Línia 6:
  
 
= ''Docker'' Node-RED =
 
= ''Docker'' Node-RED =
 +
[https://github.com/node-red/node-red-docker ''Docker'' Node-RED a GitHub]
 +
 +
[https://nodered.org/docs/getting-started/docker Explicació de l'ús de ''docker'' a la pàgina oficial de Node-RED]
 +
 +
[https://hub.docker.com/r/nodered/node-red/ ''Docker'' de Node-RED a DockerHub]
 
== Volum de dades ==
 
== 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'':
+
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'''
 
  jordi@vps:~$ '''docker volume create --name node_red_data_vol'''
 
  node_red_data_vol
 
  node_red_data_vol
Línia 16: Línia 21:
 
  local    c278d7565bba5de8fb48f98951c293d27818604683012c4bac202281db07ca
 
  local    c278d7565bba5de8fb48f98951c293d27818604683012c4bac202281db07ca
 
  local    e9e43b1bb654f05dedf8352c6f4074a3089e5b1c3cf8e7efddb6400a753893
 
  local    e9e43b1bb654f05dedf8352c6f4074a3089e5b1c3cf8e7efddb6400a753893
local    mariadb-data
 
local    moodle-data
 
local    moodle_mariadb_data
 
local    moodle_moodle_data
 
 
  local    '''node_red_data_vol'''
 
  local    '''node_red_data_vol'''
 
  local    reverse-proxy_certs
 
  local    reverse-proxy_certs
Línia 27: Línia 28:
  
 
== Crida amb ''docker run'' ==
 
== 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
+
  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:
 
Podeu verificar que el ''docker'' funciona amb normalitat:
Línia 36: Línia 37:
 
  a39755a6a96b  jrcs/letsencrypt-nginx-proxy-companion:latest  "/bin/bash /app/entr…"  7 months ago    Up 2 months                                                                                          letsencrypt-helper
 
  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.
+
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 afegir usuari i contrasenya al Node-RED emprant ''dockers'' =
+
= Com autenticar (afegir usuari i contrasenya) al Node-RED emprant ''dockers'' =
 
== Accés per terminal dins del ''docker'' funcionant ==
 
== Accés per terminal dins del ''docker'' funcionant ==
 
  jordi@vps:~$ docker exec -it nodered_binefa_cat /bin/bash
 
  jordi@vps:~$ docker exec -it nodered_binefa_cat /bin/bash
== Accés al volum persistent =
+
 
Com accedir al volum de dades:
+
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 [https://nodered.org/docs/user-guide/runtime/securing-node-red 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
 
  jordi@vps:~$ sudo bash
 
  root@vps:/home/jordi/bin# '''cd /var/lib/docker/volumes/''node_red_data_vol''/_data'''
 
  root@vps:/home/jordi/bin# '''cd /var/lib/docker/volumes/''node_red_data_vol''/_data'''
Línia 52: Línia 62:
 
   4 -rw-r--r-- 1 debian netdev  120 Mar 26 17:12 package.json
 
   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'''
 
  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# '''nano settings.js'''
 
  root@vps:/var/lib/docker/volumes/node_red_data_vol/_data# exit
 
  root@vps:/var/lib/docker/volumes/node_red_data_vol/_data# exit
 
  exit
 
  exit
 
  jordi@vps:~$
 
  jordi@vps:~$
 +
 +
Podeu seguir els suggeriments de la pàgina [https://nodered.org/docs/user-guide/runtime/securing-node-red 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ó.

Revisió de 19:00, 26 març 2024

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ó.