一台小服务器最迷人的时刻,通常不是安装完成的那一刻,而是几个月后的某个晚上:它安静地亮着几盏指示灯,照片、文章和工具仍然各自在正确的位置运行。

自托管容易让人上瘾。看到一个新服务,就想马上部署;看到一份新的 Compose 文件,就想再开一个端口。但服务数量从来不是成就,长期稳定才是。

先回答“为什么要运行”

每增加一个服务,都意味着新的升级、日志、数据目录和安全边界。在启动容器之前,先写下一句话:它解决什么问题,谁会使用,数据放在哪里。

如果这三个问题没有清楚答案,暂时不部署通常是更好的选择。

默认只监听本机

数据库、缓存和内部 API 没有必要直接暴露到公网。让应用只监听 127.0.0.1,再通过 Nginx 统一提供 HTTPS,是简单而有效的边界。

公网只看到必要入口,内部服务仍留在服务器内部。少开放一个端口,就少维护一份风险。

让更新可以回滚

直接覆盖正在运行的目录很省事,也最容易在出错时陷入被动。更稳妥的方式是把新版本放到独立发布目录,验证通过后再切换当前版本。

更新前记住三个问题:旧版本在哪里,数据是否兼容,回滚需要多长时间。能回答清楚,才算真正准备好了。

健康检查不能只看“进程还在”

容器显示运行,并不代表网站能够访问。一次完整检查至少包括:应用健康接口、反向代理、HTTPS、域名、首页、静态资源和最近错误日志。

同时要区分“服务器本地正常”和“公网正常”。前者证明程序启动了,后者才证明访问链路完整。

少而稳,是更好的自托管

理想的服务器不是塞满应用的展示柜,而是一套边界清楚、数据可恢复、故障可定位的生活基础设施。

它不需要时时提醒自己的存在。最好的状态,是在需要时随手可用,在不需要时安静值夜班。