Product Updates: ngrok-go, ngrok-rs, OAuth & Webhooks for free
TL;DR:
- Announcing ngrok-go: Embed ngrok into your Go apps as a net.Listener
- Announcing ngrok-rs: Embed ngrok into your Rust apps /w native hyper integration
- OAuth is now in the free plan for up to 5 MAUs
- Webhook verification is now in the free plan for up to 500 verifications
- We’re coast to coast from DevNexus in Atlanta to BSides in San Francisco and hosting our own localhost events in London and at KubeCon Amsterdam. Join us!
🎉 Product Updates
ngrok-go - Ingress to your Go apps as a net.Listener
ngrok-go is our idiomatic Go package for embedding secure ingress directly into your Go apps. If you’ve used ngrok agent before, you can think of ngrok-go as the agent packaged as a Go library. ngrok-go is open source on github and API reference documentation is available on go.pkg.dev.
ngrok-go lets you serve Go apps on the internet in a single line of code without requiring VPC routing, load balancers, certificates, or even ports! Applications using ngrok-go listen on ngrok’s global ingress network through the same interface (net.Listener) any Go app would expect if it listened on a local port by calling net.Listen(), making it an easy drop in to any application using go's native net and net/http packages.
There’s a complete getting started guide in the docs. Check out how easy it is to listen on ngrok’s global network with a single line of code. No ports, no separate agent required.
l, err := ngrok.Listen(ctx, config.HTTPEndpoint( config.WithDomain("your-name.ngrok.app"), config.WithOAuth("github"), ), ngrok.WithAuthtokenFromEnv(), )
ngrok-rs - Embed ingress directly into your Rust apps
ngrok-rs is our native and idiomatic Rust crate for adding secure ingress directly into your Rust apps 🦀. It’s just like ngrok-go, but for Rust! ngrok-rs is open source on GitHub, with docs available on docs.rs, and a getting started guide in ngrok docs.
ngrok-rs listeners are usable with hyper ServerS, and connections implement tokio’s AsyncRead and AsyncWrite traits. This makes it easy to add ngrok-rs into any application that’s built on hyper, such as the popular axum HTTP framework.
There’s a complete getting started guide in the docs. Check out how easy it is to listen on ngrok’s global network with a single line of code. No ports or separate agent required.
let listener = ngrok::Session::builder() .authtoken_from_env() .connect() .await? .http_endpoint() .listen() .await?;
OAuth and Webhook Verification added to the Free plan
ngrok is on a mission to make your applications more secure. That’s why this month we expanded our Free Plan to include OAuth and Webhook Verification.
OAuth
Try protecting your webapp with OAuth in one line. All visitors will be forced to auth with google and only [email protected] will have access. We support 8 OAuth providers including Google, Github, Facebook, Microsoft.
ngrok http 80 --oauth=google [email protected]
Webhook Verification
Next try protecting your webhook consumers with Webhook Verification in one line. All requests not signed by Slack with the given secret will be rejected. We support 60+ webhook verifiers.
ngrok http 80 --verify-webhook=slack --verify-webhook-secret=yoursecret
The free plan supports up to 5 monthly active OAuth users and up to 500 webhook verifications per month.
Other Product Improvements
- Expanded ngrok diagnose: The ngrok diagnose command helps you understand why the ngrok agent can’t connect to ngrok. It now tests against all regions and we added additional debugging information about the underlying system.
- New faster domains: ngrok.dev and ngrok.app: Paying customers can now use two new ngrok-managed domains: ngrok.dev and ngrok.app. These new domains have improved performance from our new global routing logic.
🚀 Blogs, Events and Developer Previews
Recent Blogs
- How ngrok combats phishing attacks - Learn how ngrok builds systems to automatically identify, block and disincentivize phishing attacks on the internet.
- Putting the ESP32 microcontroller on the internet - In addition to using ngrok for apps and webhooks, you can also create ingress to IoT devices like the ESP32 with just a few simple steps.
- So you want to sign for Windows? - We sign the Windows ngrok agent so you can trust its provenance. Signing binaries is tricky and poorly documented so we wrote up a guide to help you if you’re trying to publish your own software for Windows.
- 1Password CLI ngrok shell plugin - Integrate ngrok with your 1Password vault to manage your credentials securely.
- webhooks.fyi shaping development - Webhooks.fyi is our comprehensive reference for how every major provider verifies webhooks. We recently sat down with NordicAPIs to talk about the goals, process, and data behind webhooks.fyi. Zoom released a major update to their webhooks citing webhooks.fyi in their docs.
Community Events
- KubeCon in Amsterdam - April 18-21 - Find our booth to learn about the ngrok Kubernetes Ingress Controller and how it simplifies ingress to your k8s clusters.
- ngrok localhost: London (April 13) and ngrok localhost: Amsterdam (April 20): If you’re in either city, come to meet the team and have a drink on us!
- BSidesSF in San Francisco - April 22-23 - Ari Willet, ngrok’s Head of Security & Compliance will talk about how to prepare for a career in security.
Developer Previews
These products are in active development and we’d love your early feedback. Expect bugs, breaking API changes, and wider announcements soon upon their completion.
- ngrok-rs: Our idiomatic Rust library for embedding ingress directly in your Rust apps.
- ngrok-js: Our idiomatic Javascript library for embedding ingress directly in your Javascript apps.
- Kubernetes Ingress Controller - Our kubernetes ingress controller creates ingress to your k8s clusters running in any environment without any networking infrastructure.
Questions, suggestions, product feedback? Tweet at @ngrokhq, join our public slack community, or email us at [email protected]