ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

在 Synology 群晖 NAS 上部署与升级 OpenProject:Docker 全容器安装实战指南

在 Synology 群晖 NAS 上部署与升级 OpenProject:Docker 全容器安装实战指南 在 Synology 群晖 NAS 上部署与升级 OpenProjectDocker 全容器安装实战指南【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject本文基于 OpenProject 官方文档中面向群晖SynologyNAS 的安装指引讲解如何在群晖 DSM 的 Docker 图形界面中拉取openproject/openproject镜像、正确挂载pgdata与assets数据卷、固定端口并配置自动重启从而安全地完成首次部署与后续升级。读完本文你将掌握一套数据不丢、升级不慌的 NAS 容器运维方案并理解这些操作背后的容器数据目录与镜像标签设计原理。为什么群晖用户可以直接复用 Docker 安装方式Synology 群晖 NAS 的一大特点是自带了完整的 Docker 容器管理界面DSM 中的Docker套件新版 DSM 中为Container Manager用户可以像在 Linux 服务器上一样启动、停止和更新容器而不必记忆大量命令行。OpenProject 官方明确说明在群晖上运行 OpenProject使用方式与 Docker 安装指南 完全一致群晖只是提供了一个图形化的容器运行环境。也就是说你不需要为群晖准备任何特殊版本或特殊镜像直接使用官方的openproject/openprojectall-in-one 镜像即可。该镜像内部已经打包了应用进程、内置 PostgreSQL 数据库与 memcached 缓存并通过 Apache 对外提供 Web 服务适合快速上手和中小规模使用。官方同时提醒all-in-one 方式便于快速启动但由于数据库等组件耦合在单个容器内不利于组件的独立升级因此不推荐在生产环境的大规模场景下使用。准备工作理解镜像标签与容器数据目录在动手之前先理解两个关键概念它们直接决定了你在群晖界面上该选什么、该挂什么。镜像标签Tag的选择群晖文档建议在 Registry 中下载时选择最新稳定版的具体标签例如openproject/openproject:17。从 Docker 安装指南 可以了解到 OpenProject 的标签遵循语义化版本规则标签形式是否浮动说明X.Y.Z如17.0.1固定精确对应某一个发布版本升级需手动改标签X.Y如17.0浮动每次发布新补丁版本时自动更新X如17浮动每次发布新补丁或次版本时自动更新可能带来应用行为变化dev浮动每晚构建的开发版本仅用于测试和早期反馈官方建议生产环境使用非浮动标签并借助内置版本检查或发布说明来获知更新。在群晖界面中选择openproject/openproject:17这样的主版本浮动标签可以在拉取时始终获得该主版本线的最新补丁若希望完全锁定则应选择形如17.0.x的精确标签。另外需要注意自 OpenProject 12.5.6 起容器同时提供 AMD64x86与 ARM64 两种架构如果你的群晖是 ARM 架构机型例如部分 DS 系列同样可以正常拉取运行但 BIM 版本仅支持 AMD64。两个必须挂载的数据目录all-in-one 镜像将数据保存在容器内的两个固定路径这一点可以从仓库的镜像构建文件中直接得到印证docker/prod/Dockerfile 第 23 行ENV APP_DATA_PATH/var/openproject/assets——存放上传的附件files、git、svn 等数据第 147 行ENV PGDATA/var/openproject/pgdata——存放 PostgreSQL 数据库的完整数据目录第 164 行VOLUME [$PGDATA, $APP_DATA_PATH]——镜像声明这两个目录为卷。容器入口脚本 docker/prod/entrypoint.sh 还会主动检查旧版路径如/var/lib/postgresql/9.6/main、/var/db/openproject一旦发现会直接报错退出提示用户改用新路径挂载。这意味着pgdata与assets两个卷是数据持久化的生命线只有把它们挂载到群晖存储空间上容器被删除重建后数据才得以保留。第一步从 Registry 下载 OpenProject 镜像在群晖 DSM 中打开 Docker或 Container Manager套件进入左侧的Registry注册表页面搜索openproject选中openproject/openproject点击下载在弹出的标签选择中填入或选择你想要的标签文档撰写时推荐的最新稳定版标签为openproject/openproject:17点击确定开始拉取。拉取完成后镜像会出现在Image映像列表中选中它并点击启动即可进入容器创建向导。第二步启动容器时的三个关键设置群晖的容器启动向导会把 Docker 的常用参数拆成多个标签页。官方文档特别强调以下三点缺一不可。1. Volumes卷——最重要的设置在向导的高级设置 → 卷标签页中你必须为容器内的两个目录添加挂载卷mounted volumes容器内路径挂载目标建议作用/var/openproject/pgdata群晖共享文件夹下的一个目录如/volume1/docker/openproject/pgdataPostgreSQL 数据库全部数据/var/openproject/assets如/volume1/docker/openproject/assets附件、静态资源与 git/svn 数据操作方式与群晖其他容器相同点击添加文件夹在群晖共享文件夹中选择或新建目标目录然后将其映射到容器内的对应路径。如果不配置这两个卷更新容器时一旦旧容器被删除全部项目数据、附件和数据库内容都会随之消失——这是群晖文档中最强调的注意事项。从底层看挂载卷的本质等价于 Docker 命令中的-v参数。例如在 Linux 主机上官方生产启动命令是这样的Docker 安装指南sudo mkdir -p /var/lib/openproject/{pgdata,assets} docker run -d -p 8080:80 --name openproject \ -e OPENPROJECT_HOST__NAMEopenproject.example.com \ -e SECRET_KEY_BASEyour-secret-key-base \ -v /var/lib/openproject/pgdata:/var/openproject/pgdata \ -v /var/lib/openproject/assets:/var/openproject/assets \ openproject/openproject:17群晖界面的卷配置就是在图形化地完成其中的-v部分。2. Ports端口——固定对外端口在网络标签页中为容器配置一个固定的本地端口例如8080映射到容器内的80端口。这样无论容器如何重启你的访问地址如http://群晖IP:8080都不会变化否则群晖可能在容器重启后自动分配新的端口导致地址漂移、书签失效。3. Restart policy重启策略——勾选始终重启在启动向导中勾选always restart始终重启选项。这样当群晖 NAS 重启或 Docker 服务重启时OpenProject 容器会被自动拉起无需人工干预——这也是 NAS 上长驻服务的基本要求。第三步首次启动与初始化容器首次启动需要一段时间完成数据库初始化与种子数据写入从群晖文档与 Docker 安装指南可知这一过程需要几分钟。初始化完成后默认管理员账号admin默认密码admin启动浏览器访问http://群晖IP:你配置的端口即可看到登录页面并开始使用 OpenProject。若需要设置主机名、关闭 HTTPS 等高级环境变量可以在群晖容器的环境标签页中添加变量。常用的几个取自 Docker 安装指南环境变量作用SECRET_KEY_BASERails 的密钥基础必须设置为高强度随机值如openssl rand -hex 64生成并在每次启动时保持一致否则会话与加密数据将无法读取OPENPROJECT_HOST__NAME应用对外主机名用于生成表单链接和邮件链接需与浏览器访问的地址一致OPENPROJECT_HTTPSfalse关闭默认开启的 HTTPS 模式用于纯 HTTP 内部访问场景生产环境强烈建议保持 HTTPS 并由前置网关做 TLS 终结OPENPROJECT_DEFAULT__LANGUAGE首次安装时基础数据类型、状态名称等的创建语言同时作为新用户的默认回退语言升级 OpenProject 容器群晖文档给出的升级流程非常简单前提是你已经按照上文配置好了pgdata与assets两个挂载卷进入Registry注册表搜索 OpenProject点击下载选择要升级到的标签例如17或latest等待新镜像下载完成后停止正在运行的 OpenProject 容器在容器上点击清除clear并重启restart。此时容器会以新镜像重新启动并自动执行数据库迁移你的 OpenProject 数据保持完好——前提正是那两个卷始终被挂载。这也与 升级指南 中 all-in-one 容器的命令行升级思路一致docker pull新镜像 →docker stopdocker rm旧容器 → 用相同参数重新docker run。强烈建议每次升级前先对pgdata与assets两个文件夹做一次备份做到万无一失。官方在 备份指南 中同样强调Docker 方式部署时只需备份你用-v绑定的本地卷目录即可——对群晖而言就是挂载目标所在的两个共享文件夹。FAQ没有挂载卷就启动了如何挽救数据这是群晖用户最常踩的坑已经用默认方式启动过 OpenProject但当时没有配置卷挂载。此时更新容器会导致数据丢失吗不会只要旧容器还在就有补救办法。官方给出的路径是在群晖上通过SSH 或终端登录 DiskStation需要在控制面板中开启 SSH 功能参照 升级指南的对应小节 操作。其核心思路升级指南中的完整操作是从现存容器中把数据复制出来再用正确的挂载配置重建容器# 1. 先停止容器防止数据在复制过程中变化停止不会删除数据 # 2. 用 docker ps 查出容器名示例中为 openproject-community1 # 将数据复制到持久卷目录例如 /volume1 下的目录 docker cp openproject-community1:/var/openproject/assets /volume1/openproject/assets docker cp openproject-community1:/var/openproject/pgdata /volume1/openproject/pgdata # 3. 确保目录属主正确新容器才能读写注意是 UID 102即容器内的 app 用户 sudo chown -R 102 /volume1/openproject/*完成数据迁移后删除旧容器用新的、带卷挂载的配置重新启动容器再确认新容器运行正常最后才删除旧容器。这一流程与上文第二步卷配置中描述的方式完全一致——先补救数据再让后续升级走上正轨。运维提醒与进阶方向备份是升级的前提在 备份指南 中官方建议定期备份尤其是升级前。对 Docker 方式部署直接备份你绑定挂载的本地目录群晖上即pgdata与assets对应的共享文件夹即可可将它们复制到其他磁盘、S3 或 FTP 服务器。跨大版本升级需谨慎OpenProject 只支持相邻大版本之间的直接迁移如 16.x → 17.x跨两个及以上大版本时需要通过 升级指南 提供的分步数据库迁移脚本来处理群晖场景下的多版本跨越建议先在命令行环境中完成数据迁移再重建容器。进阶配置如需设置反向代理、子目录访问、自定义 SSL 证书、导入自签名根证书如连接使用自签名证书的 SMTP 或 Nextcloud 服务等请参考完整的 Docker 安装指南 与 配置指南这些内容在群晖上同样适用——群晖只是容器运行平台容器内部的行为与通用 Docker 完全一致。小结在群晖 NAS 上运行 OpenProject本质就是把 Docker 安装指南 的流程搬到图形界面中执行。只要抓住三条主线——Registry 中选对镜像标签、启动时挂载pgdata与assets两个卷、固定端口并开启自动重启——后续无论是日常使用还是版本升级数据安全与服务的可用性都能得到保障万一早期未挂卷也可以通过docker cp配合 升级指南 的步骤无损补救。【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进