Authentik
Proveedor de identidad (IdP) del homelab: SSO/autenticación centralizada para
los servicios que no tienen login propio.
Resumen
Authentik es el IdP que da login único (SSO) a los servicios del homelab.
Centraliza usuarios y grupos de la familia: login con Google OAuth (whitelist
de emails) más una cuenta local akadmin (admin de respaldo). Dos grupos:
familia (usuarios) y admins (administradores). Homepage está protegido por
SSO OIDC (grupos familia + admins) y Grafana por SSO OIDC (grupo admins).
Estado
| Campo |
Valor |
| Estado |
Operativo |
| Argo CD Application |
authentik |
| Namespace |
authentik |
Despliegue
| Campo |
Valor |
| Método |
Helm chart (multi-source: chart + config) |
| Chart / imagen |
authentik@2026.8.1 |
| Origen |
https://charts.goauthentik.io |
| Config en el repo |
clusters/luka/apps/authentik/ y clusters/luka/config/authentik/ |
Red
| Campo |
Valor |
| Service |
authentik-server (ClusterIP) |
| IP |
— |
| URL interna |
https://auth.local.gorkarevilla.com |
| URL externa |
https://auth.gorkarevilla.com (túnel cloudflared homelab) |
| TLS |
interno: cert-manager wildcard *.local.gorkarevilla.com; externo: Cloudflare edge |
Acceso y usuarios
- Usuarios/roles: login Google OAuth con whitelist de emails (match por
email, sin enrollamiento abierto). Usuarios hardcoded en el blueprint:
gorkarevilla@gmail.com → grupos familia + admins;
mirenmorillo@gmail.com → grupo familia. akadmin local (contraseña,
grupo admins) es el admin de emergencia: funciona sin internet (cuando el
SSO de Google no), para acceder por .local si el exterior cae.
- Credenciales: en el Secret VKS
authentik-config (ns authentik), que
incluye AUTHENTIK_SECRET_KEY, la password de la DB y la de akadmin.
Nunca el secreto en claro aquí.
Configuración
- Chart
authentik 2026.8.1, server + worker replicas: 1, outpost embebido
(auto-gestionado). Sin Redis: authentik usa PostgreSQL para cola de tareas y sesiones.
- Config y secretos en un único Secret VKS
authentik-config, referenciado con
authentik.existingSecret.secretName (el chart lo monta como envFrom).
- PostgreSQL en el cluster CNPG
authentik-db (BD/owner authentik).
- Blueprints en Git (
clusters/luka/config/authentik/blueprints.yaml): fuente
Google (whitelist), usuarios hardcoded, providers de Grafana y Homepage (OIDC),
grupos familia/admins y bindings.
- Gotcha OIDC (Authentik 2026.8+): los providers
oauth2provider deben
declarar grant_types explícitamente (p. ej. authorization_code,
refresh_token). Si se omite (lista vacía), el flujo authorization_code
falla con Invalid grant_type for provider — en el cliente se ve como
error=Callback (NextAuth) o similar.
- La ruta externa (
auth.gorkarevilla.com) entra por el entrypoint web (HTTP
plano, TLS en Cloudflare edge). Para evitar mixed content, el middleware
Traefik authentik-external-https fuerza X-Forwarded-Proto: https en esa
ruta (Authentik genera sus URLs absolutas a partir de ese header).
Almacenamiento
- — (sin PVC propio). La base de datos vive en el cluster CNPG
authentik-db
(Longhorn, replica=2).
Dependencias
- Depende de: k3s, CloudNativePG (
authentik-db), Traefik, cert-manager,
VKS (secrets), cloudflared (externo).
- Usado por: Homepage (OIDC), Grafana (OIDC SSO).
Backup y recuperación
- La DB (
authentik-db) tiene backup operativo vía CloudNativePG (Barman
Cloud → R2, base diario 02:00 + WAL/PITR, retención 30 días). Ver
docs/runbooks/cnpg-backup-restore.md.
Monitorización
- Métricas Prometheus en el pod server (
:9300/metrics), scrapeadas vía
PodMonitor authentik en clusters/luka/config/servicemonitors/authentik.yaml.
Referencias
- https://goauthentik.io/
- Chart: https://charts.goauthentik.io
- Repo: https://github.com/goauthentik/authentik
Notas / TODO
- Email/SMTP pendiente (recuperación de cuenta, invitaciones).
- Proteger pgAdmin, Longhorn y Argo CD con Authentik (servicio a servicio).