
Security News
Crates.io Implements Trusted Publishing Support
Crates.io adds Trusted Publishing support, enabling secure GitHub Actions-based crate releases without long-lived API tokens.
pyngrok
is a Python wrapper for ngrok
that manages its own binary, making ngrok
available via a convenient Python
API and the command line.
ngrok
is a reverse proxy that opens secure tunnels from public URLs to localhost. It's perfect
for rapid
development (test webhooks, demo local websites, enable SSH access), establishing ingress to external
networks and devices, building production APIs (traffic policies, OAuth, load balancing), and more. And
it's made even more powerful with native Python integration through the pyngrok
client.
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 your 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()
# 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-config-file-tunnel")
# Open an Internal Endpoint that's load balanced
# <NgrokTunnel: "https://some-endpoint.internal" -> "http://localhost:9000">
internal_endpoint = ngrok.connect(addr="9000",
domain="some-endpoint.internal",
pooling_enabled=True)
The connect
method takes kwargs
as well,
which allows
you to pass additional tunnel configurations that are supported by ngrok
(or the name
of a tunnel defined in
ngrok
's config file), as documented here.
ngrok
's APIThe api
method allows you to use the local
ngrok
agent to make requests against the ngrok
API, if you
have set an API key.
For example, here's how you would reserve a ngrok
domain, then create a Cloud Endpoint with an associated traffic
policy:
from pyngrok import ngrok
domain = "some-domain.ngrok.dev"
ngrok.api("reserved-domains", "create",
"--domain", domain)
ngrok.api("endpoints", "create",
"--bindings", "public",
"--url", f"https://{domain}",
"--traffic-policy-file", "policy.yml")
This package puts the default ngrok
binary on your 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
on Read the Docs.
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!
FAQs
A Python wrapper for ngrok
We found that pyngrok demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Crates.io adds Trusted Publishing support, enabling secure GitHub Actions-based crate releases without long-lived API tokens.
Research
/Security News
Undocumented protestware found in 28 npm packages disrupts UI for Russian-language users visiting Russian and Belarusian domains.
Research
/Security News
North Korean threat actors deploy 67 malicious npm packages using the newly discovered XORIndex malware loader.