Deploy Zitadel
Zitadel 4.19: identity platform with OIDC, SAML, passkeys and multitenancy.
zitadel
Just deployed
Just deployed
/var/lib/postgresql/data
Deploy and Host Zitadel on Railway
Zitadel is an open-source identity and access management platform built for multi-tenancy. It provides OpenID Connect, OAuth2 and SAML, passkeys and MFA, organizations with their own users and branding, service accounts, actions and a full API. It is an alternative to Auth0, Keycloak and Okta.
About Hosting Zitadel
This template runs the official ghcr.io/zitadel/zitadel:v4.19.1 image with Railway Postgres; Zitadel keeps all state in the database, so the service has no volume. The first instance, an organization and an admin user are created on first boot from Railway variables with a generated password and masterkey. Zitadel 4 normally uses a separate login container that shares a token file with the API; Railway services cannot share volumes, so this template keeps the built-in login UI. The instance domain is fixed at first boot from the Railway domain. It fits the Hobby plan for small user bases.
Common Use Cases
- Login, MFA and passkeys for your own apps via OIDC
- B2B SaaS with separate organizations per customer
- SAML single sign-on for internal tools
Dependencies for Zitadel Hosting
ghcr.io/zitadel/zitadel:v4.19.1(official image)- Railway Postgres
Deployment Dependencies
Implementation Details
| Service | Source | Networking | Storage |
|---|---|---|---|
| zitadel | ghcr.io/zitadel/zitadel:v4.19.1 | public domain on 8080 | none (state in Postgres) |
| Postgres | Railway Postgres | private | Railway volume |
Sign in to the console at https:///ui/console as admin@my-organization..
| Variable | Default | Purpose |
|---|---|---|
ZITADEL_FIRSTINSTANCE_ORG_NAME | My Organization | First organization |
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_USERNAME | admin | Admin username |
ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD | Zi1! + generated | Admin password (meets the default policy) |
ZITADEL_MASTERKEY | generated | Encrypts secrets in the database; never change it |
ZITADEL_EXTERNALDOMAIN | Railway domain | Instance domain set on first boot |
Notes:
- After the password, Zitadel offers optional 2FA setup; you can skip it.
- To move to a custom domain, add it as an instance domain in Zitadel before switching
ZITADEL_EXTERNALDOMAIN. - First-instance variables only apply on the first start.
This is a community-maintained deployment package and does not imply affiliation with or endorsement by ZITADEL.
Why Deploy Zitadel on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying Zitadel on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Template Content

