Gitea:开源自托管 Git 服务,轻量到树莓派都能跑的 GitHub 平替

它到底是什么

Gitea 是一个用 Go 编写的自托管软件研发平台,目标很直白:提供最简单、最快速、最省心的一站式 DevOps 服务。它把 Git 托管、代码管理、代码审查、Issue 跟踪、项目看板、Wiki、团队协作、包仓库以及 CI/CD(可复用 GitHub Actions 语法)这些能力塞进了同一个二进制里。

> “The goal of Gitea is to make the easiest, fastest, and most painless way of setting up a self-hosted all-in-one software development service.”

整个项目采用 MIT 协议开源,仓库放在 GitHub(go-gitea/gitea),官方文档站点是 docs.gitea.com。对想避坑商业 SaaS、又想拿一套完整研发工具的人来说,Gitea 是目前社区里呼声最高的选择之一。

Gitea 仓库主页界面,展示代码文件树、分支切换按钮和最近提交列表-1

核心功能:从 Git 托管到 CI/CD

Gitea 的功能覆盖面相当宽,已经不是单纯的”代码托管工具”。以下几类能力在主线版本中都已内置:

  • Git 仓库管理:支持 SSH 和 HTTPS 协议访问,仓库级权限、标签(Tag)、Release、Wiki 一应俱全。
  • Issue 跟踪:标签(Label)、里程碑(Milestone)、指派、关联提交/PR,覆盖日常需求与缺陷管理。
  • Pull Request 与代码评审:行内评论、Diff 视图、Code Owner 审查要求、状态检查(Status Checks)等都已具备。
  • Gitea Actions:与 GitHub Actions 高度兼容的 CI/CD 模块,绝大多数 .github/workflows/ 下的 YAML 可以直接搬迁使用。
  • 组织与团队权限:Org / Team 模型允许按仓库、按分支设置读写权限。
  • 项目看板:轻量的 Kanban 视图,把 Issue 和 PR 拖到不同列里跟踪进度。
  • 包仓库(Package Registry):支持常见格式的包发布,构建产物可直接托管。

再加上官方提供的 tea CLI、go-sdk 以及 act_runner,日常使用和二次开发都有现成工具链。

Gitea Actions 工作流配置界面,左侧为 YAML 编辑器,右侧为运行状态面板-2

轻量到极致:单二进制 + 跨平台

Gitea 最被人称道的就是它的”轻”。

> “As Gitea is written in Go, it works across all the platforms and architectures that are supported by Go, including Linux, macOS, FreeBSD/OpenBSD and Windows on x86, amd64, ARM, RISC-V 64 and PowerPC architectures.”

实际部署中它体现为几个特点:

  • 单文件部署:构建产物就是一个可执行二进制,扔到服务器上 chmod +x 就能跑,不需要额外的运行时。
  • 资源占用低:相比 GitLab 这种”全家桶”,Gitea 在 1 核 1GB 的小机器上也能流畅运行,社区里把它跑在树莓派上的案例很多。
  • 架构兼容广:除了常见的 x86_64 服务器,ARM、RISC-V 64、PowerPC 这些架构都在官方支持范围内。

换句话说,只要你的设备能跑 Go 程序,就能跑 Gitea。这一点对个人开发者、边缘设备玩家、以及想给家庭实验室搭一套代码托管的人来说非常友好。

部署方式:Docker 是最省事的路径

官方提供了完整的部署方式选项,下面是常见的几条路径:

1. 容器化部署(推荐)

使用 Docker 或 Podman 直接拉镜像是最常见的玩法:

docker pull gitea/gitea:latest
docker run -d --name gitea \
  -p 3000:3000 -p 2222:22 \
  -v /path/to/data:/data \
  -v /path/to/config:/etc/gitea \
  -v /etc/timezone:/etc/timezone:ro \
  -v /etc/localtime:/etc/localtime:ro \
  gitea/gitea:latest

3000 是 Web 端口,2222 是 SSH 端口,数据和配置分别挂到宿主机,方便备份和迁移。

2. 二进制部署

从 GitHub Releases 下载对应平台的二进制,解压后直接运行:

./gitea web        # 启动 Web 服务
./gitea help       # 查看所有可用子命令

3. 源码构建

如果想自己改代码或者折腾定制化功能,可以参考仓库里的 docs/build-source.md。前置条件在 docs/build-setup.md 里有详细说明,开发流程则看 docs/development.md

4. 一键上云

不想自己维护服务器,官方还有 cloud.gitea.com 提供托管试用,以及 demo.gitea.com 的演示环境,gitea.com 提供免费但仓库数量受限的服务。

Docker 部署 Gitea 的终端命令输出与容器运行状态-3

Gitea vs Forgejo vs GitLab:该怎么选

社区里讨论最多的就是 Gitea 与它的几个”近亲”的关系,简单梳理一下:

项目 定位 资源占用 CI/CD 适合场景
Gitea 官方主线项目,MIT 协议 极低,单二进制 内置 Actions(兼容 GitHub Actions 语法) 个人、小团队、想轻量自托管的人
Forgejo Gitea 的社区分叉,强调”软分叉”治理模式 与 Gitea 接近 同样兼容 GitHub Actions 语法 希望由社区而非单一组织主导的人
GitLab 全功能重型 DevOps 平台 较高,推荐 4GB+ 内存 内置 CI/CD(独立语法) 大型企业、需要完整合规与安全特性的场景
GitHub / Gitea.com SaaS 托管 免运维 GitHub Actions 不想自托管、要即刻上手的人

关于 Forgejo:它是 Gitea 的一次社区分叉,由一部分核心贡献者发起,目标是摆脱单一公司的影响、保证项目长期中立。两者在功能层面差别不大,生态也基本互通。选择哪个更多是治理理念的偏好。

关于 GitLab:GitLab 是”全家桶式”的 DevOps 平台,从代码托管到安全扫描、内置 K8s 集成、CD 流水线都覆盖。代价是吃资源、重运维,并且部分企业级特性需要付费版。Gitea 的定位正好相反——只做最常用的事,并且做得足够轻

适合谁用

结合上面的特性,Gitea 比较适合这几类人和场景:

  • 个人开发者:想给自己写的小项目找一个干净的备份点,避免依赖单一商业平台。
  • 小团队/工作室:需要一个带权限管理、Issue 看板、PR 流程的工具,但又不想养一台重负载的服务器。
  • 教育/科研场景:实验室里给课题组搭一个内部代码托管服务,对资源占用敏感。
  • 从 GitHub 迁移的用户:Gitea Actions 兼容 GitHub Actions 语法,Issue、PR、Wiki 都能导入,迁移成本低。

对于已经习惯 GitHub Actions 工作流的开发者,把仓库搬到 Gitea 后几乎不用改 YAML。

周边生态与社区

围绕 Gitea 已经形成了比较完整的外围工具链:

  • tea:官方命令行工具,可以在终端里管理 Issue、PR、Release。
  • go-sdk:官方 Go 语言 SDK,方便做二次开发或集成。
  • act_runner:Gitea Actions 的执行器,类似于 GitHub 的 runner。
  • awesome-gitea:社区维护的相关项目列表,包括各种插件、主题、第三方 SDK 等。

社区沟通渠道以 Discord 和官方 Discourse 论坛为主;翻译通过 Crowdin 协作,已经覆盖了包括简体中文和繁體中文在内的多种语言。

配置与运维要点

刚装好 Gitea 时,通常会碰到两个配置文件:

  • 动态配置:可以在管理员后台的”配置”页直接修改并热生效。
  • 静态配置:需要编辑 app.ini 文件并重启实例。完整可选项参考仓库里的 custom/conf/app.example.ini 以及配置速查表。

安全补丁一般会在 Release Log 或 CHANGELOG 里用 SECURITY 关键字标注,订阅其发布通知能比较快地跟进。如果发现了未公开的漏洞,建议私下联系 [email protected],而不是直接提公开 Issue

小结性建议

如果你的需求是”自托管、轻量、对 GitHub 兼容、能跑在小机器上”,Gitea 是目前最值得优先试的方案之一;如果更看重”重型全功能、企业合规”,则需要重新评估 GitLab 或商业平台。具体版本、依赖和最新功能特性建议以 docs.gitea.com 和 GitHub 仓库的 README 为准。

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