前几天,我在 L 站中奖了。

L 站就是 Linux DO,一个平时聊 Linux、AI 和各种技术折腾的论坛。我本来也没觉得这种好事会落到自己头上,结果还真中了一台云服务器。

收到中奖消息的时候,除了高兴,我第一个想法其实是:

这台机器能拿来干什么?

我不缺一个临时网盘,也没打算在上面跑什么大型项目。为了用服务器而硬想一个需求,好像也没什么意思。

但我家里正好有一台 NAS。

这台 NAS 里已经跑着我的博客、云剪贴板、服务监控和一些自己用的小工具。在家里访问它们没问题,真正麻烦的是,如何稳定、简单地从外面访问。

想到这里,这台意外得来的服务器,突然就有了一个很合适的位置。

它不是主角,而是家里的“门口”

我中的这台机器在北京,Ubuntu 22.04,2 核 CPU、不到 2G 内存、40G 硬盘。

规格不算高,但非常适合做一个轻量的公网入口。真正的程序和数据仍然放在家里的 NAS 上,云服务器只负责接收外面的访问,再把请求送回家里。

整个结构大概是这样:

访问者
我的域名
北京云服务器(Nginx + FRP)
家里的 NAS
博客、剪贴板、监控等服务

云服务器像一个门卫。访问博客的人被送到博客,访问剪贴板的人被送到剪贴板。家里的 NAS 不用把一堆端口直接暴露到公网,也不需要关心访问者现在在哪里。

这个方案对我来说刚好。

NAS 负责存东西和跑服务,云服务器负责和公网打交道。两台机器都不强,但各自做自己擅长的事。

第一个打通的,是我的云剪贴板

真正开始的时候,我没有一次性搬一堆服务,而是先选了最简单的云剪贴板。

我平时会在手机、Mac 和其他电脑之间复制文字。专门开个聊天窗口给自己发消息,总觉得有点别扭,所以我之前就在 NAS 上放了一个小剪贴板。

当我第一次在外面输入域名,看到这个原本只能在家里打开的页面真的出现时,感觉还是挺奇妙的。

它当然不是什么了不起的产品,也没有多少人会用。

但它确实从我家里的一块硬盘出发,经过 NAS、FRP、北京的服务器和我的域名,最后出现在手机屏幕上。

那一刻,之前看起来有点抽象的“反向代理”和“内网穿透”,一下就变成了看得见、摸得着的东西。

过程没有想象中那么顺利

这篇不想写成一份从第一条命令复制到最后一条命令的教程,因为实际搭建的过程并没有那么干净。

一开始,我按照常见方案让 FRP 使用 7000 端口,结果家里的 NAS 怎么都连不上。我原以为是配置写错了,来回检查了几遍,最后才发现问题在网络路径上。换到 443 端口以后,立刻就通了。

服务器下载 GitHub 文件也不稳定。最后的办法很笨:在 Mac 上下载好,再分别传到云服务器和 NAS。不优雅,但能用。

后面还遇到了一个特别容易误判的问题:关掉代理时网站可以打开,开着代理反而打不开。

这种时候很容易继续去改服务器,但最后发现,服务器、FRP、Nginx 和域名都没问题,真正的原因是本地代理软件的规则和缓存。

折腾一圈以后,我对排查问题倒是有了一个更直观的理解:不要因为最后看到的是“网页打不开”,就只盯着网页服务器。中间的每一层,都有可能是问题所在。

然后,我把这个博客也放了进去

云剪贴板跑通以后,后面的事情就自然了很多。

我把这个博客、服务状态监控,以及其他几个自己用的页面,都逐步接到了同一个公网入口。

现在读到这篇文章时,你打开的页面,就存放在我家里的 NAS 上。它先从家里穿过网络到达北京的云服务器,再从那里到达你的手机或者电脑。

以前我觉得“拥有一台服务器”,更像是有一台可以远程登录的 Linux 电脑。

真正把这条链路搭完以后,我才发现,服务器的意义不在于那几核 CPU 或者几 G 内存,而在于它能不能和你自己的生活发生关系。

它可以是一个博客,一个剪贴板,一个家庭相册,一个不想交给别人的小工具。东西不一定要很大,只要是真的对自己有用。

这台中奖的服务器,我算是用上了

直到现在,这套东西也不能说有多完善。

有些配置还需要整理,服务还要继续观察,后面也会有新的问题。自己搭服务的代价,就是出问题了也要自己修。

但我挺喜欢这种感觉。

它不是一个注册完就等着它永远运行的云服务,而是我一点点接起来的。哪个域名去哪个服务,数据放在哪里,什么能在外面访问,都由我自己决定。

一开始只是因为在 L 站中了一次奖,不想让这台机器闲着。

后来它却真的成了我家里那台 NAS 通往外面的一扇门。

这大概就是这次中奖对我最有意思的地方。