ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

OpenProject 如何在离线(气隙)环境中安装?

2026/9/15 16:14:29 拓冰建站 浏览量
OpenProject 如何在离线(气隙)环境中安装? OpenProject 如何在离线气隙环境中安装【免费下载链接】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如果目标服务器无法访问互联网例如生产内网、气隙隔离环境直接docker pull或在线安装 OpenProject 都不可行。官方给出的方案是在一台有网络的机器上拉取并导出 Docker 镜像把单个归档文件搬到离线主机再用docker load加载后按常规 Docker 方式启动。Docker 镜像内置了全部依赖因此离线主机上只需要已经装好 Docker Engine。本文基于 Docker all-in-one 安装文档 的 Offline/air-gapped installation 章节和 安装 FAQ 整理覆盖准备、镜像导出、传输、加载与启动验证。为什么选择 Docker 而不是离线安装包安装 FAQ 明确回答了能否离线安装基于 Linux 包deb/rpm的安装方式在安装过程中需要加载相当数量的依赖如 SQLite3、unzip、poppler-utils、unrtf 等因此官方推荐离线安装使用 Docker 方案。Docker 镜像包含所有依赖可以通过docker save作为单个文件传输没有其他额外依赖。FAQ 还给出了另一条可选路径在可以联网的虚拟机上装好 OpenProject再把整台虚拟机镜像复用到离线主机。本文主线采用官方推荐的 Docker 方案。前提条件离线主机已安装 Docker Engineall-in-one 容器要求主机上有 Docker通常需要一个较新的操作系统见 Docker 文档开头。另有一台可访问互联网、同样装有 Docker 的机器用于拉取和导出镜像。硬件要求系统要求文档适用于单台服务器、最多 200 个总用户CPU四核≥ 2 GHz内存4096 MB空闲磁盘20 GB架构支持从 OpenProject 12.5.6 起容器同时发布AMD64x86和ARM64两个架构注意BIM Edition 仅支持 AMD64。镜像体积文档说明导出文件约为700 MB传输介质需要能容纳它。另外all-in-one 容器有一个与离线无关但需要提前知道的限制该容器方案不支持在 OpenProject 内部集成本地代码仓库可以引用外部仓库但不能通过 OpenProject 本身来配置仓库需要此功能只能用包安装方式而包安装恰恰不适合离线场景。第一步在有网机器上导出镜像在可以访问互联网的系统上执行docker pull openproject/openproject:17 docker save openproject/openproject:17 | gzip openproject-stable.tar.gz这会生成一个包含 OpenProject Docker 镜像的压缩归档openproject-stable.tar.gz文档说明体积约 700 MB。这里的17是文档当前使用的非浮动版本标签如需其他版本替换为对应的X.Y.Z标签即可。可选传输前验证镜像签名与来源文档说明每个发布到 Docker Hub 的 OpenProject 镜像都用 Sigstore cosign 做了 keylessOIDC签名附带 Release、SBOM、VEX 等认证信息。原文指出这是可选的但对生产环境和气隙安装推荐执行。在在线机器上安装 cosign 后可以验证例如 SBOM 这一项认证cosign verify-attestation \ --type https://cyclonedx.org/bom/v1.6 \ --certificate-identity-regexp https://github.com/.*/.github/workflows/.* \ --certificate-oidc-issuer https://token.actions.githubusercontent.com \ openproject/openproject:16其他认证类型Release、VEX可用同样的命令更换--type验证。文档还建议生产环境应把校验固定到不可变摘要openproject/openprojectsha256:...而不是标签用cosign tree openproject/openproject:16可以列出镜像上挂载的全部信息。第二步把归档文件传到离线主机把openproject-stable.tar.gz复制到目标系统用任何可行的方式文档列举了 sftp、scp以及在真正气隙air-gapped场景下使用U 盘。第三步在离线主机上加载镜像文件到位后执行gunzip openproject-12.tar.gz docker load -i openproject-12.tar这会解压归档并把其中的镜像层加载进 Docker。加载完成后.tar文件即可删除。文档原样说明原文第一步生成的文件名是openproject-stable.tar.gz而第三步的示例命令里写的是openproject-12.tar.gz/openproject-12.tar。执行时请把这两个文件名替换为你实际传输的文件名本文示例统一用openproject-stable.tar.gz对应解压出的openproject-stable.tar。第四步按常规方式启动容器加载完成后安装和后续升级都与平时一样——你只是把平时的docker pull或隐式拉取换成了上面的导出/加载步骤。快速验证可用文档 Quick Start 中的命令容器内已内置 PostgreSQL、memcached属于测试/起步用的 all-in-one 方案docker run -it -p 8080:80 \ -e SECRET_KEY_BASEyour-secret-key-base \ -e OPENPROJECT_HOST__NAMElocalhost:8080 \ -e OPENPROJECT_HTTPSfalse \ -e OPENPROJECT_DEFAULT__LANGUAGEen \ openproject/openproject:17各变量的用途均来自文档说明-p 8080:80把容器 80 端口映射到宿主机 8080。SECRET_KEY_BASERails 的密钥基替换为强随机值文档建议用openssl rand -hex 64生成。它必须像密码一样妥善保管每次启动容器都必须复用同一个值否则已有会话和加密后的数据库内容将无法读取OpenProject 会拒绝以默认值或弱值启动。OPENPROJECT_HOST__NAME应用主机名用于生成表单和邮件中的链接需要与外部请求的主机名一致。OPENPROJECT_HTTPSfalse关闭默认开启的 HTTPS 模式让实例可以走纯 HTTP。文档强烈建议生产系统不要设为 false而是在外层 Web 服务器做 TLS 终结离线内网中若没有外部代理请自行评估。OPENPROJECT_DEFAULT__LANGUAGE控制首次安装时基础数据和演示数据使用的语言同时作为新用户的默认回退语言。首次启动会花一些时间初始化成功标志是文档描述的几分钟后终端出现成功信息并给出默认管理员口令登录名admin密码admin随后可用浏览器访问http://localhost:8080。该命令不做守护化、日志直接打在终端上便于排查确认无误后如需后台运行改用-ddocker run -d -p 8080:80 \ -e SECRET_KEY_BASEyour-secret-key-base \ -e OPENPROJECT_HOST__NAMElocalhost:8080 \ -e OPENPROJECT_HTTPSfalse \ openproject/openproject:17如果重启容器不丢数据文档建议在宿主机上创建/var/lib/openproject/{pgdata,assets}两个目录并挂载进容器生产用法需设置正确的对外主机名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命名后可用docker stop openproject/docker start openproject停启。排查与限制伪 TTY 启动失败文档记录了有用户因 pseudo-TTY 分配和写入/dev/stdout的权限问题无法以此方式启动 OpenProject给出的变通做法是即使使用-d也加上-t参数。all-in-one 容器不适合直接当生产形态文档明确不推荐把单容器方案直接用于生产它关闭 HTTPS、且数据库与组件耦合影响后续升级更完整的生产路径是 Docker Compose 安装每组件一个容器。离线环境下同样适用只是把 compose 流程里的docker pull换成本文的docker save/docker load文档原话是你只是把docker-compose pull或镜像的常规隐式下载替换成了这里描述的步骤。升级离线升级流程与在线一致同样是先在联网侧导出新版本镜像再传输加载然后按对应安装方式正常升级。版本标签文档推荐使用非浮动标签X.Y.Z用于生产浮动标签X.Y在补丁版本发布时会更新且紧急修复的补丁版本仍可能触发数据库迁移需要能运行 seeder/migrations 任务。完成上述步骤后离线主机上的验证方式就是第四步的成功标志终端出现默认管理员口令提示并且浏览器能打开http://localhost:8080用admin/admin登录。若需要更深入的配置项参考 配置文档。【免费下载链接】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),仅供参考