pyngrok
is a Python wrapper for ngrok
that manages its own binary, making ngrok
available via a convenient Python
API.
ngrok
is a reverse proxy tool that opens secure tunnels from public URLs to localhost, perfect
for exposing local web servers, building webhook integrations, enabling SSH access, testing chatbots, demoing from
your own machine, and more, and its made even more powerful with native Python integration through pyngrok
.
pyngrok
is available on PyPI and can be installed
using pip
:
pip install pyngrok
or conda
:
conda install -c conda-forge pyngrok
That's it! pyngrok
is now available as a package to our Python projects, and ngrok
is now available from
the command line.
To open a tunnel, use the connect
method,
which returns a NgrokTunnel
, and this returned object has a reference to the public URL generated by ngrok
in its
public_url
attribute.
from pyngrok import ngrok
# Open a HTTP tunnel on the default port 80
# <NgrokTunnel: "https://<public_sub>.ngrok.io" -> "http://localhost:80">
http_tunnel = ngrok.connect(3)
# Open a SSH tunnel
# <NgrokTunnel: "tcp://0.tcp.ngrok.io:12345" -> "localhost:22">
ssh_tunnel = ngrok.connect("22", "tcp")
# Open a named tunnel from the config file
named_tunnel = ngrok.connect(name="my_tunnel_name")
The connect
method takes kwargs
as
well, which allows us to pass
additional tunnel configurations that are supported by ngrok,
as documented here.
To use ngrok
's Edges with pyngrok
, first configure an Edge on
ngrok
's dashboard (with at least one Endpoint mapped to the Edge), and define a
labeled tunnel in the ngrok
config file
that points to the Edge.
tunnels:
some-edge-tunnel:
labels:
- edge=my_edge_id
addr: http://localhost:80
To start a labeled tunnel in pyngrok
, pass its name
to connect.
from pyngrok import ngrok
# Open the Edge tunnel that is defind in the config file
named_tunnel = ngrok.connect(name="some-edge-tunnel")
Once an Edge tunnel is started, it can be managed through ngrok
's dashboard.
This package puts the default ngrok
binary on our path, so all features of ngrok
are
available on the command line.
ngrok http 80
For details on how to fully leverage ngrok
from the command line,
see ngrok
's official documentation.
For more advanced usage, pyngrok
's official documentation is available
at http://pyngrok.readthedocs.io.
pyngrok
is compatible with ngrok
v2 and v3, but by default it will install v3. To install v2 instead,
set ngrok_version
to "v2" in
PyngrokConfig
.
If you would like to get involved, be sure to review the Contribution Guide.
Want to contribute financially? If you've found pyngrok
useful, sponsorship
would also be greatly appreciated!