Direkt zum Hauptinhalt

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.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_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=example,${LDAP_DOMAIN},dc=local${LDAP_TOP_DOMAIN}
      - LDAP_BIND_DN=cn=admin,dc=example,${LDAP_DOMAIN},dc=local${LDAP_TOP_DOMAIN}
      - LDAP_BIND_PASSWORD=admin${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/