Conteneurisation de OpenLDAP
  • Shell 74.2%
  • Dockerfile 16.5%
  • Smarty 9.3%
Find a file
Marie 194db938cb feat: expose a service accepting proxy protocol
This will allow external connexions to be logged with the correct source
IP address.

refers to collectivit/collectivit#74
2026-10-24 18:57:22 +02:00
config feat: refactor mail schema 2026-08-31 14:27:32 +02:00
scripts feat: expose a service accepting proxy protocol 2026-10-24 18:57:22 +02:00
.pre-commit-config.yaml chore: initialize repository 2026-07-05 22:48:01 +02:00
docker-compose.yaml fix: use rw-account for phpldapadmin in docker-compose 2026-07-23 13:04:58 +02:00
Dockerfile feat: expose a service accepting proxy protocol 2026-10-24 18:57:22 +02:00
LICENSE chore: initialize repository 2026-07-05 22:48:01 +02:00
README.md feat: expose a service accepting proxy protocol 2026-10-24 18:57:22 +02:00

docker-openldap

Aperçu

Ce container Docker exécute le serveur OpenLDAP (https://www.openldap.org/)[https://www.openldap.org/].

Les extensions et overlay suivants sont configurées dans le container :

  • argon2, pour hasher les mots de passe en utilisant l'algorithme Argon2.

  • memberOf, pour ajouter automatiquement un attribut "memberOf" contenant les groupes auxquels appartient un objet LDAP.

L'annuaire est initialisé avec l'objet racine dont le DN[^1] est configuré dans la variable d'environnement BASE_DN. Plusieurs objets sont automatiquement provisionnés (les DNs suivant valent pour une configuration BASE_DN=dc=example,dc=com) :

  • Des OUs[^2] :

    • ou=accounts,dc=example,dc=com, destinée à contenir les comptes de service.
    • ou=groups,dc=example,dc=com, destinée à contenir les groupes.
    • ou=people,dc=example,dc=com, destinée à contenir les comptes utilisateurices.
  • Un groupe cn=admins,ou=groups,dc=example,dc=com. Les droits en lecture / écriture sur tout l'annuaire sont accordés aux comptes de service ou utilisateurices qui sont membre de ce groupe.

  • Deux comptes de service sont créés :

    • uid=ldap-ro,ou=accounts,dc=example,dc=com, utilisable pour accéder à l'annuaire en lecture seule (utile pour les services de recherche ou d'authentification par exemple). Le mot de passe de ce compte doit être définit via la variable d'environnement RO_PASSWORD.

    • uid=ldap-rw,ou=accounts,dc=example,dc=com, utilisable pour accéder à l'annuaire en lecture / écriture. Le mot de passe de ce compte doit être définit via la variable d'environnement RW_PASSWORD.

  • Un utilisateur uid=admin,ou=people,dc=example,dc=com est créé si le groupe cn=admin,ou=groups,dc=example,dc=com est vide au lancement du container. Le mot de passe est password et devra être changé, ou le compte supprimé une fois un compte utilisateurice créé et ajouté au groupe cn=admin,ou=groups,dc=example,dc=com

[^1] Un DN (Distinguished Name) LDAP, est l'identifiant unique d'un objet LDAP. Il représente en quelque sort sont chemin d'accès dans l'annuaire, qui est hiérarchique.

[^2] Une OU (Organizational Unit) est un objet LDAP utilisé pour hiérarchiser le contenu d'un annuaire LDAP, une, sorte de répertoire.

Variables d'environnement

Les variables d'environnement suivantes doivent être définies :

Accès

  • BASE_DN (dc=example,dc=com par défaut): Le DN de base de l'annuaire.

  • RO_PASSWORD (requis): Le mot de passe du compte de service pour l'accès à l'annuaire en lecture seule.

  • RW_PASSWORD (requis): Le mot de passe du compte de service pour l'accès à l'annuaire en lecture / écriture.

Volumes

La base de données contenant l'annuaire est stockée dans le répertoire /var/lib/openldap/data. Ce répertoire doit être accessible en lecture / écriture à l'utilisateur LDAP du container (uid 100, gid: 101).

Ports

Le container expose le serveur LDAP sur deux ports :

  • 389 : accès LDAP classique.

  • 3890 : accès LDAP derrière un proxy (répartisseur de charge, passerelle...) qui envoie l'en-tête PROXY protocol v2 (slapd ne supporte pas la v1, au format texte). slapd y lit l'adresse réelle des clients, qui apparaît alors dans les journaux et peut être utilisée dans les ACLs (peername). Les connexions qui n'envoient pas cet en-tête sont refusées sur ce port.

Développement

Le fichier docker-compose permet de lancer OpenLDAP sur une machine locale. Une interface de gestion LDAP PHPLDAPAdmin est installée pour éditer l'annuaire. Pour démarrer OpeenLDAP sur votre machine, installez docker et docker compose, et lancez :

docker-compose up --build

Le serveur LDAP sera accessible à localhost:4940. L'interface PHPLDAPAdmin sera accessbile à localhost:9441.