Instalar Node-Red en un miniVps Debian8 (openVz)

Instalar node-red en Debian puede ser costoso. ya que el tipico apt-get install node-red no funciona.
Antes hay que hacer varios retoques. Y desde que debian8 a pasado a archive varios articulos y scripts se han quedado desactualizados.
Despues de varios intentos. Aqui dejo un resumen de los pasos a seguir.

Para los Impacientes.

(copiar y pegar codigo nodejsV8) (Nota: Mejor ejecutar los comandos de uno en uno)

curl -sSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
echo "deb https://deb.nodesource.com/node_8.x $(lsb_release -sc) main" > /etc/apt/sources.list.d/nodesource.list
apt-get -o Acquire::Check-Valid-Until=false install -y apt-transport-https  --force-yes
apt-get -o Acquire::Check-Valid-Until=false update  -y
apt-get -o Acquire::Check-Valid-Until=false upgrade -y
apt-get -o Acquire::Check-Valid-Until=false install -y nodejs 
apt-get -o Acquire::Check-Valid-Until=false install -y npm --force-yes
apt-get -o Acquire::Check-Valid-Until=false install -y node --force-yes
nodejs --max_old_space_size=64 $(which npm) install -g --unsafe-perm node-red
node --max_old_space_size=64 $(which npm) install -g --unsafe-perm node-red

Ojo puede tardar mucho. Mejor ejecutar los comandos de uno en uno.
si la version de nodejs de tu debian es muy antigua puede fallar a la primera. intentalo 2 veces Si no ha funcionado: (o tienes mas curiosidad) sigue leyendo.

Correccion:2019-10: La version 1 de node-red parece no funcionar del todo bien en algunos MiniVps. Para instalar la anterior: node --max_old_space_size=80 $(which npm) install -g --unsafe-perm node-red@0.20.8

Correccion:2019-12: Con la 1.0.3 Se soluciona el problema.

Nota: si tenias instalada la version anterior de nodejs. tendras que desistalarla.
apt-get remove nodejs -Y




Indice:

1) Actualizo
2) Intento1 (fallido)
3) Intento2
4) workarround Intento2
5) Instalacion nodejs
6) Instalacion node-red
Notas de seguridad
Apendice1: instalacion “a mano”
Apendice2: instalacion nodejs v10
Referencias




1. Actualizo

apt-get update -y 
apt-get upgrade -y 

apt-get update -y 
apt-get dist-upgrade -y

Nota: (desde 2019 lo backports han pasado a archive) echo "deb http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list
Nota: (desde el 2019 a veces hay que añadir -o Acquire::Check-Valid-Until=false )

Salida Comando: apt-get -o Acquire::Check-Valid-Until=false update -y

root@em50l:/# apt-get -o Acquire::Check-Valid-Until=false update -y
Ign http://ftp.debian.org jessie InRelease                                       
Hit http://ftp.debian.org jessie-updates InRelease
Hit http://archive.debian.org jessie-backports InRelease
Get:1 http://security.debian.org jessie/updates InRelease [44.9 kB]
.......

Salida Comando: apt-get -o Acquire::Check-Valid-Until=false update -y

root@em50l:/# apt-get -o Acquire::Check-Valid-Until=false upgrade -y
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
........



Intento1 (fallido)

Si la instalacion es muy simple es posible que no tengamos node ni npm.

root@em50l:/# npm install -g --unsafe-perm node-red
bash: npm: command not found

npm: command not found => tengo que instalar npm (node se instalaria automaticamente para satisfacer las dependencias).

root@em50l:/# apt-get -o Acquire::Check-Valid-Until=false install npm
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  node binutils build-essential bzip2 cpp g++ g++-4.9 gcc
.....

Intento instalar node-red

root@em50l:/# npm install -g --unsafe-perm node-red
npm WARN engine node-red@0.20.8: wanted: {"node":">=8"} (current: {"node":"0.10.29","npm":"1.4.21"})
npm ERR! Error: Method Not Allowed

La version de node que viene con debian 8 es muy vieja.
hay que instalar minimo nodejs v8




Intento2

Instrucciones Para instalar nodejs:
https://github.com/nodesource/distributions

En teoria solo hay que ejecutar:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

Pero no funciona desde el 2019 (falta añadir -o Acquire::Check-Valid-Until=false a apt-get.




Workarround:

Descargo corrijo y ejecuto el script de configuracion (copiar y pegar codigo)

wget https://deb.nodesource.com/setup_8.x
sed -i 's/apt-get/apt-get -o Acquire::Check-Valid-Until=false/g' setup_8.x
#explicacion: sed -i 's/texto-a-buscar/texto-a-reemplazar/g' "Fichero o directorio"
bash setup_8.x

Aqui dejo parte de la salida:

root@em50l:/# bash setup_8.x 
...
## Installing the NodeSource Node.js 8.x LTS Carbon repo...
## Populating apt-get cache...
+ apt-get -o Acquire::Check-Valid-Until=false update
## Run `sudo apt-get install -y nodejs` to install Node.js 8.x LTS Carbon and npm
## Run `sudo apt-get -o Acquire::Check-Valid-Until=false install -y nodejs` to install Node.js



Ya puedo instalar nodejs

(copiar y pegar comando) apt-get install -y nodejs -o Acquire::Check-Valid-Until=false

Aqui dejo parte de la salida:

root@em50l:/#  apt-get install -y nodejs -o Acquire::Check-Valid-Until=false
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  nodejs
...
...
...



Ya puedo instalar node-red

(copiar y pegar comando) npm install -g --unsafe-perm node-red

Aqui dejo parte de la salida:

root@em50l:/#  npm install -g --unsafe-perm node-red
/usr/bin/node-red -> /usr/lib/node_modules/node-red/red.js
/usr/bin/node-red-pi -> /usr/lib/node_modules/node-red/bin/node-red-pi

+ node-red@0.20.8
added 369 packages from 352 contributors in 40.722s

Si la maquina es un MiniVps con solo 128Mb de RAM es posible que no tenga recursos suficientes para la instalacion.
No hay problema. limitamos la memoria. (copiar y pegar comando)
node --max_old_space_size=80 $(which npm) install -g --unsafe-perm node-red
Para mas info ver: actualizar node-red con recursos limitados

Correccion:2019-10: La version 1 de node-red parece no funcionar del todo bien en algunos MiniVps. Para instalar la anterior: node --max_old_space_size=80 $(which npm) install -g --unsafe-perm node-red@0.20.8




ya tendriamos node-red funcionando.

root@em50l:/# node-red
22 Sep 17:27:12 - [info] 

Welcome to Node-RED
===================

22 Sep 17:27:12 - [info] Node-RED version: v0.20.8
22 Sep 17:27:12 - [info] Node.js  version: v8.16.1
22 Sep 17:27:12 - [info] Linux 2.6.32-042stab133.2 x64 LE
...
22 Sep 17:27:14 - [info] Server now running at http://127.0.0.1:1880/
22 Sep 17:27:14 - [info] Starting flows
22 Sep 17:27:14 - [info] Started flows



Notas de seguridad.

Recuerda que node-red es bastante Inseguro para exponerlo desde una IP publica

  • La interfaz de administracion no tiene password
  • No se deberia ejecutar como root. (aunque lo quieras lanzar desde el puerto 80)

Para asegurarlo deberias:

  • Poner usuario y password a la administracion.
  • Cambiar la url de administracion.
  • Lanzarlo como un usuario limitado.
  • cifrar el trafico mediante un certificado ssl



A1 Instalacion “a mano”

curl -sSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
echo "deb https://deb.nodesource.com/node_8.x $(lsb_release -sc) main" > /etc/apt/sources.list.d/nodesource.list
apt-get -o Acquire::Check-Valid-Until=false update -y
apt-get -o Acquire::Check-Valid-Until=false upgrade -y
apt-get -o Acquire::Check-Valid-Until=false install -y apt-transport-https
apt-get -o Acquire::Check-Valid-Until=false install -y nodejs 
node --max_old_space_size=64 $(which npm) install -g --unsafe-perm node-red



A2 Instalacion nodejs v10

curl -sSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
echo "deb https://deb.nodesource.com/node_10.x $(lsb_release -sc) main" > /etc/apt/sources.list.d/nodesource.list
apt-get -o Acquire::Check-Valid-Until=false update -y
apt-get -o Acquire::Check-Valid-Until=false upgrade -y
apt-get -o Acquire::Check-Valid-Until=false install -y apt-transport-https
apt-get -o Acquire::Check-Valid-Until=false install -y nodejs 
node --max_old_space_size=64 $(which npm) install -g --unsafe-perm node-red



Referencias

https://github.com/nodesource/distributions
https://nodered.org/docs/getting-started/local