Tutorial

Desplegar Keycloak para el SSO en su VPS

Seguridad y monitorización4 min de lectura6 pasos

Keycloak es la referencia open source del SSO empresarial, respaldada por Red Hat y utilizada incluso en contextos altamente regulados. Con sus realms, su federación LDAP y su soporte completo de OIDC y SAML, cubre necesidades que pocos IdP alcanzan. Autoalojado en un VPS, le ofrece ese nivel de industrialización sin licencia ni dependencia de la nube.

Contenido· Por qué desplegar Keycloak en su VPS1/5
  1. 01Por qué desplegar Keycloak en su VPS
  2. 02Las ventajas de un Keycloak autoalojado
  3. 03Requisitos previos para este despliegue
  4. 04Desplegar Keycloak con PostgreSQL
  5. 05Keycloak o Authentik: ¿cuál elegir?

Por qué desplegar Keycloak en su VPS

Donde algunos IdP buscan la simplicidad, Keycloak busca la exhaustividad: aislamiento multi-tenant mediante los realms, federación de directorios LDAP/Active Directory, brokering hacia proveedores externos (Google, GitHub, otro OIDC), theming completo de las páginas de login y fine-grained authorization. Para una agencia que gestiona varios clientes o para un sistema de información con exigencias de conformidad, ese nivel de control es decisivo. El autoalojamiento en VPS le evita los costos por usuario de las ofertas IdP gestionadas y mantiene la totalidad de la base de identidades bajo su jurisdicción, un punto crítico para datos sensibles que no desea confiar a un tercero.

Las ventajas de un Keycloak autoalojado

  • Múltiples realms para aislar por completo varios clientes o entornos en una misma instancia.
  • Soporte nativo y completo de OpenID Connect, OAuth2 y SAML 2.0.
  • Federación LDAP / Active Directory para reutilizar un directorio existente sin migración.
  • Identity brokering: conexión mediante Google, GitHub o cualquier IdP externo en unos clics.
  • Páginas de login totalmente personalizables (temas, idiomas, branding por realm).
  • Políticas de autenticación detalladas: MFA condicional, duración de sesión, restricciones por rol.

Requisitos previos para este despliegue

Keycloak se ejecuta sobre la JVM (Quarkus desde la v17+) y sigue siendo más exigente que un IdP ligero. Prevea un VPS con 2 vCPU y 4 GB de RAM como mínimo, idealmente 6 GB si espera carga o varios realms activos. Una base PostgreSQL externa es muy recomendable en producción (no use nunca la base H2 integrada más allá de las pruebas). Docker y Docker Compose, un dominio dedicado (sso.midominio.com) y un reverse proxy que gestione el SSL completan los requisitos, ya que Keycloak necesita saber que se sirve detrás de un proxy HTTPS.

Desplegar Keycloak con PostgreSQL

  1. Definir Keycloak y PostgreSQL en Compose

    En su docker-compose.yml, declare el servicio postgres (imagen postgres:16) y el servicio keycloak (imagen quay.io/keycloak/keycloak). Conecte Keycloak a la base mediante KC_DB=postgres, KC_DB_URL, KC_DB_USERNAME y KC_DB_PASSWORD.

  2. Configurar el modo producción y el proxy

    Arranque con el comando start (y no start-dev). Indique KC_HOSTNAME=sso.midominio.com y KC_PROXY_HEADERS=xforwarded para que Keycloak genere URL correctas detrás del reverse proxy. Defina el administrador inicial mediante KC_BOOTSTRAP_ADMIN_USERNAME / KC_BOOTSTRAP_ADMIN_PASSWORD.

  3. Arrancar y finalizar el build

    Ejecute docker compose up -d. En el primer arranque, Keycloak realiza un build Quarkus optimizado y luego migra el esquema PostgreSQL. Siga docker compose logs -f keycloak hasta el mensaje que indica que el servidor está escuchando.

  4. Poner en marcha el reverse proxy SSL

    Enrute sso.midominio.com hacia el puerto 8080 del contenedor Keycloak mediante Caddy, Traefik o Nginx, con un certificado Let's Encrypt. Asegúrese de transmitir las cabeceras X-Forwarded-*, ya que de lo contrario las redirecciones de login se romperán.

  5. Crear un realm y un cliente

    Conéctese a la consola de administración, cree un realm dedicado (nunca el realm master para sus aplicaciones) y luego un cliente OIDC. Ajuste el Valid redirect URIs de su aplicación y recupere el Client ID y el secreto en la pestaña Credentials.

  6. Conectar una aplicación y probar el flujo

    Configure su aplicación con la URL de descubrimiento https://sso.midominio.com/realms/mi-realm/.well-known/openid-configuration. Cree un usuario de prueba en el realm, inicie un login y compruebe la emisión del token en las Sessions de la consola.

Keycloak o Authentik: ¿cuál elegir?

Desplace la tabla

CriterioKeycloakAuthentik
Caso de uso objetivoSSO empresarial, multi-tenant, conformidadSelf-hosting, homelab, agencias
ProtocolosOIDC, OAuth2, SAML, LDAPOIDC, OAuth2, SAML, LDAP, forward auth
Forward auth (proxy)No nativo (mediante extensiones)Nativo y central en la herramienta
Huella de recursosElevada (JVM, 4 GB+ de RAM)Moderada (2-4 GB de RAM)
Multi-realm / tenantsExcelente (realms aislados)Tenants soportados, menos avanzados
Personalización de los flujosTemas y SPI JavaFlujos visuales por etapas
Curva de aprendizajePronunciada, muy completaMás accesible
Federación de directoriosMadura (LDAP/AD)Buena (LDAP)

En producción, no sirva nunca Keycloak con la base H2 integrada ni exponga el realm master al público: cree un realm dedicado por aplicación o por cliente y reserve master para la administración. Para endurecer la instancia, desactive el registro libre, active el brute force detection en Realm Settings > Security Defenses y aprovisione todo mediante ficheros de importación de realm (--import-realm), de modo que versione su configuración en lugar de hacer clic en la interfaz.

Aloje un SSO de nivel empresarial

El VPS Cloud ServOrbit con plantilla Docker preconfigurada aporta la RAM y el PostgreSQL necesarios para ejecutar Keycloak en producción, realms y federación incluidos.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva