Por qué autoalojar tu proveedor OIDC
Cada servicio autoalojado que gestiona su propia base de usuarios introduce una dependencia que debes mantener: contraseñas que restablecer, cuentas que revocar, sesiones que invalidar. Multiplicado por cinco o diez servicios, se convierte en una carga operativa real. Un proveedor de identidad (IdP) centraliza ese trabajo: una sola fuente de identidad, revocación que se aplica en todas partes, un único punto de configuración MFA.
La pregunta no es si necesitas un IdP, sino cuál — y sobre qué base estás dispuesto a operarlo.
Lo que obtienes con un IdP OIDC autoalojado
- Identidad centralizada — una sola cuenta para Gitea, Nextcloud, Grafana y todos los servicios compatibles con OIDC.
- Revocación global — deshabilitar una cuenta en Pocket ID corta el acceso a todas las aplicaciones conectadas en la siguiente renovación del token.
- Autenticación por passkeys — Touch ID, Face ID o una clave FIDO2 como único factor, sin contraseña que transmitir.
- Sin dependencia en la nube — tus identidades permanecen bajo tu jurisdicción, sin cuotas de usuarios ni precios por acción.
- Huella mínima — Pocket ID consume menos de 50 MB de RAM en reposo, frente a 300–600 MB de Authentik y 1–2 GB de Keycloak.
- SQLite integrado — no hay motor de base de datos externo que aprovisionar ni respaldar por separado.
- Back-channel logout (v2.18.0) — cuando se deshabilita un usuario o revoca un cliente, Pocket ID notifica a las aplicaciones registradas e invalida sus sesiones en el lado del servidor.
- Contenedor único — el servicio completo cabe en una imagen Docker de ~30 MB, sin dependencia de Redis ni worker separado.
Requisitos concretos
Pocket ID está diseñado para stacks pequeñas. Sus requisitos son intencionadamente bajos:
- Docker 24+ y Docker Compose v2 — requeridos por la imagen oficial.
- 512 MB de RAM mínimo en el VPS — Pocket ID funciona con menos de 50 MB en reposo; el resto lo usa el sistema y el proxy inverso.
- Un dominio y un certificado TLS — OIDC exige HTTPS sin excepción.
- Sin base de datos externa — SQLite está integrado. Si prefieres PostgreSQL, basta con cambiar una variable de entorno.
Pocket ID no gestiona SAML, LDAP ni federación de directorios. Si tu stack incluye aplicaciones que solo aceptan SAML, o necesitas federar un Active Directory, usa Authentik o Keycloak en su lugar.
Instalación de Pocket ID
Preparar el VPS y el dominio
Contrata un VPS con Ubuntu 22.04 o Debian 12 con al menos 512 MB de RAM. Crea un registro DNS de tipo A apuntando
auth.example.coma la IP de tu VPS.Instala Docker y el plugin Compose:
curl -fsSL https://get.docker.com | shCrear el directorio de trabajo
En el servidor, crea un directorio dedicado:
mkdir -p /opt/pocket-id && cd /opt/pocket-idEscribir el fichero docker-compose.yml
Crea
/opt/pocket-id/docker-compose.yml:services: pocket-id: image: ghcr.io/pocket-id/pocket-id:v2.18.0 container_name: pocket-id restart: unless-stopped ports: - "1411:1411" volumes: - ./data:/app/data environment: APP_URL: "https://auth.example.com" TRUST_PROXY: "true"Configurar el proxy inverso nginx
Crea el vhost nginx para
auth.example.com:server { listen 443 ssl http2; server_name auth.example.com; ssl_certificate /etc/letsencrypt/live/auth.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/auth.example.com/privkey.pem; proxy_buffer_size 256k; proxy_buffers 4 512k; proxy_busy_buffers_size 512k; location / { proxy_pass http://127.0.0.1:1411; 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; } }Obtén el certificado con Certbot:
certbot certonly --nginx -d auth.example.com nginx -t && systemctl reload nginxIniciar el contenedor
Desde
/opt/pocket-id:docker compose up -d docker compose logs -f pocket-idLa línea de log
Starting Pocket ID on :1411confirma que el servidor está listo.Crear la cuenta de administrador y registrar un passkey
En la primera visita, Pocket ID solicita crear la cuenta de administrador. Introduce tu correo electrónico y registra inmediatamente un passkey: ve a Configuración → Passkeys → Añadir y sigue las indicaciones del navegador.
Registrar tu primera aplicación OIDC
En la interfaz de administración, abre Clientes OIDC → Nuevo cliente. Rellena el nombre y la URL de callback. Pocket ID v2.18.0 crea automáticamente un
client_secret— guárdalo inmediatamente.Probar el flujo desde la aplicación cliente
En Gitea, ve a Administración → Fuentes de autenticación → Añadir → OAuth2. Selecciona
OpenID Connect, introduce elClient ID, elClient Secrety la URL de descubrimientohttps://auth.example.com/.well-known/openid-configuration. Lanza un inicio de sesión de prueba para verificar el flujo completo.
Configuración post-instalación
Tras la puesta en servicio inicial, algunos ajustes mejoran la robustez de la instancia.
Endurecimiento de la instancia
Restringir los registros: desactiva el registro público en Configuración → General → Permitir registro e invita a los usuarios individualmente.
Respaldar el volumen de datos: toda la persistencia vive en ./data. Un rsync diario a un almacenamiento externo es suficiente para una instancia pequeña.
Fijar la versión de la imagen: el ejemplo usa v2.18.0 explícitamente. No dejes latest en producción.
Limitar la exposición de red: si Pocket ID solo necesita ser accesible desde la red interna del VPS, vincula el puerto 1411 a la interfaz loopback.
Solución de problemas
Los errores más frecuentes al configurar Pocket ID siguen patrones bien identificados.
Errores comunes y soluciones
- 502 Bad Gateway en todas las páginas — causa más frecuente: los buffers de nginx son demasiado pequeños para las cabeceras de respuesta OIDC de Pocket ID. Añade
proxy_buffer_size 256k,proxy_buffers 4 512kyproxy_busy_buffers_size 512ken tu bloquelocation /y recarga nginx. redirect_uri_mismatchdurante el inicio de sesión — la Callback URL declarada en Pocket ID no coincide exactamente con la enviada por la aplicación cliente. Verifica la barra diagonal final, el esquemahttpvshttpsy el número de puerto.invalid_cliental intercambiar el código — elclient_secretenviado por la aplicación no coincide. En v2.18.0, Pocket ID crea un secreto automáticamente; si no lo guardaste, regénéralo desde el registro del cliente.- Passkey rechazado:
NotAllowedError— el navegador no puede acceder a las APIs de WebAuthn sin HTTPS. Verifica queAPP_URLesté configurado comohttps://...y que el certificado TLS sea válido. - Las sesiones no se invalidan tras la revocación — el back-channel logout requiere que la aplicación cliente declare una
Backchannel Logout URL. Sin esta URL, Pocket ID no puede notificar a la aplicación; las sesiones existentes expirarán a su duración natural.
Pocket ID, Authentik, Keycloak, Authelia: cuál elegir
Desplace la tabla
| Criterio | Pocket ID 2.18 | Authelia 4.39 | Authentik 2026.8 | Keycloak 26 |
|---|---|---|---|---|
| Protocolos IdP | OIDC/OAuth2 | OIDC/OAuth2 (beta) | OIDC, SAML 2.0, LDAP, SCIM | OIDC, SAML 2.0, LDAP, Kerberos |
| Autenticación | Solo passkeys (FIDO2) | Contraseña + MFA, passkeys | Contraseña + MFA, passkeys | Contraseña + MFA, OTP |
| RAM en reposo | < 50 MB | ~30 MB | 200–400 MB | 1–2 GB |
| Base de datos | SQLite integrado (o PostgreSQL) | Fichero YAML (o backend externo) | PostgreSQL requerido | PostgreSQL recomendado |
| Número de contenedores | 1 | 1 | 3 (server, worker, PostgreSQL) | 2 (Keycloak + base de datos) |
| Gestión de usuarios | Directorio integrado, invitación por email | Fichero YAML o proveedor externo | Directorio integrado, LDAP, proxy social | Directorio integrado, federación LDAP/AD |
| Mejor para | Stack ligera, passkeys, IdP simple | Capa forward-auth frente a un proxy | SSO completo, SAML, flujos visuales | SSO empresarial, multi-tenant, cumplimiento |
Conclusión
Pocket ID v2.18.0 responde a una necesidad concreta: centralizar la autenticación de una stack de servicios autoalojados sin el coste operativo de Keycloak o Authentik. Un contenedor, SQLite, passkeys y menos de 50 MB de RAM en reposo. La v2.18.0 añade back-channel logout para invalidar sesiones en las aplicaciones en cuanto se revoca una cuenta, y restaura la creación automática del client secret.
Si tu stack incluye aplicaciones que solo aceptan SAML, o necesitas federar un Active Directory, Authentik o Keycloak son más adecuados. Para todo lo demás — servicios web modernos en un VPS de 1 o 2 GB — Pocket ID te deja la RAM para el resto.
Consulta también nuestras guías sobre Authentik y Keycloak para elegir con toda la información.