Deployment guide

Self-Host ZITADEL on a VPS: Open-Source IAM for Developers

Deploy on a VPS Cloud →

Tutorial

Self-Host ZITADEL on a VPS: Open-Source IAM for Developers

Self-hosting3 min read3 steps

ZITADEL is an open-source IAM platform written in Go that lets you manage authentication for your applications self-hosted: SSO OIDC/OAuth 2.0, passkeys, native multi-tenancy — all in under 100 MB of RAM. This guide explains how to deploy it on a ServOrbit VPS in under 5 minutes with Docker Compose.

Contents· Why choose ZITADEL over Authentik or Keycloak?1/9
  1. 01Why choose ZITADEL over Authentik or Keycloak?
  2. 02Prerequisites
  3. 03Install ZITADEL from the Marketplace
  4. 04Installation in 3 steps
  5. 05Create your first OIDC application
  6. 06Integrate ZITADEL with your self-hosted applications
  7. 07Multi-tenant management: organisations and projects
  8. 08Tip: enable passkeys from the start
  9. 09Install ZITADEL via the ServOrbit Marketplace

Why choose ZITADEL over Authentik or Keycloak?

ZITADEL occupies a precise niche in the open-source authentication platform ecosystem. Unlike Authelia (authentication proxy without its own user management) or Authentik (feature-rich full-stack IdP), ZITADEL is tailored for development teams that need enterprise-grade IAM from day one: native multi-tenancy, complete gRPC + REST APIs, official Terraform provider.

Its main advantage over Keycloak: lightweight footprint. ZITADEL consumes under 100 MB of RAM at idle, whereas Keycloak rarely starts under 512 MB — a decisive argument for entry-level VPS.

Prerequisites

  • A ServOrbit VPS (2 vCPU / 2 GB RAM recommended, Ubuntu 24.04)
  • A domain or subdomain pointing to the VPS IP (or the free ServOrbit subdomain)
  • ⚠️ The domain must be configured BEFORE installation: ZITADEL locks its OIDC issuer at first boot — it can no longer be changed afterwards

Install ZITADEL from the Marketplace

Installation in 3 steps

  1. Create the VPS

    From your ServOrbit client area, choose the VPS range and click Configure. In the Application field, select ZITADEL. Enter your domain (e.g. auth.yoursite.com).

    If you do not have a domain, the free ServOrbit subdomain is available immediately — HTTPS included.

  2. Automatic startup

    The installation script automatically generates the MASTERKEY (AES-256 key), PostgreSQL password and admin password, then launches PostgreSQL 16 and ZITADEL via Docker Compose. Typical duration: 2 to 4 minutes.

  3. Access the console

    Once installation is complete, your credentials are displayed in the client area.
    - URL: https://<your-domain>/ui/console
    - Username: admin
    - Password: the generated password

    Log in and start by changing your password.

Create your first OIDC application

Once logged in to the ZITADEL console:

1. Go to ProjectsCreate
2. Name your project (e.g. My App)
3. Click Add Application
4. Choose the type: Web (for server-side apps), Native (mobile/desktop) or API (machine-to-machine)
5. For a Web app, choose PKCE (recommended) and enter your Redirect URIs

ZITADEL automatically generates the Client ID. Note the discovery endpoint: https://<your-domain>/.well-known/openid-configuration.

Integrate ZITADEL with your self-hosted applications

ZITADEL integrates natively with all applications that support OIDC. Common integration examples:

  • Gitea: OAuth2 → Authentication → add OAuth2 source → enter Client ID/Secret + discovery endpoint
  • Grafana: [auth.generic_oauth] in grafana.ini with the ZITADEL discovery endpoint
  • Nextcloud: Social Login or OpenID Connect user backend plugin
  • n8n: N8N_AUTH_* environment variables pointing to the ZITADEL IdP

Multi-tenant management: organisations and projects

One of ZITADEL's strengths is its native multi-tenant model. You can create multiple Organisations (e.g. each customer of your SaaS), each with its own users, groups and security policies.

Each organisation can have its own Projects and custom Roles. JWT tokens automatically include the user's roles in the organisation.

Tip: enable passkeys from the start

In the ZITADEL instance settings, enable Passkey/WebAuthn authentication. Your users can authenticate without a password from their browser — a far superior experience to classic passwords.

Install ZITADEL via the ServOrbit Marketplace

You can install ZITADEL directly from the [ServOrbit Marketplace](/marketplace/security/zitadel): VPS pre-configured with Docker Compose, nginx, HTTPS and secrets generated automatically. No shell commands required.

Deploy ZITADEL on your VPS

Open-source IAM, OIDC/OAuth 2.0, passkeys and native multi-tenancy — pre-configured with Docker Compose and HTTPS included.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.

Message us on WhatsAppopens in a new tab