Aller au contenu
medium

Installer Keycloak avec Docker

9 min de lecture

Logo Keycloak

Ce guide vous permet d’installer Keycloak avec Docker pour le développement et la formation. Vous apprendrez à démarrer Keycloak rapidement, configurer Docker Compose avec PostgreSQL, et accéder à la console d’administration.

À la fin de ce module, vous saurez :

  • Démarrer Keycloak en mode dev pour tester rapidement
  • Configurer Docker Compose avec PostgreSQL pour la persistance
  • Accéder à la console d’administration et créer un compte admin
  • Identifier les variables essentielles de configuration
  • Docker installé (guide d’installation)
  • Docker Compose (inclus dans Docker Desktop, ou docker-compose-plugin sur Linux)

Keycloak propose deux modes d’exécution :

AspectMode développement (start-dev)Mode production (start)
Base de donnéesH2 embarqué (données en mémoire)PostgreSQL, MySQL, MariaDB
TLS/HTTPSDésactivéObligatoire
Hostnamelocalhost par défautDoit être configuré
CacheLocal uniquementDistribué (Infinispan)
UsageTests, labs, formationProduction, staging

La méthode la plus rapide pour tester Keycloak :

Fenêtre de terminal
docker run -p 8080:8080 \
-e KC_BOOTSTRAP_ADMIN_USERNAME=admin \
-e KC_BOOTSTRAP_ADMIN_PASSWORD=admin \
quay.io/keycloak/keycloak:26 start-dev

Ce que fait cette commande :

  • Télécharge l’image Keycloak 26.x depuis Quay.io
  • Lance Keycloak sur le port 8080
  • Crée un compte admin admin/admin
  • Démarre en mode développement (base H2 en mémoire)

Vérification : Ouvrez http://localhost:8080

Pour un environnement de formation avec persistance des données :

  1. Créer le répertoire de travail

    Fenêtre de terminal
    mkdir -p ~/Projets/keycloak && cd ~/Projets/keycloak
  2. Créer le fichier docker-compose.yml

    docker-compose.yml
    services:
    postgres:
    image: postgres:16-alpine
    container_name: keycloak-db
    environment:
    POSTGRES_DB: keycloak
    POSTGRES_USER: keycloak
    POSTGRES_PASSWORD: keycloak
    volumes:
    - postgres_data:/var/lib/postgresql/data
    healthcheck:
    test: ["CMD-SHELL", "pg_isready -U keycloak"]
    interval: 5s
    timeout: 5s
    retries: 5
    networks:
    - keycloak-net
    keycloak:
    image: quay.io/keycloak/keycloak:26
    container_name: keycloak
    command: start-dev
    environment:
    KC_DB: postgres
    KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
    KC_DB_USERNAME: keycloak
    KC_DB_PASSWORD: keycloak
    KC_HOSTNAME: localhost
    KC_BOOTSTRAP_ADMIN_USERNAME: admin
    KC_BOOTSTRAP_ADMIN_PASSWORD: admin
    ports:
    - "8080:8080"
    depends_on:
    postgres:
    condition: service_healthy
    networks:
    - keycloak-net
    volumes:
    postgres_data:
    networks:
    keycloak-net:
    driver: bridge
  3. Démarrer les services

    Fenêtre de terminal
    docker compose up -d
  4. Suivre les logs

    Fenêtre de terminal
    docker compose logs -f keycloak

    Attendez de voir :

    Keycloak 26.x.x on JVM (powered by Quarkus) started in X.XXXs. Listening on: http://0.0.0.0:8080
  5. Ouvrir la console

    Accédez à http://localhost:8080

  1. Ouvrez votre navigateur à l’adresse http://localhost:8080

  2. Cliquez sur Administration Console

  3. Connectez-vous avec les identifiants définis au démarrage :

    • Username : admin
    • Password : admin
  4. Vous arrivez sur le Master Realm — l’espace d’administration global

Keycloak se configure via des variables d’environnement (préfixées KC_) ou des options CLI (préfixées --).

VariableDescriptionExemple
KC_DBType de base de donnéespostgres, mysql, mariadb
KC_DB_URLURL JDBC de connexionjdbc:postgresql://host:5432/db
KC_DB_USERNAMEUtilisateur de la basekeycloak
KC_DB_PASSWORDMot de passesecret
VariableDescription
KC_BOOTSTRAP_ADMIN_USERNAMENom de l’admin initial
KC_BOOTSTRAP_ADMIN_PASSWORDMot de passe admin initial
VariableDescriptionExemple
KC_HOSTNAMEHostname publiclocalhost, auth.example.com
KC_HTTP_PORTPort HTTP8080
VariableDescriptionExemple
KC_HEALTH_ENABLEDEndpoints /health/*true
KC_METRICS_ENABLEDMétriques Prometheustrue
KC_LOG_LEVELNiveau de logINFO, DEBUG
Fenêtre de terminal
# Démarrer
docker compose up -d
# Arrêter
docker compose down
# Voir les logs
docker compose logs -f keycloak
# Redémarrer Keycloak
docker compose restart keycloak
# Supprimer tout (y compris les données)
docker compose down -v
Fenêtre de terminal
# Vérifier que Keycloak répond
curl -I http://localhost:8080/health/ready
# Voir l'état des conteneurs
docker compose ps
SymptômeCause probableSolution
Connection refused (DB)PostgreSQL non démarréAttendre le healthcheck ou docker compose restart
FATAL: password authentication failedMauvais credentials DBVérifier les variables KC_DB_*
Port already in usePort 8080 occupéUtiliser un autre port : 8180:8080
Page blanche au loginNavigateur cacheCtrl+F5 ou mode navigation privée

Pour repartir de zéro (supprime toutes les données) :

Fenêtre de terminal
docker compose down -v
docker compose up -d
  • Docker Compose est la méthode recommandée pour la formation
  • Mode start-dev = développement uniquement (pas de TLS, pas de prod)
  • PostgreSQL pour la persistance des données
  • Variables KC_BOOTSTRAP_ADMIN_* pour créer l’admin initial (dépréciées : KEYCLOAK_ADMIN*)
  • Console admin : http://localhost:8080 → Administration Console
  • Master Realm : réservé à l’administration, ne pas y créer d’applications

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.