到了 2026 年,Forgejo 的重要性来自一个背景变化:对许多团队来说,Git 托管已经不再是中性的后台工具。一个仓库托管面同时承载代码 review、身份、packages、CI、项目记忆、moderation,以及谁有权改变规则这个问题。Forgejo 有用的承诺,不在于复制每一种 GitHub 习惯。它的承诺更窄,也更接近运维现实:团队可以拥有一层现代 forge 表面,逐步迁移,并保留足够兼容性,让第一段迁移路径可承受。[1][3][4]

截至 2026-04-23T00:02:20Z UTC,当前上游信号是 Forgejo v15.0。它在 2026-04-16 发布,是项目第 100 个 release,也是一条 Long Term Support release。发布说明给出 v15 支持至 2027-07-15;上一条 LTS 线 v11.0 继续支持至 2026-07-16,为运营者留下升级跑道。[1][2] 这比功能清单更重要。自托管 forge 是 system of record。发布节奏若不清楚,迁移就会变成一场私有维护押注。

FOSDEM 2024 的大型阶梯教室内坐满听众,大家面向前方演讲者。
Iopensa 拍摄的布鲁塞尔 FOSDEM 2024。Forgejo 的采用故事属于这种公开基础设施文化:代码 forge 先是社会系统,然后才是功能矩阵。[8]

浅层迁移只是镜像。把代码推到一个新 remote,告诉贡献者那里还有一个 URL,然后让真正工作流继续停在别处。这可以作为起步,却没有测试 Forgejo 真正试图承接的对象。真正的测试,是 pull requests、issue templates、branch protection、packages、Actions runners、access tokens、backup policy 与 admin routines 同时搬到同一层自有表面上。[3][4][5]

Codeberg 展示了这个论点的公共实例版本。它的 FOSDEM 展位页面把 Codeberg 描述为一个 nonprofit,为自由与开源项目提供 Git hosting、CI/CD 与 Pages;同页还写到,自 2022 年 12 月起,Codeberg 承载 Forgejo 项目。该页面把 Forgejo federation 放在摆脱 single points of failure 的路径上,目标是连接公共与自托管实例,并逐步连接其他 forge。[6] 对正在判断是否自托管的团队来说,这个框架准确:Forgejo 最强之处,是被当成带有治理与互操作性的基础设施,而并非被当成更便宜的仓库屏幕。

先划清所有权边界

第一个采用问题并非 "Forgejo 能不能导入我们的仓库"。它可以。更好的问题是:"哪些协作契约,我们愿意自己运营?" 仓库存储是容易部分。更难的是身份、项目历史、CI 执行、事件响应、存储增长、abuse handling 与升级纪律。

Forgejo 的安装文档很快就显露这些边界。二进制安装意味着安装 gitgit-lfs,创建专门的 git 用户,分配 /var/lib/forgejo 这类数据目录,把配置放在 /etc/forgejo/app.ini 下,选择数据库,并把服务交给 systemd 或等价 supervisor 管理。[3] SQLite 对小型安装已经足够;一旦团队加入重度 LFS、package storage 或许多仓库,负责人就要像运营者一样思考,而不只是像工具评估者一样比较。[3]

因此,正确的第一轮 rollout 应该是一个真实仓库 pilot,而并非玩具 demo。选择一个有活跃 pull requests、至少一个 release artifact、两三位常规 reviewers,以及一条非平凡 workflow 的项目。先镜像代码。随后迁移 issue intake、review 与一条 CI 路径。若 pilot 结束后,团队仍说不清谁负责 runner capacity、backups、admin access 与 offboarding,迁移仍停留在镜像层。

发布时钟属于产品

Forgejo 按固定季度节奏发布 stable releases。发布日程页面列出 v14.0 的 2026-01-15 发布日与 2026-04-30 EOL,v15.0 LTS 的 2026-04-16 发布日与 2027-07-15 EOL,并把未来季度列车映射到 2027 年。[2] 对平台团队而言,这是强信号,因为它给 change windows、test instances 与 patch policy 提供了日历。

v15 release 也展示了项目移动方向。它加入 repository-specific access tokens,改善 releases list 响应式体验,支持在 pull-request commit 视图里编辑 Git notes,并用 reusable workflow expansion、OpenID Connect、简化 runner registration 与 ephemeral runners 扩展 Forgejo Actions。[1] 这些功能单独看并不喧哗。放在一起,它们指向的是一座正在承载更多协作与部署表面的 forge,同时没有把 hosted SaaS 的便利当成免费之物。

采用上的后果很简单:不要从死胡同分支开始。仍在 v11 LTS 线上的团队,通向 v15 的跑道有限。2026 年 4 月之后新启动的团队,应把 v15 视为默认基线,除非 package channel 带来临时约束。[1][2] 用计划长期运营的 release line 设计 pilot,并在服务变得难以移动之前写下下一次升级窗口。

Actions 兼容是一条通道

Forgejo Actions 很容易成为迁移桥梁,因为许多组织已经有 YAML workflows。文档对边界说得谨慎。Reference 写到,当 Forgejo 没有记录某个 key 时,GitHub Actions 文档可以提供帮助;同时,GitHub Actions 与 Forgejo Actions 并不相同,workflows 需要调整。[4] Administrator guide 写到,自 Forgejo v1.21 起,Actions 默认启用,也可以在 app.ini 中关闭。[4]

这就是正确心智模型:兼容性是一条通道,并非一份完全相同行为的合同。要审计每条 workflow:是否依赖 hosted-runner 假设、GitHub-specific API calls、第三方 marketplace actions、cache behavior、OIDC claims 与长寿命 deployment secrets。随后决定哪些 workflows 应该跑在 Docker labels、host runners、restricted ephemeral runners 上,哪些仍应放在 Forgejo 外部。[1][4]

v15 的 Actions 变化让这份审计更值得做。Reusable workflow expansion 减少了旧折中:被引用 workflow 的内部工作很容易坍缩成难读的 setup log;OIDC 则在第三方系统支持 federation 时,为团队摆脱 static deployment tokens 提供路径。[1] Ephemeral runners 帮助高级运营者避免在 job 完成后继续复用 runner credentials。[1] 这些是真实改进,同时也是运维职责。团队现在拥有 runner fleet、labels、network path,以及一条 workflow 被攻破后的 blast radius。

备份与升级才是治理测试

Forgejo 的升级指南带着基础设施文档应有的直白。它要求升级前进行 full backup,并把 synchronized point-in-time snapshot 称为可靠方法;升级后则建议用 forgejo doctor check --all --log-file /tmp/doctor.log 与手工 web-interface checklist 做验证。[5] 文档还说明,从 Gitea 升级到 Forgejo 支持到 Gitea v1.22,分两步执行:先升到 Forgejo v10.0.x,再升到任何大于 v10 的 Forgejo 版本。[5]

这让迁移变成治理测试。若团队想离开商业 forge,因为它想要更多控制权,控制权就要在枯燥位置上表现出来:restoration drills、admin role review、runner isolation、storage accounting、upgrade rehearsals 与书面 rollback path。若自有 forge 无法在升级失败后恢复,或者只有一个人知道 app.ini 与 database snapshots 在哪里,所有权的理由很快会塌陷。

这里有一个有用模式。把 Forgejo 当成带 SLO 的内部平台,而并非 sidecar service。定义 restore objective。保留 off-host backup。LTS cutover 前先跑 staging upgrade。把 Actions runner versions 与 Forgejo application 分开跟踪。定期审查外部身份配置。写明 abandoned repositories、spam 与 user removal 的处理政策。这些任务听起来朴素,因为正是这些工作把 forge 变成基础设施。

外部信号是渐进迁移

最强的外部采用信号,并非一波戏剧性离场,而是已经理解源码基础设施的项目开始 dual-running。Phoronix 在 2026-02-16 报道,Gentoo 开始使用 Codeberg 作为替代贡献路径,同时把迁移处理为渐进过程:先放 ebuild repository,随后再进行更广范围迁移。同篇报道还提到,Codeberg 基于 Forgejo,并由德国 nonprofit 托管。[7]

这类移动比干净的 benchmark 更有信息量。成熟项目迁移,不会只因为功能矩阵整齐。它会测试贡献者是否还能提交修改,维护者是否还能在不丢失语境的情况下 review,新表面是否能与既有 canonical infrastructure 共存足够久,从而获得信任。[7]

对较小团队来说,教训在于复制形状,而并非复制政治。先用 mirror 与 contribution pilot 起步。迁移一类 workflow。判断 package registry、releases 与 wiki content 属于第一阶段还是第二阶段。让 GitHub 或另一座 forge 作为 read-only 或 fallback surface 保留,直到团队有证据说明 restore、upgrade 与 contributor onboarding 在压力下仍能工作。

Forgejo 适合哪些团队

Forgejo 适合想拥有协作层且准备运营它的团队。它适合重视 nonprofit 公共基础设施的开源项目,也适合需要私有 forge 但不想购买更大平台的组织,还适合能接受部分 workflow edits、以换取更可管理代码托管表面的工程组。[1][4][6]

当团队主要想要零运维 GitHub clone,深度依赖 hosted-runner economics 与 marketplace actions,或者无法为 upgrades and backups 分配长期负责人时,Forgejo 就不那么适合。在这种情形里,Forgejo 出问题并非因为它太小。问题在于团队要求一座 self-hosted forge 像 vendor-run service 一样运转,同时又移除了 vendor。

实际迁移顺序因而要克制。以 v15 LTS 为基线。先做 mirror。第二步迁移一个真实仓库的 pull-request path。第三步审计 Actions。在扩大服务范围前先加入 backups 与 restore drills。把 federation 作为战略方向,而并非 day-one dependency。若这些步骤站得住,Forgejo 就会超出 escape hatch,成为静态镜像与完整内部平台之间那座自有 forge。

来源

  1. Forgejo,《Forgejo v15.0 is available》——v15 发布日期、第 100 个 release、LTS 支持窗口、repository tokens、Actions OIDC、reusable workflow expansion 与 ephemeral runners。
  2. Forgejo 文档,《Release schedule》——季度发布节奏、v14/v15 日期、LTS 窗口与未来 release train。
  3. Forgejo 文档,《Installation from binary》——operating-user、directory、database、systemd 与 app.ini 运维设置。
  4. Forgejo 文档,《Forgejo Actions | Reference》——workflow syntax、GitHub Actions 兼容边界、runner labels 与 action execution model。
  5. Forgejo 文档,《Upgrade guide》——backup requirements、post-upgrade verification、forgejo doctor 与受支持的 Gitea migration path。
  6. Codeberg FOSDEM stand page——Codeberg nonprofit services、自 2022 年 12 月以来承载 Forgejo,以及 federation framing。
  7. Michael Larabel,Phoronix,《Gentoo Linux Begins Codeberg Migration In Moving Away From GitHub, Avoiding Copilot》——外部采用信号与渐进 Codeberg migration 语境。
  8. Wikimedia Commons 文件页,Iopensa 拍摄的 FOSDEM 2024 照片,本文题图来源。