diff --git a/.env b/.env new file mode 100644 index 0000000..35c2e6d --- /dev/null +++ b/.env @@ -0,0 +1,57 @@ +# +# LAM setup +# +# skip LAM preconfiguration (lam.conf + config.cfg), values: (true/false) +# If set to true the other variables below have no effect. +# LAM_SKIP_PRECONFIGURE=false +# LAM configuration master password and password for server profile "lam" +# Use LAM_PASSWORD_FILE to read the value from a file (e.g. for Docker swarm: docker service create --secret LAM_PASSWORD -e LAM_PASSWORD_FILE=/run/secrets/LAM_PASSWORD ...) +LAM_PASSWORD=lam +# domain of LDAP database root entry, will be converted to dc=...,dc=... +LDAP_DOMAIN=homelab.lan +# LDAP base DN to overwrite value generated by LDAP_DOMAIN +LDAP_BASE_DN=dc=homelab,dc=lan +# LDAP users DN to overwrite value provided by LDAP_BASE_DN +LDAP_USERS_DN=ou=Users,dc=homelab,dc=lan +# LDAP groups DN to overwrite value provided by LDAP_BASE_DN +LDAP_GROUPS_DN=ou=Groups,dc=homelab,dc=lan +# LDAP server URL +LDAP_SERVER=ldap://eagle.lan:389 +# LDAP admin user (set as login user for LAM) +# Use LDAP_USER_FILE to read the value from a file (e.g. for Docker swarm: docker service create --secret LDAP_USER -e LDAP_USER_FILE=/run/secrets/LDAP_USER ...) +LDAP_USER=cn=Manager,dc=homelab,dc=lan +# default language, e.g. en_US, de_DE, fr_FR, ... +LAM_LANG=en_US +# run cron jobs (LAM Pro) +LAM_CONFIGURE_CRON=true + +# configuration database (files or mysql) +LAM_CONFIGURATION_DATABASE=mysql +# MySQL server if database is mysql +LAM_CONFIGURATION_HOST=pg01.lan +# MySQL port if database is mysql +LAM_CONFIGURATION_PORT=3306 +# MySQL user name if database is mysql +LAM_CONFIGURATION_USER=lam +# MySQL password if database is mysql +# Use LAM_CONFIGURATION_PASSWORD_FILE to read the value from a file (e.g. for Docker swarm: docker service create --secret LAM_CONFIGURATION_PASSWORD -e LAM_CONFIGURATION_PASSWORD_FILE=/run/secrets/LAM_CONFIGURATION_PASSWORD ...) +LAM_CONFIGURATION_PASSWORD=lam +# MySQL database name if database is mysql +LAM_CONFIGURATION_DATABASE_NAME=lam + +# LAM Pro license (line breaks can be removed) +# Use LAM_LICENSE_FILE to read the value from a file (e.g. for Docker swarm: docker service create --secret LAM_LICENSE -e LAM_LICENSE_FILE=/run/secrets/LAM_LICENSE ...) +LAM_LICENSE= + +# deactivate TLS certificate checks, activate for development only +LAM_DISABLE_TLS_CHECK=false + +# +# docker-compose only, LDAP server setup +# +# LDAP organisation name for OpenLDAP +LDAP_ORGANISATION=Dirty Cache +# LDAP admin password +LDAP_ADMIN_PASSWORD=secret +# password for LDAP read-only user +LDAP_READONLY_USER_PASSWORD= diff --git a/compose.yaml b/compose.yaml index 1d52539..9631937 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,17 +1,65 @@ -# LDAP Account Manager services: - lam: - image: ghcr.io/ldapaccountmanager/lam:stable - container_name: lam-app-1 + ldap-account-manager: + container_name: lam + build: + context: . + image: ghcr.io/ldapaccountmanager/lam:9.6 restart: unless-stopped ports: - - "4001:80" - environment: - DEBIAN_FRONTEND: noninteractive + - "8080:80" volumes: - - lam_data:/var/lib/ldap-account-manager + - lamconfig:/var/lib/ldap-account-manager/config + - lammainconfig:/etc/ldap-account-manager + environment: + - LAM_SKIP_PRECONFIGURE=${LAM_SKIP_PRECONFIGURE:-true} + - LAM_PASSWORD=${LAM_PASSWORD} + - LAM_LANG=${LAM_LANG} + - LDAP_SERVER=${LDAP_SERVER} + - LDAP_DOMAIN=${LDAP_DOMAIN} + - LDAP_BASE_DN=${LDAP_BASE_DN} + - LDAP_USER=cn=admin,${LDAP_BASE_DN} + - LDAP_USERS_DN=${LDAP_USERS_DN} + - LDAP_GROUPS_DN=${LDAP_GROUPS_DN} + - DEBUG=true + # Custom + - LAM_CONFIGURATION_DATABASE=mysql + - LAM_CONFIGURATION_HOST=pg01.lan + - LAM_CONFIGURATION_PORT=3306 + - LAM_CONFIGURATION_USER=lam + - LAM_CONFIGURATION_PASSWORD=lam + - LAM_CONFIGURATION_DATABASE_NAME=lam + + hostname: ldap-account-manager + ldap: + image: osixia/openldap:latest + container_name: ldap + restart: unless-stopped + ports: + - "389:389" + - "636:636" + environment: + - LDAP_ORGANISATION=${LDAP_ORGANISATION} + - LDAP_DOMAIN=${LDAP_DOMAIN} + - LDAP_BASE_DN=${LDAP_BASE_DN} + - LDAP_ADMIN_PASSWORD=${LDAP_ADMIN_PASSWORD} + - LDAP_READONLY_USER=true + - LDAP_READONLY_USER_PASSWORD=${LDAP_READONLY_USER_PASSWORD} + - LDAP_TLS_CRT_FILENAME=ldap.crt + - LDAP_TLS_KEY_FILENAME=ldap.key + - LDAP_TLS_CA_CRT_FILENAME=ca.crt + - LDAP_TLS_VERIFY_CLIENT=never + + command: "--loglevel info --copy-service" + volumes: + - ldap:/var/lib/ldap + - slapd:/etc/ldap/slapd.d + - certs:/container/service/slapd/assets/certs + hostname: ldap volumes: - lam_data: - name: lam_lam + lamconfig: + lammainconfig: + ldap: + slapd: + certs: