Skip to main content

Setup

Deployed, routed, bootstrapped, and login confirmed working end-to-end. See Compose for the actual docker-compose.yaml and the bugs behind it.

  1. Add a DNS record pointing id.<domain> (or whatever subdomain) to the server:

    • A record: id → <ipv4>
    • AAAA record: id → <ipv6>
  2. In Coolify, go to New Resource → Docker Compose and paste the compose from Compose.

  3. On the resource's Domains tab, add one entry — Service application: zitadel-api, Port: 8080, Path: left empty. Only one entry needed: zitadel-login has no Domain-tab entry of its own, since the labels handle its routing entirely, keyed off zitadel-api's domain.

  4. Deploy, then open https://id.<domain> and log in. Loginname is zitadel-admin@zitadel.id.<domain> — Zitadel suffixes the org name and domain onto every username. Password is the resolved value of SERVICE_PASSWORD_64_ZITADELADMIN from Coolify's Environment Variables tab, with !1Aa appended.

Nothing else needs setting manually — the masterkey, domain, and admin password are all Coolify magic variables.