No description, website, or topics provided.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
icons
.gitignore
README.md
package.json
webhookrelay.html
webhookrelay.js

README.md

Webhook Relay

node-red-contrib-webhookrelay package provides an easy way to receive webhooks without exposing whole Node-RED instance to the internet. Webhooks are received through public cloud endpoint and then are streamed over secure connections to your Node-RED.

What problem does it solve?

Node-RED is great at receiving and processing various kinds of events but is not considered safe to be exposed to the internet (more info here). Also, to expose Node-RED to the internet, you will need to either deploy it on a public cloud instance or configure your router NAT/firewall.

Example use case

Here's an example of how to receive and process webhooks on your private Node-RED server (than can be running on your laptop) from a remote device such as a smartphone. Other services such as IFTTT, Zapier or Google Home are great examples of useful integrations. You can get all the webhook details from the node:

How it works

Webhook Relay acts as a gateway to accept all webhooks and then route them to connected clients based on routing configuration. Connected clients can either be lightweight executables, Docker containers or WebSocket clients (this library is based on our ws client):

Usage

  1. Create a bucket nodered (or any other name) on the buckets page
  2. Get your authentication token key and secret
  3. Install our node:
npm install node-red-contrib-webhookrelay
  1. Open node your node to add bucket name, authentication key and secret.
  2. Connect any other node to your output.

Example JSON input to the https://my.webhookrelay.com/v1/webhooks/544a6fe8-83fe-4361-a264-0fd486e1665d endpoint:

{
	"msg": "hello Node-RED!"
}

Example JSON object output from the node:

{
	"topic": "nodered",
	"payload": {
		"type": "webhook",
		"meta": {
			"bucked_id": "12302faf-43bd-43c4-ab1d-89a8b0505693",
			"bucket_name": "nodered",
			"input_id": "544a6fe8-83fe-4361-a264-0fd486e1665d",
			"input_name": "Default public endpoint",
			"output_name": "",
			"output_destination": ""
		},
		"headers": {
			"Content-Type": ["application/json"],
			"Accept": ["*/*"],
			"Content-Length": ["29"],
			"User-Agent": ["insomnia/6.3.1"],
			"Cookie": ["__cfduid=dc244a014f0b1e2965544ddb483c3fe1b1525866866"]
		},
		"query": "",
		"body": "{\n\t\"msg\": \"hello Node-RED!\"\n}",
		"method": "PUT"
	},
	"_msgid": "43de3dbf.04f4c4"
}

Alternative methods

You can also use Webhook Relay CLI. One way forwarding webhooks

relay forward --bucket nodered http://127.0.0.1:1880/your/http/endpoint

Or exposing whole Node-RED to the internet:

relay connect http://127.0.0.1:1880

Pricing - Free + paid options

Webhook Relay has a free tier that can be enough for a lot of integration (CI/CD) but consider subscribing to a paid plan to support the project. Pricing can be found here: https://webhookrelay.com/pricing/.