{"id":64,"date":"2025-04-24T12:02:21","date_gmt":"2025-04-24T10:02:21","guid":{"rendered":"https:\/\/xavs.cat\/?p=64"},"modified":"2025-04-24T12:02:21","modified_gmt":"2025-04-24T10:02:21","slug":"installacio-de-keycloak-amb-mariadb-en-docker","status":"publish","type":"post","link":"https:\/\/xavs.cat\/?p=64","title":{"rendered":"Instal\u00b7laci\u00f3 de Keycloak amb MariaDB en Docker"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Documentaci\u00f3: Instal\u00b7laci\u00f3 de Keycloak amb MariaDB en Docker<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">\ud83d\udd27 Requisits previs<\/h4>\n\n\n\n<p>Abans de comen\u00e7ar, assegura\u2019t de tenir:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Docker instal\u00b7lat i funcionant<\/li>\n\n\n\n<li>Una xarxa Docker (<code>my-docker-network<\/code>) creada:<code>docker network create my-docker-network<\/code><\/li>\n\n\n\n<li>Un contenidor de MariaDB actiu a la mateixa xarxa, per exemple:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d --name mariadb \\\n --network my-docker-network \\\n -e MYSQL_ROOT_PASSWORD=admin \\\n -e MYSQL_DATABASE=keycloak \\\n -e MYSQL_USER=keycloak \\\n -e MYSQL_PASSWORD=theSuperSecr3tP4ssw0rd! \\\n mariadb:11<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\ud83e\uddf1 Construcci\u00f3 de la imatge de Keycloak<\/h4>\n\n\n\n<p>Crea un fitxer anomenat&nbsp;<code>Dockerfile<\/code>&nbsp;amb el seg\u00fcent contingut:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FROM keycloak\/keycloak:26.2 AS builder\n\nWORKDIR \/opt\/keycloak\n\nCOPY cert.pem \/opt\/keycloak\/conf\/cert.pem\nCOPY cert.key \/opt\/keycloak\/conf\/cert.key\nCOPY ca.pem \/opt\/keycloak\/conf\/ca.pem\n\nCOPY mariadb-java-client-3.5.3.jar \/opt\/keycloak\/providers\/mariadb-java-client.jar\n\n# Database\nENV KC_DB=mariadb\n\n# Metrics\nENV KC_METRICS_ENABLED=true\n\n# Health\nENV KC_HEALTH_ENABLED=true\n\nRUN \/opt\/keycloak\/bin\/kc.sh build\n\nFROM keycloak\/keycloak:26.2\n\nCOPY --from=builder \/opt\/keycloak\/ \/opt\/keycloak\/\n\n# Hostname\nENV KC_HOSTNAME=sso.xavs.cat\nENV KC_HOSTNAME_STRICT=true\n\n# Database\nENV KC_DB=mariadb\nENV KC_DB_URL=jdbc:mariadb:\/\/mariadb:3306\/keycloak?autoReconnect=true\nENV KC_DB_PASSWORD=theSuperSecr3tP4ssw0rd!\nENV KC_DB_USERNAME=keycloak\n\n# Logging\nENV KC_LOG_LEVEL=info\n\n# Metrics\nENV KC_METRICS_ENABLED=true\n\n# Health\nENV KC_HEALTH_ENABLED=true\n\n# HTTP\nENV KC_HTTP_ENABLED=true\nENV KC_HTTPS_CERTIFICATE_FILE=\/opt\/keycloak\/conf\/cert.pem\nENV KC_HTTPS_CERTIFICATE_KEY_FILE=\/opt\/keycloak\/conf\/cert.key\n\n# Admin\nENV KC_BOOTSTRAP_ADMIN_USERNAME=admin\nENV KC_BOOTSTRAP_ADMIN_PASSWORD=Temporal1234!=\n\nWORKDIR \/opt\/keycloak\n\nEXPOSE 8443\nEXPOSE 9000\n\nCMD &#91;\"start\"]<\/code><\/pre>\n\n\n\n<p>Despr\u00e9s, construeix la imatge:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker build -t localhost\/keycloak:26.2 .<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\ud83d\ude80 Execuci\u00f3 del contenidor de Keycloak<\/h4>\n\n\n\n<p>Executa el contenidor amb:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d --name keycloak \\\n  -p 8443:8443 -p 9000:9000 \\\n  --memory=\"1024m\" --cpus=\"1\" \\\n  --restart=unless-stopped \\\n  --network my-docker-network \\\n  localhost\/keycloak:26.2<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\ud83d\udd10 Certificats i seguretat<\/h4>\n\n\n\n<p>Aquest desplegament utilitza HTTPS amb un certificat personalitzat. Assegura\u2019t que els fitxers seg\u00fcents estan al mateix directori que el&nbsp;<code>Dockerfile<\/code>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>cert.pem<\/code>\u00a0\u2013 certificat p\u00fablic<\/li>\n\n\n\n<li><code>cert.key<\/code>\u00a0\u2013 clau privada<\/li>\n\n\n\n<li><code>ca.pem<\/code>\u00a0\u2013 certificat de l\u2019autoritat certificadora<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\ud83d\udee0\ufe0f Par\u00e0metres importants<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Base de dades<\/strong>:\u00a0<code>MariaDB<\/code>\u00a0configurada amb usuaris i contrasenya per Keycloak.<\/li>\n\n\n\n<li><strong>Admin<\/strong>: L&#8217;usuari administrador es crea autom\u00e0ticament amb les credencials:\n<ul class=\"wp-block-list\">\n<li>Usuari:\u00a0<code>admin<\/code><\/li>\n\n\n\n<li>Contrasenya:\u00a0<code>Temporal1234!=<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Ports exposats<\/strong>:\n<ul class=\"wp-block-list\">\n<li><code>8443<\/code>: per accedir a la interf\u00edcie web segura<\/li>\n\n\n\n<li><code>9000<\/code>: per a estad\u00edstiques o m\u00e8triques (si est\u00e0 configurat)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\ud83c\udf10 Acc\u00e9s al panell de Keycloak<\/h4>\n\n\n\n<p>Un cop estigui el contenidor en execuci\u00f3, accedeix a la consola d\u2019administraci\u00f3 a trav\u00e9s de:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;sso.xavs.cat:8443<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">\ud83d\udcca Monitoritzaci\u00f3 i Salut<\/h4>\n\n\n\n<p>El sistema ve preparat amb:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>M\u00e8triques Prometheus<\/strong>\u00a0activades: port\u00a0<code>9000<\/code><\/li>\n\n\n\n<li><strong>Endpoint de salut<\/strong>\u00a0activat<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Documentaci\u00f3: Instal\u00b7laci\u00f3 de Keycloak amb MariaDB en Docker \ud83d\udd27 Requisits previs Abans de comen\u00e7ar, assegura\u2019t de tenir: \ud83e\uddf1 Construcci\u00f3 de la imatge de Keycloak Crea un fitxer anomenat&nbsp;Dockerfile&nbsp;amb el seg\u00fcent contingut: Despr\u00e9s, construeix la imatge: \ud83d\ude80 Execuci\u00f3 del contenidor de Keycloak Executa el contenidor amb: \ud83d\udd10 Certificats i seguretat Aquest desplegament utilitza HTTPS amb un [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-64","post","type-post","status-publish","format-standard","hentry","category-docker"],"_links":{"self":[{"href":"https:\/\/xavs.cat\/index.php?rest_route=\/wp\/v2\/posts\/64","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xavs.cat\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xavs.cat\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xavs.cat\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/xavs.cat\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=64"}],"version-history":[{"count":1,"href":"https:\/\/xavs.cat\/index.php?rest_route=\/wp\/v2\/posts\/64\/revisions"}],"predecessor-version":[{"id":65,"href":"https:\/\/xavs.cat\/index.php?rest_route=\/wp\/v2\/posts\/64\/revisions\/65"}],"wp:attachment":[{"href":"https:\/\/xavs.cat\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=64"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xavs.cat\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=64"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xavs.cat\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=64"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}