Tutorial

Pocket ID: proveedor OIDC ligero en un solo contenedor

Seguridad y monitorización9 min de lectura8 pasos

Mantener un Keycloak o un Authentik completo para tres o cuatro servicios autoalojados implica desplegar una JVM o un orquestador de contenedores para resolver un problema que cabe en un único binario Go. Pocket ID v2.18.0 (4 de octubre de 2026) es un proveedor OpenID Connect certificado que funciona en un único contenedor, almacena sus datos en SQLite y consume menos de 50 MB de RAM en reposo, frente a los cientos de megabytes que exige Keycloak. Solo hace OIDC, solo acepta passkeys, y eso es exactamente lo que permite desplegarlo en cinco minutos en cualquier VPS.

Contenido· Por qué autoalojar tu proveedor OIDC1/10
  1. 01Por qué autoalojar tu proveedor OIDC
  2. 02Lo que obtienes con un IdP OIDC autoalojado
  3. 03Requisitos concretos
  4. 04Instalación de Pocket ID
  5. 05Configuración post-instalación
  6. 06Endurecimiento de la instancia
  7. 07Solución de problemas
  8. 08Errores comunes y soluciones
  9. 09Pocket ID, Authentik, Keycloak, Authelia: cuál elegir
  10. 10Conclusión

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

  1. 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.com a la IP de tu VPS.

    Instala Docker y el plugin Compose:

    curl -fsSL https://get.docker.com | sh
  2. Crear el directorio de trabajo

    En el servidor, crea un directorio dedicado:

    mkdir -p /opt/pocket-id && cd /opt/pocket-id
  3. Escribir 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"
  4. 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 nginx
  5. Iniciar el contenedor

    Desde /opt/pocket-id:

    docker compose up -d
    docker compose logs -f pocket-id

    La línea de log Starting Pocket ID on :1411 confirma que el servidor está listo.

  6. 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.

  7. 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.

  8. 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 el Client ID, el Client Secret y la URL de descubrimiento https://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 512k y proxy_busy_buffers_size 512k en tu bloque location / y recarga nginx.
  • redirect_uri_mismatch durante 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 esquema http vs https y el número de puerto.
  • invalid_client al intercambiar el código — el client_secret enviado 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 que APP_URL esté configurado como https://... 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

CriterioPocket ID 2.18Authelia 4.39Authentik 2026.8Keycloak 26
Protocolos IdPOIDC/OAuth2OIDC/OAuth2 (beta)OIDC, SAML 2.0, LDAP, SCIMOIDC, SAML 2.0, LDAP, Kerberos
AutenticaciónSolo passkeys (FIDO2)Contraseña + MFA, passkeysContraseña + MFA, passkeysContraseña + MFA, OTP
RAM en reposo< 50 MB~30 MB200–400 MB1–2 GB
Base de datosSQLite integrado (o PostgreSQL)Fichero YAML (o backend externo)PostgreSQL requeridoPostgreSQL recomendado
Número de contenedores113 (server, worker, PostgreSQL)2 (Keycloak + base de datos)
Gestión de usuariosDirectorio integrado, invitación por emailFichero YAML o proveedor externoDirectorio integrado, LDAP, proxy socialDirectorio integrado, federación LDAP/AD
Mejor paraStack ligera, passkeys, IdP simpleCapa forward-auth frente a un proxySSO completo, SAML, flujos visualesSSO 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.

Despliega tu proveedor OIDC en VPS

Un VPS de ServOrbit con Docker 24+ es todo lo que necesitas para ejecutar Pocket ID en producción. Un solo contenedor, IPv4 dedicada y tus aplicaciones protegidas sin ninguna dependencia en la nube.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva