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 biblioteca npm 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