Sign inSign up

vibhuvioio/ldap-manager

By vibhuvioio

โ€ขUpdated 3 months ago

Modern web-based management UI for OpenLDAP, multi-cluster, secure password caching

Image
Integration & delivery
0

586

vibhuvioio/ldap-manager repository overview

โ LDAP Manager - ๐Ÿ“– Docsโ 

GitHub Stars License Docker Pulls Build

Modern web-based management interface for OpenLDAP servers with a React + TypeScript frontend and FastAPI Python backend.

LDAP Manager Directory Data
LDAP ManagerDirectory Data
Users Groups
UsersGroups

โ Features

  • Multi-cluster Management - Manage multiple LDAP servers from a single interface
  • Server-side Pagination & Search - Efficient handling of large directories (LDAP RFC 2696)
  • Secure Password Caching - Passwords are encrypted with Fernet symmetric encryption and expire automatically
  • Custom Schema Support - Automatically detects and displays custom objectClasses
  • Health Monitoring - Real-time cluster health status
  • Modern UI - React 18 + TypeScript + shadcn/ui components

โ Quick Start

โ System Requirements
ResourceMinimumRecommendedProduction (High Traffic)
CPU1 core2 cores4 cores
RAM512 MB1 GB2 GB
Disk500 MB1 GB2 GB
โ Docker Run (Fastest)
# Download the config template
wget https://raw.githubusercontent.com/VibhuviOiO/ldap-manager/main/config.example.yml -O config.yml

# Edit config with your LDAP details
nano config.yml

# Run the Docker Hub image
docker run -d \
  --name ldap-manager \
  -p 8000:8000 \
  -v $(pwd)/config.yml:/app/config.yml:ro \
  vibhuvioio/ldap-manager:latest

# Access the UI at http://localhost:8000
# Download the production compose file and config template
wget https://raw.githubusercontent.com/VibhuviOiO/ldap-manager/main/docker-compose.prod.yml
wget https://raw.githubusercontent.com/VibhuviOiO/ldap-manager/main/config.example.yml -O config.yml

# Edit config with your LDAP details
nano config.yml

# Start the application
docker compose -f docker-compose.prod.yml up -d

# Access the UI at http://localhost:8000

Registry note: The primary image is hosted on Docker Hub at vibhuvioio/ldap-manager. The same image is also available on GHCR at ghcr.io/vibhuvioio/ldap-manager if you prefer GitHub's registry.

โ Configuration

โ Basic Setup (config.yml)
clusters:
  - name: "Production LDAP"
    host: "ldap.example.com"
    port: 389
    bind_dn: "cn=Manager,dc=example,dc=com"
โ Multi-Master Cluster
clusters:
  - name: "LDAP Cluster"
    nodes:
      - host: "ldap1.company.com"
        port: 389
      - host: "ldap2.company.com"
        port: 389
    bind_dn: "cn=Manager,dc=company,dc=com"
โ Context Path (for integration)
# Production
CONTEXT_PATH=/ldap-manager docker compose -f docker-compose.prod.yml up -d

# Development
CONTEXT_PATH=/ldap-manager docker compose up

โ Documentation

โ Technology Stack

Frontend: React 18, TypeScript, Vite, shadcn/ui, Tailwind CSS
Backend: FastAPI, Python 3.11+, python-ldap, PyYAML

โ Development

# Backend
cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000

# Frontend
cd frontend
npm install
npm run dev

โ Testing

The project uses two automated test suites:

  • Backend: pytest unit and integration tests in backend/tests/
  • Frontend E2E: Playwright tests in frontend/tests/e2e/

Both suites run in GitHub Actions on every push. Run them locally:

# Backend tests
cd backend
pytest

# Frontend E2E tests
cd frontend
npm install
npx playwright install
npx playwright test

โ Security

  • Passwords cached with Fernet symmetric encryption (AES-128-CBC with HMAC)
  • Cache files stored in /app/.cache/ and encryption keys in /app/.secrets/ with 0600 permissions
  • Use read-only LDAP accounts when possible
  • Enable TLS/SSL for production (ldaps://)

โ Compatible LDAP Servers

โœ… Tested: OpenLDAP 2.4+, OpenLDAP 2.6+

๐Ÿ”„ Should work (RFC 4511 compliant): 389 Directory Server, ApacheDS, Active Directory

Requirements: LDAP v3 protocol, RFC 2696 (paged results) support recommended for large directories

โ Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

โ License

MIT License - See LICENSEโ  file

โ Support


Developed by Vibhuvi OiOโ 

Tag summary

Content type

Image

Digest

sha256:04ae5c7e3โ€ฆ

Size

141.7 MB

Last updated

3 months ago

docker pull vibhuvioio/ldap-manager