ngrok exposes local servers behind NATs and firewalls to the public internet over secure tunnels.
How it works
You download and run a program on your machine and provide it the port of a network service, usually a web server.
It connects to the ngrok cloud service which accepts traffic on a public address and relays that traffic through to the ngrok process running on your machine and then on to the local address you specified.
What it's good for
Demoing web sites without deploying
Building webhook consumers on your dev machine
Testing mobile apps connected to your locally running backend
Stable addresses for your connected devices that are deployed in the field
Running personal cloud services from your home