Open Source Personnel Management

Humna Resource Management

Humna Resource Management

Install and Configure OrangeHRM

Human Resource Management, or HRM, is a broad topic to say the least.  In this episode of Building a Business on Open Source, we'll be taking a look at OrangeHRM.  This offering seems like a really nice option for a start-up business, all the way up to a business that may already have a few hundred employees.

OrangeHRM has tools for personnel management, LDAP support for authentication, Recruiting tools, Leave Management, Time Tracking by Project, and much more.  If you've been looking for a tool that can provide you these types of features, then Orange HRM might just be the tool for you and your business.

What You'll Need

Installating Docker-CE, Docker-Compose, and NGinX-Proxy-Manager via a Simple Script

You can easily install Docker-CE, Docker-Compose, Portainer-CE, and NGinX Proxy manager by using this quick install script I created and maintain on Github.  Just use the command:


To download the script to your desired host.

Change the permissions to make the script executable:

chmod +x ./

and then run the script with the command:


When run, the script will prompt you to select your host operating system, then will ask you which bits of software you want to install.

Simply enter 'y' for each thing you want to install.

At some point, you may be asked for your super user (sudo) password as well.

Allow the script to complete installation.

At this point, you might want to log out and back in, as this will allow you to use the docker and docker-compose commands without the need of sudo in front of them.

Installing OrangeHRM

First, make sure you are working on the machine / server you intend to run OrangeHRM on.  You may need to SSH to the machine in order to get things setup.  For instance, if you want to run this in a VPS (Virtual Private Server) with an inexpensive host, I highly recommend Digital Ocean.  I have used them for years, and the setup of a new server takes about a minute in most cases.  You can get a 2 month trial with $50 - $100 credit if you use my link below.

Try Digital Ocean

If you are installing on your home system, simply make sure you are logged into the system you want to install OrangeHRM to.

First, we'll create a new directory for OrangeHRM.  I really like to create all of my docker servers inside of a parent "docker" folder.  Then I'll create a separate folder for each application I'm running in docker.  So, for OrangeHRM we'll create the folders with this command:

mkdir -p docker/orangehrm

Now, we simply change into the new OrangeHRM directory, and create our docker-compose.yml file as follows:

cd docker/orangehrm

nano docker-compose.yml

I use the nano editor because it's installed by default on most Linux distributions, and it's easy enough to use from an SSH session.  If your server has a GUI (Graphical User Interface) feel free to use any text editor you want.

Next, copy the yaml code below (keeping in mind that yaml code is space dependent.  Never use tabs, and make sure the spacing is correct), and paste it into your open editor.  For nano, you can right-click and paste, or on Linux use CTRL + Shift + V to paste into a terminal editor.

version: "3.3"
    image: orangehrm/orangehrm:latest
    restart: unless-stopped
      - "8200:80"
      - "8443:443"
      - ORANGEHRM_DATABASE_PASSWORD=<aLon65tr0ngPassw0rd!>
      - PUID=998
      - PGID=100
      - ./orange:/orangehrm
      - mariadb
      - mariadb:mariadb      

    image: mariadb:10.2
    restart: unless-stopped
      - ./db_orange:/var/lib/mysql
      - MYSQL_ROOT_PASSWORD=<aLon65tr0ngPassw0rd!>
      - MYSQL_ROOT_USER=<user>
      - MYSQL_DATABASE=orangehrm

Once you've pasted in the yaml code, make sure to change the values in angle brackets "<" and ">".  You'll want to create your own user, and your own strong password.  Make sure the user and passwords match in each section (oragnehrm and mariadb).

Finally, if your chosen host system is already using port 8200, or port 8443, please change the left side of the port mapping only. Never change the right side of a port mapping. The left side port is the port that you'll use to reach the application, and to optionally setup your reverse proxy.  In my case I changed the ports to 8280 and 8243 respectively.

Once you've completed all of your changes, save the file with CTRL + O, and press Enter to confirm. Then quickly double check your entries, and make sure there are no errors or odd spacing issues, then exit the nano editor with CTRL + X.

Now back at the prompt, we'll run our command to pull down the images we need, and start up our server containers.

docker-compose up -d

Once you see the 'done' message, and are back at the prompt.  Wait about  2 minutes, then go to your favorite browser, and navigate to your host machine's IP address, and the port you entered mapped to the container's port 80.

In my case I went to

Once here, you'll be prompted to run through the Web Installer Wizard. 

  1. Select "Fresh Install" if this is your first time running the wizard...if you are updating, select the Update option. Click Next.
  2. Agree to the GNU V2 License, and click Next.
  3. When you come to the database setup page, you'll want to select 'Existing Empty Database'.  Then enter the DB Name as 'orangehrm', enter the user as 'root', and the password you created in your docker-compose.yml file.

The 'root' user is only used by the wizard to create the 'orangehrm' non-root database user, which is then used for all of the application database transactions.

4. Continue through the Install Wizard to the end.  During the Wizard you'll also be asked to create the administrative user for your OrangeHRM install, the company base information, and to confirm all of your settings.

When the wizard completes, you'll be given a button to navigate you to the OrangeHRM login screen. Login using your administrative user, and password you created in the installation wizard.

You are now ready to start configuring your OrangeHRM system.  Check out my video for all the details of getting the system configured, new users entered, and leave options setup and assigned to users.

Support My Channel and Content

Support my Channel and ongoing efforts through Patreon: