Static domains for all ngrok users
We are excited to announce the launch of one of our most requested features — static domains for our free users. Starting today, all users can claim one static domain for free.
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.
Our mission is to equip developers with a unified ingress platform to deliver applications and APIs across every stage of the application lifecycle - from test/dev through production environments.
Adding static domains to the free tier speeds up your dev/test flows and it also unlocks new production use cases. If you don’t require a branded domain, you can now run your first production app on ngrok’s free tier. This is suitable for pre-release versions or internal apps. You can always upgrade later to bring your own custom domain when you’re ready to put it in front of customers.
How do I claim my free static domain?
To claim your static domain, follow these steps:
- Log in to your ngrok account.
- Navigate to Cloud Edge > Domains.
- Follow the prompts to claim your unique, static domain.
Use your new static domain
Now with a static domain for your apps and APIs, you can use ngrok not just in test/dev environments, but also for production use-cases.
Here are a few examples of configuring ngrok agents with your static domain:
ngrok CLI
ngrok http --domain=[static-domain] 80
ngrok Agent SDKs
Another way to use ngrok and your static domains is via the ngrok Agent SDKs. Here is an example using the ngrok-go sdk:
package main
import (
"context"
"fmt"
"log"
"net/http"
"golang.ngrok.com/ngrok"
"golang.ngrok.com/ngrok/config"
)
func main() {
tun, err := ngrok.Listen(context.Background(),
config.HTTPEndpoint(config.WithDomain("[static-domain]")),
ngrok.WithAuthtokenFromEnv(),
)
if err != nil {
log.Fatal(err)
}
log.Println("Application available at:", tun.URL())
err := http.Serve(tun, http.HandlerFunc(handler))
if err != nil {
log.Fatal(err)
}
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Hello from ngrok-go!")
}
Kubernetes Ingress Controller
With the addition of static domains and Cloud Edges in the free tier, you can also leverage ngrok’s Kubernetes Ingress Controller with a static domain:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
ingressClassName: ngrok
rules:
- host: ${STATIC_DOMAIN}
http:
paths:
- path: /
backend:
serviceName: example-service
servicePort: 80
Sign up and get started today
In case you don’t yet have an account, you can sign up for one. Let us know if you run into any problems or have any questions. You can reach us on Twitter, the ngrok community on Slack or at support@ngrok.com.