fengelhardt
fengelhardt

Reputation: 1653

Programmatic ngrok tunnel url

I'm trying to get ngrok's dynamically generated IP address programmatically by using bash to set globals and env variables.

Below is what I have so far.


Run ngrok http {server url}

Inside your host root directory run:

curl  http://localhost:4040/api/tunnels > ~/ngrok_tunnels.json;

Install jq

Brew install [jq](https://stedolan.github.io/jq/) (let's you access json through bash)

Afterwards you just need to access this json following jq's docs.

Inside the project root that is calling the dev URL. [0]=(http) [1]=(https)

echo “NGROK_TUNNEL=$(jq .tunnels[1].public_url ~/ngrok_tunnels.json
)" >> .env

Set all of your dev urls to process.env.NGROK_TUNNEL


So this works, but is it the "best way" to do this?

Upvotes: 6

Views: 1854

Answers (2)

pxeba
pxeba

Reputation: 1806

For people who want to get a url through ngrok using python there is the pyngrok library

from pyngrok import ngrok

#Open a HTTP tunnel on the default port 80
#<NgrokTunnel: "http://<public_sub>.ngrok.io" -> "http://localhost:80">
http_tunnel = ngrok.connect()
#Open a SSH tunnel
#<NgrokTunnel: "tcp://0.tcp.ngrok.io:12345" -> "localhost:22">
ssh_tunnel = ngrok.connect(22, "tcp")

it is also possible to do some things directly via the ngrok API. I didn't find the option to create a tunnel, but having a tunnel created you can restart it or update it

https://ngrok.com/docs/api#api-tunnel-sessions-list

Upvotes: 2

Michael Barany
Michael Barany

Reputation: 1669

The short answer is yes.

You can upgrade to a paid plan and use the --subdomain argument to get the same ngrok url every time. The next price level from that includes white labeling where you can use your own custom domain as well.

Upvotes: 0

Related Questions