Instal·lació de Keycloak amb MariaDB en Docker


Documentació: Instal·lació de Keycloak amb MariaDB en Docker

🔧 Requisits previs

Abans de començar, assegura’t de tenir:

  • Docker instal·lat i funcionant
  • Una xarxa Docker (my-docker-network) creada:docker network create my-docker-network
  • Un contenidor de MariaDB actiu a la mateixa xarxa, per exemple:
docker run -d --name mariadb \
 --network my-docker-network \
 -e MYSQL_ROOT_PASSWORD=admin \
 -e MYSQL_DATABASE=keycloak \
 -e MYSQL_USER=keycloak \
 -e MYSQL_PASSWORD=theSuperSecr3tP4ssw0rd! \
 mariadb:11

🧱 Construcció de la imatge de Keycloak

Crea un fitxer anomenat Dockerfile amb el següent contingut:

FROM keycloak/keycloak:26.2 AS builder

WORKDIR /opt/keycloak

COPY cert.pem /opt/keycloak/conf/cert.pem
COPY cert.key /opt/keycloak/conf/cert.key
COPY ca.pem /opt/keycloak/conf/ca.pem

COPY mariadb-java-client-3.5.3.jar /opt/keycloak/providers/mariadb-java-client.jar

# Database
ENV KC_DB=mariadb

# Metrics
ENV KC_METRICS_ENABLED=true

# Health
ENV KC_HEALTH_ENABLED=true

RUN /opt/keycloak/bin/kc.sh build

FROM keycloak/keycloak:26.2

COPY --from=builder /opt/keycloak/ /opt/keycloak/

# Hostname
ENV KC_HOSTNAME=sso.xavs.cat
ENV KC_HOSTNAME_STRICT=true

# Database
ENV KC_DB=mariadb
ENV KC_DB_URL=jdbc:mariadb://mariadb:3306/keycloak?autoReconnect=true
ENV KC_DB_PASSWORD=theSuperSecr3tP4ssw0rd!
ENV KC_DB_USERNAME=keycloak

# Logging
ENV KC_LOG_LEVEL=info

# Metrics
ENV KC_METRICS_ENABLED=true

# Health
ENV KC_HEALTH_ENABLED=true

# HTTP
ENV KC_HTTP_ENABLED=true
ENV KC_HTTPS_CERTIFICATE_FILE=/opt/keycloak/conf/cert.pem
ENV KC_HTTPS_CERTIFICATE_KEY_FILE=/opt/keycloak/conf/cert.key

# Admin
ENV KC_BOOTSTRAP_ADMIN_USERNAME=admin
ENV KC_BOOTSTRAP_ADMIN_PASSWORD=Temporal1234!=

WORKDIR /opt/keycloak

EXPOSE 8443
EXPOSE 9000

CMD ["start"]

Després, construeix la imatge:

docker build -t localhost/keycloak:26.2 .

🚀 Execució del contenidor de Keycloak

Executa el contenidor amb:

docker run -d --name keycloak \
  -p 8443:8443 -p 9000:9000 \
  --memory="1024m" --cpus="1" \
  --restart=unless-stopped \
  --network my-docker-network \
  localhost/keycloak:26.2

🔐 Certificats i seguretat

Aquest desplegament utilitza HTTPS amb un certificat personalitzat. Assegura’t que els fitxers següents estan al mateix directori que el Dockerfile:

  • cert.pem – certificat públic
  • cert.key – clau privada
  • ca.pem – certificat de l’autoritat certificadora

🛠️ Paràmetres importants

  • Base de dadesMariaDB configurada amb usuaris i contrasenya per Keycloak.
  • Admin: L’usuari administrador es crea automàticament amb les credencials:
    • Usuari: admin
    • Contrasenya: Temporal1234!=
  • Ports exposats:
    • 8443: per accedir a la interfície web segura
    • 9000: per a estadístiques o mètriques (si està configurat)

🌐 Accés al panell de Keycloak

Un cop estigui el contenidor en execució, accedeix a la consola d’administració a través de:

https://sso.xavs.cat:8443

📊 Monitorització i Salut

El sistema ve preparat amb:

  • Mètriques Prometheus activades: port 9000
  • Endpoint de salut activat