Pagure 介绍与选型指南
Pagure 介绍与选型指南:以 git 为中心的开源代码托管平台认知篇,涵盖官方溯源的定位沿革、Flask+pygit2+gitolite3 架构、功能特性、部署路径、适用限制,并与 GitLab CE、Gitea、Forgejo 做版本节奏与资源口径的量化对比,全部数据标注来源与查询日期。
Pagure 介绍与选型指南
目标:为「是否选用 Pagure 作为自托管 Git 代码托管与协作平台」提供认知与选型依据。本篇为认知篇,全部事实来自官方站点、官方文档与项目仓库的联网溯源,每项关键数据均标注来源与查询日期(统一查询日期 2026-10-28);本地实测的安装、配置与运维操作不在本篇展开,见 《Pagure 5.14.1 Ubuntu 22.04 安装指南》、《Pagure 5.14.1 配置参数详解》 与 《Pagure 5.14.1 常用 CLI 与运维命令详解》。
一、环境信息
本篇为纯联网溯源的认知类文档,不涉及本地实测环境,信息检索环境如下:
- 检索执行日期:2026-10-28(所有「查询日期」均指该日)
- 检索渠道:
- Pagure 官方项目页与官方文档:
https://pagure.io/pagure、https://docs.pagure.org/pagure - Pagure 官方 git 仓库 tags:
https://pagure.io/pagure.git(git ls-remote实查最新 tag) - Fedora 社区博客与官方讨论区:
https://communityblog.fedoraproject.org、https://discussion.fedoraproject.org - Forgejo 官方博客:
https://forgejo.org - GitLab 官方安装要求:
https://docs.gitlab.com/ee/install/requirements.html - Gitea 官方文档:
https://docs.gitea.com/installation/install-from-binary
- Pagure 官方项目页与官方文档:
- 对比对象的版本与活跃度数据取自各项目官方发布渠道(GitLab tags atom、Gitea 官方发布页、Forgejo 官方发布页、GitHub 同步仓库页面),并经代理网络实查,与本文同日完成。
- 本组件其余三篇实测文档的环境为 Ubuntu 22.04.5 LTS(x86_64),实测日期同为 2026-10-28。
💡 说明:溯源类文档的结论强度取决于来源等级。本篇引用的均为一手来源(项目官方仓库、官方文档、官方社区博客),对无法一手验证的信息(如社区口碑)不做断言,仅在选型建议中给出定性判断并说明依据。
二、软件概述
2.1 定位
Pagure 是一个「以 git 为中心的代码协作平台(git-centered forge)」,基于 Python 与 pygit2 构建(来源:官方项目页自述,docs.pagure.org/pagure,查询日期 2026-10-28)。官方对它的定位描述为:托管项目及其文档、通过工单系统收集问题与增强请求、允许用户 fork 项目并通过 pull-request 机制贡献代码——即一套完整的开源代码托管与协作能力,与 GitHub/GitLab 在功能形态上同类,但强调「从架构到部署都可以完全自主可控」。
Pagure 由 Fedora 社区打造并长期作为 Fedora 项目的官方代码托管与协作平台使用,其典型部署规模是整个 Linux 发行版的源码包与基础设施仓库托管,这在同类自托管 forge 中是独一份的工程背景(来源:Fedora 社区博客与官方讨论区,查询日期 2026-10-28,详见 2.3 与 6.3)。
2.2 名称由来
「Pagure」一名取自法语单词 pagure,是寄居蟹总科(Paguroidea,即寄居蟹类甲壳动物)在法语中的俗名(来源:官方文档「About its name」小节,docs.pagure.org/pagure,查询日期 2026-10-28)。官方还录制了作者本人朗读的发音样本,强调法语式的重读 g 音。
2.3 发展沿革
- 项目由 Pierre-Yves Chibon(社区 ID:pingou)创建并长期维护,官方文档项目页显示「Created 12 years ago」(以查询日 2026-10-28 回推约为 2014 年前后立项)、「Releases 142」(来源:docs.pagure.org/pagure 页面,查询日期 2026-10-28)。
- Pagure 长期是 Fedora 项目的基础设施核心:Fedora 的代码托管(含 rpm 源码包的 dist-git 工作流)与议题协作均运行在 Pagure 之上(来源:Fedora 社区博客《The forge is our new home》对 pagure.io 历史作用的回顾,查询日期 2026-10-28)。
- 2024 年 12 月,Fedora 决定将代码与议题托管从自研的 Pagure 迁移至 Forgejo(来源:Forgejo 官方 v13.0 发布博文对这一决定的引用,forgejo.org/2025-10-release-v13-0/,查询日期 2026-10-28);Fedora 社区博客随后宣布「retire our homegrown forge」,最终切换计划在 Flock to Fedora 2026 大会前后完成(来源:communityblog.fedoraproject.org/the-forge-is-our-new-home/,查询日期 2026-10-28)。Fedora Release Engineering 团队也已公告进入从 Pagure 迁移到 Forgejo 的最终阶段(来源:discussion.fedoraproject.org 官方帖,查询日期 2026-10-28)。
- 上游最新版本为 5.14.1,tag 日期 2024-05-24(来源:官方 git 仓库
git ls-remote https://pagure.io/pagure.gittags 实查,查询日期 2026-10-28);官方项目页顶部已标注「MOVED TO forge.fedoraproject.org」(查询日期 2026-10-28)。
⚠️ 注意:2024-05 之后上游无新版本发布,官方社区已转入 Forgejo 迁移通道,这是本文档集所有选型建议的核心背景。Pagure 仍可自托管使用(本文档集 5.14.1 实测可完整跑通),但选型前必须清楚其上游维护状态。
2.4 维护与上游现状
综合官方信息(查询日期 2026-10-28):pagure.io 站点已处于日落收尾阶段,项目文档页不再以活跃社区形态运营(页面标注维护者为创建者本人、项目已移至 Fedora 新 forge 域名下);软件本体 5.14.1 仍是最新 tag;Fedora 官方对 Pagure 的定性是「自研 forge 退役、迁移到 Forgejo」。对使用者而言,这意味着:现有部署可继续运行,问题类求助更多依赖社区既有文档与源码阅读,而非活跃的上游支持通道。
三、核心架构
3.1 技术栈
Pagure 的技术栈组合(来源:官方文档与 requirements 依赖清单,docs.pagure.org/pagure,查询日期 2026-10-28;栈内各组件的协同方式另经 Ubuntu 22.04.5 LTS 实测验证,见安装指南篇):
- Web 框架:Python + Flask,模板渲染服务端页面
- git 操作库:pygit2(libgit2 的 Python 绑定),直接读写 git 仓库;官方明确要求 pygit2 版本与系统 libgit2 版本对齐(官方 README 手工部署段:「pip install pygit2==<version of libgit2 found>.*」)
- 数据库:PostgreSQL(生产)/ SQLite(开发)
- 任务队列:Celery + Redis(webhook 派发、邮件、仓库同步等异步任务)
- SSH 授权:gitolite3(git 协议与 SSH 推送的访问控制)
- 文档与元数据:议题、文档、PR 均以独立 git 仓库形态存储(见 3.3)
3.2 服务组件
一次完整的生产部署通常包含以下进程角色(角色划分与官方文档的部署模型一致):
| 角色 | 说明 |
|---|---|
| pagure-web | Flask/gunicorn Web 应用,承载页面与 REST API |
| pagure-worker | Celery worker,处理异步任务(hook 派发、通知、远端仓库同步类任务等) |
| PostgreSQL | 项目、用户、议题、PR 等结构化数据 |
| Redis | Celery 消息代理与事件源(EventSource)支撑 |
| gitolite3 + git 用户 | SSH 通道授权与仓库 ACL 编译 |
| Nginx(可选) | 反向代理与访问日志 |
💡 技术拓展:git 托管平台的 SSH 授权实现不止 gitolite3 一种。常见方案对比——
方案 原理/特点 适用场景 gitolite3 独立授权层,conf 文件声明仓库权限,keydir 管理公钥 传统精细 ACL、可审计配置 内置实现 平台自研 authorized_keys/内置 SSH 服务直接接管 Gitea/Forgejo/GitLab 采用,免装外部组件 git-daemon 仅匿名只读 git:// 协议 公开仓库只读分发 Pagure 实际采用 gitolite3(配置键
GIT_AUTH_BACKEND = 'gitolite3'),把 SSH 命令交给 gitolite-shell 处理,这带来最细粒度的仓库级 ACL,但也增加了部署组件与排查链路长度。
3.3 多仓库存储模型
Pagure 的一个显著设计是「一个项目 = 一组 git 仓库」:除主代码仓库外,议题(tickets/issues)、文档(docs)、PR(requests)各自都是独立的 git 仓库。官方 README 手工部署段落要求一次性创建「projects, forks, docs, requests and tickets' git repo」的目录结构,即是该模型的直接体现(来源:docs.pagure.org/pagure,查询日期 2026-10-28)。
这一设计的直接收益是议题与 PR 的全部内容(正文、评论变更)天然具备版本历史与离线可迁移性;代价是磁盘上仓库数量成倍增长,备份与巡检需覆盖整组目录(备份与恢复的实测做法见运维命令篇第四章)。
3.4 SSH 授权链
SSH 推送链路为:客户端 → git 用户(gitolite-shell)→ gitolite3 ACL 判定 → 仓库 + Pagure 服务端钩子(hookrunner)。公钥管理与 authorized_keys 生成由 Pagure 写入 gitolite 管理仓库(keydir),再由 gitolite 编译生效(来源:官方文档 gitolite 配置章节;全链路实测过程见安装指南篇与运维命令篇)。
四、功能特性
以下功能清单以官方文档与官方 README 的明示内容为准(来源:docs.pagure.org/pagure,查询日期 2026-10-28),并标注可在本平台其余三篇中验证的部分。
4.1 代码托管与协作
- git 仓库托管、fork、pull-request(官方 README 自述的三大核心能力);
- 分支管理、标签、发布文件(releases)目录;
- 项目可设私有(配置键
PRIVATE_PROJECTS)与只读锁定(read-only 标志)。
4.2 议题与文档
- 议题/工单系统:bug 报告与增强请求,支持标签、优先级、里程碑等元数据(官方 README:「report issues or request enhancements using the ticketing system」);
- 项目文档托管:每个项目可挂独立文档站点(配置键
DOC_APP_URL指向文档服务)。
4.3 权限组与 API
- 群组(group)管理:按组授予项目权限,配合管理员组(
ADMIN_GROUP)做平台级管理; - REST API + 令牌(token)体系:API 令牌按 ACL 细分权限,覆盖议题、PR、仓库操作等接口(运维命令篇 4.6 节实测了令牌 ACL 的刷新与查看);
- 管理员 CLI:
pagure-admin提供用户封禁、项目删除、ACL 同步、gitolite 刷新等管理子命令(运维命令篇全量实测)。
4.4 dist-git 与发行版集成
Pagure 支持「主仓库 + 门禁分支」的 dist-git 工作流,Fedora 即用它托管 rpm 源码包并驱动打包协作(来源:Fedora 基础设施公开信息与社区博客回顾,查询日期 2026-10-28)。对希望复刻「发行版级源码包管理」流程的团队,这是 Pagure 相对其他 forge 的差异化能力。
4.5 扩展机制
- 服务端钩子(hook)体系:pre-receive/post-receive 等钩子由统一入口 hookrunner 派发,官方与自定义插件通过该机制接入;
- Webhook 与 Fedmsg/Fedora 消息总线通知(配置键
WEBHOOK、FEDMSG_NOTIFICATIONS); - 插件化项目开关:issue tracker、docs、PR 等能力可按项目启停(
ENABLE_TICKETS、ENABLE_DOCS)。
五、快速开始
5.1 官方部署路径概览
官方 README 给出三类启动方式:开发环境脚本、Vagrant 虚拟机、手工部署(来源:docs.pagure.org/pagure「Get it running」章节,查询日期 2026-10-28)。面向真实服务器的是手工部署路径,官方步骤可归纳为六步:
- 安装系统级依赖(git、python3、libgit2 开发库、redis、编译工具链等,Fedora 侧
dnf install git python3 python3-devel libgit2-devel redis libjpeg-devel gcc libffi-devel redhat-rpm-config,逐字取自官方 README); git clone https://pagure.io/pagure.git取源码;- 建 Python 虚拟环境,先按系统 libgit2 版本钉住 pygit2(
pip install pygit2==<libgit2 版本>.*),再pip install -r requirements.txt; - 创建 repos/remotes/attachments/releases 等数据目录,复制并编辑 alembic.ini 后执行
python createdb.py --initial alembic.ini初始化数据库; - 启用并启动 redis(
systemctl enable redis+systemctl start redis,逐字取自官方 README); - 分别运行
./runworker.py与./runserver.py,访问http://127.0.0.1:5000验证。
以上为官方原文给出的最小启动路径,适用于快速验证;它未包含生产所需的 systemd 托管、gitolite3 授权链与反向代理配置。
5.2 Ubuntu 22.04 部署指引
Ubuntu 22.04 侧有两点官方事实需要先知道:其一,官方未提供 deb 软件包与 PPA 安装通道;其二,PyPI 上没有 pagure 包,安装必须从 git 源码出发(来源:官方文档安装章节与 PyPI 公开页面,查询日期 2026-10-28)。因此 Ubuntu 上的可行路径即「源码 + 虚拟环境」部署。本文档集已在 Ubuntu 22.04.5 LTS 上完成了从依赖钉版、PostgreSQL/Redis/gitolite3 配置、systemd 托管、Nginx 反代到 SSH 推送端到端验证的完整实测,逐步命令与真实回显见 《Pagure 5.14.1 Ubuntu 22.04 安装指南》。
5.3 最小验证清单
无论何种路径部署,完成后的最小验证清单为:首页 HTTP 200、/api/0/version 返回 API 版本、创建用户并登录、建立项目并完成一次 SSH 推送(各步实测回显见安装指南篇第七章与运维命令篇第四章)。
六、适用场景与限制
6.1 适用场景
- 希望完全自主掌控代码托管平台技术栈(Python 全栈、无闭源组件)的团队;
- 需要 dist-git 式「源码包 + 门禁分支」工作流的发行版/软件集合维护组织;
- 已在 Fedora 生态内、希望与 Fedora 工作流保持一致的基础设施团队;
- 对 gitolite3 细粒度 ACL 有明确需求、愿意承担多组件部署复杂度的环境。
6.2 已知限制
- 上游自 2024-05(5.14.1)后未再发版,无新特性与官方安全补丁节奏(来源:官方 git 仓库 tags 实查,查询日期 2026-10-28);
- 无官方 deb/RPM 之外的现代化分发渠道(PyPI 无包),升级需自行跟踪 git 主干;
- 部署组件多(web/worker/PostgreSQL/Redis/gitolite3),相比单二进制方案运维面更宽;
- 部分管理命令存在版本缺陷(如 5.14.1 的
pagure-admin refresh-ssh需应用上下文变通,实测记录见运维命令篇 4.5 节)。
6.3 迁移与风险提示
Fedora 已官方决定从 Pagure 迁移至 Forgejo,并把最终切换定在 Flock to Fedora 2026 前后(来源见 2.3);Forgejo 官方提供了从 Pagure 迁移仓库的能力(来源:forgejo.org v13.0 发布博文,查询日期 2026-10-28)。选型 Pagure 的团队应同步规划退出路径:优先在选型期评估 Forgejo/Gitea 的仓库迁移接口,避免数据长期锁定在维护放缓的上游。
七、同类选型对比
7.1 对比总表
四个主流可自托管 forge 的量化对比(各列数据来源与查询日期见 7.2/7.3 的分项说明;「—」表示该项未公开对应口径数据):
| 维度 | Pagure 5.14.1 | GitLab CE 19.5.2 | Gitea 28.2.0 | Forgejo 17.0.1 |
|---|---|---|---|---|
| 最新版本 / 日期 | 5.14.1 / 2024-05-24 | 19.5.2 / 2026-10-27 | 28.2.0 / 2026-10-18 | 17.0.1 / 2026-10-26 |
| 开发语言 / 技术栈 | Python(Flask + pygit2) | Ruby on Rails + Go 组件 | Go(单二进制) | Go(单二进制,Gitea 分支) |
| 许可证 | GPLv2+ | MIT(开源核心 + 商业版双轨) | MIT | MIT |
| 数据库 | PostgreSQL(生产)/SQLite(开发) | PostgreSQL(唯一支持) | SQLite / MySQL / PostgreSQL 内置支持 | SQLite / MySQL / PostgreSQL 内置支持 |
| SSH 授权 | gitolite3 外置 | 内置 | 内置 | 内置 |
| 官方资源口径 | —(无官方量化要求) | 1000 用户/20 req/s 需 8 vCPU + 16 GB,最低约 8 GB 可运行 | 轻:单二进制 + Git ≥ 2.0,支持树莓派级 arm64 设备 | 与 Gitea 同源同量级 |
| 社区活跃度(星标) | GitHub 同步仓库 228 stars,上游 2024-05 后无发版 | —(主仓库自托管于 GitLab.com) | GitHub 约 59k stars | Codeberg 主仓库 5731 stars |
| 背景组织 | Fedora 社区 | GitLab Inc. | Gitea 社区 | Codeberg e.V.(非营利) |
| 2026-10 现状 | Fedora 官方宣布退役并迁移 Forgejo | 活跃,月度发版 | 活跃 | 活跃,承接 Fedora 迁移 |
7.2 版本节奏与维护状态量化
以查询日期 2026-10-28 为基准的版本数据(各来源均为官方发布渠道当日实查):GitLab CE 已到 v19.5.2(tags atom,2026-10-27)且保持高频月度发版;Gitea v28.2.0 发布于 2026-10-18;Forgejo v17.0.1 发布于 2026-10-26;Pagure 最新 tag 5.14.1 发布于 2024-05-24,距今约两年五个月无新版本。版本节奏是判断 forge 类平台维护健康度最直接的量化指标——GitLab/Gitea/Forgejo 均在最近十日内有发布,Pagure 的发布间隔已达年量级。
7.3 资源占用与部署复杂度
- GitLab CE 官方安装要求:面向最多 20 请求/秒或 1000 用户需 8 vCPU + 16 GB 内存,内存受限场景最低约 8 GB 可运行;Linux 包安装本体约需 2.5 GB 存储;PostgreSQL 为唯一支持数据库(来源:docs.gitlab.com/ee/install/requirements.html,查询日期 2026-10-28)。
- Gitea 官方二进制部署文档:单二进制内嵌资产与 SQLite/MySQL/PostgreSQL 三种数据库支持,硬性依赖仅 Git ≥ 2.0,提供 arm64 等面向树莓派 4 级设备的构建(来源:docs.gitea.com/installation/install-from-binary,查询日期 2026-10-28)。
- Forgejo 与 Gitea 同源,部署形态同为单二进制(来源:forgejo.org 官方站点对自身定位的描述,查询日期 2026-10-28)。
- Pagure 无官方量化资源口径;按技术栈推算介于两者之间(Python 多进程 + 独立 gitolite3),本平台安装指南篇在 2 vCPU/4 GB 级实例上完成了全组件实测,可作为小型部署的资源参考。
关键差异:单二进制方案(Gitea/Forgejo)把「部署面」压到最低;GitLab 用资源换全家桶功能;Pagure 的组件面与 GitLab 相近但功能面小得多,资源口径却缺乏官方文档,属于「部署成本与文档完备度不成比例」的组合。
7.4 功能与工作流差异
- 功能广度:GitLab 内置 CI/CD、软件制品仓库、安全扫描等平台级能力;Gitea/Forgejo 内置轻量 CI(Actions/runner);Pagure 无内置 CI,需经 webhook/hook 机制外接。
- 权限模型:Pagure 依赖 gitolite3 提供仓库级 ACL 文件(可版本化审计),其余三家为应用内置权限体系。
- 工作流特色:Pagure 的 dist-git 门禁分支模型在发行版源码包场景独有;GitLab 优势在一体化 DevOps;Gitea/Forgejo 优势在轻量与低维护成本。
- 迁移性:Forgejo 官方支持从 Pagure 迁移仓库(来源:forgejo.org v13.0 博文,查询日期 2026-10-28);Gitea 与 Forgejo 互为分支、仓库格式兼容度高;GitLab 提供各平台通用导入器。
7.5 选型建议
- 新建自托管代码平台、无 Fedora/dist-git 诉求:优先 Gitea 或 Forgejo(轻量、活跃、迁移通道清晰);二者之间按治理偏好取舍(Forgejo 由非营利协会治理且承接了 Fedora 官方迁移)。
- 需要一体化 CI/CD 且资源预算充足:GitLab CE。
- 明确需要 dist-git 工作流或 Python 全栈自主可控、且能接受上游放缓与自担运维:可选 Pagure,并按安装指南篇的实测路径落地;同时按 6.3 规划向 Forgejo 的迁移预案。
- 已在运行 Pagure 的存量环境:保持 5.14.1 稳定运行(配置与运维见配置篇与命令篇),把升级窗口留给迁移评估而非等待上游新版本。
八、参考链接
- Pagure 官方项目页(含 MOVED 标注与名称由来):https://pagure.io/pagure
- Pagure 官方文档(含手工部署步骤):https://docs.pagure.org/pagure/
- Pagure 官方 git 仓库(tags 实查):https://pagure.io/pagure.git
- Forgejo v13.0 发布博文(Fedora 迁移决定引用):https://forgejo.org/2025-10-release-v13-0/
- Fedora 社区博客《The forge is our new home》:https://communityblog.fedoraproject.org/the-forge-is-our-new-home/
- Fedora Release Engineering 迁移公告:https://discussion.fedoraproject.org/t/fedora-release-engineering-is-migrating-to-forgejo/171937
- GitLab 安装要求:https://docs.gitlab.com/ee/install/requirements.html
- Gitea 二进制安装文档:https://docs.gitea.com/installation/install-from-binary
- 延伸阅读(本平台实测文档):《Pagure 5.14.1 Ubuntu 22.04 安装指南》、《Pagure 5.14.1 配置参数详解》、《Pagure 5.14.1 常用 CLI 与运维命令详解》