
Ce guide vous permet de déployer authentik en 15 minutes avec Docker Compose et d’accéder à l’interface d’administration. Vous repartirez avec un environnement fonctionnel, une compréhension des composants et la capacité d’ajouter vos premières applications. Prérequis : Docker et Docker Compose installés.
Objectif du lab
Section intitulée « Objectif du lab »À la fin de ce guide, vous aurez :
- Un serveur authentik (interface web + API)
- Un worker authentik (tâches de fond : emails, synchronisations, etc.)
- Une base PostgreSQL pour le stockage des données
- Un accès à l’interface d’administration pour configurer les applications
- Un accès au portail utilisateur où les utilisateurs voient leurs applications
L’ensemble tourne en local sur votre machine. Aucun serveur distant n’est nécessaire.
Prérequis
Section intitulée « Prérequis »| Prérequis | Version minimale | Vérification |
|---|---|---|
| Docker | 20+ | docker --version |
| Docker Compose | v2+ | docker compose version |
| Navigateur web | Récent | — |
| RAM disponible | 2 Go | free -h |
| Espace disque | 2 Go | Pour les images Docker |
Architecture du lab
Section intitulée « Architecture du lab »Le lab déploie 3 conteneurs sur un réseau Docker interne :
Le serveur gère l’interface web, l’API et les flows d’authentification. Le worker exécute les tâches asynchrones : envoi d’emails, synchronisation LDAP, provisioning SCIM. Les deux partagent la même base PostgreSQL.
Préparer le projet
Section intitulée « Préparer le projet »-
Créez le répertoire du lab
Fenêtre de terminal mkdir -p ~/Projets/authentik-lab && cd ~/Projets/authentik-lab -
Générez la clé secrète
authentik a besoin d’une clé secrète (
AUTHENTIK_SECRET_KEY) pour signer les tokens et chiffrer les données sensibles. Cette clé doit rester stable entre les redémarrages — sinon, toutes les sessions sont invalidées.Fenêtre de terminal echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60 | tr -d '\n')" > .envVérifiez que la clé a été générée :
Fenêtre de terminal cat .envRésultat attendu (la valeur sera différente) :
AUTHENTIK_SECRET_KEY=aB3dEf7hIjKlMnOpQrStUvWxYz012345678+abc= -
Ajoutez le mot de passe PostgreSQL
Fenêtre de terminal echo "PG_PASS=$(openssl rand -base64 36 | tr -d '\n')" >> .env -
Créez le fichier Docker Compose
docker-compose.yaml services:postgresql:image: docker.io/library/postgres:16-alpinerestart: unless-stoppedhealthcheck:test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]start_period: 20sinterval: 30sretries: 5timeout: 5senv_file:- .envenvironment:POSTGRES_DB: ${PG_DB:-authentik}POSTGRES_PASSWORD: ${PG_PASS:?database password required}POSTGRES_USER: ${PG_USER:-authentik}volumes:- database:/var/lib/postgresql/dataserver:image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.2.1}restart: unless-stoppedcommand: serverenv_file:- .envenvironment:AUTHENTIK_POSTGRESQL__HOST: postgresqlAUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required}volumes:- ./data:/data- ./custom-templates:/templatesports:- "${COMPOSE_PORT_HTTP:-9000}:9000"- "${COMPOSE_PORT_HTTPS:-9443}:9443"shm_size: 512mbdepends_on:postgresql:condition: service_healthyworker:image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2026.2.1}restart: unless-stoppedcommand: workeruser: rootenv_file:- .envenvironment:AUTHENTIK_POSTGRESQL__HOST: postgresqlAUTHENTIK_POSTGRESQL__USER: ${PG_USER:-authentik}AUTHENTIK_POSTGRESQL__NAME: ${PG_DB:-authentik}AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY:?secret key required}volumes:- /var/run/docker.sock:/var/run/docker.sock- ./data:/data- ./certs:/certs- ./custom-templates:/templatesshm_size: 512mbdepends_on:postgresql:condition: service_healthyvolumes:database:driver: local
Comprendre la configuration
Section intitulée « Comprendre la configuration »Avant de démarrer, détaillons les éléments clés.
Les variables d’environnement
Section intitulée « Les variables d’environnement »| Variable | Rôle |
|---|---|
AUTHENTIK_SECRET_KEY | Clé de chiffrement et de signature (tokens, sessions) |
PG_PASS | Mot de passe de la base PostgreSQL |
AUTHENTIK_POSTGRESQL__HOST | Hôte PostgreSQL (nom du service Docker) |
AUTHENTIK_POSTGRESQL__USER | Utilisateur PostgreSQL |
AUTHENTIK_POSTGRESQL__NAME | Nom de la base de données |
AUTHENTIK_POSTGRESQL__PASSWORD | Mot de passe PostgreSQL |
authentik utilise le préfixe AUTHENTIK_ pour toutes ses variables. Les doubles
underscores (__) séparent les niveaux de configuration : AUTHENTIK_POSTGRESQL__HOST
correspond à postgresql.host dans la configuration interne.
Les volumes
Section intitulée « Les volumes »| Volume / Mount | Rôle |
|---|---|
database | Données PostgreSQL persistées entre redémarrages |
./data | Fichiers uploadés (logos, icônes d’applications, rapports CSV) |
./custom-templates | Templates personnalisés pour les pages de connexion |
./certs | Certificats TLS (worker uniquement, si vous en fournissez) |
Les ports
Section intitulée « Les ports »| Port | Protocole | Usage |
|---|---|---|
| 9000 | HTTP | Interface web et API |
| 9443 | HTTPS | Interface web et API (TLS auto-signé) |
En lab, le port 9000 (HTTP) suffit. En production derrière un reverse proxy (Traefik, Nginx), celui-ci gère la terminaison TLS.
Déployer l’environnement
Section intitulée « Déployer l’environnement »-
Téléchargez les images Docker
Fenêtre de terminal docker compose pullRésultat attendu :
✔ server Pulled✔ worker Pulled✔ postgresql Pulled -
Démarrez les services
Fenêtre de terminal docker compose up -dRésultat attendu :
✔ Network authentik-lab_default Created✔ Volume "authentik-lab_database" Created✔ Container authentik-lab-postgresql-1 Started✔ Container authentik-lab-server-1 Started✔ Container authentik-lab-worker-1 Started -
Vérifiez que tous les conteneurs tournent
Fenêtre de terminal docker compose psLes 3 conteneurs doivent avoir le statut
Up (healthy)pour PostgreSQL etUppour server et worker :NAME IMAGE STATUSauthentik-lab-postgresql-1 postgres:16-alpine Up (healthy)authentik-lab-server-1 ghcr.io/goauthentik/server:2026.2.1 Upauthentik-lab-worker-1 ghcr.io/goauthentik/server:2026.2.1 Up -
Vérifiez les logs du serveur
Fenêtre de terminal docker compose logs server | tail -20Vous devez voir les messages confirmant le bon démarrage :
server-1 | Starting authentik server 2026.2.1server-1 | Running migrations...server-1 | Migrations completedserver-1 | Starting gunicorn -
Vérifiez les logs du worker
Fenêtre de terminal docker compose logs worker | tail -10Résultat attendu :
worker-1 | Starting authentik worker 2026.2.1worker-1 | Worker started
Première connexion
Section intitulée « Première connexion »-
Ouvrez l’assistant de configuration initiale
Rendez-vous sur :
http://localhost:9000/if/flow/initial-setup/Ce flow n’est disponible qu’une seule fois. Si un compte administrateur existe déjà, cette URL redirige vers la page de connexion.
-
Créez le compte administrateur
Le flow vous demande :
- Email : votre adresse email (elle servira d’identifiant)
- Mot de passe : choisissez un mot de passe fort
Validez. authentik crée l’utilisateur
akadminavec les droits d’administrateur complets. -
Connectez-vous à l’interface d’administration
Après la création du compte, authentik vous redirige vers la page de connexion. Entrez l’email et le mot de passe que vous venez de définir.
Vous arrivez sur le dashboard d’administration qui affiche :
- Le nombre d’utilisateurs, d’applications et de providers
- Les événements récents (connexions, modifications)
- L’état de santé des composants
-
Accédez au portail utilisateur
Le portail utilisateur est accessible sur :
http://localhost:9000/if/user/C’est la page que vos utilisateurs verront. Pour le moment, elle est vide — aucune application n’est encore configurée. Le portail se remplira au fur et à mesure que vous ajouterez des applications.
Accéder au lab
Section intitulée « Accéder au lab »Si Docker tourne directement sur votre machine :
| Interface | URL |
|---|---|
| Setup initial | http://localhost:9000/if/flow/initial-setup/ |
| Administration | http://localhost:9000/if/admin/ |
| Portail utilisateur | http://localhost:9000/if/user/ |
| API | http://localhost:9000/api/v3/ |
Si vous travaillez en SSH Remote (Docker tourne sur un serveur distant) :
- Ouvrez le panneau Ports dans VS Code (onglet à côté du Terminal)
- Cliquez Forward a Port et entrez 9000
- VS Code crée un tunnel SSH :
localhost:9000sur votre machine locale → port 9000 du serveur distant
Ouvrez ensuite les URLs dans votre navigateur local :
| Interface | URL |
|---|---|
| Setup initial | http://localhost:9000/if/flow/initial-setup/ |
| Administration | http://localhost:9000/if/admin/ |
| Portail utilisateur | http://localhost:9000/if/user/ |
Vérifier que la plateforme fonctionne
Section intitulée « Vérifier que la plateforme fonctionne »Quelques vérifications pour confirmer que tout est opérationnel :
Santé des composants
Section intitulée « Santé des composants »Dans l’interface d’administration, cliquez sur System → Overview. Vous devez voir :
- Server : version 2026.2.1, statut OK
- Worker : connecté, dernière tâche exécutée récemment
- PostgreSQL : connecté
API accessible
Section intitulée « API accessible »curl -s http://localhost:9000/api/v3/root/config/ | head -20L’API retourne la configuration publique d’authentik (version, capabilities). Si vous obtenez une réponse JSON, le serveur fonctionne correctement.
Logs sans erreurs
Section intitulée « Logs sans erreurs »docker compose logs server --since 5m | grep -i errorEn fonctionnement normal, cette commande ne retourne rien. Si vous voyez des
erreurs CSRF ou connection refused, vérifiez que tous les conteneurs sont
démarrés.
Créer un premier utilisateur de test
Section intitulée « Créer un premier utilisateur de test »Pour valider le flux d’authentification complet, créez un utilisateur non administrateur :
-
Accédez à l’administration
Dans l’interface admin (
/if/admin/), allez dans Directory → Users → Create. -
Remplissez le formulaire
- Username :
testuser - Name :
Utilisateur Test - Email :
test@example.com - Is active : activé
Cliquez Create.
- Username :
-
Définissez un mot de passe
Sélectionnez l’utilisateur créé, cliquez sur la ligne, puis allez dans l’onglet Overview. Cliquez Set password et choisissez un mot de passe.
-
Testez la connexion
Ouvrez une fenêtre de navigation privée et allez sur
http://localhost:9000/if/user/. Connectez-vous avectestuseret le mot de passe. Vous arrivez sur le portail utilisateur (vide pour le moment).
Modifier la configuration
Section intitulée « Modifier la configuration »Changer le port d’écoute
Section intitulée « Changer le port d’écoute »Si le port 9000 est déjà utilisé sur votre machine, modifiez le mapping dans
docker-compose.yaml :
ports: - "8080:9000" - "8443:9443"Puis redémarrez :
docker compose down && docker compose up -dActiver l’envoi d’emails
Section intitulée « Activer l’envoi d’emails »Pour les flows de récupération de mot de passe et les invitations, authentik a
besoin d’un serveur SMTP. Ajoutez les variables dans .env :
AUTHENTIK_EMAIL__HOST=smtp.example.comAUTHENTIK_EMAIL__PORT=587AUTHENTIK_EMAIL__USERNAME=authentik@example.comAUTHENTIK_EMAIL__PASSWORD=votre-mot-de-passe-smtpAUTHENTIK_EMAIL__USE_TLS=trueAUTHENTIK_EMAIL__FROM=authentik@example.comPuis redémarrez les conteneurs pour appliquer :
docker compose down && docker compose up -dAjouter des variables de configuration
Section intitulée « Ajouter des variables de configuration »Toutes les options d’authentik sont configurables via des variables
d’environnement préfixées AUTHENTIK_. Les doubles underscores correspondent
aux niveaux de la configuration YAML :
| Variable d’environnement | Équivalent YAML |
|---|---|
AUTHENTIK_LOG_LEVEL | log_level |
AUTHENTIK_COOKIE_DOMAIN | cookie_domain |
AUTHENTIK_DISABLE_UPDATE_CHECK | disable_update_check |
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
| Erreur 500 au premier accès | Migrations en cours | Attendre 30-60s et rafraîchir |
connection refused sur :9000 | Serveur pas encore prêt | docker compose ps — vérifier les statuts |
postgresql: unhealthy | Mot de passe incorrect | Vérifier PG_PASS dans .env |
| Worker en restart loop | AUTHENTIK_SECRET_KEY manquante | Vérifier .env et docker-compose.yaml |
| Page de login sans compte | Setup initial non fait | Aller sur /if/flow/initial-setup/ |
CSRF verification failed | Requête depuis un domaine non reconnu | Ajouter AUTHENTIK_COOKIE_DOMAIN |
ERR_CONNECTION_REFUSED en SSH Remote | Port non forwardé | Forwarder le port 9000 dans VS Code |
Lire les logs en détail
Section intitulée « Lire les logs en détail »Pour diagnostiquer un problème, les logs sont votre premier réflexe :
# Logs du serveur (interface + API)docker compose logs server --since 10m
# Logs du worker (tâches de fond)docker compose logs worker --since 10m
# Tous les logs en temps réeldocker compose logs -fRéinitialiser complètement
Section intitulée « Réinitialiser complètement »Si l’environnement est dans un état incohérent et que vous voulez repartir de zéro :
docker compose down -vdocker compose up -dNettoyage
Section intitulée « Nettoyage »Pour arrêter et supprimer l’environnement de lab :
# Arrêter les conteneurs (données conservées)docker compose down
# Supprimer aussi les volumes (données perdues)docker compose down -vÀ retenir
Section intitulée « À retenir »- authentik se déploie en 3 conteneurs : serveur, worker et PostgreSQL
- La
AUTHENTIK_SECRET_KEYest la clé maître — elle doit être stable et secrète - Le setup initial (
/if/flow/initial-setup/) crée le compte admin — il n’est disponible qu’une seule fois - Le serveur et le worker utilisent la même image avec des commandes différentes
- Le port 9000 (HTTP) suffit en lab — en production, utilisez un reverse proxy avec TLS
- Les migrations s’exécutent automatiquement au premier démarrage — patience nécessaire
- Toute la configuration passe par des variables d’environnement préfixées
AUTHENTIK_