Skip to main content

Mise en place avec Docker / Podman

Une bonne solution pour installer une application est de la conteneriser car cela apporte que des avantages :

  • moins de dépendances sur le serveur
  • mise à jour simplifier
  • sécurisation des environnements

Je vais donc montrer comment installer cette application avec un outil de conteneurisation.

Préparation de la machine

Sur la machine hôte, installer un outil de conteuneurisation

installation des packages

pour installer docker avec les meilleurs pratique, vous pouvez suivre le lien ici : Installation de docker

Debian

  • Podman
sudo apt install podman -y

RHEL

  • Podman
sudo dnf install podman -y

Création des dossiers

Dans un dossier dédié sur la machine, nous allons stockées l'ensemble des fichier nécessaires ainsi que ceux générer par le conteneurs

mkdir -p ~/keycloak/{certs,postgresql}
cd ~/keycloak
touch compose.yml .env

Préparation de la solution

maintenant que l'arborescence est en place, nous allons modifié le fichier compose.yml et .env

  • compose.yml

Il faut copier le texte suivant :

services:
  keycloak:
    container_name: keycloak_app
    image: quay.io/keycloak/keycloak:latest
    restart: always
    environment:
      KEYCLOAK_ADMIN: ${KEYCLOAK_USER}
      KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_PASSWORD}
      KC_HOSTNAME: ${KEYCLOAK_URL}
      KC_DB: postgres
      KC_DB_USERNAME: ${POSTGRES_USER}
      KC_DB_PASSWORD: ${POSTGRES_PASSWORD}
      KC_DB_URL_HOST: keycloak_postgres
      KC_DB_URL_DATABASE: keycloak
      KC_HTTPS_CERTIFICATE_FILE: /etc/x509/https/tls.crt
      KC_HTTPS_CERTIFICATE_KEY_FILE: /etc/x509/https/tls.key
    volumes:
      - ./certs:/etc/x509/https
    depends_on:
      keycloak_postgres:
        condition: service_healthy
    ports:
      - "8080:8080"
      - "8443:8443"
    networks:
      - keycloak-network
    command:
      - start

  keycloak_postgres:
    container_name: keycloak_postgres
    image: docker.io/library/postgres:17
    restart: always
    environment:
      POSTGRES_DB: keycloak
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - ./postgresql:/var/lib/postgresql/data
    networks:
      - keycloak-network
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d keycloak"]
      interval: 10s
      timeout: 5s
      retries: 5

networks:
  keycloak-network:
    name: keycloak-network
    driver: bridge
  • .env

Il faut ensuite remplir le fichier .env avec des mots de passes plus complexe !

KEYCLOAK_USER=admin
KEYCLOAK_PASSWORD=admin
KEYCLOAK_URL=keycloak.local
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres

Gestion des certificats

Keycloak a un gestionnaire de certificats intégré, pour ce tuto, je vais me servir d'un certificat autosigné pour tout faire fonctionné. Mais un certificat let's encrypt ou autre fonctionnera

cd ~/keycloak/certs
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout tls.key -out tls.crt

Lancement du conteneur

Dans le dossier racine où il y a le fichier compose.yml

il faut lancer le conteneur

  • Docker
docker compose up -d
  • Podman
podman-compose up -d

une fois que le conteneurs est lancé, vous pouvez vous rendre depuis votre navigateurs au lien:

https://keycloak.local