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 tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn