← Todas las plantillas · Contraseñas e inicio de sesión
Despliega Keycloak en un clic
Administración de identidades y accesos de código abierto: inicio de sesión único para tus apps con OpenID Connect y SAML
Una alternativa autoalojada a Auth0 y Okta.
¿Qué es Keycloak?
Keycloak es un servidor de administración de identidades y accesos: tus apps le delegan el inicio de sesión, y quien inicia sesión una vez queda con la sesión iniciada en todas ellas. Admite OpenID Connect, OAuth 2.0 y SAML 2.0, así que la mayoría de las apps y frameworks se conectan a él con sus bibliotecas estándar. Permite iniciar sesión con contraseña, con una passkey o con una cuenta social como Google o GitHub, agrega autenticación de dos factores con códigos de un solo uso, sincroniza usuarios desde LDAP y Active Directory, y deja que cada usuario administre su perfil, su contraseña y sus sesiones en la consola de la cuenta.
Keycloak es un proyecto en incubación de la Cloud Native Computing Foundation, que usan tanto empresas como home labs para poner un solo inicio de sesión delante de muchas apps. Esta plantilla lo ejecuta en modo producción con PostgreSQL detrás del proxy, y crea el administrador del realm master con los datos de los campos antes de que Keycloak responda a nadie. El inconveniente: Keycloak es potente y tiene muchos ajustes, así que el primer cliente requiere leer un poco, y funciona con Java, que ocupa más memoria que la mayoría de los servidores de inicio de sesión.
Hosting de Keycloak en Pethost
- Inicias sesión en Pethost con una passkey, GitHub o Google. ¿Aún no tienes máquina? Eliges un plan, y el enlace espera hasta que esté lista.
- Nuevo proyecto se abre en Keycloak. Rellenas lo que pide y haces clic en Crear proyecto: Nombre de usuario, Contraseña de administrador.
- En un par de minutos Keycloak está en marcha en su propia dirección con HTTPS. Sus secretos se generan al azar, y sus datos entran en el backup de cada noche.
- Es un proyecto como cualquier otro: tú o tu agente lo pueden cambiar, volver a una versión anterior o restaurar.
Preguntas sobre Keycloak
¿Keycloak es gratis?
Sí. Keycloak es de código abierto bajo la licencia Apache 2.0, sin edición de pago y sin límite de usuarios ni de apps. Red Hat vende soporte para su propia versión, la Red Hat build of Keycloak.
Keycloak frente a Auth0: ¿cuál debería usar?
Los dos inician la sesión de los usuarios con OpenID Connect y SAML, con inicio de sesión social y autenticación de dos factores. Auth0 es un servicio en la nube con precio según los usuarios activos al mes, mientras que Keycloak lo ejecutas tú, gratis para cualquier número de usuarios, a cambio de tener que mantenerlo.
¿Keycloak permite iniciar sesión con Google o GitHub?
Sí. En un realm, “Proveedores de identidad” agrega Google, GitHub, Facebook, Microsoft y otros, o cualquier proveedor de OpenID Connect o SAML 2.0, como botones en su página de inicio de sesión, sin cambiar nada en tus apps.
¿Keycloak admite autenticación de dos factores y passkeys?
Sí. Acepta códigos de un solo uso de apps como Google Authenticator o FreeOTP, códigos de recuperación y passkeys, y un realm puede exigirlos a todos o dejar que cada usuario los active en la consola de la cuenta.
¿Por qué Keycloak dice que soy un administrador temporal?
Keycloak marca como temporal al administrador que crea en su primer inicio, y pide uno permanente: agrega un usuario en el realm master, asígnale el rol admin en “Mapeo de roles”, inicia sesión con él y elimina el administrador temporal.
¿Cuánta memoria y disco necesita Keycloak?
Keycloak funciona con Java: unos 550 MB de memoria con Postgres en reposo, más con muchos usuarios y sesiones; su base de datos se mantiene pequeña. En Pethost le basta el plan Starter, y queda sitio para otras apps a su lado.
El archivo Docker Compose de Keycloak
La plantilla es este compose.yaml y las variables que se escriben en el .env del proyecto al crearlo. Pethost ejecuta el archivo tal como está escrito.
Contenedores: keycloak (quay.io/keycloak/keycloak:26.8), postgres (postgres:18-alpine).
Volúmenes, en el backup de cada noche: db.
services:
keycloak:
image: quay.io/keycloak/keycloak:26.8
restart: unless-stopped
command: start
environment:
KC_DB: postgres
KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
KC_DB_USERNAME: keycloak
KC_DB_PASSWORD: ${POSTGRES_PASSWORD}
KC_HOSTNAME: ${URL}
# The proxy serves HTTPS and passes requests on over HTTP, saying in X-Forwarded-* who sent
# them and how.
KC_HTTP_ENABLED: "true"
KC_PROXY_HEADERS: xforwarded
KC_HEALTH_ENABLED: "true"
# The administrator of the master realm is made from these at the first start, before
# Keycloak answers anyone; Keycloak calls it temporary until a permanent one replaces it.
KC_BOOTSTRAP_ADMIN_USERNAME: ${ADMIN_USERNAME}
KC_BOOTSTRAP_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
depends_on:
postgres:
condition: service_healthy
# The port listens before Keycloak is ready: the deploy waits for its readiness, which its
# management port answers. The image has no curl: bash asks it.
healthcheck:
test: ["CMD-SHELL", "exec 3<>/dev/tcp/127.0.0.1/9000 && printf 'GET /health/ready HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' >&3 && grep -q '\"UP\"' <&3"]
interval: 5s
timeout: 5s
retries: 5
start_period: 180s
postgres:
image: postgres:18-alpine
restart: unless-stopped
environment:
POSTGRES_DB: keycloak
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- db:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U keycloak -d keycloak"]
interval: 5s
timeout: 5s
retries: 10
start_period: 30s
volumes:
db:
Más en Contraseñas e inicio de sesión
- VaultwardenUn servidor de contraseñas para las apps de Bitwarden
- AuthorizerInicio de sesión para tus propias apps, con OAuth 2 y OpenID Connect
- Password PusherComparte contraseñas y secretos con enlaces que caducan
- authentikUn proveedor de identidad para el inicio de sesión único en tus apps: OpenID Connect, SAML, LDAP, MFA y passkeys
- FusionAuthAdministración de identidades y accesos de clientes: inicio de sesión, registro, inicio de sesión único y MFA para tus apps