开源开发协作平台Phorge
Phorge 是 Phabricator 的社区维护分支,提供代码审查、任务跟踪、仓库托管、Wiki 等一体化研发协作能力。本文基于自维护的中文 Docker 镜像仓库 panyingyun/phorgenew,介绍如何快速本地部署一套可用的 Phorge。
项目地址:https://github.com/panyingyun/phorgenew
衍生自:rrvenn/phorge
上游:https://phorge.it / https://github.com/phorgeit/phorge
这个镜像有什么不同
phorgenew 是非官方 Phorge Docker 镜像,主要改动:
- 内置简体中文语言包
- apk / pip 默认走华为云源,国内构建更顺
- 用
docker compose一键拉起 Web、数据库和对象存储相关组件 - 已启用 Diffusion 的 Git LFS
适合想先试用 Phorge、又不想从零搭 PHP / MariaDB / phd 的场景。
编译镜像
需要 Docker ≥ 20.10。
有本机代理(例如 Clash 监听 127.0.0.1:7890)时:
git clone https://github.com/panyingyun/phorgenew.git
cd phorgenew
docker build --network host -t phorge-zh:latest .
--network host 必填,否则容器访问不到宿主机代理。代理地址可改 configs/gitconfig。
无代理时,把源码放到 phorge-src/,按 Dockerfile 注释把 git clone 换成 COPY,再构建:
docker build -t phorge-zh:latest .
镜像名改完后,同步修改 docker-compose.yml 里 ph-web 的 image。
部署
- 编辑同目录
.env,至少改掉:PHORGE_BASE_URI- 数据库密码
- S3 / 对象存储相关密钥
- 启动:
docker compose up -d
- 本机
/etc/hosts增加:
127.0.0.1 phorge.local
然后访问:http://phorge.local/
RustFS 控制台:http://<主机>:9001
首次使用
1. 启用用户名密码登录
默认可能未启用本地密码登录。可在容器里插入 Password Auth Provider,或在界面 Config → Auth 添加 Provider。示例命令见仓库 README。
2. 注册并批准用户
访问 /auth/register/ 注册,管理员批准:
docker compose exec ph-web sh -c \
'cd /var/www/phorge/phorge && bin/user approve --user <用户名>'
3. 切换中文
打开 设置 → 翻译,选择「中文(简体中文)」。
常用命令
docker compose logs -f ph-web
docker compose restart
docker compose down # 保留数据
docker compose down -v # 清空数据卷
docker compose exec ph-web sh -c \
'cd /var/www/phorge/phorge && bin/storage upgrade --force'
Git LFS(可选)
镜像已启用 diffusion.allow-git-lfs,仅对 Diffusion 中托管(hosted)的 Git 仓库有效:
git clone http://phorge.local/diffusion/<CALLSIGN>/<repo>.git
cd <repo>
git lfs install
git lfs track "*.bin"
git add .gitattributes
git commit -m "track lfs files"
git push
核心应用一览
Phorge 不是单一「Issue Tracker」,而是一组 Web 应用的集合:
| 应用 | 作用 |
|---|---|
| Differential | 代码审查(Revision / Diff),强调 提交前 审查 |
| Diffusion | Git / Mercurial / SVN 仓库浏览与托管 |
| Maniphest | Bug / 任务跟踪 |
| Projects / Workboards | 项目与看板(类 Kanban) |
| Phriction | Wiki 与文档 |
| Herald | 规则引擎:按条件自动指派、通知、触发动作 |
| Audit / Owners | 提交后审计、代码所有者 |
| Paste / Files / Phame 等 | 片段粘贴、文件、博客等周边能力 |
其中最「有辨识度」的是 Differential:先提交 Diff 做审查,再合入主干,和如今常见的「先推分支再开 PR」路径不同。喜欢 stacked diffs、细粒度审查、本地用 arc 推送变更的团队,往往更认这套模型。
3. 典型工作流(配合 Arcanist)
开发机侧通常安装 Arcanist(arc),它是与 Phorge 交互的命令行工具。
3.1 安装 Arcanist
依赖:PHP CLI、Git。
git clone https://github.com/phorgeit/arcanist.git
export PATH="$PATH:/path/to/arcanist/bin"
arc help
3.2 配置项目
在仓库根目录创建 .arcconfig(建议提交进 Git):
{
"phabricator.uri": "https://phorge.example.com/"
}
配置键名仍叫
phabricator.uri,这是历史兼容,指向你的 Phorge 实例即可。
然后绑定本机账号凭证:
arc install-certificate
3.3 日常审查命令(示意)
# 创建 / 更新待审 Diff
arc diff
# 查看自己相关的 revision
arc list
# 拉取他人的变更到本地
arc patch D123
# 合入(视团队策略与权限)
arc land
实际团队还会配合 lint、单元测试钩子、Herald 自动指派 reviewer,把「提交 → 审查 → 合入」收成固定流水线。
小结
用 phorgenew 可以较快搭起一套带中文界面的 Phorge:编译镜像 → 改 .env → docker compose up -d → 注册批准用户。正式上线前务必改默认密码与密钥,并按实际域名配置 PHORGE_BASE_URI。