govanity 是什么?
govanity 是 Google 提供的 go-import meta 标签服务参考实现。它是一个单独的 Go 二进制文件,读取一个 YAML 配置文件,然后响应 ?go-get=1 请求返回正确的 meta 标签。
# govanity.yaml
paths:
/auth:
repo: https://github.com/org/auth-service
vcs: git
/logger:
repo: https://github.com/org/logger
vcs: git
部署它,把域名指向它,就能工作。对于合适的场景,它是一个不错的工具。
不足之处
痛点一:基础设施你自己扛
govanity 是你自己运行的二进制文件。这意味着:一台服务器(或容器)、进程管理、健康检查、日志采集,以及凌晨 3 点它崩了得有人起来处理。“不就是个小 Go 程序嘛”——直到它出问题的时刻。
痛点二:不自带 HTTPS
govanity 只提供纯 HTTP 服务。你需要在前面加一层反向代理(Nginx、Caddy、Cloudflare)来实现 HTTPS。这又是一个需要配置、监控和维护的组件。
痛点三:只有配置文件,没有 CLI
添加路由意味着编辑 YAML 文件然后重启进程。没有 govanity add 命令,没有 API,没有编程式的管理方式。5 条路由的时候没问题,50 条的时候就变成了一次部署事件。
痛点四:不支持通配或模式匹配
每条路由都必须在配置文件中单独列出。如果你的组织在 github.com/org/ 下有 100 个仓库,你得写 100 条 YAML 配置。不支持 glob,不支持模板,不支持通配符。
逐项对比
| 维度 | govanity(自托管) | gvu(托管) |
|---|---|---|
| 搭建 | 编译二进制 + 写 YAML + 部署 + 反向代理 | `curl … |
| HTTPS | 手动(反向代理 + 证书管理) | 自动 |
| 路由管理 | 编辑 YAML + 重启进程 | CLI(gvu add / gvu remove) |
| 通配路由 | 不支持 | * 模式,一条规则 |
| go-source 标签 | 不生成 | 自动识别 GitHub/GitLab/Bitbucket |
| 主版本支持 | 每条路由手动配 | 自动(/v2、/v3…) |
| 运维负担 | 服务器 + 进程 + 代理 + 证书 | 零 |
| 多设备同步 | 共享配置文件(Git?) | 基于账户,自动 |
| 自定义域名 | 手动 DNS + 代理配置 | CNAME + 自动 TLS |
| 监控 / 告警 | 自己搭建 | 已包含 |
| 成本 | 服务器费用 + 你的时间 | 免费套餐可用 |
什么时候适合 govanity
govanity 适合以下场景:
- 你所有服务都在内部运行,不能使用外部服务(合规、隔离网络)
- 你已经有 Kubernetes + TLS 终止,不介意多一个部署
- 你的路由列表很少变动
- 你想研究参考实现来理解
go-import协议
对大多数团队来说,自托管的维护税不值得。
gvu 带来了什么
零基础设施,零运维
不需要服务器,不需要二进制,不需要 YAML,不需要反向代理。装个 CLI,添加路由,搞定。你的团队专注于 Go 代码,而不是维护一个 vanity URL Web 服务器。
通配路由:一条规则覆盖所有
gvu add 'go.yourcompany.com/dept/*' 'https://github.com/org/*.git'
100 个仓库?一条规则。govanity 需要 100 条 YAML 配置。
自动生成 go-source + 主版本支持
govanity 只提供 go-import meta 标签。gvu 还会生成 go-source 标签(用于 pkg.go.dev 上的源码浏览),并自动处理 /v2、/v3 导入路径。
开始使用
curl -fsSL gomodvanityurls.com/install.sh | bash
gvu add gomod.io/yourname/your-module https://github.com/your-org/your-module.git
永久免费,最多 5 条路由。无需注册。