Skip to content

Template · Auth

Zitadel

Cloud-native identity platform (OIDC, passkeys, multi-tenant) on PostgreSQL.

Deploy on Skiffly

Opens the dashboard with this template pre-selected. Sign in with GitHub if you are new; the free tier needs no card.

  • Postgrespostgres:17
  • Zitadelghcr.io/zitadel/zitadel:latest-debug
Upstream documentation

What gets deployed

2 services in the environment you pick, on the private network of the project.

About this template

ghcr.io/zitadel/zitadel:latest-debug (the debug variant has a shell) with start-from-init, PostgreSQL 17. Login at the public URL with the generated admin password.

Postgres

Image: postgres:17

  • Port 5432/tcp
  • 10 GB volume at /var/lib/postgresql/data
  • 1 vCPU · 1 GB

Zitadel

Image: ghcr.io/zitadel/zitadel:latest-debug

  • Port 8080/http
  • Public domain with TLS
  • 1 vCPU · 1 GB
  • /debug/healthz

/app/zitadel start-from-init --masterkeyFromEnv --tlsMode external

Variables

Generated secrets never leave the platform; references are resolved on the private network. Anything marked required is asked for at deploy time.

Postgres

NameValue
POSTGRES_USERpostgresSuperuser name
POSTGRES_PASSWORDgenerated (password)Generated at deploy
POSTGRES_DBzitadelDatabase created on first start
PGDATA/var/lib/postgresql/data/pgdata
DATABASE_URLpostgresql://${{self.POSTGRES_USER}}:${{self.POSTGRES_PASSWORD}}@${{self.SKIFFLY_PRIVATE_DOMAIN}}:5432/${{self.POSTGRES_DB}}Connection string on the private network

Zitadel

NameValue
ZITADEL_MASTERKEYgenerated (hex32)Exactly 32 characters
ZITADEL_EXTERNALDOMAIN${{self.SKIFFLY_PUBLIC_DOMAIN}}
ZITADEL_EXTERNALPORT443
ZITADEL_EXTERNALSECUREtrue
ZITADEL_PORT8080
ZITADEL_DATABASE_POSTGRES_HOST${{Postgres.SKIFFLY_PRIVATE_DOMAIN}}
ZITADEL_DATABASE_POSTGRES_PORT5432
ZITADEL_DATABASE_POSTGRES_DATABASE${{Postgres.POSTGRES_DB}}
ZITADEL_DATABASE_POSTGRES_USER_USERNAMEzitadel
ZITADEL_DATABASE_POSTGRES_USER_PASSWORDgenerated (password)
ZITADEL_DATABASE_POSTGRES_USER_SSL_MODEdisable
ZITADEL_DATABASE_POSTGRES_ADMIN_USERNAME${{Postgres.POSTGRES_USER}}
ZITADEL_DATABASE_POSTGRES_ADMIN_PASSWORD${{Postgres.POSTGRES_PASSWORD}}
ZITADEL_DATABASE_POSTGRES_ADMIN_SSL_MODEdisable
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_USERNAMEadmin
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORDgenerated (password)Must be changed on first login

Deploy button for your README

Add a one-click deploy link to your repository or docs. Two variants: for light and dark backgrounds.

Deploy on SkifflyDeploy on Skiffly
Markdown · Light background
[![Deploy on Skiffly](https://skiffly.dev/button.svg)](https://skiffly.dev/templates/zitadel)
Markdown · Dark background
[![Deploy on Skiffly](https://skiffly.dev/button-dark.svg)](https://skiffly.dev/templates/zitadel)
HTML
<a href="https://skiffly.dev/templates/zitadel"><img src="https://skiffly.dev/button.svg" alt="Deploy on Skiffly" height="32"></a>

Deploy Zitadel in one click

Volumes, secrets and domain pre-wired. Runs on EU nodes, paid per minute from a prepaid balance.