<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://wiki.castanedo.es/index.php?action=history&amp;feed=atom&amp;title=Keycloak</id>
	<title>Keycloak - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.castanedo.es/index.php?action=history&amp;feed=atom&amp;title=Keycloak"/>
	<link rel="alternate" type="text/html" href="https://wiki.castanedo.es/index.php?title=Keycloak&amp;action=history"/>
	<updated>2026-05-10T14:18:23Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://wiki.castanedo.es/index.php?title=Keycloak&amp;diff=203&amp;oldid=prev</id>
		<title>Guzman en 22:46 18 abr 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.castanedo.es/index.php?title=Keycloak&amp;diff=203&amp;oldid=prev"/>
		<updated>2026-04-18T22:46:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Instalación Keycloak en Docker ==&lt;br /&gt;
Instalación de [https://hub.docker.com/hardened-images/catalog/dhi/keycloak dhi.io/keycloak] en Docker.&lt;br /&gt;
Vamos a usar una imagen &amp;quot;Docker Hardened Image&amp;quot; (imágenes seguras, mínimas y listas para producción).&lt;br /&gt;
&lt;br /&gt;
== Requisitos ==&lt;br /&gt;
Para poder realizar esta configuración se necesita:&lt;br /&gt;
* Servidor GNU Linux (ver [[Securizar Ubuntu Server]])&lt;br /&gt;
** Cortafuegos FirewallD (UFW tiene problemas con Docker)&lt;br /&gt;
* Docker Engine (ver [[Docker Engine]])&lt;br /&gt;
** Módulo: Docker Compose (para PRO)&lt;br /&gt;
* MariaDB (ver [[MariaDB]])&lt;br /&gt;
** Usaremos MariaDB para almacenar los datos. [https://www.keycloak.org/server/db Más información].&lt;br /&gt;
* Nginx (ver [[LEMP]])&lt;br /&gt;
* Cuenta en Docker Hub&lt;br /&gt;
** Necesario para acceder a Docker Hardened Image.&lt;br /&gt;
&lt;br /&gt;
== Entorno de DEV ==&lt;br /&gt;
Como entorno de DEV se va a usar Docker Desktop.&lt;br /&gt;
&lt;br /&gt;
=== Login en catálogo DHI ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;docker login dhi.io&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Descargar imagen ===&lt;br /&gt;
Vamos a usar la imagen que es la latest a día de hoy (26.5.6). &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;docker pull dhi.io/keycloak:26.5&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Certificados SSL ===&lt;br /&gt;
Para poder arrancar la Keycloak hace falta tener certificados SSL/TLS.&lt;br /&gt;
Nombres:&lt;br /&gt;
* tls.crt: Certificado Fullchain (X.509 PEM)&lt;br /&gt;
* tls.key: Clave RSA (PKCS#8)&lt;br /&gt;
'''Nota''': en DEV usaremos auto-firmados y en PRO de Let's Encrypt.&lt;br /&gt;
&lt;br /&gt;
=== Crear volumen para certificados SSL ===&lt;br /&gt;
* Crear volumen &amp;quot;keycloak-certs&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;docker volume create keycloak-certs&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Copiar certificados en el &amp;quot;keycloak-cert&amp;quot;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /c/Users/guzman/Desktop/temp&lt;br /&gt;
docker create --name temp-copia -v keycloak-certs:/data alpine&lt;br /&gt;
docker cp entrardev.culturetas.net-fullchain.crt temp-copia:/data/tls.crt&lt;br /&gt;
docker cp entrardev.culturetas.net.key temp-copia:/data/tls.key&lt;br /&gt;
docker cp culturetas-root-ca.crt temp-copia:/data/ca.crt&lt;br /&gt;
docker rm temp-copia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Crear base de datos para MariaDB ===&lt;br /&gt;
Ver [[MariaDB]] para montar la BD necesaria.&lt;br /&gt;
&lt;br /&gt;
=== Ejecutar contenedor en Docker Desktop (DEV) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run -d --name keycloak \&lt;br /&gt;
 --hostname entrardev.culturetas.net \&lt;br /&gt;
 --env KC_BOOTSTRAP_ADMIN_USERNAME=admin \&lt;br /&gt;
 --env KC_BOOTSTRAP_ADMIN_PASSWORD=admin \&lt;br /&gt;
 --env KC_HTTP_PORT=9080 \&lt;br /&gt;
 --env KC_HTTPS_PORT=9443 \&lt;br /&gt;
 --env KC_HTTPS_CERTIFICATE_FILE=//etc/x509/https/tls.crt \&lt;br /&gt;
 --env KC_HTTPS_CERTIFICATE_KEY_FILE=//etc/x509/https/tls.key \&lt;br /&gt;
 --env KC_HOSTNAME=https://localhost:9443/ \&lt;br /&gt;
 --env KC_DB=mariadb \&lt;br /&gt;
 --env KC_DB_URL=jdbc:mariadb://172.17.0.2:3306/keycloakdb \&lt;br /&gt;
 --env KC_DB_USERNAME=keycloak \&lt;br /&gt;
 --env KC_DB_PASSWORD=keycloak \&lt;br /&gt;
 -p 127.0.0.1:9443:9443 \&lt;br /&gt;
 -v keycloak-certs:/etc/x509/https:ro \&lt;br /&gt;
 dhi.io/keycloak:26.5 start&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: si se desea usar una DB H2 hay que crear un volumen para guardar persistentemente dicha DB. NO RECOMENDADO PARA PRO.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
 -v keycloak-data:/opt/keycloak/data/ \&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pruebas ===&lt;br /&gt;
Accedemos con un navegador web [https://localhost:9443/ https://localhost:9443/].&lt;br /&gt;
[[Archivo:Keycloak-DEV-Accesos.png|border|900px|none]]&lt;br /&gt;
&lt;br /&gt;
== Entorno de PRO ==&lt;br /&gt;
En el entorno de PRO se va a desplegar transformando la configuración de Docker Desktop en fichero YAML de Docker Composer.&lt;br /&gt;
&lt;br /&gt;
=== Configurar Virtual Host para Keycloak ===&lt;br /&gt;
* Añadir Virtual Host:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;sudo -i&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;vi /etc/nginx/sites-available/entrar.culturetas.net&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
###########################&lt;br /&gt;
# KEYCLOAK REVERSER PROXY #&lt;br /&gt;
###########################&lt;br /&gt;
server {&lt;br /&gt;
	listen 80;&lt;br /&gt;
	listen [::]:80;&lt;br /&gt;
	server_name entrar.culturetas.net;&lt;br /&gt;
	# Redirect HTTP to HTTPS&lt;br /&gt;
	return 301 https://$host$request_uri;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
	# SSL configuration&lt;br /&gt;
	#&lt;br /&gt;
	listen 443 ssl http2;&lt;br /&gt;
	listen [::]:443 ssl http2;&lt;br /&gt;
	ssl_certificate /etc/ssl/certs/selfsigned.crt;&lt;br /&gt;
	ssl_certificate_key /etc/ssl/private/selfsigned.key;&lt;br /&gt;
	&lt;br /&gt;
	# Root directory&lt;br /&gt;
	root /var/www/entrar.culturetas.net;&lt;br /&gt;
&lt;br /&gt;
	# Add index.php to the list if you are using PHP&lt;br /&gt;
	index index.php index.html index.htm;&lt;br /&gt;
&lt;br /&gt;
	server_name entrar.culturetas.net;&lt;br /&gt;
&lt;br /&gt;
	access_log /var/log/nginx/entrar.culturetas.net-access.log;&lt;br /&gt;
	error_log /var/log/nginx/entrar.culturetas.net-error.log;&lt;br /&gt;
&lt;br /&gt;
	# Activate HSTS (HTTP Strict Transport Security)&lt;br /&gt;
	# Note: reinclude if in a location a header is set&lt;br /&gt;
	include snippets/hsts.conf;&lt;br /&gt;
&lt;br /&gt;
	# Allow favicon.ico, robots.txt, .well-known/&lt;br /&gt;
	# Deny *.txt, *.log, .*/*.php, .*, *.json, .lock, *.ht&lt;br /&gt;
	#include snippets/allowed.conf;&lt;br /&gt;
	#include snippets/denied.conf;&lt;br /&gt;
&lt;br /&gt;
	location / {&lt;br /&gt;
		# First attempt to serve request as file, then&lt;br /&gt;
		# as directory, then fall back to displaying a 404.&lt;br /&gt;
		#try_files $uri $uri/ =404;&lt;br /&gt;
		proxy_pass https://127.0.0.1:9443;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	location = /robots.txt {&lt;br /&gt;
		allow all;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	location ~* ^/.well-known/ {&lt;br /&gt;
		allow all;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Crear carpeta para VirtualHost:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;mkdir /var/www/entrar.culturetas.net&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Activar Virtual Host:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;ln -s /etc/nginx/sites-available/entrar.culturetas.net /etc/nginx/sites-enabled/entrar.culturetas.net&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;systemctl reload nginx&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generar certificados Let's Encrypt ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;certbot --nginx&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Saving debug log to /var/log/letsencrypt/letsencrypt.log&lt;br /&gt;
&lt;br /&gt;
Which names would you like to activate HTTPS for?&lt;br /&gt;
We recommend selecting either all domains, or all domains in a VirtualHost/server block.&lt;br /&gt;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;br /&gt;
1: entrar.culturetas.net&lt;br /&gt;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;br /&gt;
Select the appropriate numbers separated by commas and/or spaces, or leave input&lt;br /&gt;
blank to select all options shown (Enter 'c' to cancel): 1&lt;br /&gt;
Requesting a certificate for entrar.culturetas.net&lt;br /&gt;
&lt;br /&gt;
Successfully received certificate.&lt;br /&gt;
Certificate is saved at: /etc/letsencrypt/live/entrar.culturetas.net/fullchain.pem&lt;br /&gt;
Key is saved at:         /etc/letsencrypt/live/entrar.culturetas.net/privkey.pem&lt;br /&gt;
This certificate expires on 2026-07-17.&lt;br /&gt;
These files will be updated when the certificate renews.&lt;br /&gt;
Certbot has set up a scheduled task to automatically renew this certificate in the background.&lt;br /&gt;
&lt;br /&gt;
Deploying certificate&lt;br /&gt;
Successfully deployed certificate for entrar.culturetas.net to /etc/nginx/sites-enabled/entrar.culturetas.net&lt;br /&gt;
Congratulations! You have successfully enabled HTTPS on https://entrar.culturetas.net&lt;br /&gt;
&lt;br /&gt;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;br /&gt;
If you like Certbot, please consider supporting our work by:&lt;br /&gt;
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate&lt;br /&gt;
 * Donating to EFF:                    https://eff.org/donate-le&lt;br /&gt;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Crear BD para keycloak (MariaDB) ===&lt;br /&gt;
&lt;br /&gt;
==== Conectar a la base de datos ====&lt;br /&gt;
Conectamos como root:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
mariadb&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Crear base de datos ====&lt;br /&gt;
En este ejemplo creamos una BD para keycloak:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
CREATE DATABASE keycloakdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Crear usuario ====&lt;br /&gt;
En este ejemplo creamos una BD para keycloak:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
CREATE USER keycloak IDENTIFIED BY 'keycloak';&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Dar permisos a usuario en BD ====&lt;br /&gt;
En este ejemplo creamos una BD para keycloak:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
GRANT ALL PRIVILEGES ON keycloakdb.* TO 'keycloak';&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Comprobar permisos ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
SHOW GRANTS FOR 'keycloak';&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
+---------------------------------------------------------------------------------------------------------+&lt;br /&gt;
| Grants for keycloak@%                                                                                   |&lt;br /&gt;
+---------------------------------------------------------------------------------------------------------+&lt;br /&gt;
| GRANT USAGE ON *.* TO `keycloak`@`%` IDENTIFIED BY PASSWORD '*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' |&lt;br /&gt;
| GRANT ALL PRIVILEGES ON `keycloakdb`.* TO `keycloak`@`%`                                                |&lt;br /&gt;
+---------------------------------------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Habilitar conexiones remotas ====&lt;br /&gt;
El necesario que la BD tenga configurada conexiones remotas (no sólo desde localhost).&lt;br /&gt;
Ver documento [[LEMP|Configuración MariaDB]].&lt;br /&gt;
&lt;br /&gt;
Nota: se recomienda NO exponer la base de datos a Internet. Es decir, sí habilitar las conexiones remotas, pero no abrir el puerto en los firewalls.&lt;br /&gt;
&lt;br /&gt;
=== Crear carpetas para Keycloak ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;mkdir -p /opt/keycloak/data&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Certificados SSL para el contenedor (auto-firmados) ===&lt;br /&gt;
Vamos a usar los unos certificados SSL auto-firmados para usar dentro del contenedor.&lt;br /&gt;
Aunque estos sean auto-firmados los finales son los que muestra Nginx (Let's Encrypt).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir -p /opt/keycloak/data/ssl&lt;br /&gt;
mv /tmp/entrar.culturetas.net* /opt/keycloak/data/ssl/&lt;br /&gt;
chown root:root /opt/keycloak/data/ssl/entrar.culturetas.net*&lt;br /&gt;
chmod 644 /opt/keycloak/data/ssl/entrar.culturetas.net*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nota: aunque la key no se recomienda 644 (sino 600). Keycloak no es capaz de leerlo con otros permisos.&lt;br /&gt;
&lt;br /&gt;
=== Login en catálogo DHI ===&lt;br /&gt;
* Acceso a Docker Hub: https://app.docker.com/accounts/&amp;lt;user&amp;gt;/settings/personal-access-tokens&lt;br /&gt;
&lt;br /&gt;
* Generar nuevo token&lt;br /&gt;
[[Archivo:Culturetas-access-token.png|border|900px|none]]&lt;br /&gt;
&lt;br /&gt;
* Guardar token en lugar seguro&lt;br /&gt;
&lt;br /&gt;
* Acceder a Docker&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;docker login -u &amp;lt;user&amp;gt; dhi.io&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Nota: las imágenes Hardened son libres pero bajo registro.&lt;br /&gt;
&lt;br /&gt;
=== Descargar imagen ===&lt;br /&gt;
Vamos a usar la imagen que es la latest a día de hoy (26.5.6). &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;docker pull dhi.io/keycloak:26.5&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generar fichero Compose YAML  ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;vi /opt/keycloak/compose.yaml&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
name: keycloak&lt;br /&gt;
services:&lt;br /&gt;
    keycloak:&lt;br /&gt;
        container_name: keycloak&lt;br /&gt;
        hostname: entrar.culturetas.net&lt;br /&gt;
        restart: unless-stopped&lt;br /&gt;
        environment:&lt;br /&gt;
            - KC_BOOTSTRAP_ADMIN_USERNAME=admin&lt;br /&gt;
            - KC_BOOTSTRAP_ADMIN_PASSWORD=admin&lt;br /&gt;
            - KC_HTTP_PORT=9080&lt;br /&gt;
            - KC_HTTPS_PORT=9443&lt;br /&gt;
            - KC_HTTPS_CERTIFICATE_FILE=/etc/x509/https/tls.crt&lt;br /&gt;
            - KC_HTTPS_CERTIFICATE_KEY_FILE=/etc/x509/https/tls.key&lt;br /&gt;
            - KC_HOSTNAME=https://entrar.culturetas.net/&lt;br /&gt;
            - KC_DB=mariadb&lt;br /&gt;
            - KC_DB_URL=jdbc:mariadb://135.125.179.32:3306/keycloakdb&lt;br /&gt;
            - KC_DB_USERNAME=keycloak&lt;br /&gt;
            - KC_DB_PASSWORD=keycloak&lt;br /&gt;
        ports:&lt;br /&gt;
            - 127.0.0.1:9443:9443&lt;br /&gt;
        volumes:&lt;br /&gt;
            - /opt/keycloak/data/ssl/entrar.culturetas.net-fullchain.crt:/etc/x509/https/tls.crt:ro&lt;br /&gt;
            - /opt/keycloak/data/ssl/entrar.culturetas.net.key:/etc/x509/https/tls.key:ro&lt;br /&gt;
        image: dhi.io/keycloak:26.5&lt;br /&gt;
        command: start&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;chmod 640 /opt/keycloak/compose.yaml&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancar OpenLDAP (manual)  ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;cd /opt/keycloak&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;docker compose up -d&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parar OpenLDAP (manual)  ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;cd /opt/keycloak&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;docker compose down&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Arrancar OpenLDAP (con SystemD) ===&lt;br /&gt;
* Crear fichero SystemD&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;vi /etc/systemd/system/keycloak.service&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=KeyCloak (Docker Compose)&lt;br /&gt;
After=docker.service mariadb.service network-online.target&lt;br /&gt;
Requires=docker.service mariadb.service&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
WorkingDirectory=/opt/keycloak&lt;br /&gt;
ExecStart=/usr/bin/docker compose up --detach --remove-orphans --quiet-pull&lt;br /&gt;
ExecStop=/usr/bin/docker compose down --remove-orphans --volumes --timeout 30&lt;br /&gt;
TimeoutStartSec=180&lt;br /&gt;
TimeoutStopSec=120&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
RestartSec=7&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Arrancar y habilitar&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;systemctl daemon-reload&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;systemctl start keycloak&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Bash&amp;quot;&amp;gt;systemctl enable keycloak&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuración KeyCloak ==&lt;br /&gt;
=== Editar Realm (master) ===&lt;br /&gt;
* Acceder a KeyCloak con usuario admin.&lt;br /&gt;
* Pulsar en &amp;quot;Realm settings&amp;quot;.&lt;br /&gt;
* Pulsar en &amp;quot;General&amp;quot;.&lt;br /&gt;
** Display name: culturetas.net&lt;br /&gt;
* Pulsar en &amp;quot;Email&amp;quot;.&lt;br /&gt;
** From: hola@culturetas.net&lt;br /&gt;
** From display name: Hola Cultureta&lt;br /&gt;
** Host: smtp.culturetas.net&lt;br /&gt;
** Port: 587&lt;br /&gt;
** Enable StartTLS: Sí&lt;br /&gt;
** Authentication: Sí&lt;br /&gt;
** Username: hola@culturetas.net&lt;br /&gt;
** Password&lt;br /&gt;
&lt;br /&gt;
=== Crear usuario ===&lt;br /&gt;
* Comprobar que estás en el realm &amp;quot;master&amp;quot;.&lt;br /&gt;
* Pulsar en &amp;quot;Users&amp;quot; -&amp;gt; &amp;quot;Create new user&amp;quot;.&lt;br /&gt;
** Username&lt;br /&gt;
** Email&lt;br /&gt;
** First name&lt;br /&gt;
** Last name&lt;br /&gt;
* Pulser en &amp;quot;Credentials&amp;quot; -&amp;gt; &amp;quot;Set password&amp;quot;.&lt;br /&gt;
** Password&lt;br /&gt;
** Password confirmation&lt;br /&gt;
** Temporary: Off&lt;br /&gt;
&lt;br /&gt;
== Referencias ==&lt;br /&gt;
* [https://hub.docker.com/hardened-images/catalog/dhi/keycloak https://hub.docker.com/hardened-images/catalog/dhi/keycloak]&lt;br /&gt;
* [https://www.keycloak.org/guides https://www.keycloak.org/guides]&lt;br /&gt;
* [https://www.keycloak.org/getting-started/getting-started-docker https://www.keycloak.org/getting-started/getting-started-docker]&lt;br /&gt;
* [https://www.keycloak.org/server/db https://www.keycloak.org/server/db]&lt;br /&gt;
* [https://www.keycloak.org/server/configuration-production https://www.keycloak.org/server/configuration-production]&lt;br /&gt;
* [https://www.keycloak.org/server/hostname https://www.keycloak.org/server/hostname]&lt;br /&gt;
* [https://www.keycloak.org/server/reverseproxy https://www.keycloak.org/server/reverseproxy]&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Notas]]&lt;/div&gt;</summary>
		<author><name>Guzman</name></author>
	</entry>
</feed>