Deploy
Domains
Add your own domain, how DNS is checked before it goes live, HTTPS certificates, and Cloudflare's proxy.
Every app starts with a free address, https://<app>.<apps domain>. Add your own domains on the project's Domains page.
Add a domain
- Enter the domain. The panel shows the A record to create at your DNS provider.
- It checks public DNS through Cloudflare's and Google's resolvers, not the server's own, until the domain points at this server. If something is off, it says what to change: a record pointing elsewhere, Cloudflare's proxy turned on, or an IPv6 record that points somewhere else.
- Then it adds the domain to the app's Caddy site, and Caddy gets a certificate from Let's Encrypt. The page shows the certificate's status, and certificates renew on their own.
Adding a domain can also add www. in front of it, redirecting to it.
Checking DNS first means a domain never goes live before it reaches this server, so visitors don't land on an error page while DNS catches up.
Behind Cloudflare's proxy
With Cloudflare's proxy on (the orange cloud), public DNS shows Cloudflare's addresses, not this server's. The domain waits until you choose: set the record to DNS only, or press Keep the proxy. To keep it, set these in Cloudflare:
- SSL/TLS to Full (strict).
- Always Use HTTPS off. This server redirects to HTTPS itself, and its first certificate needs plain HTTP to reach the server.
The certificate status on the page is this server's own, checked directly, so it stays accurate behind the proxy. Apps and the Requests tab see the visitor's real address: Caddy takes CF-Connecting-IP from Cloudflare's published address ranges, and from nowhere else.
The free address
The free <app>.<apps domain> address keeps working next to your domains. Once one of your own domains is live, its remove button turns the free address off, and Add it back restores it. A project's last live domain can't be removed, so the app always answers somewhere.
To give every app's free address your own domain, set the apps domain in Settings.
All domains
The server's Domains page lists every project's domains, one row per project: its main domain, how many more it has, or what needs attention. Manage opens that project's Domains page.
cat /etc/caddy/sites/<app>.caddy # the app's domains, as Caddy serves them
journalctl -u caddy | grep <domain> # certificate requests and renewals