
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.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »À 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
Prérequis
Section intitulée « Prérequis »- Docker installé (guide d’installation)
- Docker Compose (inclus dans Docker Desktop, ou
docker-compose-pluginsur Linux)
Les deux modes d’exécution
Section intitulée « Les deux modes d’exécution »Keycloak propose deux modes d’exécution :
| Aspect | Mode développement (start-dev) | Mode production (start) |
|---|---|---|
| Base de données | H2 embarqué (données en mémoire) | PostgreSQL, MySQL, MariaDB |
| TLS/HTTPS | Désactivé | Obligatoire |
| Hostname | localhost par défaut | Doit être configuré |
| Cache | Local uniquement | Distribué (Infinispan) |
| Usage | Tests, labs, formation | Production, staging |
Démarrage rapide (sans persistance)
Section intitulée « Démarrage rapide (sans persistance) »La méthode la plus rapide pour tester Keycloak :
docker run -p 8080:8080 \ -e KC_BOOTSTRAP_ADMIN_USERNAME=admin \ -e KC_BOOTSTRAP_ADMIN_PASSWORD=admin \ quay.io/keycloak/keycloak:26 start-devCe 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
Docker Compose avec PostgreSQL (recommandé)
Section intitulée « Docker Compose avec PostgreSQL (recommandé) »Pour un environnement de formation avec persistance des données :
-
Créer le répertoire de travail
Fenêtre de terminal mkdir -p ~/Projets/keycloak && cd ~/Projets/keycloak -
Créer le fichier
docker-compose.ymldocker-compose.yml services:postgres:image: postgres:16-alpinecontainer_name: keycloak-dbenvironment:POSTGRES_DB: keycloakPOSTGRES_USER: keycloakPOSTGRES_PASSWORD: keycloakvolumes:- postgres_data:/var/lib/postgresql/datahealthcheck:test: ["CMD-SHELL", "pg_isready -U keycloak"]interval: 5stimeout: 5sretries: 5networks:- keycloak-netkeycloak:image: quay.io/keycloak/keycloak:26container_name: keycloakcommand: start-devenvironment:KC_DB: postgresKC_DB_URL: jdbc:postgresql://postgres:5432/keycloakKC_DB_USERNAME: keycloakKC_DB_PASSWORD: keycloakKC_HOSTNAME: localhostKC_BOOTSTRAP_ADMIN_USERNAME: adminKC_BOOTSTRAP_ADMIN_PASSWORD: adminports:- "8080:8080"depends_on:postgres:condition: service_healthynetworks:- keycloak-netvolumes:postgres_data:networks:keycloak-net:driver: bridge -
Démarrer les services
Fenêtre de terminal docker compose up -d -
Suivre les logs
Fenêtre de terminal docker compose logs -f keycloakAttendez de voir :
Keycloak 26.x.x on JVM (powered by Quarkus) started in X.XXXs. Listening on: http://0.0.0.0:8080 -
Ouvrir la console
Accédez à http://localhost:8080
Accéder à la console d’administration
Section intitulée « Accéder à la console d’administration »-
Ouvrez votre navigateur à l’adresse http://localhost:8080
-
Cliquez sur Administration Console
-
Connectez-vous avec les identifiants définis au démarrage :
- Username :
admin - Password :
admin
- Username :
-
Vous arrivez sur le Master Realm — l’espace d’administration global
Variables de configuration essentielles
Section intitulée « Variables de configuration essentielles »Keycloak se configure via des variables d’environnement (préfixées KC_) ou des options CLI (préfixées --).
Base de données
Section intitulée « Base de données »| Variable | Description | Exemple |
|---|---|---|
KC_DB | Type de base de données | postgres, mysql, mariadb |
KC_DB_URL | URL JDBC de connexion | jdbc:postgresql://host:5432/db |
KC_DB_USERNAME | Utilisateur de la base | keycloak |
KC_DB_PASSWORD | Mot de passe | secret |
Administration initiale
Section intitulée « Administration initiale »| Variable | Description |
|---|---|
KC_BOOTSTRAP_ADMIN_USERNAME | Nom de l’admin initial |
KC_BOOTSTRAP_ADMIN_PASSWORD | Mot de passe admin initial |
| Variable | Description | Exemple |
|---|---|---|
KC_HOSTNAME | Hostname public | localhost, auth.example.com |
KC_HTTP_PORT | Port HTTP | 8080 |
Fonctionnalités
Section intitulée « Fonctionnalités »| Variable | Description | Exemple |
|---|---|---|
KC_HEALTH_ENABLED | Endpoints /health/* | true |
KC_METRICS_ENABLED | Métriques Prometheus | true |
KC_LOG_LEVEL | Niveau de log | INFO, DEBUG |
Commandes utiles
Section intitulée « Commandes utiles »Gestion des conteneurs
Section intitulée « Gestion des conteneurs »# Démarrerdocker compose up -d
# Arrêterdocker compose down
# Voir les logsdocker compose logs -f keycloak
# Redémarrer Keycloakdocker compose restart keycloak
# Supprimer tout (y compris les données)docker compose down -vÉtat et diagnostic
Section intitulée « État et diagnostic »# Vérifier que Keycloak répondcurl -I http://localhost:8080/health/ready
# Voir l'état des conteneursdocker compose psDépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
Connection refused (DB) | PostgreSQL non démarré | Attendre le healthcheck ou docker compose restart |
FATAL: password authentication failed | Mauvais credentials DB | Vérifier les variables KC_DB_* |
Port already in use | Port 8080 occupé | Utiliser un autre port : 8180:8080 |
| Page blanche au login | Navigateur cache | Ctrl+F5 ou mode navigation privée |
Réinitialiser complètement
Section intitulée « Réinitialiser complètement »Pour repartir de zéro (supprime toutes les données) :
docker compose down -vdocker compose up -dÀ retenir
Section intitulée « À retenir »- 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
Prochaines étapes
Section intitulée « Prochaines étapes »Ressources
Section intitulée « Ressources »- Documentation officielle : keycloak.org/documentation
- Release notes : keycloak.org/docs/latest/release_notes
- Guide conteneurs : keycloak.org/server/containers
- Guide de migration : keycloak.org/docs/latest/upgrading