Instalación de Authentik como Proveedor de Identidad
Authentik es una solución de proveedor de identidad de código abierto que soporta SSO, OAuth2, SAML y LDAP, ideal para centralizar la autenticación en entornos empresariales auto-hospedados. Su arquitectura basada en Docker facilita el despliegue en Linux con soporte para flujos de autenticación personalizables y proxy de aplicaciones. Esta guía cubre la instalación completa de Authentik, configuración de proveedores OAuth2/SAML, integración LDAP y gestión de usuarios.
Requisitos Previos
- Servidor Linux (Ubuntu 22.04/Debian 12 o CentOS 9/Rocky 9)
- Docker 24+ y Docker Compose v2
- Mínimo 2 GB de RAM (4 GB recomendado en producción)
- Dominio con DNS configurado y certificado TLS
- Puerto 443 accesible desde Internet (para SAML/OAuth2 externos)
Instalación con Docker Compose
Crea el directorio de trabajo y descarga la configuración oficial:
# Crear directorio de trabajo
mkdir -p /opt/authentik && cd /opt/authentik
# Descargar el docker-compose oficial de Authentik
curl -fsSL https://goauthentik.io/docker-compose.yml -o docker-compose.yml
# Generar clave secreta y contraseña de base de datos
echo "PG_PASS=$(openssl rand -base64 36 | tr -d '\n')" > .env
echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60 | tr -d '\n')" >> .env
# Configurar la URL de acceso público
echo "AUTHENTIK_ERROR_REPORTING__ENABLED=false" >> .env
Edita el archivo .env para ajustar la configuración:
# Contenido completo del .env
cat >> .env << 'EOF'
AUTHENTIK_EMAIL__HOST=smtp.tudominio.com
AUTHENTIK_EMAIL__PORT=587
AUTHENTIK_EMAIL__USE_TLS=true
[email protected]
AUTHENTIK_EMAIL__PASSWORD=tu_password_smtp
[email protected]
EOF
Inicia los servicios:
# Descargar imágenes y levantar contenedores en segundo plano
docker compose pull
docker compose up -d
# Verificar que todos los contenedores estén funcionando
docker compose ps
Configuración Inicial
Authentik expone el panel en el puerto 9000 (HTTP) y 9443 (HTTPS). Accede al asistente de configuración inicial:
# Ver los logs para confirmar que el servicio arrancó correctamente
docker compose logs -f server
# Obtener la contraseña del usuario administrador por defecto (akadmin)
docker compose exec server ak create_admin_group
Navega a https://tu-servidor:9443/if/flow/initial-setup/ para establecer la contraseña del administrador akadmin.
Configura un proxy inverso con Nginx para producción:
# Instalar Nginx si no está instalado
apt-get install -y nginx certbot python3-certbot-nginx
# Crear configuración de Nginx para Authentik
cat > /etc/nginx/sites-available/authentik << 'EOF'
server {
listen 80;
server_name auth.tudominio.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name auth.tudominio.com;
ssl_certificate /etc/letsencrypt/live/auth.tudominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/auth.tudominio.com/privkey.pem;
location / {
proxy_pass https://localhost:9443;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF
ln -s /etc/nginx/sites-available/authentik /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
Configuración de Proveedores OAuth2
Para integrar una aplicación mediante OAuth2:
- En el panel de Authentik, ve a Applications > Providers > Create
- Selecciona OAuth2/OpenID Provider
- Configura los parámetros:
# Los valores que necesitarás para tu aplicación cliente
# Client ID: se genera automáticamente
# Client Secret: se genera automáticamente
# Redirect URIs: https://tu-app.com/auth/callback
# Scopes: openid email profile
Ejemplo de configuración para una aplicación que usa el flujo de código de autorización:
# Endpoints de Authentik (reemplaza auth.tudominio.com con tu dominio)
# Authorization: https://auth.tudominio.com/application/o/authorize/
# Token: https://auth.tudominio.com/application/o/token/
# UserInfo: https://auth.tudominio.com/application/o/userinfo/
# JWKS: https://auth.tudominio.com/application/o/<slug>/jwks/
Configuración de Proveedores SAML
Para integraciones SAML 2.0:
- Ve a Applications > Providers > Create > SAML Provider
- Configura los metadatos del proveedor de servicios (SP)
# Descargar los metadatos del IDP de Authentik
curl -o idp-metadata.xml \
https://auth.tudominio.com/api/v3/providers/saml/<id>/metadata/?download
# Verificar el contenido de los metadatos
cat idp-metadata.xml | grep -E "(entityID|Location)"
Integración con LDAP
Authentik puede actuar como servidor LDAP para aplicaciones que lo requieren:
# Levantar el contenedor LDAP de Authentik (incluido en docker-compose)
# Por defecto escucha en el puerto 3389 (LDAP) y 6636 (LDAPS)
docker compose exec server ak ldap_status
# Verificar conectividad LDAP
ldapsearch -x -H ldap://localhost:3389 \
-D "cn=akadmin,ou=users,DC=ldap,DC=goauthentik,DC=io" \
-w tu_password \
-b "DC=ldap,DC=goauthentik,DC=io" "(objectClass=person)"
En el panel, crea un LDAP Provider en Applications > Providers > Create > LDAP Provider y configura:
- Search group: grupo de usuarios que pueden hacer búsquedas LDAP
- Base DN: el DN base del directorio
- TLS Server Certificate: certificado para LDAPS
Proxy de Aplicaciones
Authentik puede actuar como proxy inverso autenticador para aplicaciones sin soporte OAuth/SAML:
# En docker-compose.yml, el servicio outpost (proxy) ya está incluido
# Configurar el outpost desde el panel: System > Outposts > Create
# Verificar que el proxy outpost esté funcionando
docker compose logs outpost-proxy
Agrega la aplicación al proxy en Applications > Applications > Create, seleccionando el provider de tipo Proxy con modo Forward auth (single application) o Proxy.
Personalización de Flujos
Authentik permite crear flujos de autenticación personalizados:
# Listar los flujos disponibles via API
curl -H "Authorization: Bearer tu_api_token" \
https://auth.tudominio.com/api/v3/flows/instances/ | python3 -m json.tool
Para crear un flujo de registro personalizado:
- Ve a Flows & Stages > Flows > Create
- Añade stages: User Write Stage, Email Verification Stage, User Login Stage
- Vincula el flujo a tu aplicación en las propiedades del provider
Solución de Problemas
# Ver logs de todos los servicios en tiempo real
docker compose logs -f
# Reiniciar solo el servidor de Authentik sin afectar la base de datos
docker compose restart server worker
# Verificar el estado de la base de datos PostgreSQL
docker compose exec postgresql pg_isready -U authentik
# Acceder a la consola de Django para depuración
docker compose exec server python -m manage shell
# Comprobar tareas en cola del worker
docker compose exec server python -m manage process_tasks --list
# Ver errores de autenticación recientes en los logs
docker compose logs server 2>&1 | grep -i "error\|exception" | tail -50
Problemas comunes:
- Contenedor no arranca: Verifica que el archivo
.envtengaAUTHENTIK_SECRET_KEYdefinida - Error de certificado: Asegúrate de que el certificado TLS sea válido y accesible
- LDAP no responde: Comprueba que el outpost LDAP esté correctamente configurado y el grupo asignado exista
Conclusión
Authentik proporciona una plataforma de identidad completa y auto-hospedada que reemplaza soluciones comerciales como Okta o Auth0 para entornos privados. Con soporte nativo para OAuth2, SAML, LDAP y proxy de aplicaciones, es una solución robusta para centralizar la autenticación en infraestructura Linux. La personalización de flujos y la API REST completa permiten adaptarlo a cualquier caso de uso empresarial.


