作为一个拥有 1 核 1.9G 内存小 VPS 的穷逼站长,我真的是在自托管这条路上越走越远,越陷越深。今天就来聊聊那些年我踩过的坑,给同样在折腾的兄弟们一点参考。
先说结论:1G 内存真的不够用
我这台 Contabo 的小鸡,1.9GB 内存,看着还行对吧?天真。跑个 Nginx 反向代理 + Hugo 博客 + 一个 Docker 容器,内存就飙到 1.2G 了。你要是再想跑个什么 NocoDB、Vaultwarden、FreshRSS 之类的,直接 OOM 给你看。
我试过跑 NocoDB,你猜怎么着?就一个空数据库,啥都没往里放,启动就吃了 800MB 内存。吓得我直接 docker rm -f 三连。后来学乖了,上个 Watchtower 自动更新镜像就得了,别整那些花里胡哨的服务。
Docker 是好东西,但别乱用
Docker 确实方便,docker compose up -d 一把梭。但问题是,你装一个服务觉得没什么,装两个也还行,当你装了七八个的时候… 好家伙,docker ps 一看满满一屏幕,光端口映射就记不住谁是谁。
而且有些镜像真的是重量级。比如某个以笔记软件闻名的开源项目,一个 Java 写的,启动直接干 1GB 内存。我说大哥,你一个笔记软件,至于吗?我写个 markdown 用 Vim 不香吗?
反向代理是个坑
Nginx Proxy Manager 很好用,Web UI 点一点就能配域名。但坑就坑在:你配了 20 个域名之后,突然有一天某个服务连不上了,你排查半天,结果发现是 SSL 证书到期了,或者某个 upstream 容器的 IP 变了。
还有就是 Docker 内部网络的事。你容器 A 在 docker-compose.yml 里叫 web,容器 B 想访问它,得用 http://web:3000。但你要是用 localhost:3000,那不好意思,不通。这个坑我至少踩了三次才记住。
备份?不存在的
嗯… 说到备份,我现在还没搞自动备份。每次都是手动 tar 一下关键目录,丢到对象存储里。我知道这样不对,但就是懒。等哪天硬盘炸了再说吧(flag 已立)。
其实折腾本身就是快乐
说到底,自托管这件事,跟省钱其实没啥关系。你算算电费、域名费、VPS 月租,还不如直接买个 Notion 会员省心。但折腾的快乐就在于——“我自己搞定了” 那种成就感,以及看着 docker ps 输出一片绿色的 Up 状态的满足感。
而且,每当出问题的时候,你跑去 Google 搜 error log,然后找到三年前 Stack Overflow 上某个老哥的回复,照做之后真的修好了——那种感觉,比什么游戏通关都爽。
好了,我的 VPS 又报了内存告警,该去杀几个进程了(笑)。下次再聊运维的那些破事。
— JiangYM,一个在 1 核 1.9G 边缘疯狂试探的站长