pyngrok
is a Python wrapper for ngrok
that manages its own binary and puts it on your path, making ngrok
readily available from anywhere on the command line and 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
.
Installation
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.
Basic Usage
To open a tunnel, use the connect
method, which returns the public URL generated by ngrok
.
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")
# 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 properties that are supported by ngrok.
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.
Documentation
For more advanced usage, pyngrok
‘s official documentation is available at http://pyngrok.readthedocs.io.
ngrok
Version Compatibility
pyngrok
is compatible with ngrok
v2 and v3, but by default it will install v3. To install v2 instead, set ngrok_version
in PyngrokConfig
:
from pyngrok import conf
conf.get_default().ngrok_version = "v2"
Python 2.7
The last version of pyngrok
that supports Python 2.7 is 4.1.x, so we need to pin pyngrok>=4.1,<4.2
if we still want to use pyngrok
with this version of Python. Its legacy documentation can be found here.
Contributing
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!