(Last Updated On: November 1, 2018)

In this guide, I’ll cover the installation of Sentrifugo HRM on Ubuntu 18.04 LTS and securing the installation with Let’s Encrypt. Sentrifugo is a powerful open source Human Resource Management (HRM) System written in PHP. It stores its data in a relational database such as MySQL/MariaDB.

Sentrifugo is easy to configure and provides a number of rich features such as:

  • Tracking employee’s vacation dates
  • Tracking of employee’s roles, performance, and privileges
  • Tracking Employee’s appraisals
  • For time and leave Management
  • Recruitment/Talent Acquisition
  • Interview Schedule
  • Employee self-service
  • Analytics: Define long & short term goals
  • Background Checks e.t.c

Our installation of Sentrifugo HRM  will be powered by Nginx, MariaDB, and PHP 7.2.

Step 1: Install PHP

Install PHP on Ubuntu 18.04 by running the following commands:

sudo apt install php php-cli php-soap php-xmlrpc php-fpm php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath

Edit /etc/php/7.2/fpm/php.ini and modify settings like below

file_uploads = On
allow_url_fopen = On
cgi.fix_pathinfo = 0
upload_max_filesize = 50M
date.timezone = Africa/Nairobi

Step 2: Install and configure the MariaDB database

The next step is to install MariaDB 10.x on your Ubuntu 18.04 system by following below guide:

Install MariaDB 10.3 on Ubuntu 18.04 and CentOS 7

After installation of MariaDB, login as root user and create a database and user for Sentrifugo HRM.

$ mysql -u root -p

CREATE DATABASE sentrifugo;
GRANT ALL ON sentrifugo.* TO 'sentrifugo'@'localhost' IDENTIFIED BY 'StrongPassword';
FLUSH PRIVILEGES;
EXIT;

Replace StrongPassword with your strong database user password.

Step 3: Download and install Sentrifugo

Clone Sentrifugo from Github

cd /srv
git clone https://github.com/sapplica/sentrifugo.git

Install Nginx

sudo apt install nginx -y

Set directory proper permissions

sudo chown -R www-data:www-data /srv/sentrifugo/
sudo chmod -R 775 /srv/sentrifugo/

Configure Nginx – Without SSL

Create a Virtual Host file for Sentrifugo

sudo vim /etc/nginx/conf.d/sentrifugo.conf

Set like below:

server {
    listen 80;
    listen [::]:80;
    root /srv/sentrifugo;
    index  index.php index.html index.htm;
    server_name  hrms.example.com www.hrms.example.com;
    client_max_body_size 50M;

    location / {
        try_files $uri $uri/ /index.php?$args;
       }

    location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass    unix:/var/run/php/php7.2-fpm.sock;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
     }
}

Configure Nginx – Without SSL

Request for Let’s Encrypt SSL certificates

wget https://dl.eff.org/certbot-auto -P /usr/local/bin
chmod a+x /usr/local/bin/certbot-auto
export DOMAIN="hrms.example.com"
export EMAIL="[email protected]"
certbot-auto certonly --standalone -d $DOMAIN --preferred-challenges http --agree-tos -n -m $EMAIL --keep-until-expiring

Modify your nginx configuration file to include SSL

server {
    listen 80;
    root /srv/sentrifugo;
    server_name  hrm.example.com www.hrm.example.com;
    location / {
        rewrite     ^ https://hrms.example.com$request_uri? permanent;
    }
}

server {
    listen 443 ssl http2;
    root /srv/sentrifugo;
    index  index.php index.html index.htm;
    server_name  hrm.example.com www.hrm.example.com;
    ssl_certificate /etc/letsencrypt/live/hrms.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/hrms.example.com/privkey.pem;
    client_max_body_size 50M;

    location / {
        try_files $uri $uri/ /index.php?$args;
       }

    location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass    unix:/var/run/php/php7.2-fpm.sock;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
     }
}

Check nginx configuration syntax

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

If OK, restart nginx

sudo systemctl restart nginx

Open the URL http://hrms.example.com on your Browser to finish the installation.

Check Pre-requisites and make sure all are passed:

On Step 2, configure the database with access credentials added earlier

On the screen, configure the application by giving it a name and providing admin email address.

Then configure mail settings, If you want to do local email delivery, check

How to install and configure Postfix as a Send-Only SMTP Server on Ubuntu 18.04

If the installation was successful, all install steps should look like below

Logins should be shown after clicking the Finish button:

That’s all. Enjoy using Sentrifugo HRM system.