Video coming soon…

🧊 Setup IceHRM

Placeholder description.

⚠️ This script is provided for demo and testing purposes only. Not intended for production use.

📦 Resources & Setup Scripts

Grab the automated bash script from GitHub to follow along with the video.

Automated install script.
View on GitHub

Quick Install:

wget https://raw.githubusercontent.com/mhmdali94/Docker/main/hr/icehrm/icehrm-ubuntu.sh
chmod +x icehrm-ubuntu.sh
sudo bash icehrm-ubuntu.sh

Tutorial Steps

1 Download the Script

wget https://raw.githubusercontent.com/mhmdali94/Docker/main/hr/icehrm/icehrm-ubuntu.sh

2 Make it Executable

chmod +x icehrm-ubuntu.sh

3 Run the Installer

The script installs Docker if needed, then deploys IceHRM with MySQL automatically.

sudo bash icehrm-ubuntu.sh

4 Access the Web UI

Open your browser and navigate to:

http://<your-server-ip>

5 Configure Your Company

Log in with the default admin credentials (admin / admin) and change the password immediately. Go to System → Company Structure to add your company, departments, and locations. Then navigate to Employees → Add Employee to start populating your HR database.

Ports Used

PortPurpose
80IceHRM Web UI (HTTP)
443IceHRM Web UI (HTTPS — via reverse proxy)
3306MySQL — internal only, not exposed

Overview

IceHRM is a lightweight, open-source Human Resource Management System built on PHP and MySQL. It covers the essential HR functions that small and medium businesses need without the complexity and resource requirements of larger systems like OrangeHRM or Odoo HR. Key modules include employee master data, time and attendance (clock-in/out via web), leave management with multi-level approval workflows, expense claims, performance reviews, training management, and a payroll module for basic salary calculations. IceHRM also exposes a REST API for integration with external payroll providers, attendance hardware, and HR analytics tools.

Why Use It

Large HRMS platforms like OrangeHRM or SAP SuccessFactors have steep learning curves and significant resource requirements. IceHRM runs comfortably on 1–2 GB RAM and gets your HR team operational within a day. It handles the 80% of HR workflows that every company needs — attendance, leave, expense, and employee records — without requiring an implementation consultant. The REST API means you can connect IceHRM to your payroll provider, biometric attendance machine, or internal employee portal without custom code. For SMEs in the 20–200 employee range, IceHRM provides the right level of functionality without the overhead of enterprise HR software.

When You Need It

    Who Should Use It

      Real Use Cases

        Main Features

          How to Use After Installation

            Security Best Practices

              Ports and Firewall Notes

              IceHRM only needs port 80 (HTTP) or 443 (HTTPS via reverse proxy) open to users. MySQL runs on port 3306 internally in Docker and must never be exposed publicly. Configure ufw allow 80 and ufw allow 443, then deny all other inbound. In production always put IceHRM behind Nginx Proxy Manager with a Let's Encrypt certificate.

              Backup and Maintenance

                Common Mistakes

                  Troubleshooting

                    Alternatives

                    OrangeHRM is the most comparable open-source HRMS — it has more modules (training, performance, recruitment) and a larger community, but requires more resources and has a longer setup time. Odoo HR is part of the full Odoo ERP and is more powerful but requires the full Odoo stack. BambooHR is the leading cloud HRMS but costs $6–9 per employee/month with no self-hosting option. Factorial is another cloud HR tool with a good free tier for small teams. For businesses that need payroll, attendance, and HR in a single lightweight system without enterprise complexity, IceHRM is the most practical self-hosted option.

                    When Not to Use It

                    If your company has more than 500 employees, IceHRM will start to feel limited — OrangeHRM or a dedicated enterprise HRMS will serve you better. If you need complex payroll calculation with tax tables, statutory deductions, and compliance reports, IceHRM's payroll module is basic — you will need to export data to a dedicated payroll system. IceHRM also lacks deep performance management and succession planning features. If multi-country HR compliance (different leave laws per country, multi-currency payroll) is required, use a more specialized global HRMS.

                    PrismaTechWork Professional Help

                    PrismaTechWork provides end-to-end infrastructure services — from initial deployment and security hardening to ongoing monitoring, automated backups, and dedicated support. Whether you need a single-server setup or a multi-site network, our team ensures your infrastructure is built right, secured properly, and maintained reliably.

                      Contact Us

                      Frequently Asked Questions

                      Is IceHRM completely free?

                      IceHRM has a Community Edition (open-source, GPLv3) that is completely free to self-host with all core HR modules. There is also an IceHRM Pro cloud subscription with additional modules and support. The community edition covers attendance, leave, expense, employee records, payroll basics, and the REST API — sufficient for most SMEs.

                      Does IceHRM support Arabic?

                      IceHRM has limited multilingual support. An Arabic language file may be available in the community, but RTL layout support is not a core feature of the default installation. If Arabic is a primary requirement, OrangeHRM has broader language support and Odoo HR has native Arabic RTL.

                      Can IceHRM integrate with biometric attendance machines?

                      Yes — IceHRM has a REST API that accepts attendance punch-in/punch-out events from external systems. Most ZKTeco and similar biometric attendance terminals can push data to a web server via HTTP. Configure the attendance machine to post to the IceHRM REST API endpoint with the employee ID and timestamp for automatic attendance recording.

                      How does IceHRM handle leave approval workflows?

                      When an employee applies for leave through the self-service portal, their direct supervisor receives an email notification. The supervisor logs in and approves or rejects the leave with a comment. Multi-level approval can be configured — for example, supervisor approves first, then HR manager does a final approval. The employee receives an email notification at each step.

                      Can IceHRM calculate payroll?

                      IceHRM has a basic payroll module that calculates gross salary based on base pay, allowances, and deductions configured per employee. It pulls attendance data to calculate overtime. The output is a payroll report that can be exported to CSV for import into a dedicated payroll or accounting system. IceHRM is not a substitute for a full payroll system with tax compliance and statutory reports.

                      How many employees can IceHRM handle?

                      IceHRM performs well up to about 500 employees on a modest server (2 vCPU / 2 GB RAM). For 500–2,000 employees, increase server resources and ensure MySQL is properly tuned (innodb_buffer_pool_size). Beyond 2,000 employees, consider OrangeHRM or a dedicated enterprise HRMS that is designed for scale.

                      Can employees access IceHRM on mobile?

                      IceHRM has a responsive web interface that works on mobile browsers. Employees can apply for leave, check their attendance, and submit expense claims from a smartphone browser. There is no dedicated native mobile app for the community edition. For clock-in/clock-out on mobile, employees use the web interface through their phone browser.

                      How do I add a custom field to employee records in IceHRM?

                      IceHRM supports custom fields through System → Custom Fields. You can add text, number, date, and dropdown fields to employee records, leave applications, and other forms. Custom fields appear in the employee profile and can be included in reports. More complex customizations (new modules, workflow changes) require modifying the PHP source code.