Skip to content

Simple LDAP

Simple LDAP

Category: Identity & Security Type: Cluster Service Tags: ldap · openldap · directory-service Editable: Yes


Overview

Simple LDAP deploys a self-hosted OpenLDAP directory server alongside a phpLDAPadmin web management interface. It provides a straightforward LDAP directory service for storing user accounts, groups, and organizational data — suitable for integrating with Juno platform authentication or other internal services that require LDAP-based identity management. Both LDAP (TCP) and the phpLDAPadmin web UI are exposed via NodePort for external access.


How It Works

Cluster Service — Installed once per cluster by an administrator. Once active, the LDAP server and phpLDAPadmin web interface are accessible via the configured NodePorts to any system or user on your network.


Prerequisites

  • Available NodePort values in the range 30000–32767 (two ports required: one for LDAP and one for phpLDAPadmin)
  • All cluster nodes must be accessible on the configured NodePort values for external LDAP and admin UI access

Installation

  1. Open Terra and navigate to the Plugin Marketplace
  2. Search for "Simple LDAP"
  3. Click Install
  4. Fill in the configuration fields below
  5. Click Confirm to deploy

Configuration

Install-Time Fields

Field Details
domain string · Required · Default: example.org
LDAP domain name (e.g. yourcompany.com). Automatically converted to a base DN.
adminPassword string · Required
LDAP admin password
organization string · Required
Organization name displayed in the LDAP directory
ldapPort int · Required · Default: 389
Internal LDAP ClusterIP port (standard is 389)
ldapNodePort int · Required
External NodePort for LDAP access (must be in range 30000–32767)
adminNodePort int · Required
External NodePort for phpLDAPadmin web UI (must be in range 30000–32767)
openldapCpu string · Optional · Default: 500m
CPU request for the OpenLDAP container
openldapMemory string · Optional · Default: 256Mi
Memory request for the OpenLDAP container
openldapCpuLimit string · Optional
CPU limit for the OpenLDAP container (no limit if empty)
openldapMemoryLimit string · Optional
Memory limit for the OpenLDAP container (no limit if empty)
adminCpu string · Optional · Default: 200m
CPU request for the phpLDAPadmin container
adminMemory string · Optional · Default: 128Mi
Memory request for the phpLDAPadmin container
adminCpuLimit string · Optional
CPU limit for the phpLDAPadmin container (no limit if empty)
adminMemoryLimit string · Optional
Memory limit for the phpLDAPadmin container (no limit if empty)
openldapRepo string · Optional · Default: docker.io
Registry for the OpenLDAP image
openldapImage string · Optional · Default: osixia/openldap
OpenLDAP image name
openldapTag string · Optional · Default: latest
OpenLDAP image tag
adminRepo string · Optional · Default: docker.io
Registry for the phpLDAPadmin image
adminImage string · Optional · Default: osixia/phpldapadmin
phpLDAPadmin image name
adminTag string · Optional · Default: latest
phpLDAPadmin image tag
storageSize string · Optional · Default: 1Gi
Persistent volume size for LDAP directory data
storageClass string · Optional
StorageClass for the LDAP data PVC (uses cluster default if empty)

Notes

  • This plugin is editable — you can update resource limits, image tags, and storage settings after install via Terra
  • The admin password is stored in plain text in the Terra UI — there is no masked input type available; restrict access to Terra accordingly
  • The phpLDAPadmin web UI is accessible at http://<any-node-ip>:<adminNodePort> after deployment
  • LDAP connections are available at ldap://<any-node-ip>:<ldapNodePort> — consider using a Tailscale or Twingate VPN plugin to restrict access to trusted networks

plugins/simple-ldap/terra.yaml
resource_id: simple-ldap
name: Simple LDAP
icon: https://raw.githubusercontent.com/juno-fx/Terra-Official-Plugins/refs/heads/main/plugins/simple-ldap/scripts/assets/logo.png
description: Simple OpenLDAP server with phpLDAPadmin web management interface
category: Identity & Security
tags:
  - ldap
  - openldap
  - directory-service
  - cluster-level
editable: true
fields:
  - name: domain
    description: LDAP domain name. e.g. `example.org` or `hatfieldfx.com`. Automatically converted to base DN by the container.
    type: string
    required: true
    default: "example.org"
  - name: adminPassword
    description: LDAP admin password (visible in plain text in Terra UI — no masked input type available)
    type: string
    required: true
  - name: organization
    description: Organization name
    type: string
    required: true
  - name: ldapPort
    description: Internal LDAP port (ClusterIP). Standard is 389.
    type: int
    required: true
    default: 389
  - name: ldapNodePort
    description: External LDAP NodePort. Must be in range 30000-32767. Opened on ALL cluster nodes for external LDAP access.
    type: int
    required: true
  - name: adminNodePort
    description: External phpLDAPadmin web UI NodePort. Must be in range 30000-32767. Opened on ALL cluster nodes for browser access.
    type: int
    required: true
  - name: openldapCpu
    description: CPU request for OpenLDAP container (e.g. "500m", "1")
    type: string
    required: false
    default: "500m"
  - name: openldapMemory
    description: Memory request for OpenLDAP container (e.g. "256Mi", "1Gi")
    type: string
    required: false
    default: "256Mi"
  - name: openldapCpuLimit
    description: CPU limit for OpenLDAP container (leave empty for no limit)
    type: string
    required: false
  - name: openldapMemoryLimit
    description: Memory limit for OpenLDAP container (leave empty for no limit)
    type: string
    required: false
  - name: adminCpu
    description: CPU request for phpLDAPadmin container (e.g. "200m", "1")
    type: string
    required: false
    default: "200m"
  - name: adminMemory
    description: Memory request for phpLDAPadmin container (e.g. "128Mi", "512Mi")
    type: string
    required: false
    default: "128Mi"
  - name: adminCpuLimit
    description: CPU limit for phpLDAPadmin container (e.g. "500m", "2") (leave empty for no limit)
    type: string
    required: false
  - name: adminMemoryLimit
    description: Memory limit for phpLDAPadmin container (e.g. "256Mi", "1Gi") (leave empty for no limit)
    type: string
    required: false
  - name: openldapRepo
    description: Container registry for OpenLDAP image (e.g. "docker.io")
    type: string
    required: false
    default: "docker.io"
  - name: openldapImage
    description: OpenLDAP image name (e.g. "osixia/openldap")
    type: string
    required: false
    default: "osixia/openldap"
  - name: openldapTag
    description: OpenLDAP image tag (e.g. "latest")
    type: string
    required: false
    default: "latest"
  - name: adminRepo
    description: Container registry for phpLDAPadmin image (e.g. "docker.io")
    type: string
    required: false
    default: "docker.io"
  - name: adminImage
    description: phpLDAPadmin image name (e.g. "osixia/phpldapadmin")
    type: string
    required: false
    default: "osixia/phpldapadmin"
  - name: adminTag
    description: phpLDAPadmin image tag (e.g. "latest")
    type: string
    required: false
    default: "latest"
  - name: storageSize
    description: Persistent volume size for LDAP data (e.g. "1Gi", "10Gi")
    type: string
    required: false
    default: "1Gi"
  - name: storageClass
    description: StorageClass for LDAP data PVC (leave empty for cluster default)
    type: string
    required: false