<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/migrate-to-ngrok-from-cloudflare-tunnels-ntjlxrlyj" -->

---
title: Migrate to ngrok from Cloudflare Tunnels | daily.dev
description: A migration guide explains how to move from Cloudflare Tunnels to ngrok, mapping cloudflared config.yml ingress rules to ngrok endpoint definitions. It covers...
canonical: https://daily.dev/posts/migrate-to-ngrok-from-cloudflare-tunnels-ntjlxrlyj
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Migrate to ngrok from Cloudflare Tunnels | daily.dev
og:description: A migration guide explains how to move from Cloudflare Tunnels to ngrok, mapping cloudflared config.yml ingress rules to ngrok endpoint definitions. It covers...
og:url: https://daily.dev/posts/migrate-to-ngrok-from-cloudflare-tunnels-ntjlxrlyj
og:image: https://api.daily.dev/og/posts/NtjlxrlYj.png
og:image:alt: Migrate to ngrok from Cloudflare Tunnels
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.

# Migrate to ngrok from Cloudflare Tunnels

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

## Summary

A migration guide explains how to move from Cloudflare Tunnels to ngrok, mapping cloudflared config.yml ingress rules to ngrok endpoint definitions. It covers connecting the ngrok agent, defining multiple endpoints in a config file, running ngrok as a background service, and using Traffic Policy to add authentication (e.g., Google OAuth), rate limiting, JWT validation, and header manipulation directly on an endpoint without separate products like Cloudflare Access or Workers. ngrok can also be run via CLI, embedded via SDKs (Go, Rust, Python, JavaScript), in Docker, or through its Kubernetes Operator.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://ngrok.com/blog/migration-guide-alternative-to-cloudflare-tunnels>

## Questions this post answers

### How do I convert a Cloudflare Tunnels ingress config to ngrok endpoints?

Each Cloudflare ingress rule pairing a hostname and service maps almost one-to-one to an ngrok endpoint with a url and an upstream field, defined in the ngrok agent configuration file. Unlike Cloudflare Tunnels, ngrok endpoints require no tunnel UUID, no credentials file, and no manual DNS or CNAME record setup for ngrok-managed domains.

_Teams weighing tunnel tools can compare migration tradeoffs like these on daily.dev._

### How can I add authentication to a service exposed through ngrok without using a separate product like Cloudflare Access?

Traffic Policy lets you attach authentication directly inside the ngrok endpoint definition using a few lines of YAML, for example restricting access to Google OAuth users from a specific team domain. It also supports IP restrictions, rate limiting, JWT validation, header manipulation, and URL rewrites, all composable with CEL expressions without deploying separate Workers or Access policies.

_Developers securing internal tools can track approaches like this on daily.dev._

### What are the different ways to run the ngrok agent for exposing local services?

ngrok can run as an interactive CLI session, as a background service that survives reboots, embedded directly in application code via SDKs for Go, Rust, Python, or JavaScript with no separate agent process, inside Docker, or through the ngrok Kubernetes Operator which supports the Kubernetes Gateway API and Ingress resources.

_Engineers choosing an ingress setup can weigh these options via daily.dev._

## Similar posts on daily.dev

- [Cloudflare Tunnels with Docker Compose: Free ngrok Alternative](https://daily.dev/posts/cloudflare-tunnels-with-docker-compose-free-ngrok-alternative-chygejkfv) · SitePoint · 1 upvotes · 0 comments
- [Self-hosted HTTP tunnels with SSH and nginx](https://daily.dev/posts/self-hosted-http-tunnels-with-ssh-and-nginx-qeu3pqxry) · Lobsters · 1 upvotes · 0 comments

---

Tags: [#devops](https://daily.dev/tags/devops), [#devtools](https://daily.dev/tags/devtools), [#kubernetes](https://daily.dev/tags/kubernetes), [#networking](https://daily.dev/tags/networking)

[View this post on daily.dev](https://daily.dev/posts/migrate-to-ngrok-from-cloudflare-tunnels-ntjlxrlyj)

```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":"Migrate to ngrok from Cloudflare Tunnels","url":"https://daily.dev/posts/migrate-to-ngrok-from-cloudflare-tunnels-ntjlxrlyj","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/migrate-to-ngrok-from-cloudflare-tunnels-ntjlxrlyj"},"datePublished":"2026-08-23T07:21:02.454Z","dateModified":"2026-08-23T07:28:17.947Z","description":"A migration guide explains how to move from Cloudflare Tunnels to ngrok, mapping cloudflared config.yml ingress rules to ngrok endpoint definitions. It covers...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/c174045fc073f82073d5b7f0b5864389?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/c174045fc073f82073d5b7f0b5864389?_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/migrate-to-ngrok-from-cloudflare-tunnels-ntjlxrlyj","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"devops,devtools,kubernetes,networking","timeRequired":"PT6M"}
{"@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":"Migrate to ngrok from Cloudflare Tunnels"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/migrate-to-ngrok-from-cloudflare-tunnels-ntjlxrlyj#faq","mainEntity":[{"@type":"Question","name":"How do I convert a Cloudflare Tunnels ingress config to ngrok endpoints?","acceptedAnswer":{"@type":"Answer","text":"Each Cloudflare ingress rule pairing a hostname and service maps almost one-to-one to an ngrok endpoint with a url and an upstream field, defined in the ngrok agent configuration file. Unlike Cloudflare Tunnels, ngrok endpoints require no tunnel UUID, no credentials file, and no manual DNS or CNAME record setup for ngrok-managed domains. Teams weighing tunnel tools can compare migration tradeoffs like these on daily.dev."}},{"@type":"Question","name":"How can I add authentication to a service exposed through ngrok without using a separate product like Cloudflare Access?","acceptedAnswer":{"@type":"Answer","text":"Traffic Policy lets you attach authentication directly inside the ngrok endpoint definition using a few lines of YAML, for example restricting access to Google OAuth users from a specific team domain. It also supports IP restrictions, rate limiting, JWT validation, header manipulation, and URL rewrites, all composable with CEL expressions without deploying separate Workers or Access policies. Developers securing internal tools can track approaches like this on daily.dev."}},{"@type":"Question","name":"What are the different ways to run the ngrok agent for exposing local services?","acceptedAnswer":{"@type":"Answer","text":"ngrok can run as an interactive CLI session, as a background service that survives reboots, embedded directly in application code via SDKs for Go, Rust, Python, or JavaScript with no separate agent process, inside Docker, or through the ngrok Kubernetes Operator which supports the Kubernetes Gateway API and Ingress resources. Engineers choosing an ingress setup can weigh these options via daily.dev."}}]}
```

