Forgejo:开源代码托管平台,Gitea的社区分叉

背景:从Gitea到Forgejo的分叉故事

2022年10月,Gitea项目发生了一次重要的治理变动。Gitea团队宣布将项目所有权转移至Gitea Ltd.,一家在爱尔兰注册的的商业公司。这一决定在开源社区引发了广泛讨论,部分核心贡献者和社区成员认为商业化方向可能与开源社区的长期利益产生冲突。

正是在这一背景下,Forgejo应运而生。它由原Gitea社区成员发起,作为Gitea的社区主导分叉(Community-driven Fork)继续维护开源版本。Forgejo由法国非营利组织 Forgerock 赞助支持,项目托管在 Codeberg(德国非营利组织运行的Git服务)上,强调社区自治、透明治理和数据可移植性。

![Forgejo项目在Codeberg上的仓库页面截图-1](https://fangyinai.com/wp-content/uploads/2026/06/ForgejoGit-1.jpg)

从技术角度而言,Forgejo与Gitea保持着高度兼容——两者共享相同的代码基础,界面设计和操作逻辑几乎完全一致。对于已经在使用Gitea的用户来说,迁移到Forgejo的学习成本几乎为零。

核心功能:一站式DevOps协作平台

Forgejo提供了完整的代码托管和协作功能,足以满足大多数团队的研发需求。

代码仓库管理是Forgejo的基础功能。支持Git版本控制,提供可视化的仓库浏览界面,包括文件目录结构、提交历史、分支管理和标签(Tags)管理。仓库可以设置为公开或私有,支持Fork和Star操作。

Issue追踪系统允许团队创建、管理和跟踪任务与缺陷。每个Issue支持指派负责人、设置标签、关联里程碑、设置优先级,并可以通过评论进行讨论。强大的搜索和过滤功能帮助团队高效管理大量Issue。

![Forgejo中Issue详情页面的布局示例-1](https://fangyinai.com/wp-content/uploads/2026/06/ForgejoGit-1-1.jpg)

Pull Request代码审查是现代开发流程的核心环节。Forgejo支持分支对比视图、逐行评论、代码审查讨论线程,以及合并前的自动化CI检查。PR的打开、审查、讨论、修改、合并构成了完整的代码协作流程。

Forgejo Actions是Forgejo自带的CI/CD引擎,完全兼容GitHub Actions语法。这意味着GitHub上已有的Actions工作流配置(YAML格式)可以直接迁移到Forgejo使用。开发者可以使用市场上大量的开源Actions插件,实现自动化构建、测试和部署。

Wiki功能为团队提供了独立的文档空间,适合存放项目文档、开发规范或知识库。Wiki本身也是Git仓库,可以通过Git命令进行编辑和版本控制。

容器镜像仓库是Forgejo的另一个实用功能。团队可以直接在Forgejo实例中存储和分发Docker镜像,无需额外的镜像仓库服务。

组织与团队权限管理支持多层级架构。组织下可以创建多个团队,每个团队可以设置不同的仓库访问权限(无权限、读权限、写权限、管理权限)。这种灵活的权限模型适合各种规模的企业或开源项目。

数据存储:多种数据库后端可选

Forgejo支持三种主流数据库作为数据后端:

数据库 适用场景 特点
SQLite 小规模部署 零依赖、文件级存储、运维最简单
MySQL/MariaDB 中等规模 成熟稳定、社区广泛支持
PostgreSQL 大规模/高并发 企业级特性、性能优异

对于个人开发者或小团队,SQLite是推荐选择——无需额外部署数据库服务,单个二进制文件加上SQLite文件即可运行。对于有更高并发需求或已有数据库基础设施的团队,可以选择MySQL或PostgreSQL。

安装部署:单二进制与Docker

Forgejo最突出的特点之一是极简部署。整个应用打包为单个可执行文件(或一个Docker镜像),没有复杂的依赖链。

Docker方式部署是最常用的安装方法:

docker run -d \
  --name=forgejo \
  -p 3000:3000 \
  -p 2222:22 \
  -v /path/to/forgejo-data:/data \
  -v /path/to/forgejo-config:/config \
  codeberg.org/forgejo/forgejo:latest

上述命令会启动Forgejo容器,主界面监听3000端口,SSH服务监听2222端口。/data目录用于存储仓库数据、数据库文件等持久化数据,/config目录用于存放配置文件。

首次访问需要通过初始化向导配置管理员账户和基本参数。配置文件 app.ini 位于挂载的config目录中,后续的邮件服务、邮件通知、LDAP集成等高级配置都可以在此文件中修改。

![Forgejo中Issue详情页面的布局示例-2](https://fangyinai.com/wp-content/uploads/2026/06/ForgejoGit-2.jpg)

对于有更高定制需求的用户,也可以直接下载二进制文件安装,配置文件和运行参数完全可控,不依赖容器运行时。

横向对比:Forgejo vs Gitea vs GitLab

在自托管Git服务的生态中,Forgejo需要与几个主流方案进行比较。

Forgejo vs Gitea:两者代码同源,功能几乎一致。核心差异在于治理模式——Gitea由商业公司主导,Forgejo由非营利组织赞助、社区驱动。对于重视开源社区治理、担心厂商锁定的用户,Forgejo是更稳妥的选择。Forgejo还特别强调数据可移植性,承诺不会做出破坏向后兼容的变更。

Forgejo vs GitLab:GitLab是功能最全面的企业级方案,但资源消耗也最高,官方推荐配置至少4核CPU和4GB内存。Forgejo的单二进制部署可以在512MB内存的机器上流畅运行。对于不需要GitLab全部企业功能的小团队,Forgejo提供了更轻量的替代方案。

对比项 Forgejo Gitea GitLab
部署复杂度 极简 极简 复杂
资源占用
社区治理 社区主导 商业公司 商业公司
功能完整性 核心功能完备 核心功能完备 功能最全
企业特性 有限 有限 丰富

适用场景

Forgejo特别适合以下几类用户:

个人开发者自建Git服务:不想依赖GitHub/GitLab,又希望拥有完整的仓库托管能力。Forgejo的低资源占用意味着可以在闲置的旧电脑或树莓派上运行。

小团队协作:5~20人的研发团队需要一个私有、可控的代码托管平台,而GitLab的复杂度和资源消耗显得过剩。Forgejo提供了恰到好处的功能集合。

开源项目托管:对于开源项目,Forgejo的完全开源、代码透明、社区治理模式更符合开源精神。项目可以选择将自己的Forgejo实例作为主仓库,同时镜像到GitHub以触达更广泛的用户。

摆脱厂商锁定的战略选择:如果你担心哪天Gitea或GitHub突然改变服务条款或涨价,Forgejo提供了完全自主可控的替代方案。代码在你自己服务器上,数据完全属于你。

{{图:Forgejo仓库页面的主视图}}

写在最后

Forgejo的出现为开源社区提供了一条不同于商业化道路的选择。它证明了代码托管平台可以在坚持开源社区治理的同时,提供稳定可靠的服务。对于那些把数据主权和社区独立性放在重要位置的开发者和团队,Forgejo是一个值得认真考虑的下一步。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。