Apache Guacamole LDAP Authentication

Configure Apache Guacamole to authenticate users against OpenLDAP for centralized remote access management.

Docker Compose

Download and start the stack:

wget https://raw.githubusercontent.com/VibhuviOiO/infinite-containers/main/openldap/docker-compose-guacamole.yml -O docker-compose.yml

Environment Configuration

Create .env.vibhuvioio:

LDAP_ORGANISATION=vibhuvioio
LDAP_DOMAIN=vibhuvioio.com
LDAP_ADMIN_PASSWORD=changeme

Start Services

docker compose up -d

Verify LDAP Directory

docker exec openldap-vibhuvioio ldapsearch -x -LLL -b dc=vibhuvioio,dc=com

Expected: ou=People and ou=Group

Create LDAP Groups

Create groups.ldif:

dn: cn=guac-users,ou=Group,dc=vibhuvioio,dc=com
objectClass: groupOfNames
cn: guac-users
member: cn=Manager,dc=vibhuvioio,dc=com

Import:

docker exec -i openldap-vibhuvioio ldapadd \
  -x -D "cn=Manager,dc=vibhuvioio,dc=com" -w changeme \
  -f /dev/stdin < groups.ldif

Create Test User

Create testuser.ldif:

dn: cn=testuser,ou=People,dc=vibhuvioio,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: testuser
userPassword: password
description: Guacamole Test User

Import:

docker exec -i openldap-vibhuvioio ldapadd \
  -x -D "cn=Manager,dc=vibhuvioio,dc=com" -w changeme \
  -f /dev/stdin < testuser.ldif

Verify LDAP Authentication

docker exec openldap-vibhuvioio ldapwhoami \
  -x \
  -D "cn=testuser,ou=People,dc=vibhuvioio,dc=com" \
  -w password

Expected: dn:cn=testuser,ou=People,dc=vibhuvioio,dc=com

Add User to Group

docker exec -i openldap-vibhuvioio ldapmodify \
  -x -D "cn=Manager,dc=vibhuvioio,dc=com" -w changeme <<EOF
dn: cn=guac-users,ou=Group,dc=vibhuvioio,dc=com
changetype: modify
add: member
member: cn=testuser,ou=People,dc=vibhuvioio,dc=com
EOF

Access Guacamole

Open http://localhost:8080/guacamole and login:

Username: testuser
Password: password
If login succeeds, LDAP integration is working.

Docker Compose Reference

The full stack includes:

ServiceImagePort
openldapghcr.io/vibhuvioio/openldap-docker/openldap:main389
ldap-managerghcr.io/vibhuvioio/ldap-manager:latest8000
guacdguacamole/guacd:1.5.5
guacamoleguacamole/guacamole:1.5.58080

Guacamole LDAP Configuration

Key environment variables for the guacamole service:

VariableValue
GUACD_HOSTNAMEguacd
LDAP_HOSTNAMEopenldap-vibhuvioio
LDAP_PORT389
LDAP_USER_BASE_DNou=People,dc=vibhuvioio,dc=com
LDAP_GROUP_BASE_DNou=Group,dc=vibhuvioio,dc=com
LDAP_USERNAME_ATTRIBUTEcn
LDAP_SEARCH_BIND_DNcn=Manager,dc=vibhuvioio,dc=com
LDAP_SEARCH_BIND_PASSWORDchangeme
LDAP_CONFIG_BASE_DNdc=vibhuvioio,dc=com