本文最后更新于 2025-05-26,文章内容可能已经过时。

OrangeHRM 是一款功能强大的开源人力资源管理系统(HRM),支持员工信息管理、考勤追踪、休假审批等核心功能,适用于初创企业、中小型公司及大型组织,且提供多语言支持(包括中文)。

通过 NAS(网络附加存储) 结合 Docker 部署 OrangeHRM,不仅能实现资源的高效利用,还能保障数据安全与服务的稳定性,尤其适合需要私有化部署的企业用户。

通过本教程,用户可快速搭建私有化的人力资源管理平台,兼顾安全性与灵活性。无论是技术新手还是企业IT人员,均可借助 Docker 的标准化流程,轻松实现高效运维。立即行动,解锁企业管理的智能化升级!

OrangeHRM介绍

  • OrangeHRM Starter 是一款免费的开源 HR 软件,提供大量功能丰富的模块,以满足您的业务需求。

部署教程

演示环境

  • 黑群晖NAS DS918+ DSM7.2.1

  • 飞牛NAS fnOS-0.8.36

  • CPU:i5-4570

  • 内存:4GB DDR3*2

  • 硬盘:500GB SATA固态硬盘

  • 部署版本:OrangeHRM 5.7
    (4.*与5.*版本不同,升级需要迁移数据,官方不知道什么原因删掉了官网的5.*版本部署文档。)

先决条件

要安装 OrangeHRM,请确保它满足先决条件,先决条件是:

  • Apache HTTP Server 2.2 或更高版本

  • PHP 7.4 或更高版本

  • MySQL 5.5 或更高版本/ MariaDB 5.5 或更高版本

数据库配置

  • 如果自己有能力的可以独立部署数据库,非高级玩家请按教程操作。

  • 以下取自官方说明👇

  • 注意:特权数据库用户和 OrangeHRM 数据库用户

  • 可以为 Database Server 用户分配不同的权限。要让 Web 安装程序创建 OrangeHRM 数据库,您需要在特权数据库用户/密码字段下为数据库用户帐户提供具有 CREATE、ALTER、DROP、INSERT 权限的数据库用户帐户详细信息(用户名/密码)。

  • 由于 OrangeHRM 只需要 INSERT、UPDATE、SELECT 和 DELETE 权限即可与数据库交互,因此 Web 安装程序可以为 OrangeHRM 创建一个单独的数据库用户帐户。始终建议您为 OrangeHRM 创建一个单独的用户帐户。为此,请根据需要填写 OrangeHRM 用户详细信息(用户名/密码),Web 安装程序将为您创建帐户。

  • 由于 OrangeHRM 使用的数据库用户帐户详细信息以纯文本形式存储,因此让 OrangeHRM 使用特权用户帐户将构成安全威胁。

Docker Compose方式部署

  1. 演示以在群晖NAS系统上安装为例
    (其他系统请自行安装好最新版本Docker、docker compose)

  2. 打开群晖的SSH功能,使用终端软件进行连接,并切换到root状态下。
    DSM open SSH.png

  3. 进入群晖的docker文件夹(你想将容器数据存储到哪就进哪个文件夹)

    # 将/volume1/docker换成你自己的文件夹路径
    
    cd /volume1/docker
  4. 创建项目文件夹及子文件夹

    mkdir -p OrangeHRM/{orangehrm-data,mysql-data}
  5. 进入项目文件夹

    cd OrangeHRM
  6. 编辑docker-compose.yml模板文件

    vi docker-compose.yml
  7. 按字母 i 键进入编辑模式,复制并修改下面的配置文件,粘贴到终端,按Esc键退出编辑模式,输入 :wq 保存并退出。

    version: '3.8'
    
    services:
      # OrangeHRM 服务
      orangehrm:
        image: orangehrm/orangehrm:latest
        container_name: orangehrm
        ports:
          - "8000:80"  # 映射本地端口8000到容器内的80端口(HTTP),左侧的8000端口可自行修改。
          - "8443:443"  # 映射本地端口8443到容器内的443端口(HTTPS),左侧的8443端口可自行修改。
        environment:
          - ORANGEHRM_DATABASE_HOST=mysql  # 指定 OrangeHRM 数据库的主机为 mysql(容器名,自动解析)
          - ORANGEHRM_DATABASE_USER=orangehrm  # 指定 OrangeHRM 数据库的用户名
          - ORANGEHRM_DATABASE_PASSWORD=Password01  # 指定 OrangeHRM 数据库的密码(与下面的 MySQL 容器中的密码一致)
          - ORANGEHRM_DATABASE_NAME=orangehrm  # 指定 OrangeHRM 数据库的名称
        volumes:
          - ./orangehrm-data:/orangehrm  # 持久化存储OrangeHRM数据文件到本地 orangehrm-data 文件夹,避免数据丢失。
        depends_on:
          - mysql  # 声明 orangehrm 服务依赖于 mysql 服务,等待MySQL数据库启动后才启动orangehrm。
        networks:
          - orangehrm_network
        restart: always
    
      # MySQL 服务
      mysql:
        image: mysql:8.0
        container_name: orangehrm-mysql
        ports:
          - "3366:3306"  # 映射本地端口3366到容器内的3306端口(避免与其他运行的数据库端口冲突,外部连接端口改成了3366,你也可以自行修改。)
        environment:
          - MYSQL_ROOT_PASSWORD=Password01  # 设置 MySQL 的根用户 root 的密码
          - MYSQL_DATABASE=orangehrm  # 创建一个数据库,名称为 orangehrm
          - MYSQL_USER=orangehrm  # 设置 MySQL 的用户名为 orangehrm(为 OrangeHRM 创建一个单独的用户帐户)
          - MYSQL_PASSWORD=Password01  # 设置 MySQL 用户的密码为 Password01(为 OrangeHRM 创建一个单独的用户帐户的密码)
        volumes:
          - ./mysql-data:/var/lib/mysql  # 持久化存储数据库文件到本地 mysql-data 文件夹,避免数据丢失。
        networks:
          - orangehrm_network
        restart: always
        command: --skip-host-cache --skip-name-resolve  # MySQL 会允许来自所有主机的连接,并且跳过 DNS 解析,避免主机名解析而无法连接的问题。
    
    networks:
      orangehrm_network:
        driver: bridge  # 使用默认的桥接网络,确保两个容器能够互相通信
    
  8. 查看当前项目文件的路径

    pwd
  9. 授权该项目文件夹内的读写权限(部分NAS系统需要【如群晖】,否则容器无读写权限访问运行,按需执行。)

    # 把/volume1/docker/OrangeHRM换成你自己的项目文件夹路径
    
    chmod -R 777 /volume1/docker/OrangeHRM/
  10. 执行命令,启动docker-compose模板文件,拉取镜像并创建容器。

    docker-compose up -d
    
    或
    
    docker compose up -d
  11. 查看正在运行的项目容器实时日志,按Ctrl+C中断查看。

    docker-compose logs -f
    
    或
    
    docker compose logs -f

初始化设置OrangeHRM

  1. 打开浏览器,以NAS的IP+设置的端口进行访问。
    以本机为例:http://172.16.19.200:8000
    这里我们是全新安装,所以选择全新安装,然后点击下一步。
    (默认全英文页面,自行打开浏览器翻译。)
    image-hjpf.png

  2. 点击接受许可,然后下一步。

  3. 数据库配置选择:现有数据库
    数据库主机名:运行数据库的设备IP地址(NAS上安装的就写NAS的IP地址)
    数据库主机端口:设置哪个就写哪个,我们设置的是3366,避免与其他数据库端口冲突。(默认为3306)
    数据库名称:orangehrm(创建项目时创建的)
    OrangeHRM 数据库用户名:orangehrm(创建项目时创建的)
    OrangeHRM 数据库用户密码:Password01(创建项目时创建的)
    然后点击下一步
    image-eqcj.png

  4. 确保所有的都显示为绿色正常状态,然后点击下一步。

  5. 如果所有响应都为绿色,则表示您已经安装了所需版本的先决条件,并将它们设置为一起运行,则可以放心地继续下一步。请参阅下文,了解所有可能的颜色代码。
    绿:满足建议的先决条件
    琥珀:满足最低推荐要求。这不会阻止您继续进行下一步
    红:不满足安装的最低要求。除非您手动更正它们,否则安装程序不会让您前进。更正它们后,单击 Re-Check 再次运行系统检查以查看其更新的状态

  6. 设置组织信息后点击下一步

  7. 设置一个管理员账户,注意
    只填写必填项目即可,协议可取消勾选。
    然后点击下一步

  8. 确认信息后点击安装

  9. 耐心等待安装完成,进度到99%的时候会停顿,等待5-10分钟后即可。
    测试在飞牛NAS上的速度比群晖NAS快一点,具体取决于你的设备性能。

  10. 安装完成点击下一步

  11. 点击启动

  12. 输入你设置的账户后进行登录

  13. 初始设置的账户密码较弱,被提示设置一个复杂的密码。
    设置完之后点击保存

  14. 设置完之后重新登录即可

  15. 如果要设置语言,可以在管理员--本地化--语言,进行选择,然后保存。

  16. 剩下的就可以自己使用了,不再赘述。

相关地址

文末

👇👇👇