Gogs vs SourceHut:轻量与极简,自托管 Git 的另类选择
零、先定位:这两个是什么
在自托管 Git 的生态中,Forgejo 和 Gitea 是"功能完整的 GitHub 替代品"。而 Gogs 和 SourceHut 则走向了完全不同的方向——
Gogs: 极轻量的 Git 托管最小可行产品。只有最核心的功能:仓库、Issue、PR、Wiki。追求"最小化"。
SourceHut: 一套分离式的开发工具链(Git/Mercurial 托管 + CI + 邮件列表 + 工单),UI 几乎不用 JavaScript,工作流基于电子邮件。追求"极简 + Unix 哲学"。
两者都比 Forgejo/Gitea 更轻、更小,但它们的"轻"的含义完全不同:
| Gogs | SourceHut | |
|---|---|---|
| 轻在何处 | 功能少,交互动线短 | 界面极简,无 JS,模组分离 |
| 追求什么 | 易部署、低资源、少维护 | Unix 哲学、邮件驱动的纯粹体验 |
| 为什么选它 | "我就想要个能跑 Git 的地方" | "我想要最好的邮件协作体验" |
一、Gogs:一切的起点
基本信息
| 项目 | 内容 |
|---|---|
| 创始人 | Unknwon(龚国成) |
| 首次发布 | 2014 年 |
| 语言 | Go |
| 许可证 | MIT |
| GitHub Stars | ~47,700 |
| 最新稳定版 | v0.14.3(2026 年 6 月) |
历史意义
Gogs 是第一个用 Go 语言编写的轻量级自托管 Git 服务。它在 2014 年开创了"下载一个二进制文件就能跑起 Git 服务"的模式,在此之前,搭建 Git 服务要么用笨重的 GitLab,要么用手配的纯 Git + SSH。
它的核心价值主张至今没有变:Painless(无痛)。官方文档依然写着:
"The Gogs project aims to build a simple, stable and extensible self-hosted Git service that can be set up in the most painless way."
架构与特点
极致轻量:
- 单 Go 二进制,无外部依赖
- 官方声称仅需 64 MiB RAM + ¼ vCPU 即可运行
- 能在树莓派和 NAS 上跑
- 支持 SQLite(无需安装数据库)
跨平台:
- 支持 Linux、macOS、Windows、ARM
- 提供 Docker 镜像
功能列表
Gogs 的功能集有意精简,只保留最基本的协作功能:
| 功能 | Gogs |
|---|---|
| Git 托管(SSH/HTTP/HTTPS) | ✅ |
| Issue 跟踪 | ✅ |
| Pull Request | ✅ |
| Wiki | ✅ |
| Webhooks(Slack/Discord/DingTalk) | ✅ |
| 仓库镜像/迁移 | ✅ |
| Git Hooks | ✅ |
| 组织/团队管理 | ✅ |
| Git LFS | ✅ |
| 受保护分支 | ✅ |
| API | ✅(实验性) |
| 用户/仓库仪表盘 | ✅ |
| 活动时间线 | ✅ |
刻意不包含:
| 没有的功能 | 说明 |
|---|---|
| CI/CD | 无内置 CI,需配合外部 Jenkins/Drone 等 |
| Package Registry | 不包含 |
| 项目看板/Kanban | 无 |
| Actions 工作流 | 无 |
| 代码审查 UI | PR 的基础功能有,但不如 Forgejo 完善 |
| LDAP/OAuth | 有限支持 |
| 联邦化 | 无 |
开发节奏
这是 Gogs 最大的痛点之一。
Gogs 由 Unknwon 单核心维护,发展速度极慢。举例:
- 从 v0.12(2020 年)到 v0.13(2024 年)隔了约 4 年
- 社区 PR 合并缓慢——这正是 2016 年 Gitea 分叉的核心原因
- 到 2026 年仍在 v0.14.x,而 Gitea 已到 v1.23,Forgejo 已到 v15
但 Gogs 仍在维护并有更新:
- 2026 年 6 月发布了 v0.14.3(安全修复)
- 有活跃的安全团队处理漏洞(2025-2026 年修复了多个 CVE,包括 RCE 和 2FA 绕过)
- Docker 镜像也在更新
不过客观来说,Gogs 目前更适合作为"个人 Git 仓库"而非"团队协作平台"。
安全漏洞历史
Gogs 在 2025-2026 年被曝出多个高危漏洞:
| CVE | 严重程度 | 问题 |
|---|---|---|
| CVE-2025-64111 | CVSS 9.3(Critical) | 通过 symlink 注入 .git/config 实现 RCE |
| CVE-2025-64175 | CVSS 7.7(High) | 2FA 恢复码可跨账号使用 |
| CVE-2026-24135 | CVSS 7.2(High) | Wiki 路径遍历导致文件删除 |
这些漏洞在 v0.13.4 和 v0.14.0-dev 后已修复。但这也反映出 Gogs 的小团队在安全审计方面资源有限。
二、SourceHut:黑客的锻造厂
基本信息
| 项目 | 内容 |
|---|---|
| 创始人 | Drew DeVault |
| 首次发布 | 2018 年 |
| 总部 | 阿姆斯特丹,荷兰 |
| 代码许可证 | AGPL-3.0 / MIT(各组件不同) |
| 核心哲学 | Unix 哲学 + 邮件驱动 + 零 JS |
哲学:与 GitHub 彻底不同
SourceHut 不是一个"GitHub 克隆"。它的设计出发点完全不同。Drew DeVault(也是 Sway 和 wlroots 的创始人)明确表示:
SourceHut 追求的是效率和尊重用户,而不是"用户增长"和"参与度"。
具体来说:
- 完全没有 JavaScript:所有功能在禁用 JS 的浏览器中正常工作
- 没有 AI 功能:明确拒绝 Copilot 类功能
- 没有追踪和分析:不收集用户行为数据
- 没有广告
- 许多功能无需注册账号即可使用
- 100% 免费开源软件
架构:一组分离的工具(Unix 哲学)
SourceHut 将传统"全功能 forge"拆解为一组独立的子服务。这与 Unix 的"做一件事并做好"哲学一致:
| 子域名 | 功能 | 说明 |
|---|---|---|
git.sr.ht | Git 托管 | 公共/私有/未列出仓库,细粒度访问控制 |
hg.sr.ht | Mercurial 托管 | 同时支持 Mercurial——这是 SourceHut 的独特卖点 |
builds.sr.ht | CI/CD | 在隔离 VM 中运行构建,支持多种 Linux 发行版和 BSD |
lists.sr.ht | 邮件列表 | 补丁审查、论坛讨论、可搜索归档 |
todo.sr.ht | 工单跟踪 | 仅可操作的任务——不讨论、不问问题、不重复 |
meta.sr.ht | 账户和设置 | 统一的用户管理 |
关键设计理念:这些服务既可以一起使用,也可以独立使用。你不一定要用 SourceHut 的 CI 才能用它的 Git 托管。
工作流:邮件驱动
这是 SourceHut 与其他所有 Git 平台最大的不同。
在 GitHub/Forgejo/Gitea 上,工作流是:
在 Web UI 上创建 Issue → 在 Web UI 上 Fork → 在 Web UI 上开 PR → Web UI 审查在 SourceHut 上,工作流是:
发送邮件描述问题 → git send-email 发送补丁 → 邮件列表讨论 → 通过邮件应用补丁这意味着:
- 不依赖 Web UI:你可以全程用命令行 + 邮件完成所有操作
- 补丁即讨论:每个补丁就是一封邮件,在邮件线程中审查和评论
- 不需要账号也能参与:任何人都可以通过邮件提交补丁
- 所有内容存档:邮件列表本身就是可搜索的项目档案
CI/CD:builds.sr.ht
SourceHut 的 CI 系统有独特的亮点:
- 在 完全虚拟化的 VM 中运行(非容器)
- 支持多种架构:x86_64、aarch64
- 支持多种 OS:Alpine、Arch Linux、Debian、Fedora、FreeBSD、NetBSD、OpenBSD、Ubuntu、NixOS 等
- 可以 SSH 进入失败的构建进行调试
- 可以从命令行提交临时构建(无需推送代码)
- 支持构建后触发通知(邮件、Webhook)
Zig 语言作者 Andrew Kelley 的评价:
"This CI experience is leagues ahead of all others. Resubmitting builds and SSH'ing in is saving me multiple hours."
托管的版本控制系统
SourceHut 同时支持 Git 和 Mercurial(HG)。
Git 的很多平台都支持。Mercurial 的支持则极为罕见——SourceHut 是唯一同时原生支持这两种 VCS 的主流 forge。
Web 界面极简到极致
SourceHut 的 UI 设计理念:
- 页面通常 < 50KB
- 不使用任何前端框架
- 表单使用标准 HTTP POST 提交
- 导航使用标准超链接
- 每个页面的 HTML 可以轻松阅读和解析
这不仅是哲学选择,也有实际好处:
- 在网速慢的环境下依然可用
- 屏幕阅读器友好
- 没有 JS 攻击面(安全)
- 浏览器资源消耗极低
商业模式
SourceHut 是一个付费服务(不是传统的免费开源托管):
| 定价 | 费用 | 说明 |
|---|---|---|
| 免费 | €0 | 有限的公共仓库功能 |
| 基础 | ~€20/年 | 完整的个人开发需求 |
| 高级 | ~€100/年 | 更多 CI 分钟和资源 |
不收钱的原则:
- 不融资(Drew DeVault 明确拒绝 VC)
- 不做广告
- 不卖用户数据
- 不提供企业版付费墙
但所有代码本身是开源/自托管的。你可以:
- 自己部署完整的 SourceHut
- 免费使用 sr.ht 的有限功能
- 付费获得更多功能和 CI 额度
限制规定
SourceHut 的服务条款中明确禁止:
- 加密货币/区块链项目
- 色情内容
- 暴力内容
这在社区中有争议——有人认为这是一个付费服务不应有的限制,有人则表示支持。
争议
Drew DeVault 是一个极其有主见的人。他的博客涉及大量争议话题(FOSS 伦理、政治、ACAB、对 AI 的强烈批评等)。这导致部分开发者拒绝使用 SourceHut。
但另一方面,这也吸引了一群认同他价值观的核心用户——SourceHut 的用户群体虽然小,但极为忠诚。
知名用户
虽然没有 GitHub 级的规模,SourceHut 被许多重要开源项目使用:
- Zig 编程语言(Andrew Kelley)
- postmarketOS(Martijn Braam)
- Sway / wlroots(Drew 自己的项目)
- 大量小型 FOSS 项目
三、Gogs vs SourceHut 全面对比
宏观比较
| 维度 | Gogs | SourceHut |
|---|---|---|
| 本质上是什么 | 最小化的 Git 托管 | 一套 Unix 哲学的开发工具套件 |
| 核心哲学 | "无痛"(Painless) | "高效、尊重用户" |
| 目标用户 | 个人/极小组件,只要 Git | Unix 老手、邮件流派开发者 |
| 轻量 | 极轻(64MB RAM) | 轻(但需多个服务组件) |
| 复杂度 | 极简单(单二进制) | 中等(多服务组件) |
| 学习曲线 | 低 | 高(邮件工作流需要适应) |
| 自托管难度 | 极低 | 高(完整的 SourceHut 套件部署复杂) |
功能对比
| 功能 | Gogs | SourceHut | 分析 |
|---|---|---|---|
| Git 托管 | ✅ | ✅ | 核心功能 |
| Mercurial 托管 | ❌ | ✅ | SourceHut 独有 |
| SSH/HTTP(S) 访问 | ✅ | ✅ | 两者都支持 |
| Issue 跟踪 | ✅ 基础 | ✅ todo.sr.ht(仅任务) | SourceHut 的工单系统很特殊 |
| Pull Request | ✅ 基础 | ✅ 邮件补丁驱动 | 体验完全不同 |
| Wiki | ✅ | ❌ | Gogs 有,SourceHut 无 |
| Web UI | 传统 Web UI | 极简零 JS | UI 理念截然相反 |
| CI/CD | ❌ | ✅ builds.sr.ht | SourceHut 有构建系统 |
| 代码审查 | 基础 | ✅ 邮件列表补丁审查 | SourceHut 的审查体验更强大 |
| 邮件列表 | ❌ | ✅ lists.sr.ht | SourceHut 核心功能 |
| 包注册表 | ❌ | ❌ | 两者都没有 |
| 项目管理/看板 | ❌ | ❌ | 两者都没有 |
| 组织管理 | ✅ | ✅ | 都有 |
| Webhooks | ✅ 多平台 | ✅ | 都有 |
| Git Hooks | ✅ | ✅ | 都有 |
| LFS | ✅ | ❌ | Gogs 支持 LFS |
| API | ✅ 实验性 | ✅ 完整 | SourceHut API 更成熟 |
| LDAP/OAuth | 有限 | ✅ | SourceHut 支持更好 |
| 无需 JS 可用 | 部分 | 全部 | SourceHut 完胜 |
| 无需账号可参与 | ❌ | ✅ | SourceHut 邮件驱动可无账号提交补丁 |
| 跨平台 | 所有 Go 平台 | Linux 为主 | Gogs 更广泛(支持 Windows) |
资源需求对比
| 指标 | Gogs | SourceHut |
|---|---|---|
| 最小 RAM | ~64 MB(官方称) | ~256 MB+(单组件) |
| 推荐 RAM | 256 MB | 1-2 GB(完整套件) |
| 数据库 | SQLite / PostgreSQL / MySQL | PostgreSQL |
| 外部依赖 | 几乎为零 | Redis + PostgreSQL + 多个服务进程 |
| 部署方式 | 单二进制 | 多个服务分别部署 |
| Docker | ✅ | ✅(但复杂) |
| 首次安装时间 | ~5 分钟 | 数小时(完整套件) |
Gogs 在"最小资源需求"这个维度上无人能敌。64MB RAM 并非虚言——它确实能在树莓派 Zero 或 256MB 的旧 VPS 上运行。SourceHut 由于是多服务架构,需要的资源更多。
工作流对比
Gogs 的工作流(与 GitHub 类似):
Web UI 或 Git CLI → 浏览器操作学习成本接近零。如果会用 GitHub,就会用 Gogs。
SourceHut 的工作流(邮件驱动):
终端 → git send-email → 邮件列表 → 补丁审查 → git am学习成本高。需要熟悉 git send-email、邮件列表礼仪、补丁格式等。但一旦上手,很多用户认为它比 Web UI 更高效。
社区与开发
| 维度 | Gogs | SourceHut |
|---|---|---|
| 主要维护者 | Unknwon(单核心) | Drew DeVault + 团队 |
| 贡献者规模 | 小 | 中等 |
| 发布节奏 | 极慢(年/跨年) | 活跃(季度更新) |
| 社区规模 | 大但被动(47K stars) | 小但活跃 |
| 中文社区 | 大(国人项目) | 几乎没有 |
| 英文社区 | 中等 | 活跃 |
| 用户活跃度 | 低(多数用户"装完即走") | 高(铁杆用户多) |
| 2026 年维护状态 | ✅ 仍在维护(v0.14.3) | ✅ 活跃开发(Q2 2026 月报) |
四、安装体验对比
Gogs 安装
# Linux amd64
wget https://github.com/gogs/gogs/releases/download/v0.14.3/gogs_v0.14.3_linux_amd64.tar.gz
tar -xzf gogs_v0.14.3_linux_amd64.tar.gz
cd gogs
./gogs web
# 或者 Docker
docker run -d --name=gogs -p 3000:3000 -p 22:22 gogs/gogs打开浏览器 → 首次运行配置(数据库、域名等)→ 开始使用。整个过程不超过 5 分钟。
SourceHut 安装
SourceHut 由多个独立服务组成,完整自托管需要部署:
meta.sr.ht → 账户管理
git.sr.ht → Git 托管
hg.sr.ht → Mercurial 托管(可选)
builds.sr.ht → CI
lists.sr.ht → 邮件列表
todo.sr.ht → 工单每个服务都是独立的 Python 应用,需要:
- PostgreSQL 数据库(每个服务独立数据库)
- Redis
- 反向代理(nginx/Caddy)
- 域名配置(每个子域名一个服务)
- email 发送基础设施
Drew DeVault 在博客中提供了部署指南,但面向生产环境的完整部署耗时以天计。
注意: SourceHut 的商业模式是"付费使用托管服务"。自托管是可行的(100% 开源),但这不是它提倡的主要使用方式。大多数用户选择使用 sr.ht 托管服务(付费),而不是自托管。
五、在免 JavaScript 革命中的定位
SourceHut 在"无 JS 可运行"这一点上,在所有主流 forge 中独占鳌头:
| 平台 | JS 需不需要 | 无 JS 体验 |
|---|---|---|
| SourceHut | 完全不需要 | ✅ 所有功能均可正常工作 |
| Gogs | 依赖 JS(部分 UI 需要) | ⚠️ 基本功能可用,但不完整 |
| Gitea/Forgejo | 依赖 JS(Vue.js) | ❌ 无 JS 基本不可用 |
| GitLab | 严重依赖 | ❌ 无 JS 不可用 |
| GitHub | 严重依赖 | ❌ 无 JS 几乎不可用 |
SourceHut 是唯一一个所有功能都不需要 JavaScript 的主流 forge(截至 2026 年)。
六、选型建议
选 Gogs 如果你
- 你只需要最基础的 Git 托管
- 纯个人使用或 2-3 人小团队
- 不需要 CI/CD、不需要包管理、不需要看板
- 你的硬件极其有限
- 树莓派、NAS、128MB RAM 的旧机器
- 任何其他方案都跑不动
- 你想要最简单的部署和维护
- 下载 → 运行 → 完成
- 不想搞 Docker Compose 或数据库配置
- 你是 Gogs 老用户,用得挺好
- 没有迁移的动力
- 安全更新仍然有维护
选 SourceHut 如果你
- 你认同邮件工作流
- 你已经在用或愿意学习
git send-email - 你觉得邮件列表比 Web 讨论更高效
- 你已经在用或愿意学习
- 你是极简主义者
- 讨厌臃肿的 Web 界面
- 厌恶 JavaScript 滥用
- 希望 UI 加载速度像本地文件一样快
- 你同时使用 Git 和 Mercurial
- SourceHut 是唯一原生支持两者的主流 forge
- 你重视隐私到偏执级别
- 零追踪、零广告、零 AI
- 所有功能在禁用 JS 的情况下可用
- 你不在乎"用的人多不多"
- 你已经有了固定的开发者圈子
- 不需要 GitHub 那样的社交网络效应
都不选 如果你
- 需要完整的 DevOps 管线 → 选 GitLab 或 Forgejo Actions
- 需要 GitHub 体验的替代品 → 选 Forgejo 或 Gitea
- 既要轻又要功能全 → 选 Forgejo(180MB RAM 就够跑)
- 需要大规模团队协作 → 选 GitLab EE
七、四款自托管 Git 服务全景图
将 Gogs、SourceHut、Forgejo、Gitea 放在一起看,它们占据了不同的生态位:
功能丰富
↑
│
│ GitLab CE/EE (完整 DevOps,但重)
│
│ Gitea / Forgejo (功能齐全的 GitHub 替代)
│
│ SourceHut (邮件驱动 Unix 哲学)
│
│ Gogs (最小 Git 托管)
│
└────────────────────────────────────────→ 资源占用少 资源占用多轻量级平台横轴:
Gogs SourceHut Forgejo/Gitea GitLab
<──────────┼─────────────┼────────────────┼──────────>
64MB RAM 256MB+ RAM 512MB RAM 4GB+ RAM
单二进制 多服务 单二进制 多服务
无 CI 有 CI 有 CI 有 CI用一句话概括:
| 平台 | 一句话 |
|---|---|
| Gogs | 最轻量的"能用就行"——我在树莓派上只想 push/pull |
| SourceHut | 最极客的"这才是我想要的"——邮件补丁 + 零 JS |
| Forgejo | 最放心的"自由软件"——社区治理 + 联邦化 |
| Gitea | 最务实的"大家都在用"——MIT 许可 + 企业功能 |
八、总结
Gogs 和 SourceHut 代表了两个完全不同的精简方向:
Gogs 的精简是"功能上做减法": 它故意不实现 CI/CD、包管理、看板等,从而换取极低的部署成本和维护负担。它不为"更好的开发体验"做文章,只为"最简单的 Git 托管"服务。
SourceHut 的精简是"体验上做减法": 它功能其实不少(CI、邮件列表、工单、代码审查),但在交互上选择了最极简的方式——无 JS、邮件驱动、Unix 工具链。它追求的不是"功能少",而是"不要用不必要的复杂度干扰开发"。
两者的共同点是:都不适合"想要 GitHub 体验"的用户。但如果你恰好认同它们的理念,它们能提供 GitHub 和 GitLab 永远给不了的体验。
Gogs 的终极问题:我需要在旧电脑上托管几个仓库,不想折腾 SourceHut 的终极问题:Web UI 和 JS 是对开发的干扰,我想回到邮件的黄金时代