You can support us by downloading this article as PDF from the Link below. Download the guide as PDF

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.

You can support us by downloading this article as PDF from the Link below. Download the guide as PDF