• Stars
    star
    39
  • Rank 693,563 (Top 14 %)
  • Language
    Dockerfile
  • License
    MIT License
  • Created about 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Dockerized Authentication Server with Single Sign On SAML, OpenID Connect, CAS, and Header support

github.com/tiredofit/docker-lemonldap

GitHub release Build Status Docker Stars Docker Pulls Become a sponsor Paypal Donate


About

This will build a Docker Image LemonLDAP::NG an elegant web based manager for Authentication (SAML, OpenID Connect, CAS) served by Nginx.

  • Sane defaults to have a working solution by just running the image
  • Automatically generates configuration files on startup, or option to use your own
  • Option to just use image as a Handler for external servers
  • Handler Option to use file base socket or listen on TCP
  • Fail2ban Included for blocking brute force attacks.
  • Ready to work out the box for SAML, OpenID, 2FA/2OTP
  • Additional modules compiled for Redis, Mysql, Postgres, LDAP Session/Config Storage
  • Choice of Logging (Console, File, Syslog)

This is an incredibly complex piece of software and this image tries to get you up and running with sane defaults, you will need to switch eventually over to manually configuring the configuration file when depending on your usage case

Maintainer

Table of Contents

Prerequisites and Assumptions

  • Assumes you are using some sort of SSL terminating reverse proxy such as:
  • You must have access to create records on your DNS server to be able to setup the demo installation before configuration.

Installation

Build from Source

Clone this repository and build the image with docker build -t (imagename) .

Prebuilt Images

Builds of the image are available on Docker Hub

docker pull docker.io/tiredofit/lemonldap:(imagetag)

Builds of the image are also available on the Github Container Registry

docker pull ghcr.io/tiredofit/docker-lemonldap:(imagetag)

The following image tags are available along with their tagged release based on what's written in the Changelog:

Version Container OS Tag
latest Alpine :latest
2.0.x Alpine 2.0-latest

Configuration

Quick Start

  • The quickest way to get started is using docker-compose. See the examples folder for a working compose.yml that can be modified for development or production use.
  • If you'd like to just use it in Handler mode, you will find another sample handler-compose.yml file that should get you started.
  • Add records for your main, and manager names into DNS (ie handler.sso.example.com. api.manager.sso.example.com, manager.sso.example.com, sso.example.com, test.sso.example.com)
  • Set various environment variables to understand the capabilities of this image. A Sample docker-compose.yml is provided that will work right out of the box for most people without any fancy optimizations.
  • Map persistent storage for access to configuration and data files for backup.
  • Once run, visit the Manager URL and login as dwho/dwho

Persistent Storage

The following directories should be mapped for persistent storage in order to utilize the container effectively.

Folder Description
/etc/lemonldap-ng/ (Optional) - LemonLDAP core configuration files. Auto Generates on Container startup
/var/lib/lemonldap-ng/conf Actual Configuration of LemonLDAP (lmConf-X.js files)
/var/lib/lemonldap-ng/sessions (Optional) - Storage of Sessions of users
/var/lib/lemonldap-ng/psessions (Optional) - Storage of Sessions of users
/assets/custom Ability to overwrite themes/inject into image upon bootup for theming /etc.
/www/logs Log files for individual services

Environment Variables

Base Images used

This image relies on an Alpine Linux base image that relies on an init system for added capabilities. Outgoing SMTP capabilities are handlded via msmtp. Individual container performance monitoring is performed by zabbix-agent. Additional tools include: bash,curl,less,logrotate, nano.

Be sure to view the following repositories to understand all the customizable options:

Image Description
OS Base Customized Image based on Alpine Linux
Nginx Nginx webserver

There are a huge amount of configuration variables and it is recommended that you get comfortable for a few hours with the LemonLDAP::NG Documentation

You will eventually based on your usage case switch over to SETUP_TYPE=MANUAL and edit your own lemonldap-ng.ini. While I've tried to make this as easy to use as possible, once in production you'll find much better success with large implementations with this approach.

By Default this image is ready to run out of the box, without having to alter any of the settings with the exception of the _HOSTNAME vars. You can also change the majority of these settings from within the Manager. There are instances where these variables would want to be set if you are running multiple handlers or need to enforce a Global Setting for one specific installation.

Parameter Description Default
SETUP_TYPE AUTO to auto generate lemonldap-ng.ini on bootup, otherwise let admin control configuration. AUTO
MODE Type of Install - HANDLER for handler duties only, MASTER for Portal, Manager, Handler MASTER
Or any combo of API, HANDLER, MANAGER, PORTAL, TEST
CONFIG_TYPE Configuration type (FILE, REST) - FILE
DOMAIN_NAME Your domain name e.g. example.org
API_HOSTNAME FQDN for Manager API e.g. api.manager.sso.example.org
MANAGER_HOSTNAME FQDN for Manager e.g. manager.sso.example.org
PORTAL_HOSTNAME FQDN for public portal/main URL e.g. sso.example.org
HANDLER_HOSTNAME FQDN for Configuration reload URL e.g. handler.sso.example.org
TEST_HOSTNAME FQDN for test URL to prove that LemonLDAP works e.g. test.sso.example.org
LOG_FILE LL:NG main log file lemonldap.log
LOG_FILE_USER LL:NG User log file lemonldap-user.log
LOG_PATH Log Path /www/logs/lemonldap
LOG_TYPE How to Log - Options CONSOLE or FILE CONSOLE
LOG_LEVEL LogLevel - Options warn, notice, info, error, debug info
USER_LOG_TYPE How to Log User actions - Options CONSOLE, FILE, SYSLOG CONSOLE

REST Settings

Depending if REST was chosen for CONFIG_TYPE, these variables would be used.

Parameter Description Default _FILE
REST_HOST Hostname of Master REST Server e.g. https://sso.example.com/index.psgi/config/ x
REST_USER Username to fetch Configuration Information x
REST_PASS Password to fetch Configuration Information x

Portal Settings

Parameter Description Default _FILE
PORTAL_CACHE_TYPE Only Cache Type available for now - FILE
PORTAL_TEMPLATE_DIR /usr/share/lemonldap-ng/portal/templates
PORTAL_LOG_TYPE Override Portal Log - Options CONSOLE or FILE CONSOLE
PORTAL_LOG_LEVEL Override Portal LogLevel - Options warn, notice, info, error, debug info
PORTAL_USER_LOG_TYPE Override Portal Log User actions - Options CONSOLE or FILE CONSOLE
PORTAL_ENABLE_REST Allow REST access to the Portal - FALSE
PORTAL_REST_ALLOWED_IPS If above options enabled, provide comma seperated list of IP/Network to allow access 0.0.0.0/0
PORTAL_REST_AUTH_FILE Populate this file manually or with environment variables for REST authentication (htpasswd format) /etc/lemonldap-ng/portal-rest.htpasswd
PORTAL_REST_USER01 Username for REST Authentication x
PORTAL_REST_PASS01 Password for REST Authentication x
PORTAL_REST_USER02 Username for REST Authentication x
PORTAL_REST_PASS02 Password for REST Authentication x
PORTAL_REST_USER... Username for REST Authentication x
PORTAL_REST_PASS... Password for REST Authentication x
PORTAL_ENABLE_STATUS Configure nginx to serve status page FALSE
PORTAL_STATUS_ALLOWED_IPS If above options enabled, provide comma seperated list of IP/Network to allow access 0.0.0.0/0
ENABLE_IMPERSONATION If you wish to allow impersonation using a seperate theme set to TRUE FALSE
IMPERSONATE_HOSTNAME Hostname to use to load the custom impersonation theme
IMPERSONATE_THEME Theme to use to load the impersonation theme
  • With impersonation, if you enable it, it will add a new field to your login screen, which may not be what you want if this is a production system. You will need to create two custom themes (one as a replica of bootstrap, and one for impersonation). In the custom theme, make modifications to login.tpl to stop it from loading impersonation.tpl, yet in your impersonation theme, leave it in there. Then, when one of your admin/support team visits the custom IMPERSONATE_HOSTNAME you have defined it will load the full theme with allows to impersonate, where as the default theme will not show this.

Handler Settings

Parameter Description Default
CACHE_TYPE Session Cache type (FILE only available for now) - FILE
CACHE_TYPE_FILE_NAMESPACE lemonldap-ng-config
CACHE_TYPE_FILE_EXPIRY 600
CACHE_TYPE_FILE_DIR_MASK 007
CACHE_TYPE_FILE_PATH /tmp
CACHE_TYPE_FILE_DEPTH 0
HANDLER_ALLOWED_IPS If you need to access access to /reload other than localhost add a comma seperated list or hosts or networks here e.g. 172.16.0.0/12,192.168.0.253
HANDLER_CACHE_TYPE FILE
HANDLER_CACHE_TYPE_FILE_NAMESPACE lemonldap-ng-sessions
HANDLER_CACHE_TYPE_FILE_EXPIRY 600
HANDLER_CACHE_TYPE_FILE_DIR_MASK 007
HANDLER_CACHE_TYPE_FILE_PATH /tmp
HANDLER_CACHE_TYPE_FILE_DEPTH 3
HANDLER_SOCKET_TCP_ENABLE Enable TCP Connections to socket instead of /var/run/llng-fastcgi-server/llng-fastcgi.sock - TRUE
HANDLER_SOCKET_TCP_PORT Port to listen on for Handler 2884
HANDLER_STATUS Allow Status on Handler TRUE
HANDLER_REDIRECT_ON_ERROR TRUE
HANDLER_LOG_TYPE Override Handler Log - Options CONSOLE, FILE, SYSLOG CONSOLE
HANDLER_LOG_LEVEL Override Handler LogLevel - Options warn, notice, info, error, debug info
HANDLER_PROCESSES Amount of LLNG Handler processes to spawn 7
HANDLER_USER_LOG_TYPE Override Handler Log User actions - Options CONSOLE or FILE CONSOLE

Manager Options

Parameter Description Default
MANAGER_PROTECTION manager
MANAGER_LOG_LEVEL warn
MANAGER_STATIC_PREFIX /static
MANAGER_TEMPLATE_DIR /usr/share/lemonldap-ng/manager/templates
MANAGER_LANGUAGE en
MANAGER_ENABLE_API Enable Manager API - FALSE
MANAGER_ALLOWED_IPS If you need to access access to API other than localhost add a comma seperated list or hosts or networks here e.g. 172.16.0.0/12,192.168.0.253
MANAGER_ENABLED_MODULES "conf, sessions, notifications, 2ndFA"
MANAGER_LOG_TYPE Override Manager Log - Options CONSOLE or FILE CONSOLE
MANAGER_LOG_LEVEL Override Manager LogLevel - Options warn, notice, info, error, debug info
MANAGER_USER_LOG_TYPE Override Manager Log User actions - Options CONSOLE or FILE CONSOLE

Networking

The following ports are exposed.

Port Description
80 HTTP
2884 LLNG Handler

Maintenance

Shell Access

For debugging and maintenance purposes you may want access the containers shell.

bash docker exec -it (whatever your container name is) bash

Support

These images were built to serve a specific need in a production environment and gradually have had more functionality added based on requests from the community.

Usage

  • The Discussions board is a great place for working with the community on tips and tricks of using this image.
  • Sponsor me for personalized support

Bugfixes

  • Please, submit a Bug Report if something isn't working as expected. I'll do my best to issue a fix in short order.

Feature Requests

  • Feel free to submit a feature request, however there is no guarantee that it will be added, or at what timeline.
  • Sponsor me regarding development of features.

Updates

  • Best effort to track upstream changes, More priority if I am actively using the image in a production environment.
  • Sponsor me for up to date releases.

License

MIT. See LICENSE for more details.

References

More Repositories

1

docker-freepbx

Dockerized FreePBX 15 w/Asterisk 17, Seperate MySQL Database support, and Data Persistence and UCP
496
star
2

docker-db-backup

Backup multiple database types on a scheduled basis with many customizable options
Dockerfile
472
star
3

docker-traefik-cloudflare-companion

Automatically Create CNAME records for containers served by Traefik
Python
274
star
4

docker-freescout

Dockerized Freescout Helpdesk
Dockerfile
146
star
5

docker-self-service-password

Dockerized LDAP Tollbox Self Service Password Changer with many customizable options
Dockerfile
115
star
6

docker-nginx-php-fpm

Dockerized Nginx + PHP FPM images with many customizable options
Dockerfile
106
star
7

docker-openldap

Dockerized OpenLDAP server with many customizable options
99
star
8

docker-jitsi-meet

Docker Jitsi Meet WebRTC conferencing system w/Prosody XMPP and s6 overlay
Dockerfile
64
star
9

docker-collabora-online

Dockerized Collabora Office Online with customizable options
Dockerfile
62
star
10

docker-osticket

Dockerized Help Desk Software
PHP
48
star
11

docker-tinc

Docker Tinc VPN Mesh server w/S6 Overlay Init, Zabbix Monitoring, and distributed configuration updating based on Alpine
Dockerfile
43
star
12

docker-postal

Dockerized Postal SMTP Server based on Alpine Linux and Ruby
Dockerfile
40
star
13

docker-fusiondirectory

Dockerized FusionDirectory LDAP Manager
Dockerfile
39
star
14

docker-openldap-fusiondirectory

Dockerized OpenLDAP server with FusionDirectory Schema Support
34
star
15

docker-wordpress

Dockerized Wordpress Image with customizable options
Python
31
star
16

docker-alpine

Docker Alpine Linux Base Images
Dockerfile
30
star
17

docker-traefik

Dockerized Traefik Reverse Proxy with customizable options
Dockerfile
29
star
18

docker-mongodb-backup

Docker MongoDB Backup Container based on Alpine w/S6 init, Zabbix Monitoring
Dockerfile
28
star
19

docker-nginx-proxy-cloudflare-companion

Automatically update CNAME records when Docker container starts via Cloudflare
Python
27
star
20

docker-spamassassin

Docker Spamassassin Spam filtering based on Alpine Linux
Dockerfile
26
star
21

docker-clamav

Docker ClamAV Image with Zabbix Monitoring and Customizable Configuration
Dockerfile
23
star
22

docker-baserow

Dockerized Baserow No/Low code data management application based on Alpine
Dockerfile
22
star
23

docker-nginx

Dockerzed webserver with many customizable options
Dockerfile
22
star
24

docker-nextcloud

Dockerized Nextcloud Server with many customizable options
17
star
25

docker-gitlab-ee

Dockerized Gitlab Enterprise Edition
Dockerfile
17
star
26

docker-debian

Docker Debian Base Images
Dockerfile
15
star
27

docker-discourse

Dockerized Discourse Forum
Dockerfile
15
star
28

docker-backuppc

Docker BackupPC with Zabbix monitoring support
Perl
15
star
29

docker-gcds

Docker Google Cloud Directory Sync service (GADS) w/S6 Overlay, Zabbix Monitoring
Dockerfile
14
star
30

docker-mariadb-backup

Docker MariaDB Backup Container w/ S6 Overlay, Zabbix Monitoring based on Alpine
Dockerfile
13
star
31

docker-zabbix

Dockerized Zabbix Server, Proxy, and Frontend
Dockerfile
13
star
32

docker-insync

Docker Insync Headless Client
Dockerfile
12
star
33

docker-rspamd

Dockerized Anti Spam Filter
Python
12
star
34

docker-nginx-ldap

Docker Nginx Image w/LDAP Authentication, Zabbix agent monitoring, S6 init, logrotate based on Alpine
Dockerfile
11
star
35

docker-bookstack

Dockerized Information Manager
Dockerfile
11
star
36

docker-mariadb

Docker MariaDB server w/ S6 Overlay, Zabbix Monitoring based on Alpine
11
star
37

docker-gitlab

Dockerized Gitlab CE w/Alpine Linux, Zabbix Monitoring and S6 Overlay
Dockerfile
10
star
38

docker-staytus

Docker Staytus Image w/s6 overlay, zabbix monitoring based on Alpine
HTML
10
star
39

docker-leantime

Dockerized Project Managment tool with many configurable options
Dockerfile
10
star
40

docker-otrs

Dockerized OTRS ITSM Helpdesk/Ticketing System based on Alpine w/Nginx
Dockerfile
9
star
41

docker-unbound

Docker Unbound DNS Resolver based on Alpine
Dockerfile
9
star
42

docker-postgres

Dockerized Postgresql Server with multiple databases/users, replication, and monitoring support
Dockerfile
9
star
43

docker-postfix

Dockerized MTA with many customizable features, LDAP, SASL, Milter, Relay Support
Dockerfile
8
star
44

docker-matomo

Dockerized Matomo (Piwik) Analytics
Dockerfile
8
star
45

docker-yourls

Dockerized YOURLS link shortener based on Alpine
Dockerfile
8
star
46

docker-invoiceninja

Dockerized Invoicing web application
Dockerfile
7
star
47

docker-nodejs

Docker NodeJS Base Images
7
star
48

docker-postfix-relay

Dockerized Postfix Relay for easy SMTP capabilities
Shell
7
star
49

docker-openvpn

Dockerized OpenVPN server w/Alpine+Debian Variants w/s6 overlay, and LDAP Authentication support
7
star
50

docker-rocketchat

Docker Rocketchat Server with S6 Initsystem and Zabbix Monitoring based on Alpine
6
star
51

docker-kopano

Dockerized Kopano Groupware server
Dockerfile
6
star
52

docker-n8n

Dockerized n8n workflow automation tool
Dockerfile
6
star
53

docker-listmonk

Dockerized Listmonk Mailing List server built iwth Alpine w/Zabbix Monitoring
Dockerfile
6
star
54

docker-cpuminer

Cryptocurrency Miner based on Alpine
6
star
55

docker-kopano-core

Dockerized Kopano Groupware Server
6
star
56

docker-grafana

Dockerfile
5
star
57

docker-moodle

Dockerized Moodle Learning Management System
Dockerfile
5
star
58

docker-loki

Dockerized Loki Log Analyzer
Dockerfile
5
star
59

docker-teampass

Dockerized Password Vault for Teams based on Alpine w/nginx,php-fpm
Dockerfile
5
star
60

docker-orbeon

Docker Orbeon Forms CE w/S6 Init, Tomcat, based on Alpine
Dockerfile
5
star
61

docker-redis

Docker Redis Server with S6 Initsystem and Zabbix Monitoring based on Alpine
5
star
62

docker-elasticsearch

Dockerized Elasticsearch based on Alpine linux
4
star
63

fusiondirectory-plugin-kopano

Plugin to manage users/groups for Kopano (fork of Zarafa) within Fusion Directory LDAP Manager
PHP
4
star
64

docker-novnc

Run GUI applications within a browser - Base image
Dockerfile
4
star
65

docker-flarum

Dockerized Flarum Web Forum Software based on Alpine
Shell
4
star
66

docker-registry

Dockerized Docker Registry
Dockerfile
4
star
67

docker-rabbitmq

Dockerized RabbitMQ server
Python
4
star
68

docker-gitlab-runner

Docker Gitlab runner w/ Zabbix monitoring support based on Alpine
4
star
69

docker-openeats

Dockerized Openeats Recipe manager based on Alpine Linux w/Zabbix Monitoring
Dockerfile
3
star
70

docker-restic

Dockerized Backup application
Dockerfile
3
star
71

docker-dovecot

Docker Dovecot IMAP server based on Alpine w/LDAP Support
TSQL
3
star
72

docker-uptimekuma

Dockerized Service availability monitoring system
Dockerfile
3
star
73

docker-draw-io

Docker Draw.IO image based on Alpine and Nginx
3
star
74

docker-logrotate

Docker Logrotate to keep logfiles compressed and rotated based on Alpine
Shell
3
star
75

docker-mailhog

Dockerized SMTP Test server
Dockerfile
3
star
76

docker-cachet

Dockerized Cachet Status monitoring application based on Alpine Linux
Dockerfile
3
star
77

docker-sentry

Dockerized Sentry.IO Exception tracking system based on Debian w/LDAP and SAML
Python
3
star
78

docker-airsonic-advanced

Dockerized Airsonic Advanced Server based on Alpine
Dockerfile
3
star
79

docker-limesurvey

Dockerized Limesurvey application based on Alpine
Dockerfile
3
star
80

docker-mongo

Docker MongoDB server w/ S6 Overlay, Zabbix Monitoring based on Alpine
3
star
81

docker-haraka

Docker Haraka MTA based on Alpine
JavaScript
3
star
82

docker-ruby

Docker Ruby base images w/ S6 Overlay and Zabbix monitoring support
3
star
83

docker-ubuntu

Dockerized Ubuntu Base Images
Dockerfile
2
star
84

docker-memcached

Docker Memcached Server w/ S6 Initsystem and Zabbix Monitoring based on Alpine
Dockerfile
2
star
85

home

Home-Manager configuration ala Nix flakes
Nix
2
star
86

docker-kopano-meet

Dockerfile
2
star
87

docker-soulseek

Dockerized Soulseek Client
Dockerfile
2
star
88

docker-kopano-kapi

Dockerfile
2
star
89

docker-kopano-konnect

Dockerfile
2
star
90

docker-olefy

Dockerized Olefy TCP listener for OLE Tools
Dockerfile
2
star
91

docker-logchimp

Dockerized Logchimp Application
Dockerfile
2
star
92

docker-transmission

Dockerized Transmission client
Dockerfile
2
star
93

docker-dind

Docker in Docker Image with Zabbix monitoring Support and --squash --compress options by default based on Alpine
Dockerfile
2
star
94

docker-matrix-bridges

Dockerized Matrix Bridges to interconnect services
Dockerfile
2
star
95

docker-monica

Dockerized Monica PRM
Dockerfile
2
star
96

tiredofit

2
star
97

docker-minio

Dockerized Minio Server based on Alpine
Dockerfile
2
star
98

docker-tomcat

Docker Apache Tomcat based on Alpine
2
star
99

docker-mongo-builder

Docker Image to build MongoDB and associated tools for Alpine Edge from aports/non-free
Dockerfile
2
star
100

nixos-config

NixOS configurations
Nix
1
star