2025年9月9日火曜日

OpenLDAP + phpLDAPAdmin の compose.yaml

OpenLDAP + phpLDAPAdmin の compose.yaml

概要

前回 OpenLDAP + TLS の設定を compose.yaml で定義しました
今回は更に phpLdapAdmin を追加して UI からも確認できるようにします

環境

  • Ubuntu 24.04
  • docker 28.3.3
  • openldap 2.6.10
  • phpLDAPAdmin 0.9.0

compose.yaml

services:
  openldap:
    image: bitnami/openldap:latest
    container_name: openldap
    ports:
      - "636:636"
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - LDAP_ENABLE_TLS=yes
      - LDAP_TLS_CERT_FILE=/opt/bitnami/openldap/certs/fullchain.pem
      - LDAP_TLS_KEY_FILE=/opt/bitnami/openldap/certs/privkey.pem
      - LDAP_TLS_CA_FILE=/opt/bitnami/openldap/certs/fullchain.pem
      - LDAP_PORT_NUMBER=389
      - LDAP_LDAPS_PORT_NUMBER=636
    volumes:
      - /etc/letsencrypt/live/your-domain.com/:/opt/bitnami/openldap/certs
      - ./ldif/base.ldif:/ldifs/base.ldif
      - ./ldif/hawk.ldif:/ldifs/hawk.ldif
    restart: unless-stopped

  phpldapadmin:
    image: osixia/phpldapadmin:0.9.0
    container_name: ldap-admin
    ports:
      - "6443:443"
    environment:
      - PHPLDAPADMIN_LDAP_HOSTS=openldap
      - PHPLDAPADMIN_HTTPS=true
      - PHPLDAPADMIN_HTTPS_CRT_FILENAME=fullchain.pem
      - PHPLDAPADMIN_HTTPS_KEY_FILENAME=privkey.pem
    volumes:
      - ./certs:/container/service/phpldapadmin/assets/apache2/certs/
    restart: unless-stopped

ポイント

  • LDAP_LDAPS_PORT_NUMBER と LDAP_PORT_NUMBER を使ってポートをデフォルトのポートにしなければいけない
    • phpldapadmin がデフォルトポートの LDAP を参照するためです
  • PHPLDAPADMIN_LDAP_HOSTS は ldaps じゃないポートを参照する
    • phpLDAPAdmin からは ldaps ではない 389 ポートを参照すると簡単です
  • PHPLDAPADMIN_HTTPS は phpLDAPAdmin の UI 用の https 設定
    • 接続する LDAP の TLS の設定ではないので注意
    • UI を https 化するなら設定必須
  • openldap と phpldapadmin が使用する証明書が同じ場合には権限が変わるので注意しましょう
    • phpldapadmin が証明書を 600 の権限にコンテナ内で偏光子してしまう
    • そうすると openldap が証明書を読み込めなくなってしまうため TLS の設定がおかしくなり ldap にアクセスできなくなってしまう
    • なので openldap と phpldapadmin の使用する証明書が同じであってもホスト側では別のパスに保存しそれぞれでマウントして使うようにしましょう

最後に

UI へのログインは過去に紹介した通り ldapsearch で使用する dc 情報を使ってログインします

phpLDAPAdmin は 0.9.0 で更新が止まっているので代替できるツールが他にあるといいかなと思っています

参考サイト

0 件のコメント:

コメントを投稿