Node-RED

Instalando via npm

Instale o nvm.

Instale uma versão do node compatível com o Node-RED.

Instale o Node-RED

npm install -g --unsafe-perm node-red

Instalando via docker

O diretório de execução do Node-RED dentro do conteiner docker é o /usr/src/node-red/

sudo docker run -d --hostname nodered --log-driver=journald --name nodered --restart unless-stopped --network host -v /home/tiago/docker-volumes/nodered/:/usr/src/node-red/data nodered/node-red

Acesse-o pela porta 1880

Criamos um mapeamento para a pasta /data/files/
Tudo que estiver nesta pasta será acessível pelo computador hospedeiro.

O nodered dentro do docker não usa o usuário root, portanto qualquer arquivo enviado precisa de permissões de leitura e escrita para usuários other.

O famoso chmod 777 deve funcionar

sudo chmod 777 arquivo.txt

Instalando Node-Red nativamente

Instale o NVM. (pegue a última versão atualizada no link)

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

Instale a última versão do Node através do nvm.

nvm install node# No momento de publicação desse artigo, instalou a v13.13.0

Ou se quiser rodar uma versão mais estável, instale a versão recomendada pelo Node-Red

nvm install v12.16.2

Para mudar entre versões:

nvm use v13nvm use v12

Instale o Node-Red via npm

npm install -g --unsafe-perm node-red

Você também pode instalar tudo isso com sudo para rodar o Node e o Node-RED com permissões de super usuário. Acho perigoso, mas é possível.

Instalando bibliotecas e usando-as

O Node-RED conta com o Nodes, que são bibliotecas portadas para a arquitetura de programação orientada a arrastar blocos.

Mas e se ninguem tiver implementado a biblioteca que você quer usar para o Node-RED? Você pode fazer o seguinte:

# Vá até a pasta onde o node-red está instaladocd ~/.node-red# Instale a bibliotecanpm install biblioteca_desejada

Edite o arquivo ~/.node-red/settings.js:

nano ~/.node-red/settings.js

Adicione a biblioteca desejada dentro da propriedade functionGlobalContext da seguinte forma (você pode adicionar várias bibliotecas dessa forma, separando-as com vírgulas):

functionGlobalContext: {    bibliotecaDesejada:require('biblioteca_desejada')}

Dentro do Node-RED, abra um Node de função.

let bibDese = global.get('bibliotecaDesejada');bibDese.usarFuncao(123);

Removendo bibliotecas

npm uninstall biblioteca_desejada

Gerenciando Vários Projetos no Node-RED

Imagine que você quer fazer vários projetos diferentes usando o Node-RED, cada projeto independente, sem um ter a ver com o outro. Por padrão o Node-RED te deixa criar apenas um projeto, e embora você use flows diferentes, todos os flows rodam ao mesmo tempo e podem ter seus dados compartilhados entre si.

Para criar realmente projetos independentes você precisa habilitar uma função escondida no Node-RED. Habilite ele seguindo a documentação oficial:

Cada projeto que você criar ganhará sua própria pasta em ~/.node-red/projects/

Mudando o Projeto aberto automaticamente pelo node-red

O projeto que abre automaticamente ao inciar o nodered fica configurado em .config.json

...},"activeProject": "meu-projeto"}}

Referências

Docker hub oficial do Node-RED
https://hub.docker.com/r/nodered/node-red

Instalação Node-RED
https://nodered.org/docs/getting-started/local

Instalando bibliotecas externas

Documentação Node-RED
https://nodered.org/docs/user-guide/writing-functions#loading-additional-modules

Resposta do hardillb
https://stackoverflow.com/questions/38481130/use-an-external-js-library-in-a-node-red-function

You should also read: