Installation via Docker
Beschreibung:
Ein ldap Server für Adressbücher mit carddav sync.
Installation:
Docker installieren
apt install docker.io docker-compose curl
Nun Projektverzeichnisse erstellen
ldap-carddav-stack/
├── docker-compose.yml
├── .env
├── ldap-carddav/
│ └── config.php # deine Konfiguration
├── Dockerfile # für ldap-carddav
mkdir -p /root/ldap-carddav-stack/ldap-carddav
Dockerfile erstellen zum image bauen
nano /root/ldap-carddav-stack/Dockerfile
Inhalt
FROM debian:bookworm
ENV DEBIAN_FRONTEND=noninteractive
# Abhängigkeiten installieren
RUN apt-get update && apt-get install -y \
apache2 \
php \
php-ldap \
php-xml \
php-mbstring \
git \
unzip \
curl \
composer \
&& apt-get clean
# ldap-carddav klonen
RUN git clone https://github.com/isubsoft/ldap-carddav.git /var/www/html/ldap-carddav
# Composer-Abhängigkeiten installieren
WORKDIR /var/www/html/ldap-carddav
RUN composer install
# Apache konfigurieren
RUN echo "<Directory /var/www/html/ldap-carddav>\n\
AllowOverride All\n\
Require all granted\n\
</Directory>" >> /etc/apache2/apache2.conf
RUN a2enmod rewrite
CMD ["apachectl", "-D", "FOREGROUND"]
EXPOSE 80
Die .env Datei
nano /root/ldap-carddav-stack/.env
Inhalt
LDAP_ORGANISATION=ExampleCorp
LDAP_DOMAIN=example
LDAP_TOP_DOMAIN=local
LDAP_ADMIN_PASSWORD=admin
Die compose Datei
nano /root/ldap-carddav-stack/docker-compose.yml
Inhalt
version: '3.8'
services:
ldap:
image: osixia/openldap:1.5.0
container_name: ldap
environment:
LDAP_ORGANISATION: ${LDAP_ORGANISATION}
LDAP_DOMAIN: ${LDAP_DOMAIN}.${LDAP_TOP_DOMAIN}
LDAP_ADMIN_PASSWORD: ${LDAP_ADMIN_PASSWORD}
volumes:
- ./ldap_data:/var/lib/ldap
- ./ldap_config:/etc/ldap/slapd.d
ports:
- "389:389"
phpldapadmin:
image: osixia/phpldapadmin:0.9.0
container_name: phpldapadmin
environment:
PHPLDAPADMIN_LDAP_HOSTS: ldap
ports:
- "6443:443"
carddav:
build:
context: .
dockerfile: Dockerfile
container_name: ldap-carddav
ports:
- "8080:80"
volumes:
- ./ldap-carddav/config.php:/var/www/html/ldap-carddav/conf/config.php:ro
depends_on:
- ldap
environment:
- LDAP_HOST=ldap
- LDAP_BASE_DN=dc=${LDAP_DOMAIN},dc=${LDAP_TOP_DOMAIN}
- LDAP_BIND_DN=cn=admin,dc=${LDAP_DOMAIN},dc=${LDAP_TOP_DOMAIN}
- LDAP_BIND_PASSWORD=${LDAP_ADMIN_PASSWORD}
PHP File
nano /root/ldap-carddav-stack/ldap-carddav/config.php
Inhalt
<?php
return [
'server' => [
'ldap' => [
'host' => getenv('LDAP_HOST') ?: 'ldap',
'port' => 389,
'base_dn' => getenv('LDAP_BASE_DN') ?: 'dc=example,dc=local',
'bind_dn' => getenv('LDAP_BIND_DN') ?: 'cn=admin,dc=example,dc=local',
'bind_pwd' => getenv('LDAP_BIND_PASSWORD') ?: 'admin',
'filter' => '(objectClass=inetOrgPerson)',
'scope' => 'sub',
],
],
'storage' => [
'backend' => 'ldap',
],
'logging' => [
'level' => 'debug',
],
];
Aufrufen
-
phpLDAPadmin:
https://localhost:6443 -
ldap-carddav WebDAV/CardDAV:
http://localhost:8080/ldap-carddav/