Dos filosofías, no dos competidores directos
Authentik (versión 2026.8.2 en el momento de escribir este artículo) está escrito en Python/Django con un frontend TypeScript. Se instala en su VPS y actúa como un proveedor de identidad completo: sus aplicaciones delegan su autenticación a Authentik vía OIDC o SAML, que gestiona sesiones, grupos, aprovisionamiento y ciclo de vida de cuentas. El modelo es el de Okta o Auth0, de código abierto y en su infraestructura.
Authelia (v4.39.24 en el momento de escribir este artículo) es una capa de autenticación que se interpone delante de su reverse proxy — Traefik, nginx o Caddy — mediante la directiva auth_request. Valida cada solicitud HTTP: si el usuario no está autenticado o no tiene el nivel de MFA correcto, Authelia devuelve un 401 y el reverse proxy bloquea. Authelia no emite tokens OAuth2 para las aplicaciones, protege URLs.
Estas dos herramientas coexisten frecuentemente en la misma infraestructura: Authelia para paneles internos y herramientas sin soporte OIDC nativo, Authentik para aplicaciones que hablan OAuth2 o para el aprovisionamiento LDAP de un Active Directory propio.
Tabla comparativa Authentik vs Authelia
Desplace la tabla
| Criterio | Authentik 2026.8 | Authelia v4.39 |
|---|---|---|
| Tipo | Proveedor de identidad (IdP) | Pasarela de autenticación |
| OIDC / OAuth2 | Sí — OpenID Certified™ | Sí — OpenID Certified™ |
| SAML 2.0 (IdP) | Sí | No (hoja de ruta, sin fecha) |
| LDAP | Sí (provider + outpost) | No |
| Aprovisionamiento SCIM | Sí (Enterprise) | No |
| Flujos de autenticación visuales | Sí | No |
| RAM mínima (stack completo) | ~1 GB (worker + PostgreSQL) | < 30 MB |
| Base de datos requerida | PostgreSQL (Redis eliminado en 2025.10) | Redis + PostgreSQL (o SQLite) |
| Interfaz de administración | Completa (UI web) | Archivo de configuración YAML |
| Licencia | MIT (Community) / Enterprise | Apache 2.0 |
| Lenguaje del servidor | Python + Rust (desde 2026.8) | Go |
Protocolos: el criterio que resuelve el 80% de los casos
El soporte SAML es el punto de inflexión más habitual. Si una aplicación de su stack — una suite ofimática, un ERP, una herramienta de RRHH — solo acepta SAML 2.0 como mecanismo de federación, no tiene elección: Authelia no puede actuar como IdP SAML. El soporte SAML está en la hoja de ruta de Authelia, en la sección «planning» (aún no «active»), sin fecha publicada.
Para OIDC/OAuth2, ambas herramientas son ahora OpenID Certified™. Authelia obtuvo esta certificación, validando la implementación en los perfiles Basic OP, Implicit OP, Hybrid OP, Form Post OP y Config OP. Authentik también está certificado desde la versión 2026.8, con soporte adicional para perfiles de cierre de sesión (RP-Initiated, Front-Channel, Back-Channel).
Para un stack de aplicaciones web modernas que hablan OIDC — Nextcloud, Gitea, Grafana, Mattermost, Jellyfin — Authelia es suficiente y considerablemente más ligero. En cuanto una aplicación requiera SAML, aprovisionamiento automático de cuentas o gestión detallada de entitlements, Authentik es el único de los dos que puede responder.
Elija Authelia si
- Protege servicios internos sin soporte OIDC nativo (paneles, herramientas DevOps) a través de su reverse proxy
- Su VPS tiene menos de 2 GB de RAM o ejecuta varios servicios en paralelo
- Prefiere una configuración declarativa en YAML, versionada en Git, sin interfaz web
- Su stack es exclusivamente OIDC/OAuth2 (sin SAML, sin LDAP)
- Quiere una superficie de ataque mínima: el binario Go pesa menos de 20 MB
Elija Authentik si
- Al menos una aplicación requiere SAML 2.0 — Authentik es el único de los dos que lo implementa
- Gestiona cuentas de usuario: ciclo de vida, aprovisionamiento SCIM, sincronización LDAP
- Necesita flujos de autenticación personalizados (onboarding, verificación de correo, recuperación de cuenta)
- Su equipo técnico prefiere una interfaz gráfica a un archivo de configuración
- Centraliza la identidad para varios equipos o varios productos
Huella de recursos: la diferencia es un orden de magnitud
Authelia se mantiene por debajo de 30 MB de RAM en condiciones normales. Su contenedor Docker pesa menos de 20 MB. Para una instalación completa con Redis y PostgreSQL, cuente 150 a 200 MB en total — la huella de un servicio entre otros en un VPS compartido.
Authentik está en otra categoría. El stack completo — worker Python, servidor Rust (desde 2026.8, el frontal fue reescrito de Go a Rust) y PostgreSQL — requiere al menos 1 GB de RAM utilizable, y más bien 2 GB en un servidor dedicado a Authentik si cuenta con varios cientos de usuarios. El proyecto simplificó el stack en 2025.10 eliminando Redis: todas las operaciones de caché, las tareas en segundo plano y las conexiones WebSocket pasan ahora por PostgreSQL.
En un VPS de 2 GB de RAM que ya ejecuta Gitea, Grafana y un reverse proxy, Authentik consumirá la mitad de los recursos disponibles. Authelia, en el mismo contexto, será prácticamente imperceptible.
Requisitos previos para desplegar ambas herramientas
Para Authelia: un VPS de 1 GB de RAM es suficiente, un reverse proxy ya instalado (Traefik, nginx o Caddy), un dominio apuntando a su servidor, Docker y Docker Compose instalados. Authelia necesita almacenamiento de sesiones — SQLite para pruebas, PostgreSQL o MySQL en producción.
Para Authentik: prevea un VPS con al menos 2 GB de RAM dedicados a Authentik, idealmente 4 GB si otros servicios se ejecutan en paralelo. PostgreSQL es obligatorio (Redis eliminado desde 2025.10). Necesita Docker, Docker Compose, un dominio y los puertos 80 y 443 abiertos.
Desplegar Authelia con Docker Compose
Crear la estructura de directorios
Cree un directorio de trabajo y los subdirectorios necesarios:
mkdir -p /opt/authelia/{config,data} cd /opt/autheliaCrear el archivo de configuración
Authelia se configura en YAML. Cree
/opt/authelia/config/configuration.ymlcon los bloquesserver,log,authentication_backend,access_control,session,storageynotifier. Defina eldomainraíz (auth.yourdomain.com), la duración de sesión y el backend de almacenamiento.Crear el docker-compose.yml
services: authelia: image: authelia/authelia:latest container_name: authelia volumes: - ./config:/config - ./data:/data ports: - "9091:9091" restart: unless-stopped environment: - TZ=Europe/ParisConfigurar el reverse proxy
En nginx, añada un bloque
locationque delega la validación a Authelia medianteauth_request. Cada solicitud a sus servicios internos pasa primero porhttp://authelia:9091/api/verify— Authelia responde 200 si el usuario está autenticado, 401 en caso contrario. Traefik dispone de un middlewareForwardAuthequivalente.Iniciar y verificar
docker compose up -d docker compose logs -f autheliaAbra
https://auth.yourdomain.com. Authelia muestra su portal de inicio de sesión. Cree un primer usuario en el archivousers_database.ymly pruebe el acceso a un servicio protegido.
Desplegar Authentik con Docker Compose
Obtener el compose oficial
mkdir -p /opt/authentik && cd /opt/authentik curl -O https://goauthentik.io/docker-compose.ymlEste archivo define el worker, el servidor y PostgreSQL. Desde la versión 2025.10, Redis ya no está en el compose por defecto.
Crear el archivo .env
Genere los secretos necesarios:
echo "PG_PASS=$(openssl rand -base64 36 | tr -d '\n')" >> .env echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60 | tr -d '\n')" >> .env echo "AUTHENTIK_ERROR_REPORTING__ENABLED=false" >> .envIniciar el stack
docker compose pull docker compose up -dEl primer arranque aplica las migraciones de PostgreSQL y puede tardar uno o dos minutos. Siga los logs con
docker compose logs -f worker.Acceder a la interfaz de administración
Abra
http://<ip-vps>:9000/if/flow/initial-setup/para crear la cuenta de administrador inicial. Luego apunte su dominio (sso.yourdomain.com) al servidor y configure el reverse proxy para terminar TLS.Crear su primera aplicación OIDC
En la interfaz de administración, vaya a Aplicaciones → Crear y luego Proveedores → OAuth2/OpenID. Introduzca la URL de redirección de su aplicación cliente, copie el
Client IDyClient Secretgenerados, y configure su aplicación con los endpoints OIDC de Authentik.
Usar ambas herramientas en paralelo
La combinación más habitual en un VPS bien cargado: Authelia protege las herramientas internas sin soporte OIDC (Grafana legacy, Portainer, paneles propios) a través del reverse proxy, y Authentik actúa como IdP OIDC para las aplicaciones que delegan su autenticación. Ambas pueden coexistir en el mismo servidor y compartir el mismo PostgreSQL si las bases de datos están aisladas. Authelia puede incluso configurarse para delegar la autenticación a Authentik vía OIDC — así obtiene la ligereza de Authelia como pasarela y la riqueza de Authentik como fuente de identidad.
Seguridad y superficie de ataque
La superficie de ataque de Authelia es estructuralmente más pequeña: menos código, sin interfaz de administración expuesta (la configuración es un archivo local), sin soporte SAML, sin LDAP. El historial CVE de Authelia es en consecuencia más reducido que el de Authentik.
Authentik expone más: una interfaz web completa, un motor de flujos, varios protocolos de autenticación, una API REST y outposts. Cada superficie adicional es una superficie que mantener y supervisar. La política de soporte de Authentik cubre la versión actual y la anterior.
En ambos casos, las buenas prácticas son las mismas: no exponer el puerto de administración directamente en internet, usar un certificado TLS válido en el subdominio de autenticación, habilitar MFA para todas las cuentas de administración, y mantener las imágenes Docker actualizadas.
Qué VPS para cada herramienta
Para Authelia sola: un VPS de 1 a 2 GB de RAM es más que suficiente, incluso ejecutando varios otros servicios en paralelo. Authelia no justifica un servidor dedicado.
Para Authentik: el mínimo razonable en producción es 2 GB de RAM dedicados al stack Authentik (worker + PostgreSQL). Si Authentik comparte el VPS con otras aplicaciones, prevea 4 GB mínimo.
Un VPS ServOrbit con 2 vCPU y 4 GB de RAM cubre cómodamente Authentik en producción, con margen para las aplicaciones que protege. La plantilla Marketplace Authentik en Dolibarr, n8n, Nextcloud, Open WebUI, WooCommerce, WordPress configura el stack Docker con PostgreSQL, las variables de entorno y el reverse proxy nginx en un único comando.