最稳方式是Docker Compose安装,官方唯一完整支持;需克隆deploy仓库而非主代码库,正确配置.env(如OPENPROJECT_HTTPS=false、HOST_NAME和PORT一致),启动前执行docker-compose pull避免旧镜像bug,注意防火墙放行端口及容器端口映射是否成功。

用 Docker Compose 安装最稳,别碰包管理器
直接用 apt install openproject 或 yum install openproject 容易卡在 Ruby 版本、PostgreSQL 配置或权限问题上,尤其 Ubuntu 24.04 / Rocky 9 等新系统。Docker Compose 是目前唯一能跨发行版稳定跑通的方式,官方也只对它提供完整支持。
- 确保已安装
docker和docker-compose(注意不是docker compose,旧版命令),版本不低于docker 24.0+、docker-compose 2.20+ - 克隆的是部署仓库,不是主代码库:
git clone https://github.com/opf/openproject-deploy --depth=1 --branch=stable/16 openproject - 进到
compose子目录再操作,别在根目录下瞎跑docker-compose up -
.env文件必须重命名自.env.example,且至少改三处:OPENPROJECT_HTTPS=false(开发环境)、OPENPROJECT_HOST__NAME="192.168.15.96:8080"(填你实际访问的 IP+端口)、PORT=8080(保持一致)
启动前必须 pull 镜像,否则可能拉到过期 tag
OpenProject 的镜像标签(如 16-slim)会随 patch 版本滚动更新,但 docker-compose up -d 默认不检查远程是否有新版。不手动 pull 就启动,大概率跑的是几周前的镜像,已知存在 RAILS_MAX_THREADS 不生效、IMAP_ENABLED 被忽略等 bug。
- 执行
docker-compose pull再docker-compose up -d - 检查容器日志是否报
PG::ConnectionBad:说明DATABASE_URL里的密码(默认p4ssw0rd)和postgres容器的POSTGRES_PASSWORD不匹配,得同步改 - 首次启动后等 2–3 分钟再访问,后端要自动跑
db:migrate和assets:precompile,页面空白或 502 不代表失败
访问不了?先看端口和 HTTPS 强制跳转
默认 OPENPROJECT_HTTPS=true 会强制所有请求跳 301 到 HTTPS,但容器里没配证书——结果就是浏览器一直重定向,最终显示 ERR_TOO_MANY_REDIRECTS。这是新手最高频的“打不开”原因。
- 开发/内网环境务必设
OPENPROJECT_HTTPS=false,并确认OPENPROJECT_HSTS=false -
OPENPROJECT_HOST__NAME只能填一个地址,不能写逗号分隔,也不能用*;如果填了openproject.xk.com:8899,就必须用这个域名+端口访问,localhost:8899会 404 - 宿主机防火墙要放行端口:
sudo ufw allow 8080(Ubuntu)或sudo firewall-cmd --add-port=8080/tcp --permanent(Rocky) - 容器启动后,用
docker-compose ps确认app和db都是Up状态,app的Ports列显示0.0.0.0:8080->80/tcp才算映射成功
备份和重启不能用 systemctl
用 Docker 部署的 OpenProject,systemctl status openproject 查不到服务,sudo openproject restart 会报错“command not found”。所有运维动作都得走 Docker 命令,硬切回包管理器方式只会让两个环境冲突。
- 重启服务:
docker-compose restart app(只重启应用容器),或docker-compose up -d --force-recreate app(重建并启动) - 停服务:
docker-compose stop,不是systemctl stop - 备份数据:
docker exec openproject-db pg_dump -U postgres openproject > backup.sql(openproject-db是 compose 中 db 服务的容器名,以你docker-compose.yml为准) - 恢复数据:
cat backup.sql | docker exec -i openproject-db psql -U postgres openproject
配置改完不生效?别 reload nginx —— OpenProject 的 Nginx 在 app 容器里,不是宿主机上的独立服务。改了 .env 必须 docker-compose up -d --force-recreate app 才行。


















