kanidm

Kanidm is a modern, secure, and comparatively lightweight identity management solution developed in Rust, focusing on clear standards, self‑healing mechanisms, and simple administration. The platform is suitable for home labs, small businesses, and even enterprise environments.

Compared to many other IAM systems (e.g., Keycloak), Kanidm comes with built‑in features such as OAuth2/OIDC, Unix integration, passkey authentication (WebAuthn), and an application portal.

Kanidm supports modern security features:

  • Passkeys / WebAuthn
  • OIDC & OAuth2
  • Application Portal
  • Unix integration
  • Two‑node replication

Configuration is done via CLI and configuration files – you can find the complete references in the Kanidm Book: https://kanidm.github.io/kanidm/master/

Requirements

Kanidm is officially provided as a container. You can find the official images on Docker Hub:

  • kanidm/server
  • kanidm/radius
  • kanidm/tools

Basic requirements:

  • Modern CPU feature set: x86_64_v2 or ARM NEON
  • Docker + Docker Compose
  • TLS certificates (chain.pem & key.pem)
  • Storage space (approx. 8 KB per entry) & RAM (approx. 64 KB per entry)

Installation with Docker Compose

In the following example, Kanidm is set up with a bind mount for certificates and a persistent volume for data.

/etc/kanidm/
├── chain.pem
├── key.pem
└── server.toml

Example server.toml

version = "2"

bindaddress = "0.0.0.0:8443"

db_path = "/data/kanidm.db"

tls_chain = "/data/chain.pem"
tls_key   = "/data/key.pem"

domain = "idm.example.com"
origin = "https://idm.example.com"
log_level = "info"

Note: Domain, origin, tls_chain & tls_key must be set, or Kanidm will not start.

Docker Compose file

services:
  kanidmd:
    container_name: kanidmd
    image: kanidm/server:latest
    restart: always

    volumes:
      - type: bind
        source: /etc/kanidm/
        target: /data/
      - kanidm_data:/var/lib/kanidm/

    ports:
      - "443:8443"

volumes:
  kanidm_data:

Starting the container

docker compose up -d
docker logs -f kanidmd

If TLS and configuration are correct, the server should start successfully.

Initial setup via CLI

docker run --rm -it   --network host   kanidm/tools:latest   kanidm login --user admin --password

You can then manage users, groups, and applications.

WebAuthn & Features

  • Passkeys / WebAuthn
  • OIDC & OAuth2
  • Application Portal
  • Unix integration
  • Two‑node replication

Configuration is done via CLI and configuration files – full references in the Kanidm Book.

Reloading certificates

docker kill -s HUP kanidmd

Conclusion

Kanidm is a modern, secure, and lightweight identity management solution that is easy to deploy via containers. Its strict but simple configuration makes it ideal for home labs and larger environments.

Last modified: 28 January 2026