Using Data Connector with Node-RED Behind a Firewall
Node-RED is a popular tool for quickly putting together experiments and integrations. Data Connectors work out of the box with Node-RED using an HTTPS endpoint, but this requires the Node-RED installation to be reachable from the internet. If you are hosting the Node-RED instance with a cloud provider such as IBM Bluemix, you are ready to go.
If you want to run Node-RED behind your company firewall however, you need to setup a pipe from the internet to your instance. This example shows how you can quickly get such a set up running.
Using port forwarding service
We are going to use the ngrok service, which provides a flexible solution for setting up a port forward from an internal end point to a protected end point reachable from the internet.
The ngrok service has a free tier that is sufficient for prototyping small scale solutions.
Step by step:
Install Node-Red locally on your computer
We will assume that you have Node-RED running on your computer already. If not visit the node-RED website to get the machine setup.
Install ngrok and signup for a free account
Go to https://www.ngrok.com signup and follow the instructions to download the ngrok client.
The tool is possible to use without an account, but then you will not be able to set a username and password on the end point. Remember to run command to set the token received after signup:
./ngrok authtoken <YOUR_TOKEN>
Create the Node-RED flow
- Start node-RED and notice the port number
- Create a node-RED flow with an http endpoint
- Drag a http node into the flow, double-click on it and define a POST endpoint like below.
- Drag in a http-response node, make it say “200 OK” and connect the nodes
- Drag a debug-module in to show that events appear
- Click on Deploy in the top right corner
- Switch to the debug tab
Forward Node-RED port to outside the firewall
Run ngrok for the node red install - get an internet reachable endpoint. Notice that we only want https at the internet-side and using basic auth to protect it
ngrok http -bind-tls=true -auth "<username>:<password>" 1880
password can be set freely.
Setup DataConnector to push to the provided ngrok address
- Open the project with your sensors that you wish to receive data from.
- Go to Data Connectors and click Add to create a new connector
From the console where you are running
ngrok, extract the “Forwarding” server. It will look something like
Use the username/password from above and the forwarding ngrok server to create the URL in the picture:
Save the Data Connector, press a sensor and you should see events pouring into the debug panel.