Forgejo 是一个轻量级、自托管的 Git 服务平台,它是 Go 语言编写的 Gitea 项目的一个硬分叉。其核心目标是提供一个由社区主导、遵循自由软件原则的 Git 协作环境
项目历史
Forgejo 的起源与 Gitea 紧密相关
-
Gitea 的发展: Gitea 项目自2016年从 Gogs 分叉以来,因其 Go 语言带来的轻量级、易部署和低资源占用等特性,迅速获得了用户和社区的青睐。它提供代码托管、问题跟踪、Wiki、CI/CD 集成等核心功能,成为 GitHub/GitLab 的轻量级替代方案。
-
治理模式的分歧: 2022年,Gitea 项目的维护者组建了 Gitea Ltd. 公司实体,旨在推进项目的商业化和管理。然而,项目创始人及部分核心贡献者对公司在项目治理、商标和域名控制权等方面的决策产生了异议。他们认为这些举措与项目最初的社区驱动、自由软件的理念相悖,且缺乏足够的透明度。
-
Forgejo 的分叉: 鉴于上述分歧未能弥合,Gitea 的创始人和部分核心贡献者于 2022年末 决定创建 Forgejo 项目,作为 Gitea 的一个硬分叉。Forgejo 旨在明确自身定位为一个纯粹的、由社区驱动的自由软件项目,并得到了 Codeberg 基金会(一家非营利组织)的法律和基础设施支持。
-
分叉后的发展: Forgejo 致力于保持 100% 自由和开源,并强调开放治理和社区决策机制。它定期从上游 Gitea 同步最新的代码和功能,同时维护自己的特定补丁,尤其是在治理和开放性方面。Codeberg 等重视自由软件原则的托管服务也已转向使用 Forgejo。
项目优点
-
资源效率高:
- Go 语言编译: 生成单一二进制文件,无复杂运行时依赖,部署简单,启动速度快。
- 内存与CPU占用低: 相较于 GitLab 等大型解决方案,Forgejo 对系统资源的需求显著更低,使其非常适合在资源受限的服务器、小型虚拟机或 ARM 设备上运行。
- 易于容器化: 轻量化的特性使其在 Docker 或 Kubernetes 环境中表现优异,有助于提升集群资源利用率。
-
部署与维护便捷:
- 单文件部署: 下载后即可运行,简化了安装过程。
- 跨平台兼容: 支持多种操作系统和硬件架构。
- 内置服务: 集成 SSH 服务器、Web 服务器,并支持多种数据库后端,减少了外部组件的配置复杂性。
-
核心功能完善:
- 提供代码仓库托管、分支管理、Pull Request(代码审查)等核心 Git 功能。
- 包含问题跟踪、Wiki、项目管理看板等协作工具。
- 支持 Webhooks 和内置的 CI/CD 功能(Forgejo Actions)。
- 具备用户、组织和权限管理,以及 API 接口。
-
社区主导与开放治理:
- 这是 Forgejo 的核心差异点。它由非营利组织 Codeberg 基金会支持,致力于确保项目决策的透明性和社区的独立性,避免被商业实体控制。
- 明确坚持自由软件原则,吸引了重视项目治理和自由软件理念的用户及贡献者。
-
用户界面简洁直观:
- 界面设计注重实用性,易于用户学习和使用。
部署
请先安装Docker
环境, 以下教程以Debian GNU/Linux Bookworm
为例
创建安装目录
|
|
创建Docker compose
|
|
写入compose配置
|
|
启动容器
|
|
容器启动后, Forgejo就算安装好了
反向代理
对Forgejo进行反向代理以为其增加HTTPS及复用80&443端口
Caddy
将以下内容加入Caddyfile即可, Caddy会自动处理HTTPS证书
|
|
结语
Forgejo 是一个针对个人开发者、小型团队和资源受限环境的优秀自托管 Git 解决方案。其轻量级架构和易用性是显著优势。更重要的是,Forgejo 强调的社区驱动和开放治理模式,使其成为那些高度重视自由软件原则和项目独立性用户的理想选择。
项目地址: https://forgejo.org/