Keycloak SSO con Docker Compose y Nginx
El inicio de sesión único autohospedado con Keycloak provoca opiniones intensas: muchos valoran su amplio conjunto de funciones y el soporte de estándares, pero lo describen como pesado, complejo de configurar y peculiar de operar a escala o detrás de proxies inversos modernos. Los comentaristas comparten consejos de despliegue (Docker Compose, Nginx/Apache/Caddy, Terraform, exportación/importación de realms) y a menudo trasladan la complejidad a la capa de proxy o a servicios de autorización separados, a la vez que advierten sobre límites de rendimiento y problemas operativos como el clustering y el número de realms. Se compara una amplia gama de alternativas—Authelia, authentik, Zitadel, Dex, FusionAuth, plugins de Caddy y servidores OIDC más ligeros—según la facilidad de instalación, huella de recursos, soporte de multifactor, apertura del código y adecuación para homelab frente a uso empresarial.
Keycloak: potencia vs complejidad
- Ampliamente considerado potente y con muchas funciones (OIDC/SAML, realms/tenants, servicios de autorización/UMA2), pero también grande, opinativo y difícil de aprender.
- Las quejas incluyen: UI/docs confusas, APIs de administración engorrosas, exportación parcial o torpe de la configuración, estado persistente que complica las reconstrucciones y clustering difícil (descubrimiento multicast/UDP, sesiones persistentes).
- Algunos informan buen rendimiento con la imagen Quarkus “optimizada” (arranque rápido, RAM modesta); otros ven arranques lentos y alto uso de recursos. El tamaño del contenedor y los recursos recomendados parecen pesados para configuraciones domésticas o pequeñas.
- Los realms se promocionan como mecanismo multiusuario, pero hay informes de ralentizaciones graves y fallos alrededor de unos cientos de realms; esto se describe como un problema conocido de larga data.
Patrones de proxy inverso y despliegue
- Patrón común: terminar OIDC en un proxy inverso (Apache mod_auth_openidc, Nginx, Caddy, Traefik) y reenviar la identidad mediante cabeceras a las apps, evitando la complejidad de OIDC por aplicación.
- Algunos ejecutan Keycloak localmente sobre HTTP y lo exponen mediante túneles de Cloudflare o proxies con auto-TLS (Caddy, Caddy-Docker-Proxy) para evitar la gestión manual de certificados; otros prefieren Nginx en el host por su madurez y documentación.
- Keycloak puede comportarse de forma extraña detrás de proxies; en algunas configuraciones ha hecho falta configuración adicional del proxy. Los desajustes de DNS en desarrollo local (hostname del contenedor vs localhost) son una molestia recurrente.
Soluciones alternativas de identidad/SSO
- Authelia: elogiado por su huella muy pequeña, configuración simple con archivos/variables de entorno y SSO sólido en la capa de proxy para homelabs; carece de una UI completa de administración de usuarios. Hay preocupación por lanzamientos poco frecuentes; los mantenedores afirman que se desarrolla activamente con una gran preversión pendiente.
- authentik: apreciado por la facilidad de configuración y la buena documentación, pero criticado por un error de redirección en subdominios y una implementación no estándar de client-credentials; los mantenedores lo reconocen y están publicando correcciones.
- Zitadel: citado repetidamente como mucho más fácil que Keycloak, con todas las funciones MFA/passkey en la versión de código abierto; requiere su propia base de datos (Postgres).
- Otros mencionados: Dex + oauth2-proxy (IdP federado simple + forward auth), FusionAuth (de código cerrado pero con nivel gratuito, amigable con Terraform), JetBrains Hub, obligator (dirigido por código, sin BD pero joven), Teleport, lldap como LDAP ligero.
Configuración, autorización y seguridad
- Varios usuarios mueven la autorización (grupos/roles/permisos) fuera de Keycloak hacia bases de datos de aplicaciones o servicios de autorización dedicados, dejando Keycloak solo para la identidad.
- Se usa infraestructura como código (por ejemplo, proveedores de Terraform) para evitar la configuración manual de Keycloak y la deriva.
- Debate sobre la postura de seguridad: las CVEs de Keycloak preocupan a algunos; otros sostienen que la notificación transparente es mejor que fallos desconocidos en silencio. Se considera que los IdPs de código cerrado sin CVEs no garantizan seguridad.