Forgejo vs Gitea:哪个开源自托管的 Git 服务更适合你
零、一句话总结
Forgejo 和 Gitea 在日常使用层面几乎一样,但两者的灵魂完全不同:
- Gitea 是一个由商业公司(Gitea Ltd)控制的开源核心(open-core)项目,走的是务实路线
- Forgejo 是一个由非营利协会(Codeberg e.V.)全权拥有的社区治理项目,走的是理念路线
选择哪一个,本质上是价值观选择,而非技术选型。
一、完整故事线:从 Gogs 到 Gitea 到 Forgejo 的两次分叉
Gogs(2014)— 起点
国人开发的 Go 语言 Git 服务,主打"开箱即用、部署简单"。但长期由单核心作者(Unknwon)主导开发,合并 PR 速度慢,社区声音得不到回应。
Gitea(2016 年 11 月,从 Gogs 分叉)
一群核心贡献者因不满 Gogs 的"单维护者管理模式"而分叉,在 GitHub 上创建了 Gitea 组织。打出了社区驱动的旗帜,快速迭代:
- Issues、Pull Request、看板、Webhooks 等现代化功能迅速补齐
- 中文文档全、更新快、社区活跃
- 迅速成为最流行的自托管 Git 平台(GitHub 56K+ stars)
- 许可证:MIT
到 2022 年,Gitea 已经是一个成熟的、广泛部署的 Git 服务,被全球无数团队和公司在生产环境中使用。
争议爆发(2022 年 10 月)
2022 年 10 月,Gitea 的两名核心所有者(Lunny Xiao 和 Matti Ranta)在未与社区沟通、未经过投票的情况下,将 Gitea 的域名(gitea.io、gitea.com)和商标悄然转移到了新注册的香港商业公司 Gitea Ltd。
社区反应强烈。2022 年 10 月 25 日,多名贡献者联署发出公开信,要求:
- 将域名和商标转移至非营利组织名下
- 建立透明的治理结构
- 社区参与重大决策
这些要求被 Gitea Ltd 拒绝。
Forgejo 诞生(2022 年 12 月 15 日)
公开信无法改变结果后,社区中的一派决定再次分叉。在 Codeberg e.V.(德国柏林注册的非营利协会)的赞助下,Forgejo 项目宣布成立。
名字来源于世界语 forĝejo(锻造车间),暗示这是一个由社区锻造的平台。
关键决策教训:Forgejo 吸取了 Gogs → Gitea 的经验,从一开始就安排了域名和商标由 Codeberg e.V. 持有,而不是任何个人名下。项目仓库托管在自己的 Codeberg 平台上(而非 GitHub),实现了真正的"自举"。
软分叉阶段(2022 年 12 月 — 2024 年 2 月)
Forgejo 以"软分叉"(soft fork)方式运作,类似于 LineageOS 与 Android 的关系:
- 追踪 Gitea 上游开发分支
- 在 feature 分支中工作并定期 rebase 纳入 Gitea 改动
- 在此之上叠加 Forgejo 特有的改进(如治理文档、CI 质量要求等)
- 作为 Gitea 的"透明升级替代品",替换二进制即可完成迁移
硬分叉决定(2024 年 2 月)
2024 年 2 月 16 日,Forgejo 正式宣布成为 Gitea 的硬分叉(hard fork)。理由:
- 稳定性问题:Gitea "合并了未经测试的海量代码(包含功能或重构),导致重要回归问题"
- 治理分歧不可弥合:Gitea 已转向 open-core 模式,社区合作的信任已破裂
- 独立性需求:Forgejo 有资金、资源和治理能力独立运营
- Gitea 不配合:Gitea 多次"重新实现"已被 Forgejo 修复的 bug 或功能,加速了分歧
宣布时的承诺:
- Gitea v1.21.5 及之前版本仍可透明升级到 Forgejo
- API 将尽量保持向前兼容
- 之后的版本不再保证可无缝切换
分岔加速(2024 年 — 今)
到 2024 年 12 月,Forgejo 官方宣布:Gitea 1.22 是最后一个能透明升级到 Forgejo 的版本。之后两者代码库已经分岔到无法低成本同步:
差异示例:
- 数据库 schema 不同(actions 中的索引、受保护分支优先级)
- 功能实现完全不同(如 admin 分支保护)
- 子系统已重新架构(如 Webhooks 在 Forgejo 中的实现)
- Actions Runner 的实现细节也在逐步偏离
二、治理模式:根本分歧
Gitea:公司治理
Gitea Ltd(香港商业公司):
- 控制 Gitea 的 GitHub 仓库、域名(gitea.io、gitea.com)、商标
- 核心维护者 Lunny Xiao 为该公司负责人
- 决策过程不透明,社区无投票权
- 商业模式:open-core(开源核心 + 付费企业版 + 云服务)
- 2016 年分叉时反对"单维护者",2022 年自己变成了"单公司"——讽刺地重蹈了 Gogs 的覆辙
Forgejo:非营利社区治理
Codeberg e.V.(eingetragener Verein,德国注册协会):
- 注册于柏林,2018 年 9 月成立
- 2026 年拥有 1100+ 名会员
- 由会员选举委员会,重大决策会员投票
- 拥有 Forgejo 的全部域名、商标、基础设施
- 财务对会员公开,运作透明
- 在德国法律下,协会不可能被"收购"——资产不属于任何个人
Forgejo 项目的治理体系: Forgejo 在 codeberg.org/forgejo/governance 有一个专门的治理仓库,公开了全套文档:
| 文档 | 内容 |
|---|---|
MISSION.md | 项目使命与价值观 |
DECISION-MAKING.md | 决策流程(共识 + 投票) |
TEAMS.md | 团队结构与成员职责 |
AGREEMENTS.md | 贡献者协议 |
PullRequestsAgreement.md | PR 质量标准(含测试要求) |
MODERATION-PROCESS.md | 社区审核流程 |
SECURITY-POLICY.md | 安全漏洞响应 |
branding/ | 品牌使用规范 |
治理原则:
- 所有决策通过公开讨论和 RFC 流程进行
- 重大变更需要社区共识或投票
- 贡献者(非公司)决定项目路线
- Codeberg e.V. 作为"终极守护者",但不干预日常运营决策
保障措施:
- 任何个人或公司无法单方面转移资产(需要协会全体会员投票)
- 许可证已切为 GPL v3+,防止闭源分叉
- 代码托管在 Codeberg 而非 GitHub——平台自举,不依赖任何商业平台
对比: Gitea 2016 年指责 Gogs 是"单维护者"→ 分叉时承诺"多所有者、社区驱动"→ 2022 年变成"单公司控制"。Forgejo 的治理设计在制度上防止了这种退化。
三、许可证差异:MIT vs GPL v3+
这是两者在代码层面的最显著差异。
| Gitea | Forgejo | |
|---|---|---|
| 当前许可证 | MIT | GPL v3+(v9.0 起,2024 年 8 月切换) |
| v9.0 之前 | 始终 MIT | MIT(继承自 Gitea) |
| 许可证含义 | 允许闭源分发、专有衍生品 | copyleft,要求衍生品也必须开源 |
| 商业友好 | 较高(对闭源二次开发无限制) | 较低(禁止闭源分发修改版) |
| 企业版可能性 | 有(Gitea Enterprise,部分闭源) | 无(所有功能永远开源) |
Forgejo 切换许可证的原因
Forgejo 官方在 2024 年 8 月宣布切换到 GPL v3+,官方解释了三个理由:
- 接纳 copyleft 贡献者(核心原因): 在 MIT 许可证下,Forgejo 无法接受 GPL 等 copyleft 许可证的代码贡献。而许多优秀的开源组件是 GPL 的。切换到 GPL v3+ 后,Forgejo 可以自由复用 copyleft 生态的代码。
- 依赖项不兼容问题: Forgejo 发现某些依赖项与 MIT 许可证不兼容(例如 CPAL 许可的 citeproc-js、Eclipse 许可的 elkjs),实际上已经使整体变成 AGPL,但许可证声明还是 MIT——这是法律风险。为了消除许可证冲突,选择升级为 GPL v3+ 是更干净的做法。
防止商业利用漏洞:
"Copyleft 许可证减少了对用户的剥削性商业行为——比如创建一个修改版的 Forgejo,剥夺用户应有的自由。"
GPL v3+ 的具体影响
- 不会影响:使用官方发布的二进制/Docker 镜像的用户和自托管者
- 会受影响:打包 Forgejo 并重新分发的发行版/容器平台,需要提供完整源代码
- 不会影响:商业托管 Forgejo 服务(SaaS 模式)
- 战略意义:任何想基于 Forgejo 做闭源二次开发的公司,都必须开源其修改——这保证了 Forgejo 生态永远不会出现"社区版 vs 企业版"的分化
FAQ 另一面: Gitea 始终坚持 MIT 许可证,这也意味着理论上任何公司都可以 fork Gitea 并推出闭源专有版本——实际上 Gitea Enterprise 就是这么做的。
四、联邦化(Federation):Forgejo 最独特的战略方向
这是 Forgejo 与 Gitea 在功能路线上最大的分岔点。Forgejo 正在把 Git 托管从一个"孤岛"变成一个互联网络。
核心理念
通过 ActivityPub 协议(W3C 标准,Mastodon、Threads、Pixelfed 等使用的同一种协议),Forgejo 实例之间可以互相通信。
这意味着:不再需要把所有代码集中到一个平台上。你可以自托管自己的 Forgejo 实例,但依然可以和 GitHub、Codeberg、或其他 Forgejo 实例上的项目跨实例协作。
技术实现:ForgeFed
ForgeFed 是一个基于 ActivityPub 的 forge 联邦协议。Forgejo 的核心开发者参与了 ForgeFed 标准的制定,并从 NLnet 基金会获得了专项资金支持。
当前状态
已实现(2026 年 5 月月报):
| 功能 | 状态 |
|---|---|
| 联邦化的 Star(跨实例收藏仓库) | ✅ 已发布 |
| 联邦化的 Unstar | ✅ 已发布 |
| 关注其他 ActivityPub 用户 | ✅ 已合并(v15) |
| 跨实例 ActivityPub Feed | ✅ 已合并(目前支持 Forgejo、Mastodon、GoToSocial) |
| Actions 支持 JWT 联邦身份 | ✅ 已发布(v15) |
正在开发中(FOSDEM 2025 演讲路线图):
| 功能 | 状态 |
|---|---|
| 关注仓库 | 🔄 开发中 |
| 联邦通知 | 🔄 开发中 |
| 集成 Mastodon 通知 | 🔄 开发中 |
| 联邦评论/讨论 | 📋 规划中 |
| 联邦 PR | 📋 长期目标 |
对比 Gitea
根据 Forgejo 官方声明:Gitea 目前没有任何关于 forge federation 的工作。
这是一个根本性的路线差异:
- Forgejo 认为未来的代码协作是去中心化的
- Gitea 选择专注于单实例功能完善和企业功能
为什么联邦化重要
想象一下这样的场景:
- 你在自己的 Forgejo 实例上有一个私有仓库
- Codeberg 上有一个人想给你的仓库提交 PR
- 不需要在 Codeberg 上 fork → 跨实例推送 PR
- 你可以在自己的实例上审查和合并
- 一切通过 ActivityPub 协议传输,不依赖任何第三方平台
这就是联邦化的最终愿景——让代码协作像电子邮件一样,不受平台控制。
警告
目前联邦功能仍标记为实验性。官方警告:
启用联邦功能后,Forgejo 运行的域名将永久性地无法在将来与其他软件进行联邦化。
请仔细阅读 FAQ 后再启用。
这是因为 ActivityPub 的"域名即身份"机制——一旦一个域名在联邦网络中被识别为一个 ActivityPub 节点,就不能被重新用于另一个协议实现。
五、许可证与开源承诺的保障机制
Forgejo 在制度设计上有多层保障,确保项目永远不被商业公司接管:
第一层:法律实体
Codeberg e.V. 作为德国注册协会(e.V.),受德国《民法》约束:
- 资产属于协会,不属于任何个人
- 解散时资产必须用于公益目的
- 不能"被收购"(没有股权结构)
- 会员大会是最高权力机构
第二层:许可证
GPL v3+ 确保任何衍生作品必须开源。如果未来有人 fork Forgejo 并试图闭源,GPL 提供了法律武器。
第三层:基础设施自举
- 代码托管在 Codeberg 上,运行 Forgejo 本身
- 不依赖 GitHub、GitLab 等商业平台
- 即使 GitHub 关闭或改变政策,Forgejo 不受影响
第四层:财务透明
- 通过 Liberapay 接受捐赠
- 财务状况在 sustainability 仓库公开
- 目前有来自 NLnet 等组织的项目资助
对比 Gitea
Gitea 的保障仅有:Lunny Xiao 个人的承诺("项目当然仍然是开源的")。但没有任何制度能防止 Gitea Ltd 在未来改变路线——实际上企业版和云服务已经包含了闭源组件。
六、用户与采用情况
知名用户/采用者
Forgejo:
- Codeberg.org — 最大的 Forgejo 实例,2025 年 11 月数据:300,000+ 仓库,200,000+ 注册用户,1208 名协会会员
- 荷兰政府 — code.overheid.nl 使用 Forgejo 作为政府软件开发平台(2026 年 4 月上线)
- Fedora 项目 — 正在用 Forgejo 替换原有的 Pagure forge
- CodeMirror — 著名浏览器端代码编辑器,于 2025 年从 GitHub 迁移到自托管的 Forgejo 实例
- Freedom of the Press Foundation — 使用 Forgejo
Gitea:
- 部署量远大于 Forgejo(10 年积累),但缺少类似的知名"招牌用户"
- 更多是中小企业和个人开发者使用
市场数据(2025 DevOps 社区调查)
| 平台 | 自托管市场份额 | 年增长率 |
|---|---|---|
| GitLab CE/EE | 42% | +3% |
| Gitea | 28% | -5% |
| Forgejo | 18% | +15% |
| Gogs | 7% | -2% |
| 其他 | 5% | -1% |
关键趋势:
- Gitea 在失去市场份额(-5%,被 Forgejo 分流)
- Forgejo 增速最快(+15%),尽管基数较小
- 轻型平台(Gitea + Forgejo 合计 46%)正在蚕食 GitLab 以外的市场
注意:这些数据来自 2025 年末的调查,样本偏差可能存在。
语言生态
| Gitea | Forgejo | |
|---|---|---|
| 中文社区 | ✅ 非常大,文档全 | 较小 |
| 英文社区 | 大 | 中等 |
| 欧洲社区 | 一般 | 活跃(Codeberg 在德国,荷兰政府采用) |
| 核心开发语言 | Go | Go |
七、功能深度对比
共同能力(两者都有,水平基本一致)
Git 托管(SSH/HTTP(S)) ✅
Pull Request / Code Review ✅
Issues / 里程碑 / 看板 ✅
Wiki ✅
Webhooks / API ✅
OAuth / SSO 集成 ✅
仓库迁移(GitHub/GitLab) ✅
包注册表(Docker/NPM/PyPi等) ✅
Actions CI/CD(GitHub Actions 兼容语法) ✅
LDAP / SMTP ✅
Git LFS ✅
组织 / 团队管理 ✅
SQLite / PostgreSQL / MySQL ✅
Docker / K8s 部署 ✅差异点
| 能力 | Gitea | Forgejo | 分析 |
|---|---|---|---|
| ActivityPub 联邦 | ❌ 未计划 | ✅ 开发中(已实现联邦 star、跨实例关注) | 最显著的功能差异 |
| 开源承诺 | open-core(部分功能在付费企业版) | 100% FOSS,所有功能免费 | Forgejo 无付费墙 |
| SAML SSO | 有(企业版) | 社区插件 | 企业场景 Gitea 友好 |
| 审计日志 | 有(企业版) | 基础版 | 同上 |
| 大规模部署优化 | 企业客户驱动 | Codeberg 生产驱动 | 各有侧重 |
| Actions Runner | act runner | Forgejo Runner | 实现细节在偏离 |
| 数据库 Schema | Gitea 自有 | Forgejo 自有 | 已互不兼容 |
| CI 语法兼容性 | .gitea/workflows/*.yml | .forgejo/workflows/*.yml | 语法相似但 Runner 实现有差异 |
| 发布周期 | 月/双月版 | 季度 LTS + 滚动更新 | Forgejo 更强调稳定性 |
| 版本号 | 1.x | 9.x → 目前 15.x(2026) | 独立版本体系 |
| Webhook 实现 | Gitea 方式 | 已重新架构 | 不兼容 |
| 主题/品牌 | Gitea 蓝绿 | Forgejo 蓝紫 | 视觉效果略有不同 |
Forgejo Actions 的独特优势(v15)
2026 年 5 月,Forgejo v15 引入了一个重要功能:Authorized Integrations,允许 Actions 以 JWT 联邦身份操作。这意味着:
${{ forgejo.token }}现在可以有可配置的权限- 支持跨服务器权限,在联邦化的 Forgejo 网络中可以跨实例执行 Actions
- Forgejo Actions 不仅是一个 CI 系统,也正在成为联邦化工作流引擎
Gitea Actions 目前没有对应的功能。
关于"功能列表"的官方态度
Forgejo 官方明确表示:
No, there isn't.(是否有 Forgejo 比 Gitea 多的功能列表?——没有。)
两者都在以让这种比较难以维护的速度发展。 请自行比较两者的文档、博客和发布说明。
这实际上是 Forgejo 的一种姿态:不参与功能竞赛,专注于自己的路线(治理 + 联邦化)。
八、部署与运维
资源需求
| 场景 | 建议配置 | 说明 |
|---|---|---|
| 个人 | 1 vCPU + 512 MB RAM | SQLite 即可 |
| 小团队(~5 人) | 1 vCPU + 1 GB RAM | 建议 PostgreSQL |
| 中型团队(~20 人) | 2 vCPU + 2 GB RAM | PostgreSQL + CI Runner |
| Codeberg 级别 | 集群部署 | 300K+ 仓库规模 |
实际上两者完全一致,都是 Go 单二进制,资源占用几乎没有区别。
数据库支持对比
| Gitea | Forgejo | |
|---|---|---|
| SQLite(开发/小规模) | ✅ | ✅ |
| PostgreSQL(推荐生产) | ✅ | ✅ |
| MySQL / MariaDB | ✅ | ✅ |
| MSSQL | ✅ | ❌(不支持) |
Forgejo 在 v15 中已移除 MSSQL 支持。
部署方式对比
| 方式 | Gitea | Forgejo |
|---|---|---|
| 单二进制 | ✅ | ✅ |
| Docker | ✅ | ✅ |
| Docker Compose | ✅ | ✅ |
| Kubernetes Helm | ✅ | ✅ |
| 系统包(apt等) | ✅ | ✅(社区维护) |
| 1Panel 等面板 | ✅ | ✅(社区适配) |
桌面使用上完全一致,官方文档都提供了详细的部署指引。
备份与迁移
Gitea → Forgejo:
- Gitea v1.21.5 及之前:替换二进制即可(透明升级)
- Gitea v1.22:最后一个透明的版本(2024 年 12 月起)
- Gitea v1.23+:不再支持透明迁移,需要走特定版本路径
Forgejo → Gitea: 官方未提供文档。理论上几乎不可能(Forgejo 增加了 Gitea 没有的功能和数据库变更)。
两者之间未来: 随着代码分歧持续扩大,迁移成本只会越来越高。请做一次性决策。
九、详细选型建议
✅ 选 Forgejo 如果你
1. 你认同社区治理的价值
- 不希望一个商业公司能单方面决定项目方向
- 愿意支持非营利模式
- 认为代码基础设施应该去中心化
2. 你看好联邦化
- 希望未来能跨实例协作
- 不想把所有代码绑定在一个"孤岛"上
- 对 ActivityPub / Fediverse 有好感
3. 你注重"真·开源"
- 不想要 open-core 模式(免费版缺功能,付费版才有完整功能)
- 希望所有功能永远免费开源
- 接受 GPL v3+ 许可证
4. 你在欧洲或在欧洲有业务
- Codeberg 位于德国,受 GDPR 保护
- 荷兰政府、Fedora 项目等都在采用
5. 你项目的规模不需要企业付费功能
✅ 选 Gitea 如果你
1. 你需要企业功能
- SAML SSO、审计日志、大规模 LDAP 等(Forgejo 需要社区插件或自己实现)
- 可能需要付费支持
2. 你在公司内部使用且需要 MIT 许可证
- 某些公司的法务部门对 GPL 有顾虑
- 可能需要对 Gitea 进行二次开发并闭源发布
3. 你更需要中文社区支持
- Gitea 的中文文档和社区远比 Forgejo 丰富
- 中文用户遇到问题更容易找到答案
4. 你希望最大的生态兼容性
- Gitea 部署量更大,第三方集成更丰富
- 如果你的工作流依赖特定的 Gitea 插件或集成
5. 你信任公司治理模式
- 认为商业公司支持的项目更可持续
- 不介意 open-core 模式
✅ 都不选 如果你
- 需要完整 DevOps 管线 → GitLab
- 极简 Git 托管(无需 Issue/PR)→ Gogs
- 激进的最小主义 → SourceHut
十、Final 总结
技术层面: 两者几乎一样。都是 Go 单二进制、轻量级、功能丰富、部署简单的自托管 Git 平台。
治理层面: 完全不一样。
- Gitea 由香港的商业公司控制,走的是"开源核心 + 付费企业版"路线
- Forgejo 由德国的非营利协会拥有,走的是"100% 社区治理 + 联邦化"路线
功能差异:
- Forgejo 有联邦化(ActivityPub),Gitea 没有
- Gitea 有企业付费功能(SAML、审计日志),Forgejo 没有
- 其余日常功能基本一致
未来趋势:
- Forgejo 正在与 Gitea 加速分岔。2024 年 2 月硬分叉后,两者已不能互换
- Forgejo 在 2024 年 12 月宣布 Gitea 1.22 是最后一个透明升级版本
- Forgejo 的联邦化路线与 Gitea 的"继续充当 GitHub 替代品"路线正在形成越来越大的差异
核心问题: 如果你想自托管一个 Git 平台来"摆脱 GitHub 的控制",那么:
- 选 Gitea 是在用一个商业公司的开源产品替代另一个商业公司的产品
- 选 Forgejo 是用一个社区治理的非营利产品替代商业产品
如果你自托管的理由之一是不想被平台绑架,那 Forgejo 的治理结构更能匹配这个目标——它本身就不可能被绑架。
附录:重要时间线
| 时间 | 事件 |
|---|---|
| 2014 | Gogs 发布 |
| 2016-11 | Gitea 从 Gogs 分叉 |
| 2018-09 | Codeberg e.V. 在柏林注册成立 |
| 2022-10 | Gitea 域名/商标被转移到 Gitea Ltd(香港商业公司) |
| 2022-10-25 | Gitea 社区公开信发表 |
| 2022-12-15 | Forgejo 项目在 Codeberg 下正式启动(软分叉) |
| 2023-06 | Forgejo 治理仓库决议接受 copyleft 贡献 |
| 2024-02-16 | Forgejo 宣布成为硬分叉 |
| 2024-08 | Forgejo v9.0 发布,许可证从 MIT 切换到 GPL v3+ |
| 2024-12 | Forgejo 宣布 Gitea 1.22 为最后一个透明升级版本 |
| 2025 | 联邦化功能逐步落地(star、unstar、关注) |
| 2025-11 | Codeberg 达到 300K+ 仓库、200K+ 用户 |
| 2026-04 | 荷兰政府 code.overheid.nl 基于 Forgejo 上线 |
| 2026-05 | Forgejo v15 发布,Actions 支持 JWT 联邦身份 |
| 2026-06 | Fedora 项目宣布用 Forgejo 替换 Pagure |
参考来源
- Forgejo 官方对比页
- Forgejo 官方 FAQ
- Forgejo Governance 仓库
- LWN: Forgejo makes a full break from Gitea (2024-02)
- LWN: Forgejo changes license to GPLv3+ (2024-08)
- Forgejo: Forking forward (2024-02)
- Forgejo: Gitea 1.22 is the last transparent upgrade (2024-12)
- Forgejo: Now copyleft, just like Git (2024-08)
- Forgejo 月报 - May 2026
- Forgejo 月报 - June 2025
- FOSDEM 2025: Federation in Forgejo 演讲
- Wikipedia: Forgejo
- Wikipedia: Codeberg
- Gitea 社区公开信
- Contabo: Gitea vs Forgejo 2026
- ServerSpan: Gitea vs Forgejo 2026
- ValeByte: Gitea vs Forgejo 2026
- European Purpose: Forgejo Review 2026