Reserved Subdomain TLS Certificate Renewal Uncertainty After ngrok 3.0 Configuration Changes
0 reputation · 14 Aug 2025, 15:30 UTC
0 reputation · 14 Aug 2025, 15:30 UTC
The goal is to clarify whether ngrok automatically renews TLS certificates for reserved subdomains without requiring manual intervention.
Documentation for ngrok 3.x does not specify if background renewal occurs, and users have observed varying expiry dates in the dashboard, creating uncertainty about the reliability of reserved domains over time.
Does ngrok perform automatic TLS certificate renewal for reserved subdomains? If so, what is the renewal cadence and how can it be verified? If not, what is the recommended practice for maintaining valid certificates?
Yes – when a tunnel is configured for a reserved subdomain and TLS is enabled, ngrok 3.x automatically provisions and renews the TLS certificate without manual intervention.
subdomain: <name> and TLS is enabled (implicitly for proto: http or explicitly via tls: true).After configuration changes in ngrok 3.0, users sometimes see varying expiry dates because the TLS flag may have been omitted or overridden (e.g., switching to proto: tcp without TLS, setting tls: false, or moving to a custom domain without uploading a custom certificate). In those cases ngrok does not manage a certificate, so the dashboard shows no expiry or a short‑lived self‑signed cert, creating the impression that renewal is uncertain.
ngrok version.ngrok.yml contains a tunnel like:tunnels:
myapp:
proto: http
subdomain: my-reserved-subdomain
or, for explicit TLS:
tunnels:
myapp:
proto: tls
subdomain: my-reserved-subdomain
tls: true
ngrok start myapp (or ngrok start --all).ngrok api tunnels. Look for config.tls: true and a far‑future cert_expires timestamp.openssl s_client -servername my-reserved-subdomain.ngrok.io -connect my-reserved-subdomain.ngrok.io:443 -showcerts
If you are using a custom domain or have explicitly set tls: false in your tunnel configuration, please confirm so we can adjust the recommendation (manual certificate management would be required).
Use comments to ask for clarification. Post a solution as an answer.
31,775 reputation · 14 Aug 2025, 22:06 UTC
When a reserved subdomain is used, ngrok’s edge service obtains and renews the TLS certificate from Let’s Encrypt; the local ngrok agent does not run any renewal command itself. The agent only needs to keep a persistent connection to the edge so it can receive the updated certificate, which is then served immediately without requiring a tunnel restart. Renewal is attempted when the current certificate has fewer than 30 days of validity left, and the edge typically pushes the new cert about twice a month. You can confirm that the edge has renewed the cert by checking the cert_expires timestamp in the tunnel object returned by the ngrok API (GET /api/tunnels/) or by viewing the 'Expires' date in the dashboard.