自托管到底在折腾什么?从 awesome-selfhosted 到 go2rtc 的四层答案

「为什么你要自己架服务,直接用现成的不好吗?」——本文用四个 GitHub 项目回答这个问题。自托管不是一种技术偏好,是一套关于数据主权的价值观,而它的工程形态远比想象中精致。

每次跟人聊起家里那台跑着十几个容器的小服务器,总会被问:「云上不香吗?免费额度不够吗?」

香。但研究完 awesome-selfhosted(307K Star)这个索引库和它圈子里的几个代表项目后,我想给自托管一个更准确的定义:**它不是「自己部署软件」,而是「把数据、服务、规则的控制权收回到自己手里」。**这个定义能解释为什么这个圈子既极客又固执。

第一层:一张地图——awesome-selfhosted

先看规模。awesome-selfhosted 收录了数百个可自托管应用,覆盖:

类别代表项目替代的商业服务
通信Matrix、Jitsi、DiscourseSlack、Zoom、Reddit
内容Ghost、BookStack、StrapiMedium、Notion、Airtable
文件同步Nextcloud、MinIO、SyncthingGoogle Drive、Dropbox
媒体Jellyfin、Immich、NavidromeNetflix 相册、Google Photos、Spotify
DevOpsGitea、Drone、Uptime KumaGitHub、Jenkins、StatusPage
AIOllama、LocalAIOpenAI API(本地化)

注意几个细节,能看出这个社区的「价值观洁癖」:

  1. 只收符合开源定义(OSD)的软件,非自由软件单独关进 non-free.md 小黑屋。数据主权的前提是软件本身可审计,逻辑是自洽的。
  2. GitHub Actions 自动巡检死链和弃坑项目——索引库最大的天敌是腐烂,他们用自动化对抗它。
  3. 元数据独立仓库(YAML/JSON)管理,README 自动生成——数据与展示分离,这个工程实践本身就值得抄。

它诚实列出了缺点:技术门槛、安全更新责任、硬件带宽成本。自托管不是免费的,只是把「订阅费」换成了「运维投入」。想清楚这笔账,再看要不要入坑。

第二层:协议翻译官——go2rtc

如果说 awesome-selfhosted 是地图,go2rtc(AlexxIT,Go 语言)就是自托管精神的极致样本。它解决的问题特别具体:家里摄像头品牌太杂,协议互不相通。

海康用私有协议、小米用自家的、Ring 又是一套;你想看画面,要么装五个 App,要么各厂商的云服务各看各的(还得交月费)。go2rtc 的做法是做一个「通用协议转换网关」:

graph LR A[RTSP/ONVIF/海康/小米<br/>Ring/Wyze/GoPro...] --> G[go2rtc<br/>协议转换网关] G --> B[WebRTC 零延迟播放] G --> C[HLS / MP4 / RTMP] G --> D[HomeKit / Home Assistant]

输入端支持 RTSP/RTMP/WebRTC/ONVIF/HLS 加一堆私有协议,输出端支持 WebRTC(零延迟)、HLS、MP4、HomeKit,还能双向音频、推流到 YouTube/Telegram。

工程上最漂亮的一笔:纯 Go 单二进制,零依赖。没有运行时、没有 Docker 也能跑,丢到树莓派上就能用。这不是偷懒,是自托管场景的最优解——用户的运维能力参差不齐,「一个文件解决问题」就是最高的可用性。

它也明确画了边界:不做 AI 分析、高级转码依赖 FFmpeg。又一个「敢不做」的范例(参考我上一篇数据库的文章)。

第三层:隐私替代品——open-notebook

自托管的另一大动机是隐私。open-notebook 瞄准的是 NotebookLM——Google 的 AI 笔记产品确实好用,但你的研究资料要上传到别人的服务器。

它的替代方案:多笔记本管理、PDF/视频/音频/网页全格式摄入、18+ AI 提供商可选(含本地模型)、多人播客生成、全文+向量搜索、REST API。架构是 Python FastAPI + LangChain + SurrealDB(关系+向量一体),Docker Compose 两个容器起服。

关键差异不在功能多少,在模型选择自由:你可以接 DeepSeek、接本地 Ollama,敏感资料一个字节不出局域网。对律师、医生、企业研究员这类人群,这不是偏好,是刚需。

代价也写得很清楚:引用溯源功能还基础、SurrealDB 小众、生态年轻。自托管替代品普遍长这样——功能追平商业版要时间,你买的是「方向正确」。

第四层:给 AI 喂本地数据——newsnow 的 MCP 思路

最后一个样本是 newsnow:实时热点聚合器,把各平台热榜统一呈现。单看是个小工具,但它的 MCP Server 功能点出了一个新趋势——自托管服务正在变成 AI Agent 的数据源

把新闻聚合器暴露成 MCP(Model Context Protocol)接口后,你的 AI 助手可以直接查「现在各平台在热议什么」。类似的思路遍地开花:Immich 给 AI 提供照片库、Gitea 提供代码库、Uptime Kuma 提供监控状态……自托管服务不再只是「给人用的网页」,而是「给 Agent 用的基础设施」。

这大概是自托管运动最新的意义:当你拥有数据和服务,你才能把它们接进自己的 AI 工作流,而不是等厂商哪天开放 API。

入坑前的几句实话

研究完这批项目,给想入坑的人三条建议:

  1. **从「痛点驱动」开始,别从「装备驱动」开始。**先问「什么服务最让我不爽」(照片备份?追剧?RSS?),自托管那一个,而不是一上来买 NAS 装二十个容器。
  2. **单二进制/单容器的项目优先。**go2rtc 这类零依赖项目的运维成本几乎为零;依赖复杂的项目先掂量自己能不能跟进安全更新。
  3. **备份和更新是入场券。**自托管的「自由」附带「责任」:数据备份策略、定期升级、暴露面检查,一样都不能省。

自托管圈有句话:「你的数据在你自己的硬盘上睡觉,才睡得踏实。」这话听起来矫情,但看懂了 awesome-selfhosted 那张地图的规模,你会发现认同它的人真的不少——而且越来越多。