Kylth needs two names that point at your server: one for the dashboard, and a wildcard for your projects. Any DNS provider works, so you don’t need Cloudflare or any particular service.
app.example.com203.0.113.10*.projects.example.com203.0.113.10The records to create
| Type | Name | Points to |
|---|---|---|
A |
app.example.com |
Your server’s public IPv4 address |
A |
*.projects.example.com |
Your server’s public IPv4 address |
Some providers want only the part before your domain in the name field, for example app and *.projects.
If your server is reachable over IPv6 on ports 80 and 443, you can add matching AAAA records. Only do so if it really is reachable: Let’s Encrypt prefers IPv6 when a record exists, and certificates fail if it can’t connect.
Why the wildcard
Every project gets its own address, named after the project. A wildcard record covers every name under the projects domain at once, so creating a project never needs a DNS change.
| Project | Its address |
|---|---|
shop |
https://shop.projects.example.com |
A second project whose name also becomes shop |
https://shop-2.projects.example.com. Kylth adds a number when a name is taken. |
Each project’s API and its Supabase Studio share that address.
Choosing the names
- The two names don’t need the same parent domain.
kylth.example.comand*.apps.example.network too. - Keep the dashboard outside the projects domain. Use
app.example.comwith*.projects.example.com, notapp.projects.example.com. Otherwise a project namedappwould claim the dashboard’s address. - Point the records straight at the server. Kylth is tested with records that point directly at it. If a proxying service sits in front (Cloudflare’s proxied records, for example), issuing and renewing certificates depends on that service’s settings. Setting the records to DNS only avoids that.
Check the records
dig +short app.example.com
dig +short test.projects.example.com
Both should print your server’s IP address. test can be any name; that’s the wildcard at work. New records can take a while to reach every resolver. If you install before they do, Caddy keeps retrying the certificates on its own.
Next, Install.