
MMS • Sergio De Simone
Article originally posted on InfoQ. Visit InfoQ

To make it easier for developers to expose their local services to the Internet while developing them, ngrok is now providing them the possibility to create and use one static domain for free, instead of relying on time-limited, random domains.
Ngrok domains are often used, e.g., to make an under-development API running on a developer’s machine accessible to testers or other developers so they can use it from a different machine not belonging to the same intranet/extranet.
Ngrok has long offered a free tier to its users, albeit with some limitations. In particular, the tunnel link associated to a free account expires after eight hours, which requires the ngrok service to be restarted to set up a new tunnel, ensuing in the creation of a new random domain to use to access the exposed service.
Static domains are unique domains that are yours and don’t change. With your free static domain, you can focus on developing your application, and no longer need to worry about broken links caused by agent restarts. There’s no need to constantly keep updating webhook providers or mobile apps with new URLs or send new links to your team.
Free static domains should not be confused with custom domains, also known as “branded” domains, which remain a premium feature. A static domain is a subdomain of one of number of ngrok-owned domains, such as ngrok.io
, ngrok-free.app
and others, and have thus the form panda-new-kit.ngrok-free.app
, whereas a non-static domain includes a randomly generated ID, such as 85ee564738gc.ngrok.io
. Setting up a custom domain is a slightly more complex process, requiring some configuration on both ngrok’s and your DNS provider’s side.
The first step to set up a static domain with your free ngrok account is heading to your ngrok dashboard to create a new Cloud Edge domain. This will provide a URL you can use from the ngrok CLI to create the tunnel:
ngrok http -–domain=panda-new-kit.ngrok-free.app 80
or, alternatively, via any of the ngrok Agent SDKs, which are available for a variety of languages including go, rust, and others.
As a last note, a static ngrok domain also enables using ngrok’s Kubernetes Ingress Controller, which can be seen as a Kubernetes-native API wrapped around ngrok’s platform to provide public and secure ingress traffic to k8s services.