OpenProject安装配置

OpenProject简介

OpenProject 是一款开源的项目管理软件,用于协作和组织团队的工作。它提供了丰富的功能,使团队能够有效地规划、跟踪和完成项目,具备关键特性和功能:

  1. 项目计划和追踪: OpenProject 允许用户创建项目计划、任务和阶段,以及设置截止日期和优先级。团队成员可以追踪任务的进度并及时更新状态。
  2. 协作和团队沟通: OpenProject 提供了协作工具,如讨论板、共享文件和团队日历,以便团队成员之间更好地沟通和共享信息。
  3. 缺陷跟踪: 该软件支持缺陷和问题的跟踪,帮助团队发现和解决项目中的问题。
  4. 文档管理: OpenProject 具有文档管理功能,使团队能够轻松地共享和访问项目文档,包括文档版本控制。
  5. 报表和分析: 用户可以生成各种报表,以便了解项目的整体状况,并根据数据做出决策。
  6. 自定义工作流程: OpenProject 允许用户根据其团队的需求自定义工作流程,以适应不同类型的项目。
  7. 集成: OpenProject 可以与其他工具和服务进行集成,如版本控制系统、日历应用和电子邮件。
  8. 用户权限和安全性: 提供了灵活的用户权限设置,以确保只有授权人员可以访问敏感信息。

总体而言,OpenProject 通过提供一套强大而灵活的工具,有助于团队更有效地协作、规划和完成项目。由于其开源性质,用户可以根据需要进行定制和扩展。

基于docker-compose的安装

OpenProject提供了多种安装方式,包括基于包的安装、基于多容器编排(docker-compose)的安装以及基于单个容器的安装方式等。综合考虑便利性和稳定性,选择了基于docker-compose的安装方式。

工作模式

采用Docker Compose的方式启动,在内网提供http服务,通过群晖的反向代理为外网提供https服务。

基础材料

  1. 安装环境

    基于群晖NAS,使用群晖官方提供的Container Manager

  2. 配置文件

    基于OpenProject官方提供的docker-compose.yml模板文件,根据实际需要修改。

  3. 功能增强文件

    使用github上的文件解锁OpenProject的企业功能,记为enterprise_token.rb,与docker-compose文件放在同一目录。具体内容参见:

    https://gist.github.com/markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45

安装步骤

  1. 上传文件至群晖文件目录

    image-20240118142555593

  2. 修改启动参数,大部分使用默认参数,需要修改的主要有:

    • OPENPROJECT_HTTPS设为"true"
    • OPENPROJECT_HSTS 设为"true"
    • OPENPROJECT_HOST__NAME设为"外部hostname:端口号"
    • proxy服务的外部端口号
    • 将功能增强文件以数据卷的方式挂载到容器中
    • 此外,可以考虑修改数据库参数DATABASE_URL

    image-20240118145931731

  3. 使用Container Manager启动

    image-20240118141239764

配置

反向代理

如前所述,容器提供的是http服务,但是使用群晖的反向代理对外提供的是https服务,所以需要在外部终止TLS/SSL。具体如下图所示。“自定义标题”,实际上就是nginx中的proxy_set_header配置,其中UpgradeConnection是为了解决Websocket的代理问题,剩余几项是为了解决种种TLS/SSL。此外,在启动时已经配置了OPENPROJECT_HTTPStrue,以保证OpenProject知道对外提供的是https服务。

image-20240120214625594

image-20240120215404430

邮箱通知

在管理界面设置邮箱信息,配了很长时间一直报各种各样的错,最后才发现是Emission email addressSMTP username必须要一致。下图以QQ邮箱为例给出了配置方式。

image-20240120223627729

配置OneDrive作为文件存储

OpenProject的商业版本从13.1开始支持使用Onedrive/SharePoint作为文件存储,我做了一下测试。主要的流程与之前使用AutoAPI保持E5开发者账号的活跃度很类似,稍微不太一样的地方是需要获取Drive ID。

一开始参照官方文档来获取,使用Graph Explorer和Sharepoint的信息来获取,比较麻烦。后来发现直接使用Graph Explorer,登录Onedrive账号,开启Sites.Read.All权限,然后调用https://graph.microsoft.com/v1.0/me/drives ,Response中的id字段就是Drive ID。

image-20240120225613100

image-20240120224321032

添加成功后,可以在Project settings中开启File storages模块,然后添加刚才设置的File storage即可。

image-20240120232419666

参考资料

  1. https://learn.microsoft.com/en-us/answers/questions/730575/how-to-find-site-id-and-drive-id-for-graph-api
  2. https://gist.github.com/markasoftware/f5b2e55a2c2e3abb1f9eefcdf0bfff45
  3. https://www.openproject.org/docs/system-admin-guide/integrations/one-drive/#set-up-the-integration
  4. https://blog.csdn.net/qq_31275085/article/details/104790941
  5. https://www.synoforum.com/resources/synology-reverse-proxy-under-the-hood.135/