Instalación de Authentik en VPS: SSO, MFA y autenticación centralizada
TL;DR
En esta guía detallada, configuraremos paso a paso Authentik, una potente solución de código abierto para la gestión de identidades y accesos (IAM) en su propio VPS. Obtendrá un sistema centralizado de inicio de sesión único (SSO) y autenticación multifactor (MFA), listo para integrarse con sus aplicaciones web, lo que aumentará significativamente la seguridad y simplificará la gestión de usuarios.
- Authentik se instalará utilizando Docker Compose para una fácil implementación y gestión.
- Como base de datos se utilizará una PostgreSQL 16 externa para un mejor rendimiento y escalabilidad.
- Configuraremos Caddy como servidor proxy inverso con obtención automática de certificados TLS/HTTPS de Let's Encrypt.
- Se cubrirán los pasos básicos para proteger el servidor, incluyendo firewall y claves SSH.
- Aprenderá cómo configurar copias de seguridad y mantener el sistema actualizado.
¿Qué configuramos y por qué?
En el mundo digital actual, la gestión de cuentas de usuario y la garantía de su acceso seguro a múltiples aplicaciones se ha convertido en una tarea de vital importancia. Authentik ofrece una solución elegante y potente a este problema, actuando como un proveedor de identidad centralizado.
Authentik es una plataforma de código abierto para la gestión de identidades y accesos (Identity and Access Management, IAM) que permite implementar el inicio de sesión único (Single Sign-On, SSO) y la autenticación multifactor (Multi-Factor Authentication, MFA) para todas sus aplicaciones. En lugar de crear y gestionar cuentas separadas para cada servicio (GitLab, Mattermost, Nextcloud, Grafana, etc.), los usuarios se autenticarán una vez a través de Authentik, y luego obtendrán acceso sin interrupciones a todas las aplicaciones integradas.
En resumen, al finalizar esta guía, obtendrá un sistema Authentik completamente configurado en su VPS, que servirá como punto central de autenticación. Esto aumentará significativamente la seguridad mediante el uso forzado de MFA y la gestión centralizada de contraseñas, además de mejorar la experiencia del usuario, eliminando la necesidad de recordar múltiples nombres de usuario y contraseñas.
Existen diferentes enfoques para resolver las tareas de IAM. Entre los servicios gestionados en la nube se pueden destacar Okta, Auth0 o Azure AD, que ofrecen alta disponibilidad y costos mínimos de administración, pero a la vez requieren pagos mensuales e implican la transferencia del control de los datos a un tercero. Por otro lado, existen otras soluciones autoalojadas, como Keycloak o FreeIPA, que también ofrecen capacidades de SSO y MFA, pero pueden ser más complejas de implementar y configurar en comparación con Authentik, especialmente para instalaciones pequeñas y medianas.
La elección de una solución autoalojada en un VPS, como Authentik, se debe a varias ventajas clave. En primer lugar, ofrece un control total sobre sus datos e infraestructura, lo cual es especialmente importante para cumplir con la privacidad y los requisitos regulatorios. En segundo lugar, representa un ahorro significativo de costos en comparación con las alternativas en la nube, especialmente a largo plazo. Y, por último, ofrece flexibilidad y la posibilidad de una configuración profunda para sus necesidades únicas, lo que lo convierte en una opción ideal para desarrolladores, fundadores individuales de proyectos SaaS y cualquiera que valore la independencia y la seguridad.
¿Qué configuración de VPS se necesita para esta tarea?
La elección correcta de la configuración del VPS es clave para un funcionamiento estable y eficiente de Authentik. A continuación se presentan los requisitos mínimos y recomendados, vigentes para el año 2026, teniendo en cuenta el crecimiento de la funcionalidad y la optimización de Authentik.
Requisitos mínimos (para equipos pequeños de hasta 50 usuarios)
- CPU: 2 vCPU (procesador moderno x86-64, por ejemplo, Intel Xeon E3/E5 o AMD EPYC).
- RAM: 4 GB (esto es suficiente para el sistema operativo, Authentik y PostgreSQL).
- Disco: 80-100 GB NVMe SSD. La velocidad del subsistema de disco es crítica para el rendimiento de la base de datos y la respuesta general del sistema. NVMe supera significativamente a los SSD SATA comunes.
- Red: 1 Gbit/s uplink. Una dirección IPv4 pública es obligatoria para acceder a Authentik desde internet.
Plan de VPS recomendado (para equipos de hasta 200-300 usuarios)
Para un trabajo más cómodo, con margen para la escalabilidad y la integración de varias decenas de aplicaciones, se recomienda la siguiente configuración:
- CPU: 4 vCPU.
- RAM: 8 GB.
- Disco: 160-200 GB NVMe SSD.
- Red: 1 Gbit/s uplink, IPv4 público.
Para alquilar un VPS con las características indicadas, puede considerar las ofertas de varios proveedores que cumplan con estos parámetros. Asegúrese de que el plan elegido incluya NVMe SSD y suficiente memoria RAM.
Cuándo se necesita un dedicado y no un VPS
Aunque un VPS es una excelente opción para la mayoría de los escenarios, hay situaciones en las que un servidor dedicado (dedicated server) será más preferible:
- Carga muy alta: Si espera miles de usuarios activos, cientos de solicitudes de autenticación por segundo o la integración con sistemas corporativos críticos, un servidor dedicado le proporcionará toda la potencia del hardware físico sin virtualización.
- Requisitos estrictos de rendimiento: Para aplicaciones donde un retraso de incluso milisegundos es crítico, un servidor dedicado puede ofrecer un rendimiento más predecible y estable.
- Requisitos específicos de seguridad/cumplimiento: Algunas normativas reguladoras o políticas internas de la empresa pueden requerir un control total sobre el hardware, lo que se logra mejor en un servidor dedicado.
- Grandes volúmenes de datos: Si Authentik va a almacenar volúmenes significativos de datos de usuario, registros o integrarse con directorios muy grandes, un subsistema de disco grande de un servidor dedicado será útil.
Ubicación del VPS: qué factores influyen
La elección de la ubicación geográfica de su VPS tiene varios aspectos importantes:
- Latencia: Ubique el VPS lo más cerca posible de la mayoría de sus usuarios. Cuanto menor sea la distancia, más rápidas serán las respuestas del servidor, lo cual es crítico para las aplicaciones web interactivas y la experiencia general del usuario.
- Legislación de datos: Si trabaja con datos personales, asegúrese de que la ubicación del VPS cumpla con los requisitos de GDPR, HIPAA u otras leyes locales sobre almacenamiento y procesamiento de datos.
- Disponibilidad de red: Elija ubicaciones con buenas conexiones de red y peering con los principales proveedores, para garantizar un acceso estable y rápido.
Preparación del servidor
Antes de proceder con la instalación de Authentik, es necesario realizar la configuración básica de su VPS para garantizar la seguridad y estabilidad. Utilizaremos Ubuntu Server 24.04 LTS como sistema operativo, ya que es una de las plataformas más populares y mejor soportadas para servidores.
1. Conexión al servidor
Conéctese a su VPS por SSH, utilizando las credenciales proporcionadas por el proveedor (normalmente el usuario root y contraseña, o un usuario con clave SSH).
ssh root@ВАШ_IP_АДРЕС
2. Actualización del sistema
Primero, actualice todos los paquetes a sus versiones más recientes. Esto garantizará la seguridad y estabilidad del sistema.
sudo apt update && sudo apt upgrade -y
3. Creación de un nuevo usuario y configuración de sudo
No se recomienda trabajar como usuario root para tareas diarias. Cree un nuevo usuario con privilegios limitados y agréguelo al grupo sudo.
# Reemplace 'youruser' con el nombre de usuario deseado
sudo adduser youruser
sudo usermod -aG sudo youruser
Salga de la sesión de root e inicie sesión con el nuevo usuario:
exit
ssh youruser@ВАШ_IP_АДРЕС
4. Configuración de acceso SSH mediante claves (recomendado)
Para mejorar la seguridad, se recomienda usar claves SSH en lugar de contraseñas. Si ya utiliza claves, asegúrese de que su clave pública esté añadida al archivo ~/.ssh/authorized_keys del nuevo usuario.
En la máquina local:
# Si no tiene una clave SSH, genérela
ssh-keygen -t rsa -b 496
# Copie la clave pública al servidor (reemplace youruser y SU_DIRECCIÓN_IP)
ssh-copy-id youruser@ВАШ_IP_АДРЕС
En el servidor: desactive el inicio de sesión con contraseña y para el usuario root.
sudo nano /etc/ssh/sshd_config
Encuentre y modifique las siguientes líneas (o añádalas si no existen):
# Deshabilitar el inicio de sesión para root
PermitRootLogin no
# Deshabilitar el inicio de sesión con contraseña (¡después de asegurarse de que el inicio de sesión con clave funciona!)
PasswordAuthentication no
# Asegúrese de que la autenticación por clave esté habilitada
PubkeyAuthentication yes
Reinicie el servicio SSH:
sudo systemctl restart sshd
5. Instalación y configuración de Fail2Ban
Fail2Ban ayuda a protegerse contra ataques de fuerza bruta, bloqueando las direcciones IP desde las que se producen múltiples intentos fallidos de inicio de sesión.
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Cree un archivo de configuración local:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
En la sección [DEFAULT] puede establecer parámetros más agresivos, por ejemplo:
bantime = 1h # Tiempo de bloqueo (1 hora)
findtime = 10m # Tiempo en el que se cuentan los intentos (10 minutos)
maxretry = 3 # Número máximo de intentos antes del bloqueo
Asegúrese de que la sección [sshd] esté activa (enabled = true).
sudo systemctl restart fail2ban
6. Configuración del firewall (UFW)
UFW (Uncomplicated Firewall) es una interfaz conveniente para gestionar iptables. Lo configuraremos para permitir solo el tráfico necesario.
sudo apt install ufw -y
# Denegar todo el tráfico entrante por defecto
sudo ufw default deny incoming
# Permitir todo el tráfico saliente por defecto
sudo ufw default allow outgoing
# Permitir SSH (puerto 22 por defecto)
sudo ufw allow ssh
# Permitir HTTP (puerto 80) y HTTPS (puerto 443) para el servidor web
sudo ufw allow http
sudo ufw allow https
# Habilitar UFW
sudo ufw enable
Confirme la acción introduciendo y. Verifique el estado del firewall:
sudo ufw status verbose
7. Instalación de utilidades básicas
Instale algunas utilidades útiles que pueden ser de ayuda durante la instalación y depuración.
sudo apt install curl wget git htop net-tools -y
Ahora su servidor está preparado y protegido para la posterior implementación de Authentik.
Instalación de software — paso a paso
Authentik se despliega utilizando Docker Compose, lo que simplifica significativamente la gestión de sus componentes. También utilizaremos una base de datos PostgreSQL externa para un mejor rendimiento y escalabilidad.
1. Instalación de Docker Engine y Docker Compose Plugin (válido para 2026)
Instalaremos Docker Engine y Docker Compose Plugin, que son la base para ejecutar Authentik.
# 1. Обновление пакетов и установка необходимых зависимостей
sudo apt update && sudo apt install ca-certificates curl gnupg lsb-release -y
# 2. Добавление официального GPG ключа Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 3. Добавление репозитория Docker
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 4. Обновление индекса пакетов APT и установка Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# 5. Добавление текущего пользователя в группу docker для выполнения команд без sudo
sudo usermod -aG docker $USER
newgrp docker # Примените изменения группы без перезапуска сессии
# 6. Проверка установки Docker
docker run hello-world
# 7. Проверка установки Docker Compose Plugin
docker compose version
La salida esperada para la versión de Docker Compose será aproximadamente Docker Compose version v2.24.x o superior.
2. Instalación y configuración de PostgreSQL 16
Authentik utiliza una base de datos para almacenar sus datos. En lugar de usar la base de datos integrada en el contenedor Docker, instalaremos PostgreSQL 16 directamente en el VPS para un mejor rendimiento y capacidad de gestión.
# 1. Установка PostgreSQL 16
sudo apt install postgresql-16 -y
# 2. Запуск и включение PostgreSQL
sudo systemctl enable postgresql
sudo systemctl start postgresql
# 3. Переключение на пользователя postgres для настройки базы данных
sudo -i -u postgres
# 4. Создание новой базы данных и пользователя для Authentik
psql -c "CREATE DATABASE authentik;"
psql -c "CREATE USER authentik_user WITH PASSWORD 'ВАШ_ОЧЕНЬ_СИЛЬНЫЙ_ПАРОЛЬ_ДЛЯ_БД';"
psql -c "GRANT ALL PRIVILEGES ON DATABASE authentik TO authentik_user;"
# 5. Выход из пользователя postgres
exit
Reemplace 'ВАШ_ОЧЕНЬ_СИЛЬНЫЙ_ПАРОЛЬ_ДЛЯ_БД' por una contraseña compleja y única. Anótela, la necesitará para la configuración de Authentik.
3. Despliegue de Authentik con Docker Compose
Ahora estamos listos para desplegar Authentik utilizando sus imágenes oficiales de Docker.
# 1. Создание директории для Authentik и переход в нее
mkdir ~/authentik
cd ~/authentik
# 2. Загрузка файлов docker-compose.yml и .env из официального репозитория Authentik
# Для примера используем актуальную версию на 2024 год, которая будет актуальна и для 2026 с небольшими обновлениями
# Всегда проверяйте актуальный URL на официальном сайте Authentik (goauthentik.io)
wget https://goauthentik.io/docker-compose.yml
wget https://goauthentik.io/docker-compose.env
mv docker-compose.env .env # Переименовываем файл .env
# 3. Генерация уникального секретного ключа для Authentik
# Этот ключ используется для шифрования данных и должен быть надежным.
# Замените его на свой сгенерированный ключ.
AUTHENTIK_SECRET_KEY=$(python3 -c 'import secrets; print(secrets.token_urlsafe(64))')
echo "AUTHENTIK_SECRET_KEY=$AUTHENTIK_SECRET_KEY" >> .env
echo "La clave secreta de Authentik ha sido generada y añadida a .env"
Importante: asegúrese de utilizar las versiones actuales de los archivos docker-compose.yml y .env del sitio web oficial de Authentik. Los comandos anteriores utilizan enlaces públicos, pero puede haber cambios en 2026.
4. Configuración del archivo .env
Edite el archivo .env para que Authentik pueda conectarse a su base de datos PostgreSQL externa y utilizar el dominio correcto.
nano .env
Busque las siguientes líneas y modifíquelas según su configuración:
AUTHENTIK_HOST=https://your.domain.com/: Reemplaceyour.domain.compor su nombre de dominio real, a través del cual Authentik será accesible.AUTHENTIK_POSTGRESQL__HOST=localhost: Indicamos que PostgreSQL se encuentra en el mismo servidor.AUTHENTIK_POSTGRESQL__NAME=authentik: El nombre de la base de datos que creamos.AUTHENTIK_POSTGRESQL__USER=authentik_user: El nombre de usuario de la base de datos.AUTHENTIK_POSTGRESQL__PASSWORD=ВАШ_ОЧЕНЬ_СИЛЬНЫЙ_ПАРОЛЬ_ДЛЯ_БД: La contraseña del usuario de la base de datos.AUTHENTIK_REDIS__HOST=redis: Déjelo como está si utiliza el Redis interno de Docker Compose.
Ejemplo de líneas editadas en .env:
AUTHENTIK_HOST=https://auth.example.com/ # Su nombre de dominio
AUTHENTIK_SECRET_KEY=ВАШ_СГЕНЕРИРОВАННЫЙ_КЛЮЧ # Ya debería estar ahí
AUTHENTIK_POSTGRESQL__HOST=localhost
AUTHENTIK_POSTGRESQL__NAME=authentik
AUTHENTIK_POSTGRESQL__USER=authentik_user
AUTHENTIK_POSTGRESQL__PASSWORD=ВАШ_ОЧЕНЬ_СИЛЬНЫЙ_ПАРОЛЬ_ДЛЯ_БД
AUTHENTIK_REDIS__HOST=redis
Guarde los cambios (Ctrl+O, Enter, Ctrl+X).
5. Inicio de Authentik
Ahora que todo está configurado, inicie Authentik con Docker Compose.
# Загрузка образов Docker
docker compose pull
# Запуск контейнеров Authentik в фоновом режиме
docker compose up -d
Verifique el estado de los contenedores en ejecución:
docker compose ps
Debería ver los contenedores authentik_server, authentik_worker y redis en estado running.
6. Creación de un superusuario de Authentik
Para el primer inicio de sesión en Authentik, es necesario crear una cuenta de superusuario.
docker compose exec authentik sh -c "python3 manage.py createsuperuser"
Siga las instrucciones en la terminal para crear un usuario admin (o cualquier otro nombre) y establecer una contraseña segura para él. Anote estas credenciales.
En este paso, Authentik está instalado y en ejecución. A continuación, configuraremos el acceso a través de la interfaz web utilizando un proxy inverso y HTTPS.