Tutoriel

Pocket ID : fournisseur OIDC léger en un conteneur

Sécurité & Monitoring9 min de lecture8 étapes

Maintenir un Keycloak ou un Authentik complet pour trois ou quatre services auto-hébergés, c'est déployer une JVM ou un orchestrateur de conteneurs pour résoudre un problème qui tient en un seul binaire Go. Pocket ID v2.18.0 (4 octobre 2026) est un fournisseur OpenID Connect certifié qui fonctionne en un seul conteneur, stocke ses données dans SQLite et consomme moins de 50 Mo de RAM au repos — là où Keycloak en réclame plusieurs centaines de mégaoctets. Il ne fait qu'OIDC, il n'accepte que les passkeys, et c'est précisément ce qui le rend déployable en cinq minutes sur n'importe quel VPS.

Sommaire· Pourquoi auto-héberger son fournisseur OIDC1/10
  1. 01Pourquoi auto-héberger son fournisseur OIDC
  2. 02Ce que vous obtenez avec un IdP OIDC self-hosted
  3. 03Prérequis chiffrés
  4. 04Installation de Pocket ID
  5. 05Configuration post-installation
  6. 06Durcissement de l'instance
  7. 07Dépannage
  8. 08Erreurs courantes et solutions
  9. 09Pocket ID, Authentik, Keycloak, Authelia : que choisir
  10. 10Conclusion

Pourquoi auto-héberger son fournisseur OIDC

Chaque service auto-hébergé qui implémente sa propre base d'utilisateurs introduit une dépendance que vous devez gérer : mot de passe à réinitialiser, compte à révoquer, session à invalider. Multiplié par cinq ou dix services, cela devient un problème d'exploitation réel. Un fournisseur d'identité (IdP) centralise ce travail : une seule source d'identité, une révocation qui s'applique partout, un seul point de configuration MFA.

La question n'est pas de savoir s'il faut un IdP, mais lequel — et sur quelle base vous êtes prêt à l'opérer.

Ce que vous obtenez avec un IdP OIDC self-hosted

  • Identité centralisée — un seul compte pour Gitea, Nextcloud, Grafana et tous les services compatibles OIDC.
  • Révocation globale — désactiver un compte dans Pocket ID coupe l'accès à toutes les applications connectées au prochain renouvellement de token.
  • Authentification par passkeys — Touch ID, Face ID ou clé FIDO2 comme seul facteur, sans mot de passe à faire circuler.
  • Aucune dépendance cloud — vos identités restent sous votre juridiction, sans quota d'utilisateurs ni tarification à l'acte.
  • Empreinte minimale — Pocket ID consomme moins de 50 Mo de RAM au repos, contre 300 à 600 Mo pour Authentik et 1 à 2 Go pour Keycloak.
  • SQLite embarqué — aucun moteur de base de données externe à provisionner ou à sauvegarder séparément.
  • Back-channel logout (v2.18.0) — lorsqu'un utilisateur est désactivé ou révoque un client, Pocket ID notifie les applications enregistrées et invalide leurs sessions côté serveur.
  • Un seul conteneur — l'ensemble du service tient dans une image Docker de 30 Mo environ, sans dépendance Redis, sans worker séparé.

Prérequis chiffrés

Pocket ID est pensé pour les petites stacks. Ses prérequis sont intentionnellement bas :

- Docker 24+ et Docker Compose v2 — versions requises par l'image officielle.
- 512 Mo de RAM minimum sur le VPS — Pocket ID tourne sous les 50 Mo au repos, le reste sert au système et au reverse proxy.
- Un domaine et un certificat TLS — OIDC exige HTTPS sans exception ; sans domaine joignable publiquement (ou en réseau interne avec TLS), l'installation ne peut pas fonctionner.
- Aucune base de données externe — SQLite est embarquée. Si vous préférez PostgreSQL pour une sauvegarde simplifiée, le passage se fait en changeant une variable d'environnement.

Pocket ID ne gère ni SAML, ni LDAP, ni fédération d'annuaires. Si votre stack inclut des applications qui n'acceptent que SAML ou que vous devez fédérer un Active Directory, orientez-vous vers Authentik ou Keycloak. Pour une stack de services web modernes compatibles OIDC, Pocket ID couvre le besoin sans surplus.

Installation de Pocket ID

  1. Préparer le VPS et le domaine

    Commandez un VPS avec Ubuntu 22.04 ou Debian 12 et au moins 512 Mo de RAM. Créez un enregistrement DNS de type A pointant auth.votre-domaine.com vers l'IP de votre VPS. Ce sous-domaine est l'URL publique de votre instance Pocket ID — elle doit être joignable avant la première configuration, car les redirections OIDC s'y appuient.

    Installez Docker et le plugin Compose :

    curl -fsSL https://get.docker.com | sh
  2. Créer le répertoire de travail

    Sur le serveur, créez un répertoire dédié et placez-y le fichier Compose :

    mkdir -p /opt/pocket-id && cd /opt/pocket-id
  3. Écrire le fichier docker-compose.yml

    Créez /opt/pocket-id/docker-compose.yml avec le contenu suivant :

    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.votre-domaine.com"
          TRUST_PROXY: "true"

    La variable APP_URL doit correspondre exactement à l'URL publique de votre instance, schéma HTTPS compris. TRUST_PROXY: "true" indique à Pocket ID de faire confiance aux en-têtes X-Forwarded-* transmis par le reverse proxy.

  4. Configurer le reverse proxy nginx

    Créez le vhost nginx pour auth.votre-domaine.com. Pocket ID écoute en HTTP sur le port 1411 ; le reverse proxy se charge de TLS.

    server {
        listen 443 ssl http2;
        server_name auth.votre-domaine.com;
    
        ssl_certificate     /etc/letsencrypt/live/auth.votre-domaine.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/auth.votre-domaine.com/privkey.pem;
    
        # Augmenter les buffers pour les en-têtes OIDC
        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;
        }
    }

    Procurez le certificat avec Certbot avant de recharger nginx :

    certbot certonly --nginx -d auth.votre-domaine.com
    nginx -t && systemctl reload nginx

    Note sur les buffers : Pocket ID produit des en-têtes de réponse plus grands que la valeur nginx par défaut. Sans les directives proxy_buffer_size et proxy_buffers, les pages peuvent répondre avec une erreur 502 silencieuse.

  5. Démarrer le conteneur

    Depuis /opt/pocket-id :

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

    La ligne de log Starting Pocket ID on :1411 confirme que le serveur est prêt. Accédez à https://auth.votre-domaine.com pour terminer la configuration initiale.

  6. Créer le compte administrateur et enregistrer un passkey

    À la première visite, Pocket ID propose de créer le compte administrateur. Renseignez votre e-mail, puis enregistrez immédiatement un passkey : cliquez sur Paramètres → Passkeys → Ajouter et suivez l'invite de votre navigateur (Touch ID, Windows Hello ou clé FIDO2). Une fois le passkey enregistré, c'est le seul facteur requis pour les connexions suivantes.

  7. Déclarer votre première application OIDC

    Dans l'interface d'administration, ouvrez OIDC Clients → Nouveau client. Renseignez :
    - Nom : l'identifiant lisible de l'application (ex. Gitea)
    - Callback URL : l'URL de redirection déclarée dans l'application cliente (ex. https://git.votre-domaine.com/user/oauth2/pocket-id/callback)

    Pocket ID v2.18.0 crée automatiquement un client_secret à la création — récupérez-le immédiatement, il ne sera plus affiché en clair par la suite.

    Notez le Client ID et l'URL de découverte https://auth.votre-domaine.com/.well-known/openid-configuration : ce sont les deux valeurs à saisir dans l'application cliente.

  8. Tester le flux depuis l'application cliente

    Dans Gitea, allez dans Administration → Sources d'authentification → Ajouter → OAuth2. Sélectionnez le fournisseur OpenID Connect, renseignez le Client ID, le Client Secret et l'URL de découverte. Déclenchez une connexion de test : le navigateur doit être redirigé vers auth.votre-domaine.com, vous proposer le passkey enregistré, puis vous renvoyer vers Gitea en étant connecté.

Configuration post-installation

Après la mise en service initiale, quelques réglages améliorent la robustesse de l'instance.

Durcissement de l'instance

Restreindre les inscriptions : par défaut, Pocket ID autorise tout visiteur à créer un compte. En production, désactivez l'inscription publique dans Paramètres → Général → Autoriser l'inscription et invitez les utilisateurs individuellement.

Sauvegarder le volume de données : toute la persistance (base SQLite, clés de signature OIDC) vit dans ./data. Un rsync quotidien vers un stockage externe suffit pour une petite instance. Si vous migrez vers PostgreSQL, ajoutez DB_PROVIDER=postgresql et DB_CONNECTION_STRING=... à votre fichier Compose.

Épingler la version de l'image : l'exemple ci-dessus utilise v2.18.0 explicitement. Ne laissez pas latest en production — une mise à jour automatique peut introduire une migration de schéma que votre backup n'a pas encore couverte.

Limiter l'exposition réseau : si Pocket ID ne doit être accessible que depuis le réseau interne du VPS (pour une stack Docker entièrement locale), remplacez ports: "1411:1411" par une liaison sur l'interface locale et faites communiquer nginx avec le conteneur via le réseau Docker interne.

Dépannage

Les erreurs les plus fréquentes lors de la mise en service de Pocket ID suivent des patrons bien identifiés.

Erreurs courantes et solutions

  • 502 Bad Gateway sur toutes les pages — cause la plus fréquente : les buffers nginx sont trop petits pour les en-têtes de réponse OIDC de Pocket ID. Ajoutez proxy_buffer_size 256k, proxy_buffers 4 512k et proxy_busy_buffers_size 512k dans votre bloc location / et rechargez nginx.
  • redirect_uri_mismatch lors du login — la Callback URL déclarée dans Pocket ID ne correspond pas exactement à celle envoyée par l'application cliente. Vérifiez la présence ou l'absence d'un slash final, le schéma http vs https et le port. La correspondance doit être exacte, caractère pour caractère.
  • invalid_client au moment de l'échange du code — le client_secret envoyé par l'application ne correspond pas. En v2.18.0, Pocket ID crée un secret automatiquement à la création du client ; si vous n'avez pas noté ce secret, régénérez-en un depuis la fiche client dans l'administration.
  • Passkey refusé : NotAllowedError — votre navigateur ne peut pas accéder aux API WebAuthn sans HTTPS. Vérifiez que APP_URL est bien en https://... et que le certificat TLS est valide (ni auto-signé, ni expiré) ; Certbot doit avoir émis un certificat pour le bon domaine.
  • Les sessions ne sont pas invalidées après révocation — le back-channel logout nécessite que l'application cliente déclare une Backchannel Logout URL dans sa fiche OIDC. Sans cette URL, Pocket ID ne peut pas notifier l'application ; les sessions existantes expireront à leur durée naturelle. Vérifiez que le champ est renseigné et joignable depuis le conteneur Pocket ID.

Pocket ID, Authentik, Keycloak, Authelia : que choisir

Faites défiler le tableau

CritèrePocket ID 2.18Authelia 4.39Authentik 2026.8Keycloak 26
Protocoles IdPOIDC/OAuth2OIDC/OAuth2 (beta)OIDC, SAML 2.0, LDAP, SCIMOIDC, SAML 2.0, LDAP, Kerberos
AuthentificationPasskeys uniquement (FIDO2)Mot de passe + MFA, passkeysMot de passe + MFA, passkeysMot de passe + MFA, OTP
RAM au repos< 50 Mo~30 Mo200–400 Mo1–2 Go
Base de donnéesSQLite embarqué (ou PostgreSQL)Fichier YAML (ou base externe)PostgreSQL requisPostgreSQL recommandé
Nombre de conteneurs113 (server, worker, PostgreSQL)2 (Keycloak + base)
Gestion des utilisateursAnnuaire intégré, invitation par e-mailFichier ou provider externeAnnuaire intégré, LDAP, proxy socialAnnuaire intégré, fédération LDAP/AD
Cas d'usage cibleStack légère, passkeys, IdP simpleCouche forward-auth devant un proxySSO complet, SAML, flows visuelsSSO d'entreprise, multi-tenant, conformité

Conclusion

Pocket ID v2.18.0 répond à un besoin précis : centraliser l'authentification d'une stack de services auto-hébergés sans payer le coût d'exploitation d'un Keycloak ou d'un Authentik. Un conteneur, SQLite, des passkeys, et moins de 50 Mo de RAM au repos. La v2.18.0 ajoute le back-channel logout pour invalider les sessions côté application dès qu'un compte est révoqué, et restaure la création automatique du client secret pour simplifier l'enregistrement des applications.

Si votre stack inclut des applications qui n'acceptent que SAML ou que vous avez besoin de fédérer un annuaire Active Directory, Authentik ou Keycloak sont plus adaptés. Pour tout le reste — des services web modernes compatibles OIDC sur un VPS de 1 ou 2 Go — Pocket ID est le choix qui vous laisse la RAM pour autre chose.

Consultez également nos guides sur Authentik et Keycloak pour choisir en connaissance de cause.

Déployez votre fournisseur OIDC sur VPS

Un VPS ServOrbit avec Docker 24+ suffit pour faire tourner Pocket ID en production. Un seul conteneur, une IPv4 dédiée, et vos applications sécurisées sans dépendance cloud.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet