<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/deploying-ngrok-in-production-hpgxwhn0y" -->

---
title: Deploying ngrok in Production | daily.dev
description: A guide from ngrok on moving the tool from local development use to production-grade infrastructure. It covers three areas: internal usage (blocking default...
canonical: https://daily.dev/posts/deploying-ngrok-in-production-hpgxwhn0y
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Deploying ngrok in Production | daily.dev
og:description: A guide from ngrok on moving the tool from local development use to production-grade infrastructure. It covers three areas: internal usage (blocking default...
og:url: https://daily.dev/posts/deploying-ngrok-in-production-hpgxwhn0y
og:image: https://api.daily.dev/og/posts/hPgXwhN0y.png
og:image:alt: Deploying ngrok in Production
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Deploying ngrok in Production

**[ngrok Blog](https://daily.dev/sources/ngrok)** · 5 min read · 0 upvotes · 0 comments

## Summary

A guide from ngrok on moving the tool from local development use to production-grade infrastructure. It covers three areas: internal usage (blocking default ngrok.io domains in favor of custom ingress, managing tunnels via the Terraform provider, and streaming events to a SIEM), external usage (custom domains with TLS, IP restrictions, and OAuth/OIDC or mutual TLS for access control), and the control plane (CLI, API, SDKs, and Terraform for programmatic management). The overall message is that ngrok provides configurable building blocks so teams can implement their own security policies at scale.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://ngrok.com/blog/deploying-ngrok-in-production>

## Questions this post answers

### How do I stop employees from using personal ngrok accounts on the company network?

Block all *.ngrok.io traffic at the network level and set up a Custom Ingress with a named entry point such as ingress.example.com instead. This eliminates personal ngrok accounts while allowing centralized policy management across all connections, rather than pushing shadow IT users toward less secure workarounds.

_Teams standardizing internal tunnel access can compare approaches like this one on daily.dev._

### How can I restrict who connects to my ngrok tunnels from outside my organization?

Combine a custom domain with your own TLS certificate, IP restrictions to limit access to known IP ranges, and OAuth 2.0, OIDC, or Mutual TLS on the edge for identity-based access control. OAuth/OIDC lets you use an identity provider like Google or GitHub, while Mutual TLS verifies a client holds an expected certificate.

_Engineers hardening external tunnel access track patterns like these on daily.dev._

### How do I manage ngrok configuration programmatically instead of manually through the dashboard?

Use the ngrok Terraform provider to plug tunnel configuration directly into CI/CD pipelines, alongside a CLI, API, and SDKs for testing, dynamic configuration, and interrogation. This makes tunnel setup auditable and scalable rather than relying on ad hoc local agent settings per project.

_Developers automating infrastructure configuration follow tooling comparisons like this on daily.dev._

---

Tags: [#security](https://daily.dev/tags/security), [#devtools](https://daily.dev/tags/devtools), [#terraform](https://daily.dev/tags/terraform), [#oauth](https://daily.dev/tags/oauth)

[View this post on daily.dev](https://daily.dev/posts/deploying-ngrok-in-production-hpgxwhn0y)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Deploying ngrok in Production","url":"https://daily.dev/posts/deploying-ngrok-in-production-hpgxwhn0y","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/deploying-ngrok-in-production-hpgxwhn0y"},"datePublished":"2026-08-23T07:21:37.202Z","dateModified":"2026-08-23T07:27:53.215Z","description":"A guide from ngrok on moving the tool from local development use to production-grade infrastructure. It covers three areas: internal usage (blocking default...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/162fd78f9963888874ed8c3bd5283240?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/162fd78f9963888874ed8c3bd5283240?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"ngrok Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"ngrok Blog","logo":"https://media.daily.dev/image/upload/s--718XXxvE--/f_auto,q_auto/v1787469610/logos/ngrok?_a=BAMAMicg0","url":"https://daily.dev/sources/ngrok"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/deploying-ngrok-in-production-hpgxwhn0y","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"security,devtools,terraform,oauth","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"ngrok Blog","item":"https://daily.dev/sources/ngrok"},{"@type":"ListItem","position":3,"name":"Deploying ngrok in Production"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/deploying-ngrok-in-production-hpgxwhn0y#faq","mainEntity":[{"@type":"Question","name":"How do I stop employees from using personal ngrok accounts on the company network?","acceptedAnswer":{"@type":"Answer","text":"Block all *.ngrok.io traffic at the network level and set up a Custom Ingress with a named entry point such as ingress.example.com instead. This eliminates personal ngrok accounts while allowing centralized policy management across all connections, rather than pushing shadow IT users toward less secure workarounds. Teams standardizing internal tunnel access can compare approaches like this one on daily.dev."}},{"@type":"Question","name":"How can I restrict who connects to my ngrok tunnels from outside my organization?","acceptedAnswer":{"@type":"Answer","text":"Combine a custom domain with your own TLS certificate, IP restrictions to limit access to known IP ranges, and OAuth 2.0, OIDC, or Mutual TLS on the edge for identity-based access control. OAuth/OIDC lets you use an identity provider like Google or GitHub, while Mutual TLS verifies a client holds an expected certificate. Engineers hardening external tunnel access track patterns like these on daily.dev."}},{"@type":"Question","name":"How do I manage ngrok configuration programmatically instead of manually through the dashboard?","acceptedAnswer":{"@type":"Answer","text":"Use the ngrok Terraform provider to plug tunnel configuration directly into CI/CD pipelines, alongside a CLI, API, and SDKs for testing, dynamic configuration, and interrogation. This makes tunnel setup auditable and scalable rather than relying on ad hoc local agent settings per project. Developers automating infrastructure configuration follow tooling comparisons like this on daily.dev."}}]}
```

