Déployer Authentik avec Docker sur Linux – Guide pas à pas

Dans ce tutoriel, je vais vous expliquer comment installer Authentik avec Docker afin de mettre en place un portail d’authentification unique (SSO) pour accéder à vos différentes applications.

Authentik va vous permettre de mettre en place une solution d’authentification simple centralisé que cela soit OpenID, SAML et même de LDAP, Authentik permet aussi de fédérer plusieurs IdP afin d’avoir un portail unique.

Présentation d’Authentik

Authentik est une solution open source d’authentification centralisée (SSO) et de gestion des identités (IAM) conçue pour les infrastructures modernes. Développé en Python avec une interface web intuitive, Authentik permet de centraliser la gestion des accès utilisateurs à diverses applications et services, qu’ils soient auto-hébergés ou cloud.

Son principal atout réside dans sa flexibilité : il supporte les standards modernes comme OAuth2, OpenID Connect, SAML, LDAP et TOTP, ce qui permet une intégration fluide avec la plupart des applications courantes. Authentik peut ainsi jouer le rôle d’un fournisseur d’identité (IdP) ou de proxy inverse sécurisé.

Authentik permet de définir des politiques d’accès granulaires basées sur des groupes, des rôles ou des conditions spécifiques. L’interface d’administration offre un haut niveau de contrôle sur les utilisateurs, les groupes, les flows d’authentification, les providers (OAuth/SAML), les applications protégées, etc.

Grâce à ses flows configurables, Authentik permet de personnaliser chaque étape de l’authentification : création de compte, connexion, validation d’un mot de passe ou MFA, etc. Cette approche modulaire facilite la mise en œuvre de scénarios complexes sans modifier le code source.

Côté sécurité, Authentik intègre nativement l’authentification à facteurs multiples (MFA), des journaux d’audit détaillés, une gestion fine des permissions, et une compatibilité avec les reverse proxy (comme Traefik ou Nginx) pour une mise en production en toute sécurité.

Authentik s’installe très facilement via Docker ou Docker Compose, ce qui le rend accessible même aux petites structures souhaitant garder la maîtrise de leurs données d’identification.

En résumé, Authentik est une alternative légère, moderne et open source à des solutions comme Keycloak, particulièrement adaptée aux environnements DevOps, aux laboratoires auto-hébergés et aux entreprises soucieuses de leur souveraineté numérique.

Prérequis pour déployer Authentik avec Docker

On va partir du principe que vous souhaitez faire un déploiement « propre » d’Authentik pour une mise en production, vous aurez donc besoin :

  • Un serveur linux avec Docker et Docker Compose d’installés
  • Un enregistrement DNS (auth.domain.tld / sso.domain.tld)
  • Un certificat SSL qui va pouvoir être utilisé avec l’enregistrement
  • Un reverse proxy
  • Un serveur SMTP pour l’envoie des e-mails

Déployer Authentik avec Docker et Docker compose

Pour ce déploiement, on va se baser sur la documentation officiel disponible ici : https://docs.goauthentik.io/docs/install-config/install/docker-compose

Sur votre serveur Linux avec Docker, commencer par créer un dossier, où l’on va stocker le fichier docker-compose.yml, le fichier .env et les différents volumes (redirection de dossier).

Pour ma part, je vais travailler dans le dossier : /containers/authentik/.

Pour commencer, télécharger le fichier docker-compose.yml mit à disposition par Authentik.

sudo wget https://goauthentik.io/docker-compose.yml

On va continuer pour le moment ensuivant la documentation pour créer le fichier .env et ajouter deux variables dedans.

echo "PG_PASS=$(openssl rand -base64 36 | tr -d '\n')" sudo  .env
echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60 | tr -d '\n')" sudo  .env

Pour le moment, nous avons les deux fichiers qui sont créés, maintenant nous allons ajouter des variables dans le fichier .env pour la configuration de Authentik.

On commence par ouvrir le fichier :

sudo nano .env

Pour commencer on va configurer le TAG de l’image :

AUTHENTIK_TAG=2025.6

Lors de mon déploiement, j’ai du faire cette modification, car le fichier docker-compose.yml me proposer une image qui n’etait pas encore disponible, donc impossible de déployer Authentik.

Vous trouverez la liste de TAGS disponible ici : https://github.com/goauthentik/authentik/pkgs/container/server

Pour continuer la configuration, on va maintenant ajouter les paramètres SMTP pour l’envoie des e-mails, ajouter les lignes ci-dessous et adapter à votre environnement :

# SMTP Host Emails are sent to
AUTHENTIK_EMAIL__HOST=smtp.domain.tld
AUTHENTIK_EMAIL__PORT=25
# Optionally authenticate (don't add quotation marks to your password)
#AUTHENTIK_EMAIL__USERNAME=
#AUTHENTIK_EMAIL__PASSWORD=
# Use StartTLS
#AUTHENTIK_EMAIL__USE_TLS=false
# Use SSL
#AUTHENTIK_EMAIL__USE_SSL=false
#AUTHENTIK_EMAIL__TIMEOUT=10
# Email address authentik will send from, should have a correct @domain
[email protected]

Ajuster les ports de publication de l’application :

COMPOSE_PORT_HTTP=80
COMPOSE_PORT_HTTPS=443

Pour finir cette configuration, nous allons passer les paramètres pour la création du compte par défaut : akadmin

AUTHENTIK_BOOTSTRAP_PASSWORD=changeme
AUTHENTIK_BOOTSTRAP_TOKEN=changeme
[email protected]

Là aussi adapter à votre environnement en modifiant l’adresse e-mail et en configurant un mot de passe et token robuste.

Le fichier .env est configuré, on va maintenant passer au fichier docker-compose.yml.

sudo nano docker-compose.yml

Pour chaque, services déclaré dans le fichier docker-compose.yml, modifier la déclaration des volumes en ajoutant ./ devant afin de redirigé le contenu dans un dossier local et supprime la déclaration des volumes qui se trouve à la fin du fichier

Pour le service postgresql : database:/var/lib/postgresql/data devient : ./database:/var/lib/postgresql/data

On est prêt, commencer par télécharger les images :

sudo docker compose pull
Pull image Authetik

Démarrer ensuite les conteneurs :

sudo docker compose up -d
Authentik start containers with docker compose

Afficher les logs pour s’assurer les conteneurs fonctionnent bien :

sudo docker compose logs -f

Avant de passer à la configuration, nous allons tester le bon fonctionnement d’Authentik, depuis un navigateur Internet en tant qu’adresse saisir l’adresse IP de votre serveur Docker en HTTPS sur le port défini dans le fichier .env. Passer l’erreur de certificat, vous devriez arriver sur le formulaire d’authentification, entrer l’adresse e-mail 1 du compte akadmin et cliquer sur le bouton Log in 2.

Authentik - login form

Saisir le mot de passe 1 défini dans le fichier .env et cliquer sur Continuer 2.

On est connecté à Authentik.

Configuration de Nginx en tant que reverse proxy

Avant de passer à la configuration d’Authentik, je vous donner al configuration du virtualhost pour Nginx pour utiliser le nom DNS que vous avez choisi.

Voici un exemple de fichier de configuration pour Nginx en utilisant un certificat SSL.

Adapter le fichier de configuration à votre environnement, en mettant l’adresse IP du serveur Authentik dans la partie upstream, modifier la variable server_name et le chemin des certificats SSL.

Dans le cas d’utilisation du certbot pour générer le certificat SSL, prendre l’exemple ci-dessus, supprimer le bloc server{ ... } configurer sur le port 80, dans le bloc 443, supprimer la partie SSL, changer le port en 443 en 80 et supprimer http2 on;

Premier pas avec Authentik

Pour continuer ce premier tutoriel sur Authentik, on va voir comment créer un utilisateur dans l’application puis configurer une premier application qui va utiliser l’IdP.

Pour accéder à la configuration de d’Authentik, une fois connectée avec le compte akadmin, cliquer sur Interface d’administration 1.

On arrive sur la partie Administration de l’IdP, où nous avons accès la configuration, logs et statistiques.

Créer un utilisateur dans Authentik

Il existe différentes solutions pour gérer les utilisateurs dans Authentik, on va commencer par la solution basique, qui va être de créer un nouvel utilisateur directement dans l’IdP.

Depuis l’administration, dérouler Directory 1 et cliquer sur Users 2.

Placer vous dans le dossier 1 où vous souhaitez créer l’utilisateur puis cliquer sur le bouton Créer 2.

Saisir le nom d’utilisateur 1 qui sera aussi l’identifiant, le nom 2, laisser Interne 3 pour le type d’utilisateur, entrer l’adresse e-mail 4 puis cliquer sur Créer 5.

L’utilisateur est créé, on va maintenant configurer le mot de passe du compte, cliquer dessus 1.

Sur la page de l’utilisateur, cliquer sur le bouton Définir le mot de passe 1.

Entrer le mot de passe 1 puis cliquer sur le bouton Mettre à jour le mot de passe 2.

Le mot de passe de l’utilisateur est défini.

Configurer un provider OpenID et une application

Pour finir ce premier tutoriel sur Authentik, on va voir comment ajouter un provider OpenID pour authentifier les utilisateurs dans une applications.

Pour vous montrez le fonctionnement, je ne vais pas utiliser une vrai application, mais un conteneur qui permet de tester un idp qui s’appel id-oidc-tester.

Voici le fichier docker-compose.yml :

name: openid-tester
services:
idp-oidc-tester:
container_name: oidc-tester
environment:
EXTERNAL_OWN_URL: "http://A.B.C.D:8080"
ports:
- 8080:80
image: registry.gitlab.com/guenoledc-perso/idp-oidc-tester:latest

Récupérer l’URL de callback de votre application dans un premier temps, sur Openid-Tester, elle disponible dans la partie configuration.

Depuis le menu, déplier Applications 1 puis cliquer Providers 2.

Sur la page des fournisseurs, cliquer sur Créer 1.

Pour commencer, vous devez choisir le type de provider (fournisseur) que vous souhaitez configurer, dans ce tutoriel nous allons créer un fournisseur OpenID, cliquer sur OAuth2/OpenID Provider 1 pour le sélectionner et cliquer sur le bouton Suivant 2.

On va passer la configuration du fournisseur, commencer le nommer 1, sélectionner ensuite le flux d’autorisation* 2, type de client choisir Confidentiel 3, dans un bloc note copier le champ ID Client 4 et Secret du client 5, indiquer ensuite l’URL de Callback 6 et cliquer sur Terminer 7 pour créer le fournisseur.

Le flux d’autorisation en fonction du type sélectionner va demander (Explicit) ou non (Implicit) le transfert des informations (Email, nom, prénom …) vers l’application sur laquelle il se connecte.

Dans un cadre d’application interne, utiliser implicit, dans le cas d’application externe (SaaS), laisser Explicit pour informer l’utilisateur que des informations personnelles sont transférés.

Le fournisseur est créé.

On va passer à la création de l’application, depuis le menu de navigation, cliquer sur Applications 1 puis sur la page qui liste celle-ci, cliquer sur Créer 2.

Entrer le nom de l’application 1 puis le slug 2, sélectionner le fournisseur 3 que l’on a créé et cliquer sur le bouton Créer 4.

L’application est créé, cliquer dessus 1 pour accéder aux informations et récupérer les URL nécessaire à la configuration de Openid Tester.

Sur la partie de droite, vous avez les différentes URL qui peuvent être nécessaire pour la configuration de l’application, pour Openid-Tester, je vais copier : URL de configuration OpenID.

Voici la configuration de openid-tester, je ne vais pas rentrer dans le détail car cela n’a pas d’intérêt.

Comme vous pouvez le voir, pour le scope, j’ai seulement configurer openid pour le moment

Pour tester l’authentification, cliquer sur le bouton Login.

On arrive sur la page d’authentification de Authentik, je vais entrer l’adresse email 1 de l’utilisateur qui a été créé et cliquer sur le bouton Log in 1.

Entrer le mot de passe 1 et cliquer sur Continuer 2.

Comme le fournisseur a été configuré en explicit, il faut valider les permissions en cliquant sur le bouton Continuer 1.

On est ensuite redirigé vers l’application, comme on peut le voir ci-dessous, avec les différentes informations retourner de l’IdP.

Comme on peut le voir, pour le moment aucunes informations sur l’utilisateur a été retourné, ce qui dans un vrai application ne sert pas à grande chose.

Je vais modifier le scope de l’application en ajoutant profile et email que l’application devrait avoir besoin.

Cette fois-ci, en me connectant, on peut voir que l’application demande l’accès aux informations de profile et l’adresse e-mail.

Dans l’application, on peut voir cette fois-ci que les informations de l’utilisateur sont passées à Openid-Tester.

Pour finir, ce tutoriel, si l’utilisateur se connecte directement à Authentik, sur sa page d’accueil, il peut voir les applications configurées.


Vous savez maintenant comment déployer Authentik avec Docker et configurer une application qui utilise OpenID.

Romain Drouche
Architecte Système | MCSE: Core Infrastructure
Expert en infrastructures IT avec plus de 15 ans d’expérience sur le terrain. Actuellement Chef de projet Systèmes et Réseaux et Référent SSI (Sécurité des Systèmes d’Information), je mets mon expertise au service de la fiabilité et de la sécurité des environnements technologiques.

Laisser un commentaire