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.ymlph-webimage

部署

  1. 编辑同目录 .env,至少改掉:
    • PHORGE_BASE_URI
    • 数据库密码
    • S3 / 对象存储相关密钥
  2. 启动:
docker compose up -d
  1. 本机 /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)

开发机侧通常安装 Arcanistarc),它是与 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:编译镜像 → 改 .envdocker compose up -d → 注册批准用户。正式上线前务必改默认密码与密钥,并按实际域名配置 PHORGE_BASE_URI