Setup
Deployed, routed, bootstrapped, and login confirmed working end-to-end. See Compose for the actual docker-compose.yaml and the bugs behind it.
-
Add a DNS record pointing
id.<domain>(or whatever subdomain) to the server:- A record:
id→<ipv4> - AAAA record:
id→<ipv6>
- A record:
-
In Coolify, go to New Resource → Docker Compose and paste the compose from Compose.
-
On the resource's Domains tab, add one entry — Service application:
zitadel-api, Port:8080, Path: left empty. Only one entry needed:zitadel-loginhas no Domain-tab entry of its own, since the labels handle its routing entirely, keyed offzitadel-api's domain. -
Deploy, then open
https://id.<domain>and log in. Loginname iszitadel-admin@zitadel.id.<domain>— Zitadel suffixes the org name and domain onto every username. Password is the resolved value ofSERVICE_PASSWORD_64_ZITADELADMINfrom Coolify's Environment Variables tab, with!1Aaappended.
Nothing else needs setting manually — the masterkey, domain, and admin password are all Coolify magic variables.