What works and what does not
So DNS-01 and dynamic DNS give you a valid certificate and a name that tracks your address. They do not make the server reachable from outside. For that, see Public access below.
Before you start
- A DNS zone you control, with a provider Levelrail supports for DNS-01: Cloudflare, Route53 or Google Cloud DNS.
- An API token for that provider with permission to edit DNS records in the zone.
- A name for the server in that zone, for example
home.example.com.
Step 1: Connect the DNS provider
Cloudflare is the simplest to start with:Zone:DNS:Edit and Zone:Zone:Read on the zone you use. The token is stored encrypted and is not returned by the API.
Step 2: Turn on DNS-01 for every host
Single hosts use HTTP-01 by default, which fails behind CGNAT. Turn on DNS-01 for all hosts:Step 3: Keep the name on your current address
Dynamic DNS checks the server’s public address on a timer and updates the record when it changes. The example uses DuckDNS:Step 4: Check the certificate
Open the Domains page and check the host’s certificate status. It should show as issued once the TXT record check passes. If it shows a DNS error, check that the zone is the one the token can edit, and that the record name is not blocked by a CNAME at that name.Public access after the certificate
A trusted certificate is only half of public access. Pick one way in:- A public IPv6 address, if your provider gives you one and your firewall allows the ports. Then the name can point at the IPv6 address.
- A tunnel from a provider that does not need an inbound port. Levelrail’s own tunnel setting is experimental and covers the control plane, not app traffic (see the CLI reference). For a proxy in front of your apps, see Run behind Cloudflare.
- A small public server or VPS in front of the home server, which forwards to it over a private link. See Run behind an existing proxy.
Where to go next
- Dynamic DNS: every setting and the status fields.
- Domains and ingress: the certificate options and what each check means.