Implementación de Authentik con Docker en Linux: guía paso a paso

En este tutorial, explicaré cómo instalar Authentik con Docker para configurar un portal de inicio de sesión único (SSO) para acceder a sus diferentes aplicaciones.

Authentik te permitirá configurar una solución de autenticación centralizada sencilla ya sea OpenID, SAML e incluso LDAP, Authentik también te permite federar varios IdPs para tener un único portal.

Presentamos Authentik

autentico Authentik es una solución de código abierto de inicio de sesión único (SSO) y gestión de identidades y accesos (IAM) diseñada para infraestructuras modernas. Desarrollada en Python con una interfaz web intuitiva, Authentik centraliza la gestión del acceso de los usuarios a diversas aplicaciones y servicios, ya sean alojados en la nube o en servidores propios.

Su principal ventaja radica en su flexibilidad: soporta estándares modernos como OAuth2, Conexión OpenID, SAML, LDAP Y TOTPEsto permite una integración perfecta con las aplicaciones más comunes. Por lo tanto, Authentik puede actuar como proveedor de identidad (IdP) o como proxy inverso seguro.

Authentik te permite definir políticas de acceso granular Basado en grupos, roles o condiciones específicos. La interfaz de administración ofrece un alto nivel de control sobre usuarios, grupos, flujos de autenticación, proveedores (OAuth/SAML), aplicaciones protegidas, etc.

gracias a su flujos configurablesAuthentik permite personalizar cada paso del proceso de autenticación: creación de cuenta, inicio de sesión, validación de contraseña o MFA, etc. Este enfoque modular facilita la implementación de escenarios complejos sin modificar el código fuente.

En cuanto a la seguridad, Authentik integra de forma nativa autenticación multifactor (MFA), registros de auditoría detallados, gestión de permisos detallada y compatibilidad con servidores proxy inversos (como Traefik o Nginx) para una implementación de producción segura.

Authentik es muy fácil de instalar a través de Estibador O Composición acoplableEsto lo hace accesible incluso para pequeñas organizaciones que deseen mantener el control sobre sus datos de identificación.

En resumen, Authentik es una una alternativa ligera, moderna y de código abierto a soluciones como Keycloak. especialmente adecuado para entornos DevOps, laboratorios autoalojados y empresas preocupadas por su soberanía digital.

Requisitos previos para implementar Authentik con Docker

Supondremos que desea realizar una implementación «limpia» de Authentik para producción, por lo que necesitará:

  • Un servidor Linux con Docker y Docker Compose instalado
  • Un registro DNS (auth.domain.tld / sso.domain.tld)
  • Un certificado SSL que se puede utilizar con el registro
  • A proxy inverso
  • Un servidor SMTP para enviar correos electrónicos

Implementar Authentik con Docker y Docker Compose

Para este despliegue nos basaremos en la documentación oficial disponible aquí: https://docs.goauthentik.io/docs/install-config/install/docker-compose

En su servidor Linux con Docker, comience creando una carpeta donde almacenaremos el archivo docker-compose.yml, el archivo .env y los diferentes volúmenes (redirección de carpetas).

Por mi parte estaré trabajando en el siguiente archivo: /contenedores/authentik/.

Para comenzar, descargue el archivo docker-compose.yml proporcionado por Authentik.

sudo wget https://goauthentik.io/docker-compose.yml

Continuaremos por el momento siguiendo la documentación para crear el archivo. .env y agregarle dos variables.

echo "PG_PASS=$(openssl rand -base64 36 | tr -d '\n')" sudo  .env
echo "CLAVE_SECRETA_DE_AUTENTICACIÓN=$(openssl rand -base64 60 | tr -d '\n')" sudo  .env

Por ahora tenemos los dos archivos que se han creado; ahora agregaremos variables al archivo .env para la configuración de Authentik.

Comenzamos abriendo el archivo:

sudo nano .env

Para comenzar, configuraremos la etiqueta de imagen:

ETIQUETA DE AUTENTIFICACIÓN=2025.6

Durante mi implementación, tuve que realizar esta modificación porque el archivo docker-compose.yml me ofrecía una imagen que aún no estaba disponible, por lo que era imposible implementar Authentik.

Puedes encontrar la lista de TAGS disponibles aquí: https://github.com/goauthentik/authentik/pkgs/container/server

Para continuar con la configuración, añadiremos los parámetros SMTP para el envío de correos electrónicos. Agregue las siguientes líneas y adáptelas a su entorno:

# Los correos electrónicos del host SMTP se envían a
AUTHENTIK_EMAIL__HOST=smtp.dominio.tld
AUTHENTIK_EMAIL__PORT=25
# Autenticar opcionalmente (no agregue comillas a su contraseña)
#AUTHENTIK_EMAIL__NOMBREUSUARIO=
#AUTHENTIK_EMAIL__CONTRASEÑA=
# Utilice StartTLS
#AUTHENTIK_EMAIL__USE_TLS=falso
# Usar SSL
#AUTHENTIK_EMAIL__USE_SSL=falso
#TIEMPO DE ESPERA DE AUTENTIK_EMAIL=10
# La dirección de correo electrónico desde la que authentik enviará el correo electrónico debe tener un @dominio correcto
[email protected]

Ajustar los puertos de publicación de la aplicación:

PUERTO_DE_COMPOSICIÓN_HTTP=80
PUERTO_DE_COMPOSICIÓN_HTTPS=443

Para completar esta configuración, ahora configuraremos los ajustes para crear la cuenta predeterminada: administrador

AUTHENTIK_BOOTSTRAP_PASSWORD=cambiarme
AUTHENTIK_BOOTSTRAP_TOKEN=cambiarme
[email protected]

Aquí también, adáptese a su entorno modificando la dirección de correo electrónico y configurando una contraseña y ficha robusta.

el archivo .env está configurado, ahora pasaremos al archivo docker-compose.yml.

sudo nano docker-compose.yml

Para cada servicio declarado en el archivo docker-compose.yml, modifique la declaración de volumen agregando ./ al frente para redirigir el contenido a una carpeta local y elimina la declaración de volumen que está al final del archivo

Para el servicio PostgreSQL: base de datos:/var/lib/postgresql/data se convierte en: ./base de datos:/var/lib/postgresql/data

Estamos listos, comencemos descargando las imágenes:

sudo docker compose pull
Extraer imagen Authetik

A continuación, inicie los contenedores:

sudo docker compose up -d
Contenedores de inicio de Authentik con Docker Compose

Vea los registros para asegurarse de que los contenedores funcionen correctamente:

sudo docker compose logs -f

Antes de continuar con la configuración, comprobaremos el correcto funcionamiento de Authentik. Desde un navegador web, introduzca la dirección IP de su servidor Docker (HTTPS) en el puerto definido en el archivo. .envDespués de pasar por alto el error del certificado, debería llegar al formulario de autenticación; ingrese la dirección de correo electrónico 1 de la cuenta administrador y haga clic en el botón Iniciar sesión 2.

Authentik - formulario de inicio de sesión

Introduzca la contraseña 1 definida en el archivo .env y haga clic en Continuar 2.

Estamos conectados con Authentik.

Configurar Nginx como proxy inverso

Antes de pasar a la configuración de Authentik, te daré la configuración del host virtual para que Nginx use el nombre DNS que hayas elegido.

A continuación se muestra un ejemplo de un archivo de configuración para Nginx que utiliza un certificado SSL.

Adapte el archivo de configuración a su entorno, colocando la dirección IP del servidor Authentik en la sección río arribamodificar la variable nombre_servidor y la ruta a los certificados SSL.

En el caso de utilizar el robot certificado Para generar el certificado SSL, tome el ejemplo anterior y elimine el bloqueo. servidor{ ... } Configurar en el puerto 80, en el bloque 443, eliminar la parte SSL, cambiar el puerto de 443 a 80 y eliminar http2 encendido;

Primeros pasos con Authentik

Para continuar con este primer tutorial sobre Authentik, veremos cómo crear un usuario en la aplicación y luego configurar una primera aplicación que utilizará el IdP.

Para acceder a la configuración de Authentik, una vez conectado con la cuenta akadmin, haga clic en Interfaz de administración 1.

Llegamos a la sección de Administración del IdP, donde tenemos acceso a la configuración, logs y estadísticas.

Crear un usuario en Authentik

Existen diferentes soluciones para la gestión de usuarios en Authentik, comenzaremos con la solución básica que será crear un nuevo usuario directamente en el IdP.

Desde el panel de administración, expanda Directorio 1 y haga clic en Usuarios 2.

Ubícate en la carpeta 1 donde deseas crear el usuario y luego haz clic en el botón Crear 2.

Ingrese el nombre de usuario 1 que también será el identificador, el nombre 2, deje Interno 3 para el tipo de usuario, ingrese la dirección de correo electrónico 4 luego haga clic en Crear 5.

El usuario ya está creado, ahora configuraremos la contraseña de la cuenta, hacemos clic en ella 1.

En la página de usuario, haga clic en el botón Establecer contraseña 1.

Ingrese la contraseña 1 luego haga clic en el botón Actualizar contraseña 2.

La contraseña del usuario está establecida.

Configurar un proveedor OpenID y una aplicación

Para finalizar este primer tutorial sobre Authentik, veremos cómo agregar un proveedor OpenID para autenticar usuarios en una aplicación.

Para mostrarte cómo funciona, no voy a utilizar una aplicación real, sino un contenedor que permite probar un IDP llamado probador id-oidc.

Aquí está el archivo docker-compose.yml:

nombre: openid-tester
servicios:
probador idp-oidc:
nombre_del_contenedor: oidc-tester
ambiente:
URL PROPIA EXTERNA: "http://A.B.C.D:8080"
puertos:
- 8080:80
imagen: registry.gitlab.com/guenoledc-perso/idp-oidc-tester:latest

Primero, recupere la URL de devolución de llamada de su aplicación desde Openid-Tester; está disponible en la sección de configuración.

Desde el menú, expanda Aplicaciones 1 y luego haga clic en Proveedores 2.

En la página de proveedores, haga clic en Crear 1.

Para comenzar, debe elegir el tipo de proveedor que desea configurar. En este tutorial, crearemos un proveedor OpenID. Haga clic en Proveedor OAuth2/OpenID 1 para seleccionarlo y haga clic en el botón Siguiente 2.

Revisaremos la configuración del proveedor, comenzaremos por nombrarlo 1, luego seleccionaremos el flujo de autorización* 2, elegiremos Confidencial para el tipo de cliente 3, copiaremos el campo ID de cliente 4 y Secreto de cliente 5 en un bloc de notas, luego ingrese la URL de devolución de llamada 6 y haga clic en Finalizar 7 para crear el proveedor.

El flujo de autorización, dependiendo del tipo seleccionado, solicitará (Explícito) o no (Imlícito) la transferencia de información (Email, nombre, apellidos…) a la aplicación a la que se conecta.

En un contexto de aplicación interna, utilice implícito; en el caso de una aplicación externa (SaaS), deje Explícito para informar al usuario que se está transfiriendo información personal.

Se crea el proveedor.

Ahora procederemos a crear la aplicación. En el menú de navegación, haga clic en Aplicaciones 1 y, en la página que la muestra, haga clic en Crear 2.

Ingresa el nombre de la aplicación 1 luego el slug 2, selecciona el proveedor 3 que creamos y haz clic en el botón Crear 4.

Se crea la aplicación, haga clic en ella 1 para acceder a la información y recuperar las URL necesarias para configurar Openid Tester.

En el lado derecho, tienes las diferentes URL que pueden ser necesarias para la configuración de la aplicación; para Openid-Tester, copiaré: URL de configuración de OpenID.

Aquí está la configuración de openid-tester, no voy a entrar en detalles porque no es relevante.

Como puedes ver, para el alcance, solo he configurado openid por el momento.

Para probar la autenticación, haga clic en el botón Iniciar sesión.

Llegamos a la página de autenticación de Authentik, ingresaré el correo electrónico 1 del usuario que fue creado y haré clic en el botón Iniciar sesión 1.

Ingrese la contraseña 1 y haga clic en Continuar 2.

Como el proveedor ha sido configurado como explícito, deberá validar los permisos haciendo clic en el botón Continuar 1.

Luego somos redirigidos a la aplicación, como se puede ver a continuación, con la diversa información devuelta por el IdP.

Como puede ver, todavía no se ha devuelto ninguna información del usuario, lo que en una aplicación real no es muy útil.

Modificaré el alcance de la aplicación agregando el perfil y el correo electrónico que la aplicación debe necesitar.

Esta vez, cuando inicio sesión, puedo ver que la aplicación está solicitando acceso a la información del perfil y a la dirección de correo electrónico.

En la aplicación, podemos ver esta vez que la información del usuario ha sido pasada a Openid-Tester.

Finalmente, este tutorial muestra que si el usuario se conecta directamente a Authentik, en su página de inicio, podrá ver las aplicaciones configuradas.


Ahora sabe cómo implementar Authentik con Docker y configurar una aplicación que usa OpenID.

Romain Drouche
Arquitecto de sistemas | MCSE: Infraestructura básica
Experto en infraestructura de TI con más de 15 años de experiencia en el sector. Actualmente, como Gerente de Proyectos de Sistemas y Redes y experto en Seguridad de Sistemas de Información (ISS), utilizo mi experiencia para garantizar la fiabilidad y seguridad de los entornos tecnológicos.

Deja un comentario