Skip to content
Follow
CMS

How to Setup ICE HRM on Ubuntu 24.04 with Nginx

Richard
Written by
Richard
Feb 1, 2025 Updated Oct 11, 2026 11 min read
How to Setup ICE HRM on Ubuntu 24.04 with Nginx
How to Setup ICE HRM on Ubuntu 24.04 with Nginx

This guide sets up ICE HRM on Ubuntu 24.04 with Nginx. ICE HRM is a free human resources platform that tracks employees, manages time off and handles payroll in one place. Ubuntu 24.04 is the operating system, and Nginx is the web server that delivers the ICE HRM pages to your browser. MariaDB stores the data and PHP runs the application code.

Advertisement
⚡ Quick Answer

To set up ICE HRM on Ubuntu 24.04 with Nginx, first install the stack: run sudo apt update, then sudo apt install nginx, and sudo apt install mariadb-server. Next, install PHP with php-fpm and its extensions, download ICE HRM from SourceForge, and move the files to /var/www/icehrm. Finally, set ownership with sudo chown -R www-data:www-data /var/www/icehrm.

Advertisement

Hosting the software yourself keeps company data on your own server and removes monthly subscription fees. You need a clean Ubuntu 24.04 server, a user account with sudo rights, and basic command-line skills. A domain name pointing at the server is useful, but you can also test with the server’s IP address. The steps below are the short version. Each one is explained in its own section further down.

  1. Open your terminal and run sudo apt update followed by sudo apt install nginx to install the Nginx web server.
  2. Install the database server by running sudo apt install mariadb-server in your terminal.
  3. Log in to MariaDB using sudo mariadb. Run the SQL commands to create a new database named icehrmdb, create a user, and grant that user full access to the database.
  4. Install PHP and the required modules by running the sudo apt install php-fpm ... command with all the necessary extensions.
  5. Download the ICE HRM files from SourceForge into your /tmp/ directory, extract them, and move them to the Nginx root folder at /var/www/icehrm.
  6. Fix file ownership and permissions so the web server can read and write the files, by running sudo chown -R www-data:www-data /var/www/icehrm.
  7. Create an Nginx virtual host configuration file for your domain in /etc/nginx/sites-available/icehrm.conf and paste in the server block settings.
  8. Enable the site by linking the configuration file into sites-enabled, then restart Nginx using sudo systemctl restart nginx.
  9. Open your web browser and go to your domain name. The ICE HRM installation wizard appears. Enter your database details to finish the setup.

Install Nginx HTTP server on Ubuntu

Nginx is the web server that receives incoming requests and passes them to your ICE HRM application on Ubuntu 24.04. It is available in the default Ubuntu repositories, so you can install it from the terminal with the standard package manager commands. It is best to install it first, because the other components are tested through it.

Open the Ubuntu terminal and run the commands in the block below to install the Nginx web server. The first command refreshes the package list and the second installs Nginx. If you are asked to confirm, type Y and press Enter.

🐧Bash / Shell
sudo apt update
sudo apt install nginx

Once Nginx is installed, you can use the commands below to start it, stop it, and enable it so it starts automatically every time the server boots. Ubuntu usually starts Nginx right after installation, but enabling it explicitly makes sure it survives a reboot.

🐧Bash / Shell
sudo systemctl stop nginx
sudo systemctl start nginx
sudo systemctl enable nginx

To test that Nginx is running, open your web browser and browse to the server’s localhost or IP address. If you are working on the server itself, use localhost. From another computer, use the server’s IP address.

Advertisement

http://localhost

Default Nginx welcome page confirming successful installation on Ubuntu 24.04
Default Nginx welcome page confirming successful installation on Ubuntu 24.04

When you see Welcome to nginx!, the Nginx HTTP server is installed and working. If the page does not load from another computer, check that the service is running and that no firewall on the server is blocking port 80.

For more help with installing Nginx on Ubuntu, see the link below.

How to install Nginx on Ubuntu

Advertisement

Install the MariaDB database server on Ubuntu

MariaDB stores all the employee records and settings for your HR system. It is in the default Ubuntu repositories, so a single package installation sets up the database engine. The next few steps install it, confirm it is running, and check that you can log in.

To install and use the MariaDB database server, follow the instructions below.

Open the Ubuntu terminal and run the commands in the block below to install the MariaDB database server.

🐧Bash / Shell
sudo apt update
sudo apt install mariadb-server

Once MariaDB is installed, use the commands below to stop it, start it, and enable it so it starts automatically when the server boots. You only need the stop and start commands when you want to restart the database by hand. The enable command is the one that matters for a normal setup.

Advertisement
🐧Bash / Shell
sudo systemctl stop mariadb
sudo systemctl start mariadb
sudo systemctl enable mariadb

Run the commands below to check that the MariaDB database server is installed and working.

🐧Bash / Shell
sudo mariadb

After you run these commands, you are logged in to the MariaDB console and see a message similar to the one below.

💻Code
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 32
Server version: 10.11.2-MariaDB-1 Ubuntu 23.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

MariaDB [(none)]> 

This message tells you the server is installed and running. You can leave the console for now. The next section logs in again to create the ICE HRM database.

For more help with installing MariaDB, see the links below.

Advertisement

Create an ICE HRM database

ICE HRM needs its own database to store user data and system settings. Create a database and a dedicated database user from the MariaDB command line. A dedicated user is safer than letting the application connect as the MariaDB root account. If the application is ever compromised, the damage stays limited to this one database.

In this setup, we will create a database called icehrmdb and a user account called icehrmdbuser.

The user icehrmdbuser is given full access to the icehrmdb database, so ICE HRM can read and write all the data it needs.

You can do all of this with the commands below.

Advertisement

First, log in to the MariaDB database server:

🐧Bash / Shell
sudo mariadb

Then run the commands below to create the database, create the user and grant access:

💻Code
CREATE DATABASE icehrmdb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER icehrmdbuser@localhost IDENTIFIED BY 'type_your_password_here';
GRANT ALL ON icehrmdb.* TO icehrmdbuser@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit
📝Good to KnowReplace type_your_password_here with a strong password of your own before you run the commands.

Write the password down, because you need it again in the installation wizard. Each SQL command should answer with a short "Query OK" message. If you see an error instead, check for a missing semicolon or a mistyped quote.

Install PHP on Ubuntu Linux

PHP runs the backend code that makes ICE HRM work. Nginx cannot run PHP by itself. It hands PHP requests to PHP-FPM, so you install PHP together with php-fpm and the extensions the application needs. Ubuntu 24.04 ships PHP 8.3 in its default repositories, so that is the version you get unless you add another source.

Advertisement

Run the commands in the block below to install the latest PHP version from the Ubuntu repositories along with the required modules.

🐧Bash / Shell
sudo apt install php-fpm php-intl php-mysql php-curl php-cli php-zip php-xml php-gd php-common php-mbstring php-xmlrpc php-bcmath php-sqlite3 php-soap php-ldap php-imap
📝Good to KnowFor more help with installing PHP, see the link below.

Remember the PHP version you end up with. The PHP-FPM socket path in the Nginx server block later on must match that version.

How to install PHP on Ubuntu Linux

Download ICE HRM files

Next, put the ICE HRM application files on your server. You download the latest package from the official source into a temporary directory, extract it, and then move it into the Nginx root folder.

To make sure you always install the latest version, check the download page for ICE HRM. Copy the download link for the archive and use it in the commands below. If you downloaded the archive to your own computer instead, upload it to the server before you extract it.

First, move to the /tmp/ directory and download the ICE HRM files. Next, extract the contents into the ICE HRM folder in the Nginx root directory. In this guide that folder is /var/www/html/icehrm.

The final step is to change the ownership and permissions. This lets the Nginx web server read and write the files safely, which ICE HRM needs for uploads and its own settings. Skipping this step is a common reason for blank pages or permission errors in the installation wizard.

Nginx runs as the www-data user on Ubuntu, so that user must own the application files. Run the following commands: `sudo chown -R www-data:www-data /var/www/html/icehrm` and `sudo chmod -R 755 /var/www/html/icehrm`. The first command gives ownership to the web server user. The second lets everyone read and run the files, but only the owner write to them. This ensures the web server can access and write to the ICE HRM files.

⬛Command Prompt
cd /tmp
wget https://phoenixnap.dl.sourceforge.net/project/icehrm/icehrm_v33.5.0.OS.zip
unzip icehrm_*.zip
sudo cp -rf icehrm_v33.5.0.OS /var/www/icehrm
sudo chown -R www-data:www-data /var/www/icehrm/

With the steps above finished, configure the Nginx web server so it serves the ICE HRM content. Nginx does this through a virtual host, also called a server block.

Run the commands below to create an Nginx virtual host file for ICE HRM. The command opens a new, empty file in a text editor.

🐧Bash / Shell
sudo nano /etc/nginx/sites-available/icehrm.conf

Then copy and paste the content block below into the file. Change the server name in the block to your own domain name or server IP address. Also check that the PHP-FPM socket path in the block matches the PHP version you installed. On Ubuntu 24.04 that is normally PHP 8.3.

🐘PHP
server {
listen 80;
listen [::]:80;
root /var/www/icehrm;
index index.php;
server_name icehrm.example.com;

access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;

# For Rest API
location /app/api/ {
try_files $uri /app/api/index.php?/$uri&$args;
}

# Prevent access to data directory
location /app/data/ {
deny all;
return 404;
}

# prevent access to the core directory
location /core/ {
deny all;
return 404;
}

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


}

Save the file and close the editor.

Now enable the virtual host for ICE HRM and restart Nginx so the site becomes available. Nginx does not use the Apache a2ensite tool. Instead, you link the configuration file from the sites-available folder into the sites-enabled folder, then restart the service. Run the commands in the block below to do both. If the restart fails, the most likely cause is a typo in the server block, so reopen the file and check it.

🐧Bash / Shell
sudo ln -s /etc/nginx/sites-available/icehrm.conf /etc/nginx/sites-enabled/
sudo systemctl restart nginx.service

Setup Let’s Encrypt SSL/TLS for ICE HRM

Let's Encrypt gives you a free SSL/TLS certificate, which turns on HTTPS for ICE HRM. This matters here because the login page and employee data should not travel over plain HTTP. You request the certificate and configure Nginx to use it. This needs a real domain name that points to your server, and ports 80 and 443 must be open.

Please read the post below for more help with installing and creating Let’s Encrypt SSL certificates for Nginx.

How to set up Let’s Encrypt SSL certificate for Nginx on Ubuntu Linux

Once Nginx has restarted, open your browser and go to the server hostname or IP address you set in the Nginx server block. If you set up HTTPS, use the https address.

💻Code
http://icehrm.example.com

The ICE HRM installation wizard should appear. If you see the default Nginx page instead, the new server block is not being used. Check that the site is linked and that the server name matches the address you typed. If you see a download prompt or raw PHP code, PHP-FPM is not connected to Nginx correctly.

Type in the database name, user name and password you created earlier. Then click the Test Database Connectivity button. If the test fails, recheck the database name, user name and password. Also confirm that the user was granted access to the database.

If the test succeeds, click the Install Application button to begin the installation. It takes a short time while ICE HRM creates its tables in the database.

ICE HRM installation wizard
ICE HRM installation wizard

Log in with the default user name and password:

  • admin
  • admin
ICE HRM installation complete
ICE HRM installation complete

ICE HRM should now be ready to use. Change the default admin password straight away, since anyone who knows the default can sign in to your HR data.

ICE HRM admin portal
ICE HRM admin portal

That should do it!

Conclusion:

In summary, installing ICE HRM on Ubuntu using Nginx involves several key steps:

  • Install Nginx: Set up the Nginx web server to handle web traffic efficiently.
  • Install MariaDB: Implement the MariaDB database server to manage your application’s data.
  • Create ICE HRM Database: Establish a dedicated database for ICE HRM and configure user access.
  • Install PHP: Ensure that the necessary PHP components are available for the application to function.
  • Download ICE HRM: Obtain the ICE HRM application files and place them in the designated web directory.
  • Configure Nginx: Set up a virtual ICE HRM host to properly manage site requests.
  • Secure with SSL: Implement Let’s Encrypt to provide a secure HTTPS connection.
  • Run the Installation Wizard: Complete the setup by entering your database credentials and finalizing the installation.

These steps give you a working ICE HRM deployment for managing HR tasks. After the first login, change the default admin password and set up HTTPS if you have not already. Then add your company details and employees.

Have a question about this guide?

Answered by AI from this guide. Good questions may be added to this page — please don't include personal details.

Did this guide fix your problem?

Richard

About the Author

Richard

Tech Writer, IT Professional

Richard is a writer at Geek Rewind who turns complex IT tasks into clear, step-by-step guides. He draws on years of hands-on experience in system administration and enterprise IT operations, focusing on Windows, Linux and WordPress: the problems people actually run into, and the fixes that work. His server and WordPress guides come from systems he runs himself. Richard builds and maintains the platform behind Geek Rewind, from its Ubuntu servers and Nginx configuration to its custom WordPress plugins. Many new tutorials start with readers' questions, and he's always glad to answer them in the comments.

Advertisement

No comments yet — be the first to share your thoughts!

Leave a Comment

Your email address will not be published. Required fields are marked *