[ANNOUNCE] node-red-contrib-webhookrelay

#1

Hello, I am creator of Webhook Relay and a big fan of Node-RED. I would like to present a general purpose webhook receiving node node-red-contrib-webhookrelay which can help you receive & process webhooks from 3rd party providers such as Google Home actions, GitHub, Gitlab and so on without having a public IP/domain or configuring NAT/firewall. The only requirement is an internet connection.

How it works

Node node-red-contrib-webhookrelay works by creating a websocket to webhookrelay.com public servers and waits for the incoming webhooks. All users can create buckets that can have one or more endpoint URLs (we call them inputs) such as https://my.webhookrelay.com/v1/webhooks/<your ID>. Node can subscribe to one or all of your buckets and receive data about HTTP requests.

Motivation

While running Node-RED on both my RPI and desktop, I really don't want to configure NAT to expose it to the internet when I am working on something new. As I have recently added WebSocket support to the service, I thought it would be a good opportunity to write a small wrapper to make my configuration easier.

Example usage

First, go to https://my.webhookrelay.com/ and either login (Google & GitHub OAuth or regular username and password) or register. Don't worry about marketing emails, never tried sending them and not planning to start.

Install node

Node is named as node-red-contrib-webhookrelay and as of now is published & tagged:

Now, we will need two things from webhook relay:

  1. Bucket from https://my.webhookrelay.com/buckets. You can name buckets based on either what they are receiving or what will be subscribing to them. Let's call our bucket nodered. Also, bucket should have a 'default public endpoint' which is exactly what it says it is. Your public URL that you can point webhooks at:

  1. Token key & secret from https://my.webhookrelay.com/tokens page.

Once you have both token & bucket, add them to the node:

Test it

You can attach a debug node to Webhook Relay node and test it by sending a webhook to your public input URL:

Payload will have two fields:

  • topic - which is bucket name
  • payload - actual JSON object with all request information:
{
	"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.2"],
			"Cookie": ["__cfduid=dc244a014f0b1e2965544ddb483c3fe1b1525866866"]
		},
		"query": "",
		"body": "{\n\t\"msg\": \"hello Node-RED!\"\n}",
		"method": "PUT"
	},
	"_msgid": "eb4a7330.c838b"
}

Libraries used:

Free tier & pricing

Webhook Relay has a free tier of up to 150 webhooks per month. Which is not a lot but enough for a lot of people. Basic tier is $4.5/m and gives you 1500 webhooks. Please consider subscribing to a paid tier to support the project.

If you would like to use more but cannot afford to pay, feel free to ping me either on Webhook Relay portal chat, email or here with PM and we can arrange something.

Privacy & Security

Since this node doesn't provide bidirectional traffic and is pretty much only good for 3rd party integrations, traffic is encrypted from any outside users but webhooks are stored in the webhook relay database for the amount of days your plan allows. This makes debugging easy as you can inspect and resend webhooks. Only you can access your webhook data.

However, if you are going to send something really secret, I would suggest using webhookrelay CLI agent with TLS pass-through tunnels: https://webhookrelay.com/v1/guide/tls-tunnels.html. It shields traffic from the Webhook Relay servers and they just route encrypted data through the tunnels. With this method, we couldn't spy on you even if we were forced to.

Issues and requests

If you encounter any issues or requests, either submit them here or on the github repo here https://github.com/webhookrelay/node-red-contrib-webhookrelay

4 Likes

Expose node red to internet without open port forwading
#2

Just opened an issue in GitHub - the node crashed Node-RED with an uncaught exception - see https://github.com/webhookrelay/node-red-contrib-webhookrelay/issues/2

1 Like

#3

@rusenask fixed the issue - very responsive!!

0 Likes