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úbliccert.key
– clau privadaca.pem
– certificat de l’autoritat certificadora
🛠️ Paràmetres importants
- Base de dades:
MariaDB
configurada amb usuaris i contrasenya per Keycloak. - Admin: L’usuari administrador es crea automàticament amb les credencials:
- Usuari:
admin
- Contrasenya:
Temporal1234!=
- Usuari:
- Ports exposats:
8443
: per accedir a la interfície web segura9000
: 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