一个人的机房

自托管、造轮子,和关于软件的私人笔记

在自己的服务器上

我的服务器是一台很普通的云主机。没有 Kubernetes,没有一整套花哨的可观测面板, 只有一台机器,和上面几十个安安静静跑着的小容器。有时候半夜睡不着,我会去看一眼它的负载, 像看一盆养了很久的植物——不为做什么,只是确认它还活着。

起初只是想省事:与其每个小项目都去租一个平台、配一遍域名和证书,不如自己写一层薄薄的东西, 把「部署」这件事收拢成一条命令。后来它长成了一个小小的 PaaS。核心其实简单得可笑—— 一个反向代理按域名分流,谁来了 a.example.com 就送到 a 容器, b.example.com 就送到 b。证书交给 ACME 自动签,登录交给一个统一的 ForwardAuth 边车,镜像更新交给一个每隔几分钟去仓库看一眼的守护进程。

把这些零件拼齐之后,新上线一个服务就变成了:推一次代码,等它自己构建、 自己拿到一个子域名、自己续证书。我甚至给它配了自托管的 git 和镜像仓库, 于是整条链路——从我敲下 git push 到浏览器里页面亮起来—— 全都发生在我自己的那台机器上,不经过任何别人的手。

自托管真正的奢侈,不是省下的那点钱,而是「没有人能在某天早上替我决定关掉它」。

当然,代价也是实打实的。所有中间件的配置文件都住在那台机器上, 改一行路由规则写错了,整站可能就是几个小时的 404;备份、磁盘、内核升级, 没有人替你兜底。自由和责任是同一枚硬币——你把东西攥在手里, 它坏了就也只能是你自己去修。

但我还是喜欢这种攥在手里的感觉。那台机器像一间只属于我的小工坊, 灯一直亮着,工具都在顺手的地方。它不快,不大,不先进, 可是每一处我都清楚它为什么长成这样。这就够了。