Documentation Index
Fetch the complete documentation index at: https://docs.pangolin.net/llms.txt
Use this file to discover all available pages before exploring further.
Try free on Pangolin Cloud
Fastest way to get started with Pangolin using the hosted control plane. No credit card required.
*.example.com. They are useful when you create many resources under the same base domain because Traefik does not need to request a new certificate for every resource hostname.
Traefik is the reverse proxy in the self-hosted Pangolin stack. It receives HTTPS traffic, requests certificates from Let’s Encrypt, and routes requests to Pangolin resources. A Traefik certificate resolver is the named block of Traefik configuration that tells Traefik how to request certificates.
Let’s Encrypt only issues wildcard certificates through DNS-01 challenges. See the Traefik ACME documentation and Lego DNS provider list for provider-specific options.
How Wildcards Work
*.example.comcoversapp.example.com,api.example.com, andblog.example.com.*.example.comdoes not coverapp.internal.example.com; that needs*.internal.example.com.- A wildcard certificate can reduce Let’s Encrypt rate limit pressure because many resource hostnames can reuse the same certificate.
blog.example.com and api.example.com, Pangolin can ask Traefik to request *.example.com instead of separate certificates for each hostname.
Benefits
Single Certificate
Secure many subdomains under the same base domain with one certificate.
Instant Subdomains
New resource subdomains can use the existing wildcard certificate instead of waiting for a new certificate request.
Rate Limit Friendly
Fewer certificate requests can help reduce the chance of hitting Let’s Encrypt rate limits.
Choose a Resolver Strategy
Most installs start with one Traefik certificate resolver namedletsencrypt that uses HTTP-01:
traefik_config.yml
80. DNS-01 proves domain ownership by creating a temporary DNS record through your DNS provider. Wildcard certificates require DNS-01.
For wildcard certificates, you have two good options. Most users should replace the existing letsencrypt resolver with DNS-01; add a second resolver only if you know you need both HTTP-01 and DNS-01.
| Strategy | When to use it |
|---|---|
Replace letsencrypt with DNS-01 | Simplest option. Use this if all certificates can be issued through your DNS provider. |
| Add a second resolver | Use this if you want to keep HTTP-01 for some routers and use DNS-01 only for wildcard domains. |
tls.certResolver, and Pangolin’s cert_resolver setting must match the Traefik resolver name.
In the Pangolin dashboard,
default uses Pangolin’s configured traefik.cert_resolver value. In a standard install, that default value is letsencrypt.Configure DNS-01 Wildcards
Update the Traefik resolver
Replace the default HTTP-01 resolver with a DNS-01 resolver. This example uses Cloudflare.
config/traefik/traefik_config.yml
The resolver name is the key under
certificatesResolvers. In this example it is letsencrypt, so Pangolin’s cert_resolver and any Traefik tls.certResolver values must also use letsencrypt.Add DNS provider credentials
Add the environment variables required by your DNS provider to the
traefik service. Cloudflare requires an API token with Zone:Read and DNS:Edit permissions for every zone Traefik needs to solve challenges for.docker-compose.yml
Tell Pangolin to prefer wildcard certificates
Set If you manage domains through the Pangolin dashboard instead, restart Pangolin and enable wildcard preference on the domain there. The dashboard also lets you set the domain’s certificate resolver; it must match the resolver name in Traefik.
prefer_wildcard_cert: true for the domain in config/config.yml.config/config.yml
Multiple Certificate Resolvers
You can define more than one Traefik certificate resolver. This is useful when you want to keep HTTP-01 available as the default resolver, but use a DNS-01 resolver for wildcard domains.config/traefik/traefik_config.yml
config/config.yml for file-managed domains:
config/config.yml
config/config.yml
letsencrypt-dns. Enable wildcard preference on the same domain if you want Pangolin to request wildcard certificates for resources under that domain.
If you split ACME storage across multiple files, configure Pangolin’s private
acme.acme_json_path setting as the directory that contains them, for example config/letsencrypt. Pangolin will scan the directory for ACME JSON files, including nested files. See ACME configuration.Dashboard Certificate
Theprefer_wildcard_cert setting affects resource routers generated by Pangolin. If you also want Traefik to request a wildcard certificate for the Pangolin dashboard router, add the wildcard domain to the dashboard router’s tls.domains list in config/traefik/dynamic_config.yml.
config/traefik/dynamic_config.yml
certResolver to that resolver name, such as letsencrypt-dns.
Verify It Works
Create or open a resource
Create a resource on an unused subdomain such as
test.example.com, or open an existing resource under the same base domain.Check Traefik logs
Traefik should use the DNS-01 resolver and should not need a separate certificate for every resource hostname after the wildcard certificate exists.
Troubleshooting
Wildcard certificate is not created
Wildcard certificate is not created
Confirm the DNS provider is correct, the provider environment variables are present on the
traefik service, and the API token has permission to edit DNS records for the zone.Traefik still uses HTTP-01
Traefik still uses HTTP-01
Check the resolver name. The router’s
tls.certResolver and Pangolin’s cert_resolver must match the DNS-01 resolver name exactly.Old certificates are still served
Old certificates are still served
Clear old certificates so Traefik can request them again. You can remove the relevant ACME storage file, or use
pangctl clear-certs if Pangolin has already synced stale certificates.DNS challenge times out
DNS challenge times out
Review Traefik debug logs, confirm DNS propagation is working, and check whether your DNS provider requires additional propagation delay or custom resolvers. If your DNS provider has a firewall, make sure it allows DNS traffic, typically UDP on port
53.
