LTB Self Service Password, Allowing Users to Change Their Passwords =================================================================== .. index:: OpenLDAP, Postfix, Nginx, dnsmasq single: LTB; Self Service Password *This Internet app uses dnsmasq, Nginx, OpenLDAP and Postfix.* `LTB Self Service Password`_ is a PHP application which allows users to change their passwords in the LDAP database. It is part of the `LTB`_ project (LDAP Tool Box Project), which aims at easing LDAP administration. Configure DNS ------------- Add an ``A`` record to point the domain you want to use with LTB Self Service Password to the IP address of the server. Start the LTB Self Service Password Container --------------------------------------------- First pull the LTB Self Service Password Docker image: :: docker pull blober/ltb-self-service-password Create a directory to store LTB Self Service Password configuration files: :: sudo mkdir $DOCKER_SHARE/ltb-self-service-password Generate the default configuration file: :: cd $DOCKER_SHARE/ltb-self-service-password sudo -s <<< "docker run --rm blober/ltb-self-service-password \ cat /var/www/ltb-self-service-password/conf/config.inc.php > config.inc.php" Run the following commands to modify the configuration file, after replacing ``dc=example,dc=com`` with the ``$LDAP_SUFFIX`` in :doc:`../install-essential-docker/openldap`, ``password@example.com`` with the notification email you want to use, and ``MY_LDAP_ROOT_PASSWORD`` with the root password of the OpenLDAP server: .. code-block:: bash :linenos: LDAP_SUFFIX='dc=example,dc=com' NOTIFICATION_FROM=password@example.com sudo ed config.inc.php << EOF %s/^\(\$ldap_url =\).*/\1 "ldap:\/\/ldap"; %s/^\(\$ldap_binddn =\).*/\1 "cn=root,$LDAP_SUFFIX"; %s/^\(\$ldap_bindpw =\).*/\1 "MY_LDAP_ROOT_PASSWORD"; %s/^\(\$ldap_base =\).*/\1 "ou=people,$LDAP_SUFFIX"; %s/^\(\$who_change_password =\).*/\1 "manager"; %s/^\(\$mail_from =\).*/\1 "$NOTIFICATION_FROM"; wq EOF Explanation: - **line 4**: the LDAP server URL will be named ``ldap``; - **line 5**: set the root DN; - **line 6**: set the root password of the OpenLDAP server; - **line 7**: set the search base; - **line 8**: let the root user change password not the user itself; - **line 9**: the "from" email address of the notification mails. Optionally we can further modify the configuration file ``config.inc.php`` to adjust settings: :: sudo $EDITOR config.inc.php Start the container: :: docker run --restart always -d --name ltb-self-service-password \ --dns $HOST_ADDR --add-host smtp-server:$HOST_ADDR -v \ $DOCKER_SHARE/ltb-self-service-password/config.inc.php:/etc/config.inc.php:ro \ blober/ltb-self-service-password The Dockerfile from which the image was generated is `available `_. Configure Nginx --------------- After replacing ``password.example.com`` with the domain to be used for accessing the password reset page, run the following command: :: echo --volumes-from ltb-self-service-password >> ~/util/nginx-volumes.txt cd $DOCKER_SHARE/nginx LTB_SSP_URL='password.example.com' sudo -s < ltb-self-service-password.conf sed -e "s/@server_name@/$LTB_SSP_URL/g" \ -e 's/@root@/ltb-self-service-password/g' \ -e 's/@fastcgi_server@/ltb-self-service-password:9000/g' \ fastcgi.tls.conf.tmpl > ltb-self-service-password.tls.conf EOF You can edit ``ltb-self-service-password.tls.conf`` to use your own tls/ssl key if you don't want to use the dummy key. Recreate and restart the Nginx container: :: ~/util/rerun-nginx.sh .. _LTB: http://ltb-project.org .. _LTB Self Service Password: http://ltb-project.org/wiki/documentation/self-service-password