---
title: "Deploy OrangeHRM: Self-Hosted HR Software & BambooHR Alternative"
description: "Manage employees, leave, time, hiring and reviews in your own HR system."
category: "Other"
url: https://railway.com/deploy/orangehrm-hr-software
---

# Deploy OrangeHRM: Self-Hosted HR Software & BambooHR Alternative

Manage employees, leave, time, hiring and reviews in your own HR system.

**[Deploy OrangeHRM: Self-Hosted HR Software & BambooHR Alternative on Railway](https://railway.com/template/orangehrm-hr-software)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/orangehrm-hr-software/manifest.json

- **Creator:** blueorange
- **Category:** Other

## Template content

### OrangeHRM https://raw.githubusercontent.com/orangehrm/orangehrm/refs/heads/main/web/images/ohrm_logo.png

- **Image:** orangehrm/orangehrm:latest
- **Start command:** `/bin/sh -c 'a2dismod mpm_event mpm_worker 2>/dev/null; a2enmod mpm_prefork; apache2-foreground'`
- **Public domain:** Yes

### MySQL https://devicons.railway.app/i/mysql.svg

- **Image:** mysql:9.4
- **Start command:** `docker-entrypoint.sh mysqld --innodb-use-native-aio=0 --disable-log-bin --performance_schema=0 --innodb-buffer-pool-size=1G`

## Documentation

# Deploy and Host OrangeHRM on Railway

![OrangeHRM logo](https://raw.githubusercontent.com/orangehrm/orangehrm/refs/heads/main/web/images/ohrm_logo.png)

OrangeHRM is an open source **human resource management system** used by small and mid-sized organizations around the world. It keeps employee records in one place and covers leave management, time and attendance, recruitment, performance reviews, an employee directory, expense claims and reports, with a self-service portal for staff and a mobile app. OrangeHRM Starter is licensed under GPL-3.0, and version 5.9 is the current release. This template runs the official OrangeHRM image with MySQL 9.4 on Railway. BambooHR's published plans start around $10 per employee per month, with a flat minimum for small teams. OrangeHRM on Railway costs about $10–15/month no matter how many employees you add.

---

## What This Template Deploys

| Service | Purpose |
|---|---|
| **OrangeHRM** | `orangehrm/orangehrm:latest` (currently 5.9), Apache and PHP 8.3, on port `80` with a public domain. The web installer runs on the first visit. |
| **MySQL** | `mysql:9.4` with a 1 GB InnoDB buffer pool, reachable only over Railway's private network. Volume at `/var/lib/mysql` holds every employee record, leave request, timesheet and attachment. |

The OrangeHRM service also has a volume at `/orangehrm`, but the app does not use that path; see the important note below.

---

## Important: Redeploys Bring Back the Installer

OrangeHRM writes its connection settings and encryption key to `lib/confs` inside the container, and that folder is not on a volume in this template. Your data is safe in MySQL, but after a redeploy or a crash restart, the installer page can appear again because the settings file is gone.

**What to do:** avoid unneeded redeploys, and if the installer comes back, choose the option for an existing installation and point it at the same MySQL database instead of creating a new one. Do not choose a fresh install over a database that already holds your data. Keep regular MySQL backups, and avoid OrangeHRM's optional data encryption, because its key lives in the same folder.

---

## About Hosting OrangeHRM

HR data is among the most sensitive data a company holds. Hosted HR suites charge per employee and keep that data on their servers. OrangeHRM gives you the core HR workflows on infrastructure you control, at a flat cost.

**Employee records (PIM).** Personal details, contact information, job titles, employment status, salary, qualifications, emergency contacts, dependents, immigration documents and attachments.

**Leave management.** Leave types, entitlements, holidays, work weeks, approval workflows and leave calendars, with requests and approvals from employee self-service.

**Time and attendance.** Timesheets per project and activity, punch in and punch out, and attendance reports.

**Recruitment.** Job vacancies, candidate tracking, interviews and hiring workflows.

**Performance.** Key performance indicators, review cycles, self-reviews and reviewer ratings.

**Directory, claims and buzz.** A searchable company directory with an org chart, expense claims, and Buzz, a simple internal social feed.

**Admin and reports.** User roles, organization structure, locations, nationalities, and custom reports on any employee data.

---

## Deploy OrangeHRM in Under 5 Minutes

1. Click **Deploy on Railway**. The MySQL root password is generated for you.
2. Wait for MySQL and OrangeHRM to start, then open the public domain.
3. In the installer, choose a fresh installation and use the existing database `railway`.
4. Enter the database host, user and password from the OrangeHRM service's `ORANGEHRM_DATABASE_*` variables, which reference the MySQL service.
5. Create your admin user, finish the wizard, and sign in.

---

## Common Use Cases

- **Small businesses:** replace HR spreadsheets with one employee database.
- **Leave tracking:** handle vacation and sick leave requests and approvals online.
- **Startups hiring:** track job openings and candidates without a separate applicant tracking system.
- **Nonprofits and schools:** keep staff records at a flat hosting cost instead of per-seat fees.
- **Performance cycles:** run annual or quarterly reviews with KPIs.
- **Data residency:** keep HR data in an environment you control.
- **Onboarding records:** collect documents, emergency contacts and bank details in one employee file.
- **Expense claims:** let staff submit claims for approval instead of emailing receipts.
- **Org charts:** show reporting lines and teams in the company directory for new hires.

---

## Configuration

| Variable | Required | Default | Description |
|---|---|---|---|
| `ORANGEHRM_DATABASE_HOST` | Auto-set | MySQL private domain | Database host to enter in the installer |
| `ORANGEHRM_DATABASE_NAME` | Auto-set | `railway` | Database name |
| `ORANGEHRM_DATABASE_USER` | Auto-set | `root` | Database user |
| `ORANGEHRM_DATABASE_PASSWORD` | Auto-set | MySQL root password | Database password |
| `PORT` | Auto-set | `80` | HTTP port |
| `MYSQL_ROOT_PASSWORD` | 🔐 Auto-generated | 32-char secret | MySQL root password, on the MySQL service |
| `MYSQL_DATABASE` | Optional | `railway` | Database created on first start |

**Email.** Set up outgoing mail inside OrangeHRM under **Admin, Configuration, Email Configuration** with your SMTP server, so leave approvals and password resets reach people.

**Apache workers.** The start command switches Apache to the prefork module before starting, which the PHP module needs.

**Organization setup.** After installing, add your company structure, locations, job titles, pay grades, employment statuses and work shifts under **Admin**. Most other modules reuse these lists, so a few minutes here saves time later.

**Leave setup.** Define your leave period, leave types, work week and public holidays before employees start requesting time off. Then assign entitlements in bulk or per person.

**User roles.** OrangeHRM separates admins, supervisors and employees (ESS users). Give managers supervisor access to approve leave and timesheets for their own teams only.

**Languages.** OrangeHRM ships with several interface languages and lets admins edit translations under **Admin, Configuration, Localization**, along with date formats.

**Mobile app.** Staff install the OrangeHRM app and sign in with your Railway URL to apply for leave, punch in and out, and browse the directory.

**Custom domain.** Add a domain such as `hr.yourcompany.com` in Railway so staff use a memorable address.

**Backups.** Everything that matters is in MySQL. Use Railway volume backups or a scheduled `mysqldump`.

---

## OrangeHRM vs. Alternatives

| Feature | OrangeHRM on Railway | BambooHR | Frappe HR | Sentrifugo |
|---|---|---|---|---|
| Hosting | Self-hosted | Hosted SaaS | Self-hosted | Self-hosted |
| License | GPL-3.0 | Proprietary | GPL-3.0 | GPL-3.0 |
| Leave and time tracking | ✅ | ✅ | ✅ | ✅ |
| Recruitment | ✅ | ✅ | ✅ | ✅ |
| Payroll | ❌ | Add-on | ✅ | ❌ |
| Actively maintained | ✅ | ✅ | ✅ | ❌ |
| Price | About $10–15/month flat | From about $10/employee/month | Hosting cost | Hosting cost |

BambooHR adds payroll and benefits but costs more as you grow. Frappe HR includes payroll and is a strong choice if you already use ERPNext. OrangeHRM is the simplest focused HR system to self-host.

---

## Dependencies for OrangeHRM Hosting

- A Railway account.
- An SMTP provider for leave notifications and password resets.
- A backup routine for the MySQL volume, since it holds all HR records.

### Deployment Dependencies

- [OrangeHRM on GitHub](https://github.com/orangehrm/orangehrm): source code and releases
- [OrangeHRM on Docker Hub](https://hub.docker.com/r/orangehrm/orangehrm): image tags
- [OrangeHRM website](https://www.orangehrm.com/): user guides and the mobile app

### Implementation Details

The image follows the `latest` tag, which is currently 5.9, so redeploys can move to a new major release; back up MySQL before redeploying. MySQL runs with binary logs and the performance schema off to save memory. OrangeHRM stores attachments in the database, so the MySQL volume is the one to back up.

---

## Frequently Asked Questions

**What is OrangeHRM?**
A GPL-3.0 open source HR system for employee records, leave, time, recruitment and performance.

**How much does it cost to host OrangeHRM?**
About $10–15/month on Railway for the app and MySQL, with no per-employee fees.

**What database details does the installer need?**
Use the values in the OrangeHRM service's `ORANGEHRM_DATABASE_*` variables and the existing `railway` database.

**Why did the installer appear again?**
The settings file is not on a volume, so a redeploy removes it. Run the installer against the same database; your data is still in MySQL.

**Does OrangeHRM include payroll?**
No. The open source edition covers core HR, leave, time, hiring and performance, but not payroll.

**Is there a mobile app?**
Yes. OrangeHRM has iOS and Android apps for leave, attendance and the directory.

---

## Why Deploy and Host OrangeHRM on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying OrangeHRM on Railway, you get a private HR system with MySQL for records, leave, time and hiring, without per-employee subscription fees.


## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/orangehrm-hr-software
