FreeTAKHub Node-RED
This document describes how to install and secure Node-RED.
- Install Using Script (simple)
- Install using APT (advanced Users)
- Secure Node-RED
Install Using Script (simple)
The following script will do Installing and Upgrading Node-RED
to install Node.js
, npm
, and Node-RED
onto an Ubuntu Raspberry Pi.
The script can also be used to upgrade an existing install when a new release is available.
Running the following command will download and run the script.
If you want to review the contents of the script first, you can view it on Github
.
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
Enable service so that starts automagically:
sudo systemctl enable nodered.service
node-red-start
Install Using APT (advanced users)
To install Node-RED with APT you will need to:
- Satisfy the requirements
- Create a Non-root user
- Install Node JS
Prerequisites
This guide assumes that you are using Ubuntu 22.04 on cloud installation (we use digital Ocean).
Create a Non-root user
First create a special user and dedicated group:
sudo useradd -m nodered -G nodered
Install Node JS
you can use the apt package manager. Refresh your local package index first by typing:
sudo apt update
Then install Node.js
:
sudo apt install nodejs
Check that the installation was successful by querying node for its version number:
node -v
v10.19.0
If the package in the repositories suits your needs,
this is all you need to do to get set up with Node.js
.
In most cases, you’ll also want to also install npm, the Node.js package manager.
You can do this by installing the npm package with apt:
sudo apt install npm
Node.js
.
Install Node-RED
Use npm to install node-red
and a helper utility called node-red-admin
.
sudo npm install -g --unsafe-perm node-red node-red-admin
npm normally installs its packages into your current directory.
Here, we use the -g
flag to install packages 'globally' so they’re placed in standard system locations such as /usr/local/bin
.
The --unsafe-perm
flag helps us avoid some errors that can pop up when npm tries to compile native modules
(modules written in a compiled language such as C or C++ vs. JavaScript).
After a bit of downloading and file shuffling, you’ll be returned to the normal command line prompt. Let’s test our installation.
First, we’ll need to open up a port on our firewall. Node-RED defaults to using port 1880, so let’s allow that.
sudo ufw allow 1880
node-red
Create the Service
In order to start Node-RED automatically on startup,
we will need to install a /etc/systemd/system/node-red.service
file:
Description=Node-RED
After=syslog.target network.target
[Service]
ExecStart=/usr/local/bin/node-red-pi --max-old-space-size=128 -v
Restart=on-failure
KillSignal=SIGINT
# log output to syslog as 'node-red'
SyslogIdentifier=node-red
StandardOutput=syslog
# non-root user to run as
WorkingDirectory=/home/nodered/
User=nodered
Group=nodered
[Install]
WantedBy=multi-user.target
Now that our service file is installed , we need to enable it. This will enable it to execute on startup.
sudo systemctl enable node-red
Let’s manually start the service now to test that it’s still working.
sudo systemctl start node-red
sudo systemctl stop node-red
Test Your Installation
Point a browser back at the server’s port 1880 and verify that Node-RED is back up. e.g. if your server is installed under the IP 143.198.39.135
You will see the welcome screen of Node-RED with the tutorial. Now, to install the flows, click on the hamburger menu and then import:
Download one of the FreeTAKHub integrations (json files). Import into your Node-RED.
Resolve any conflicts by importing additional nodes into your palette.
You can find "Manage palette" from top right corner, "setting" > "Manage palette"
By clicking "Manage palette" a "User setting" page will pop up.
go to "Palette" > "install" tab and type "node-red-contrib-config" in the search bar
Success!!!!
Secure Node-RED
By default, Node-RED is installed with no authentication to the user interface (UI), also called the "Editor". This means that anyone with your IP address can make changes to any of your flows, or even add malicious flows to your Node-RED instance. Once your Node-RED instance is up-and-running, you should immediately secure the editor with a password, at a minimum.
The following will get you started on securing the Node-RED editor with a password.
For more details on how to secure Node-RED, see the Node-RED docs here:
https://nodered.org/docs/user-guide/runtime/securing-node-red
Switch to the Node-RED folder:
cd ~/.node-red
Edit the settings.js file:
sudo nano settings.js
Uncomment the adminAuth section to password protect Node-RED editor and admin API. See https://nodered.org/docs/security.html for details.
adminAuth: {
type: "credentials",
users: [{
username: "admin",
password: ".....",
permissions: "*"
}]
}
CTRL+o
ENTER
CRTL+X
You can now log in to your Node-RED editor [YOUR-IP-ADDRESS]:1880
.
The default username is admin
, and the default password is password
.
This isn't enough.
You'll want to create a unique password, which will require creating a password hash.
This is detailed in the Node-RED docs here: https://nodered.org/docs/user-guide/runtime/securing-node-red#editor--admin-api-security