Skip to main content

A Python wrapper for ngrok

Project description

pyngrok - a Python wrapper for ngrok

Version PyPI - Downloads Python Versions Coverage Build Code Quality Docs GitHub License

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.

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 your Python projects, and ngrok is now available from the command line.

Basic Usage

Open a Tunnel

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.

Note: pyngrok unifies ngrok's "tunnel" (v2) and "endpoint" (v3) concepts behind a single API: connect() returns an NgrokTunnel and handles the differences for you through the config_version you set. Existing v2 code keeps working unchanged, and every v2 tunnel and v3 endpoint feature remains available. For v3-specific usage, see Using v3 Endpoints.

ngrok's API

The 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")

Command Line Usage

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.

Documentation

For more advanced usage, pyngrok's official documentation is available on Read the Docs.

Integration Examples

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!

Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyngrok-8.1.0.tar.gz (45.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyngrok-8.1.0-py3-none-any.whl (25.9 kB view details)

Uploaded Python 3

File details

Details for the file pyngrok-8.1.0.tar.gz.

File metadata

  • Download URL: pyngrok-8.1.0.tar.gz
  • Upload date:
  • Size: 45.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for pyngrok-8.1.0.tar.gz
Algorithm Hash digest
SHA256 18ea24460f5d74bf5c80feabd55ccf40e9552235ed103f967ec2ef99b57940c6
MD5 48549d9701ea44faa95fa1857b660807
BLAKE2b-256 6b4bf1372b66985d76177ea492a5f82643b628a958ebdabc99350bb24c643d5b

See more details on using hashes here.

File details

Details for the file pyngrok-8.1.0-py3-none-any.whl.

File metadata

  • Download URL: pyngrok-8.1.0-py3-none-any.whl
  • Upload date:
  • Size: 25.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for pyngrok-8.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8ba8497a2c7ac6b2f41a66f8102b815da30bfbb63321a70a0a4fa3a51b03e79b
MD5 d7c89fc66251b060fbafcfbbd3cf13bd
BLAKE2b-256 2f50d6f73708d6d358184c1227bbd5cf12dfa78af229fe81553bbd0e9a1ad073

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page