# Installation on Red Hat/CentOS

Attention

LemonLDAP::NG requires at least Red Hat/CentOS 7

## List of pacakges

LemonLDAP::NG provides packages for RHEL (and derivatives) 7/8/9:

- `lemonldap-ng`: metapackage, contains no file but dependencies on other packages

- `lemonldap-ng-doc`: contains HTML documentation and project docs (README, etc.)

- `lemonldap-ng-conf`: contains default configuration (DNS domain: example.com)

- `lemonldap-ng-test`: contains sample CGI test page

- `lemonldap-ng-handler`: contains Apache Handler implementation (agent)

- `lemonldap-ng-manager`: contains administration interface and session explorer

- `lemonldap-ng-portal`: contains authentication portal and menu

- `lemonldap-ng-fastcgi-server`: FastCGI server needed to use Nginx

- `lemonldap-ng-nginx`: contains Nginx configuration and dependencies

- `lemonldap-ng-uwsgi-app`: contains Uwsgi application

- `lemonldap-ng-selinux`: contains the SELinux policy for httpd

- `perl-Lemonldap-NG-Common`: CPAN - Shared modules

- `perl-Lemonldap-NG-Handler`: CPAN - Handler modules

- `perl-Lemonldap-NG-Manager`: CPAN - Manager modules

- `perl-Lemonldap-NG-Portal`: CPAN - Portal modules

- `perl-Lemonldap-NG-SSOaaS-Apache-Client`: SSOaaS client module

Danger

The package lemonldap-ng-nginx requires the Nginx community package. If you use OpenResty or Nginx plus, you must ignore this dependency. To do this, download the package and install it with:

    rpm --nodeps -i lemonldap-ng-nginx*.rpm

## Prerequisites

LemonLDAP::NG has dependencies which are not in base RHEL repositories.

You need to enable EPEL repositories before installing.

On RHEL8 and derivatives, you also also need to enable the PowerTools repository in `/etc/yum.repos.d`.

On OracleLinux, the corresponding repo is called Oracle Linux 8 CodeReady Builder.

## Get the packages

### YUM repository

You can add this YUM repository to get recent packages:

    vi /etc/yum.repos.d/lemonldap-ng.repo

    [lemonldap-ng]
    name=LemonLDAP::NG packages
    baseurl=https://lemonldap-ng.org/redhat/stable/$releasever/noarch
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-OW2

Tip

Replace `stable` by `2.0` to avoid upgrade to next major version

You may also need some extras packages for SAML, available here:

    [lemonldap-ng-extras]
    name=LemonLDAP::NG extra packages
    baseurl=https://lemonldap-ng.org/redhat/extras/$releasever
    enabled=1
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-OW2

Run this to update packages cache:

    yum update

### Manual download

RPMs are available on the Download page.

## Package GPG signature

Get the RPM signing key onto your LemonLDAP::NG server:

    curl https://lemonldap-ng.org/_media/rpm-gpg-key-ow2 > /etc/pki/rpm-gpg/RPM-GPG-KEY-OW2

## Install packages

### With YUM

If the packages are stored in a yum repository:

    yum install lemonldap-ng

    # If you use SELinux
    yum install lemonldap-ng lemonldap-ng-selinux

You can also use yum on local RPMs file:

    yum localinstall lemonldap-ng-* perl-Lemonldap-NG-*

### With RPM

You have then to install all the downloaded packages:

    yum install lemonldap-ng-* perl-Lemonldap-NG-*

Tip

You can choose to install only one component by choosing the package `lemonldap-ng-portal`, `lemonldap-ng-handler` or `lemonldap-ng-manager`.

Install the package `lemonldap-ng-conf` on all server which contains one of those packages.

## First configuration steps

### Change default DNS domain

By default, DNS domain is `example.com`. You can change it quick with a sed command. For example, we change it to `ow2.org`:

    sed -i 's/example\.com/ow2.org/g' /etc/lemonldap-ng/* /var/lib/lemonldap-ng/conf/lmConf-1.json /etc/nginx/conf.d/* /etc/httpd/conf.d/*

### Upgrade

If you upgraded LemonLDAP::NG, check all upgrade notes.

### DNS

Configure your DNS server to resolve names with your server IP:

- `auth.<your domain>`: main portal, must be public

- `manager.<your domain>`: manager, only for adminsitrators

- `test1.<your domain>`, `test2.<your domain>`: sample applications

Follow the next steps

## File location

- Configuration is in `/etc/lemonldap-ng`

- LemonLDAP::NG configuration (edited by the Manager) is in `/var/lib/lemonldap-ng/conf/`

- All Perl modules are in the `/usr/share/perl5/vendor_perl` directory

- All Perl scripts/pages are in `/var/lib/lemonldap-ng/`

- All static content (examples, CSS, images, etc.) is in `/usr/share/lemonldap-ng/`

- Administration scripts are in `/usr/libexec/lemonldap-ng/bin`

## Build your packages

If you need it, you can rebuild RPMs:

- Install rpm-build package

- Install all build dependencies (see BuildRequires in `lemonldap-ng.spec` )

- Put LemonLDAP::NG tarball in `%_topdir/SOURCES`

- Edit `~/.rpmmacros` and set your build parameters:

    %_topdir /home/user/build
    %dist .el7
    %rhel 7

- Go to `%_topdir`

- Build:

    rpmbuild -ta SOURCES/lemonldap-ng-VERSION.tar.gz