Forgejo 16.0 介绍与选型

Forgejo 16.0 自托管代码托管平台介绍与选型指南:定位与核心能力、与 Gitea/GitLab 的关系差异、二进制快速开始实测、量化选型对比(社区活跃度/版本节奏实测数据)与适用场景。

ForgejoForgejo2026/10/17

Forgejo 16.0 介绍与选型

‍‍​​‌​> 目标:讲清 Forgejo 是什么、能做什么、与 Gitea/GitLab 的关系与差异,并给出可量化的选型依据(社区活跃度、版本节奏、许可与治理),最后用二进制方式完成一次最小可用部署实测。全文数据于 2026-10-17 实查与实测,版本锚定 Forgejo 16.0.6。

一、环境信息

本文数据来源与实测环境:

  • 查询日期:2026-10-17(社区数据、版本节奏均为当日实查)
  • 实测版本:Forgejo 16.0.6(稳定支线 16.0 的最新补丁版,2026-10-12 发布)
  • 实测系统:Ubuntu 22.04(x86_64)
  • 实测确认的版本串(API 返回,照抄):
{"version":"16.0.6+gitea-1.22.0"}
  • 二进制发布物(官方下载实测):
curl -sI https://codeberg.org/forgejo/forgejo/releases/download/v16.0.6/forgejo-16.0.6-linux-amd64.xz | grep -iE 'HTTP|content-length'
HTTP/2 200
content-length: 37305152

即 linux-amd64 二进制(xz 压缩)约 35.6 MiB,解压后为单个可执行文件。

二、软件概述

2.1 定位

Forgejo(发音 /fɔrˈdʒiː.dʒoʊ/,取意大利语「锻造 forge」之意,口号 Beyond coding. We forge.)是一个自托管代码托管平台:部署后提供与 GitHub 同构的能力——Git 仓库托管、Pull Request 代码评审、Issue 跟踪、内置 CI/CD(Forgejo Actions)、软件包与制品仓库(Packages / Registry)、Wiki、组织与团队权限,以及完整的 REST API。

一句话定位:轻量、全功能、治理独立的开源 Git 托管平台,资源占用是 GitLab CE 的零头,功能覆盖 90% 常用 GitHub 场景。

2.2 来源与治理(为什么会有 Forgejo)

Forgejo 于 2022 年 12 月从 Gitea 分叉而来。分叉的直接原因:Gitea 的主导公司被收购后社区对项目治理失去信任,Codeberg e.V.(德国非营利协会,运营 codeberg.org 托管平台)联合多家公司发起 Forgejo,承诺永久开源、社区治理、不设商业版。

  • 主仓库与全部开发都在 Codeberg(https://codeberg.org/forgejo/forgejo),不在 GitHub 发布(GitHub 上 forgejo/forgejo 已 404,实测确认)
  • 许可:GPLv3 或 MIT 双许可(内核大部分代码继承自 Gitea 的 MIT)
  • 治理:由民主选举的维护者团队决策,Backed by Codeberg e.V. 非营利组织

2.3 与 Gitea 的关系

Forgejo 是 Gitea 的「保守上游分叉 + 增强」:

  • 16.0 内核基于 Gitea 1.22(版本串 16.0.6+gitea-1.22.0 实测可证),Gitea 的文档、API、app.ini 配置体系大体兼容
  • Forgejo 在内核之上做了自己的增强:原生 Forgejo Actions(Gitea 的 Actions 实现同源但 Forgejo 迭代更激进)、联邦化(ActivityPub 实验特性)、Forgejo Runner、v7+ 起默认启用 Actions 等
  • 版本号体系独立:Forgejo 用自己的 7.0 → 17.0 大版本线,与 Gitea 版本号不对应

💡 技术拓展:自托管 Git 平台的主要谱系——

平台起源定位
Gogs2014极简单二进制鼻祖,功能精简
Gitea2017(从 Gogs 分叉)功能均衡的轻量平台
Forgejo2022(从 Gitea 分叉)社区治理 + Actions/联邦增强
GitLab CE2011企业级全家桶,重量级

本文主角 Forgejo 属于「Gitea 系」轻量一脉。

三、核心架构

Forgejo 是 Go 语言单二进制架构,无外部强依赖:

  • 单进程:HTTP Web 服务 + 内置 SSH 服务 + 后台任务队列 + Issue/代码索引器全部在一个二进制里,默认监听 3000(HTTP)与 22(SSH)
  • 数据库:SQLite3 / MySQL / PostgreSQL 三选一([database] 段 DB_TYPE),存储用户、Issue/PR、权限、Actions 记录等元数据
  • 文件存储:Git 裸仓库按 owner/repo.git 目录树落盘([repository] ROOT),附件/头像/LFS/Actions 制品为本地目录或可切 S3 兼容对象存储(migrate-storage 命令在线迁移)
  • 工作路径约定:WORK_PATH(数据与配置根)→ conf/app.ini(主配置)→ git/repositories(裸库);本文按二进制部署约定为 /var/lib/forgejo,其他部署形态的路径差异见《Forgejo 16.0 Docker Compose 部署指南》
  • 扩展接口:Webhook、REST API(/api/v1,实测可直接用 token 调用)、OAuth2 Provider、LDAP/SMTP/OIDC 认证源

实测佐证「单二进制自带全部组件」:部署后仅一个进程监听两个端口,且 /api/v1/version、/api/healthz 均由该进程返回(healthz 实测同时探测缓存与数据库):

curl -s http://localhost:3100/api/healthz | python3 -m json.tool | head -12
{
    "status": "pass",
    "description": "DevOps 代码平台",
    "checks": {
        "cache:ping": [
            {
                "status": "pass",
                "time": "2026-10-17T12:04:48Z"
            }
        ],
        "database:ping": [
            {
                "status": "pass",
                "time": "2026-10-17T12:04:48Z"
            }
        ]
    }
}

四、功能特性

按 16.0 实测可用的功能域归纳(每项均在实测环境验证过可用性):

功能域能力实测佐证
仓库托管HTTP/SSH 双协议 clone、分支/标签保护、裸库目录树git push 成功,c945d6d..28de242 main -> main
Issue/PRIssue、PR 评审、评论、标签、里程碑、看板API 建 Issue 返回 issue number: 1
CI/CDForgejo Actions(GitHub Actions 兼容语法,workflow 放 .forgejo/workflows/)实测 workflow 推送后 job 一次跑通,日志含 🏁 Job succeeded
Runnerforgejo-runner 独立进程,双执行模式(按标签指定环境或宿主直跑)forgejo-runner register 返回 Runner registered successfully.
包仓库OCI 制品仓库(Registry)、Generic/PyPI/npm 等多格式 Packages面板内置,随安装可用
Git LFS大文件存储,LFS_START_SERVER 默认开启app.ini 生成即含 LFS_START_SERVER = true
APIREST /api/v1 全覆盖 + Swagger全文命令回显均来自该 API
认证本地口令 + OAuth2/LDAP/SMTP/OIDC、2FA向导可装即用,pbkdf2_hi 哈希默认
管理forgejo admin CLI、doctor 体检、dump 备份forgejo --help 实测列出 dump/doctor/admin/migrate 子命令

不内置的(避免误期待):代码扫描(需接 SonarQube 等外部)、Pages(实验特性,需额外配置)、企业级审批流/审计报表(GitLab 领域)。

五、快速开始(最小可用示例)

本章用官方二进制在 Ubuntu 22.04 上完成「下载 → 运行 → 初始化 → 建仓推送」的最小闭环,5 分钟可用。

5.1 下载并解压

wget -O forgejo.xz https://codeberg.org/forgejo/forgejo/releases/download/v16.0.6/forgejo-16.0.6-linux-amd64.xz
chmod +x forgejo && xz -d forgejo.xz 2>/dev/null; ls -lh forgejo*

实测下载文件大小与官方 content-length: 37305152(35.6 MiB)一致。

5.2 运行

./forgejo web

实测启动日志(节选,照抄):

2026/10/17 19:46:53 cmd/web.go:250:runWeb() [I] Starting Forgejo on PID: 16
2026/10/17 19:46:53 ...dels/db/engine.go:266:InitEngineWithMigration() [I] [SQL] SELECT tablename FROM pg_tables WHERE schemaname = $1
2026/10/17 19:46:53 Server listening on 0.0.0.0 port 22.

⚠️ 前置要求:需要可写的 WORK_PATH 与数据库(首次可零配置用 SQLite3 快速体验,路径给 --work-path 目录内即可)。生产建议用 systemd 托管,单元文件模板见《Forgejo 16.0 运维手册》。

5.3 初始化与验证

浏览器打开 http://<服务器IP>:3000/ 进入安装向导(数据库类型选 SQLite3 即可零依赖跑通),完成后:

curl -s http://localhost:3000/api/v1/version
{"version":"16.0.6+gitea-1.22.0"}

5.4 建仓 + push 闭环

git clone http://root:q1w2e3r4@localhost:3000/root/hello-forgejo.git
cd hello-forgejo && echo "# demo" > README.md
git add . && git commit -m "首次提交" && git push origin main

实测 push 回显(照抄):

[main 28de242] push 链路验证 19:44:44
 Author: root <root@example.com>
 1 file changed, 1 insertion(+)
 create mode 100644 push-1792237484.txt
To http://localhost:3100/root/hello-forgejo.git
   c945d6d..28de242  main -> main

至此最小可用平台跑通。完整的生产级部署(PostgreSQL + 双端口 + 数据持久化)见《Forgejo 16.0 Docker Compose 部署指南》,配置项逐个调优见《Forgejo 16.0 配置参数详解》,备份升级见《Forgejo 16.0 运维手册》。

六、适用场景与限制

6.1 适合

  • 团队私有代码托管:从 5 人到上千人,资源占用 2C4G 起步即可流畅运行(万级仓库规模社区有大量生产案例)
  • GitHub 替代/私有托管:Actions 语法兼容 GitHub,workflow 从 GitHub 迁移成本低(把 .github/workflows/ 改名为 .forgejo/workflows/,私有 Action 改完整地址)
  • CI/CD 一体化交付:不想再维护 Jenkins/GitLab Runner 两套系统,直接用内置 Actions + forgejo-runner
  • 开源社区运营:Codeberg.org 本身(数万开源项目)即 Forgejo 最大规模生产实证
  • 非营利/主权数据场景:非营利治理 + 100% 开源许可,无商业版功能阉割焦虑

6.2 不适合/注意

  • 需要企业级 SAST/DAST 内置扫描、合规审计报表、ELN 级权限矩阵——GitLab 更合适
  • 需要内置 Wiki 富文本所见即所得、内置 CI 模板市场的敏捷团队——GitLab 更完整
  • 单机 SQLite 俭省部署仅适合个人与微型团队;启用 Actions 的团队应配 PostgreSQL(本文实测采用)
  • Forgejo 版本节奏快(季度大版本),升级需按《Forgejo 16.0 运维手册》流程走,不适合「装完三年不动」的场景

七、同类选型对比

7.1 量化维度对比表

以下数据除标注外均为 2026-10-17 实查:

维度Forgejo 16.0Gitea 1.22/1.24GitLab CEGogs
许可GPLv3/MITMITMIT(CE 专有组件闭源)MIT
治理社区(Codeberg e.V.)公司主导(被收购后独立运营)公司主导个人主导
主仓库位置codeberg.org(GitHub 无官方仓库,实测 404)github.com/go-gitea/giteagitlab.comgithub.com
社区热度(实测)Codeberg 5660 stars / 996 forks / 1564 open issues / 155 open PRGitHub 58539 stars / 7272 forksGitLab 官方仓库(自托管,star 无横向意义)GitHub ~45k stars
内置 CI/CD✅ Actions(默认启用,实测跑通)✅ Actions(默认关闭,需开 [actions] ENABLED)✅ 完整(含内置 Runner 生态)❌ 无
内置包/制品仓库✅ OCI/Pypi/npm/Generic✅ 同源✅ 完整❌
资源占用(1-10 人)~200-400MB 内存~200-400MB 内存官方建议 4GB+ 内存起步~100MB
版本节奏(实测)季度大版本 + 双周补丁半年大版本月度发布低频
商业版无Cloud 竞价版Premium/Ultimate无

💡 关键差异解读:Forgejo 与 Gitea 内核同源,日常功能几乎无差,选 Forgejo 的决定性理由是治理独立 + Actions 默认启用 + 联邦化路线;选 Gitea 的理由是更大众化的生态与第三方工具兼容性。GitLab 适合需要重流程/重合规的中大型组织,代价是 10 倍级资源与运维复杂度。Gogs 仅适合极简自用。

Forgejo 的 Codeberg star 数(5660)低于 Gitea 的 GitHub star 数(58539),这是因为 Forgejo 弃用 GitHub、其用户生态集中于 Codeberg 平台内(Codeberg 托管了数万活跃开源项目),不能直接以 star 差值推断活跃度差距;open issues 1564 + open PR 155(2026-10-17 实查)反映开发活动持续高频。

7.2 版本节奏(实测数据)

从官方 Releases API 实查的大版本发布日期,节奏为每季度一个大版本:

版本发布日期实查命令输出
13.0.02025-10-16v13.0.0 2025-10-16
14.0.02026-01-15v14.0.0 2026-01-15
15.0.02026-04-16v15.0.0 2026-04-16
16.0.02026-07-16v16.0.0 2026-07-16
17.0.02026-10-15v17.0.0 2026-10-15
16.0.6(16 支线补丁)2026-10-12v16.0.6 2026-10-12
15.0.10 / 16.0.6 同日补丁2026-10-12两个稳定支线同时收补丁

选型结论:生产跟最新稳定支线的最新补丁(本文锚定 16.0.6);新大版本(如 17.0.0)发布后建议等待 1-2 个补丁再跟进;升级操作与回滚见《Forgejo 16.0 运维手册》。

7.3 「如果…则…」选型建议

  • 如果你在 Gitea 上且在意治理与长期无商业约束 → 迁移 Forgejo(数据库结构兼容,app.ini 与 API 基本一致)
  • 如果你需要最快搭起来、社区资料最多、第三方集成(如监控、Bot)默认适配 Gitea → Gitea 也完全可用
  • 如果组织超过几百人、需要内置 SAST/合规流水线/精细审批 → GitLab CE
  • 如果你就要 Forgejo 的 Actions + 联邦 + 非营利背书 → Forgejo 16.0(本文实测链路可直接复现)

八、参考链接