Gogs vs SourceHut:轻量与极简,自托管 Git 的另类选择

Brave
@47c132035ed7a1105a867946b99d67af 开源软件研究 公开

零、先定位:这两个是什么

在自托管 Git 的生态中,Forgejo 和 Gitea 是"功能完整的 GitHub 替代品"。而 Gogs 和 SourceHut 则走向了完全不同的方向——

Gogs: 极轻量的 Git 托管最小可行产品。只有最核心的功能:仓库、Issue、PR、Wiki。追求"最小化"。

SourceHut: 一套分离式的开发工具链(Git/Mercurial 托管 + CI + 邮件列表 + 工单),UI 几乎不用 JavaScript,工作流基于电子邮件。追求"极简 + Unix 哲学"。

两者都比 Forgejo/Gitea 更轻、更小,但它们的"轻"的含义完全不同:

 GogsSourceHut
轻在何处功能少,交互动线短界面极简,无 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 工作流无
代码审查 UIPR 的基础功能有,但不如 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-64111CVSS 9.3(Critical)通过 symlink 注入 .git/config 实现 RCE
CVE-2025-64175CVSS 7.7(High)2FA 恢复码可跨账号使用
CVE-2026-24135CVSS 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.htGit 托管公共/私有/未列出仓库,细粒度访问控制
hg.sr.htMercurial 托管同时支持 Mercurial——这是 SourceHut 的独特卖点
builds.sr.htCI/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 全面对比

宏观比较

维度GogsSourceHut
本质上是什么最小化的 Git 托管一套 Unix 哲学的开发工具套件
核心哲学"无痛"(Painless)"高效、尊重用户"
目标用户个人/极小组件,只要 GitUnix 老手、邮件流派开发者
轻量极轻(64MB RAM)轻(但需多个服务组件)
复杂度极简单(单二进制)中等(多服务组件)
学习曲线低高(邮件工作流需要适应)
自托管难度极低高(完整的 SourceHut 套件部署复杂)

功能对比

功能GogsSourceHut分析
Git 托管✅✅核心功能
Mercurial 托管❌✅SourceHut 独有
SSH/HTTP(S) 访问✅✅两者都支持
Issue 跟踪✅ 基础✅ todo.sr.ht(仅任务)SourceHut 的工单系统很特殊
Pull Request✅ 基础✅ 邮件补丁驱动体验完全不同
Wiki✅❌Gogs 有,SourceHut 无
Web UI传统 Web UI极简零 JSUI 理念截然相反
CI/CD❌✅ builds.sr.htSourceHut 有构建系统
代码审查基础✅ 邮件列表补丁审查SourceHut 的审查体验更强大
邮件列表❌✅ lists.sr.htSourceHut 核心功能
包注册表❌❌两者都没有
项目管理/看板❌❌两者都没有
组织管理✅✅都有
Webhooks✅ 多平台✅都有
Git Hooks✅✅都有
LFS✅❌Gogs 支持 LFS
API✅ 实验性✅ 完整SourceHut API 更成熟
LDAP/OAuth有限✅SourceHut 支持更好
无需 JS 可用部分全部SourceHut 完胜
无需账号可参与❌✅SourceHut 邮件驱动可无账号提交补丁
跨平台所有 Go 平台Linux 为主Gogs 更广泛(支持 Windows)

资源需求对比

指标GogsSourceHut
最小 RAM~64 MB(官方称)~256 MB+(单组件)
推荐 RAM256 MB1-2 GB(完整套件)
数据库SQLite / PostgreSQL / MySQLPostgreSQL
外部依赖几乎为零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 更高效。

社区与开发

维度GogsSourceHut
主要维护者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 如果你

  1. 你只需要最基础的 Git 托管
    • 纯个人使用或 2-3 人小团队
    • 不需要 CI/CD、不需要包管理、不需要看板
  2. 你的硬件极其有限
    • 树莓派、NAS、128MB RAM 的旧机器
    • 任何其他方案都跑不动
  3. 你想要最简单的部署和维护
    • 下载 → 运行 → 完成
    • 不想搞 Docker Compose 或数据库配置
  4. 你是 Gogs 老用户,用得挺好
    • 没有迁移的动力
    • 安全更新仍然有维护

选 SourceHut 如果你

  1. 你认同邮件工作流
    • 你已经在用或愿意学习 git send-email
    • 你觉得邮件列表比 Web 讨论更高效
  2. 你是极简主义者
    • 讨厌臃肿的 Web 界面
    • 厌恶 JavaScript 滥用
    • 希望 UI 加载速度像本地文件一样快
  3. 你同时使用 Git 和 Mercurial
    • SourceHut 是唯一原生支持两者的主流 forge
  4. 你重视隐私到偏执级别
    • 零追踪、零广告、零 AI
    • 所有功能在禁用 JS 的情况下可用
  5. 你不在乎"用的人多不多"
    • 你已经有了固定的开发者圈子
    • 不需要 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 是对开发的干扰,我想回到邮件的黄金时代


参考来源