Facebook webhooks won't accept Ngrok and Localtunnel anymore

If you want to test webhooks locally you probably use Ngrok or Localtunnel. I do.

Recently I wanted to play with Instagram webhooks and I couldn't because surprisingly Facebook do not accept Ngrok and Localtunnel URLs anymore and marks them as malicious and/or abusive.

I don't really understand why Facebook blocked the only known solutions of local webhooks testing.

Fortunately I have a server and a domain name.

Solution

What we'll need:

As soon as you configured your Nginx and it can accept traffic on port 443 add location section like this (pay attention to all the slashes. They are important):

location /proxy/ {
  proxy_pass http://localhost:3000/;
}

This will grab all the traffic to you-domain/proxy/, decrypt it and proxy it to port 3000.

Now, on you local machine, run:

ssh -R 3000:0.0.0.0:3000 -N user@server

Change ports as needed. The very first 3000 is remote port to redirect traffic from. The 0.0.0.0:3000 part is your local server listening on port 3000 as well.

You local server will get URLs without that /proxy part. So your-domain/proxy/webhooks will be transformed to 0.0.0.0:3000/webhooks

Now the traffic goes like this:

Proxy Information
Original URL
gemini://g.codelearn.me/2022-11-28-facebook-webhooks.gmi
Status Code
Success (20)
Meta
text/gemini
Capsule Response Time
446.779637 milliseconds
Gemini-to-HTML Time
0.38997 milliseconds

This content has been proxied by September (3851b).