折腾三年 Homelab,我砍掉了一半自建服务:一份真实的退役清单与求稳心得
前阵子半夜三点,我盯着手机上的告警弹窗发呆—…
前阵子半夜三点,我盯着手机上的告警弹窗发呆——又一个自建服务挂了,而这已经是这个月第三次。爬起来修到凌晨四点,回头一看:家里这台小服务器上,跑着整整二十几个 Docker 容器,其中至少一半,我已经三个月没碰过了。
那一刻我突然意识到一件事:折腾 Homelab 和过日子一样,东西不是越多越好,是越顺手越好。于是上个月我做了一件反直觉的事——没上新服务,反而动手砍掉了一半。今天把这份”退役清单”和背后的判断逻辑写下来,给同样在自建路上越走越深的朋友提个醒。
一、为什么开始做减法
很多人玩 Homelab 会经历三个阶段。第一阶段是”追新”:看到什么好玩的就 docker run 一把,今天一个监控、明天一个书签服务、后天一个 RSS 阅读器,容器列表越来越长。第二阶段是”失控”:服务之间开始抢内存、抢端口,日志没人看,数据没人备份,出问题想不起来当初怎么部署的。第三阶段才是”求稳”:只留真正在用的、能维护的,剩下的果断送走。
我卡在第二阶段很久。二十几个容器里,有五个监控工具功能重叠,三个笔记系统互相打架,还有几个纯粹是当时”觉得以后会用到”的,结果一次都没打开过。它们不产生价值,却每天都在消耗三样东西:内存、我的注意力、以及出事时的排查时间。
二、我的退役清单
砍服务不是拍脑袋,我给自己定了三条硬标准:
- 三个月没真正用过——”以后可能用”不算用过;
- 功能被别的服务覆盖——同类只留一个;
- 维护成本高于使用价值——每次升级都要折腾半天的,趁早送走。
按这三条筛下来,第一批退役的有这些:
- 一个花哨的仪表盘:看着炫,实际每天只看一眼 CPU 温度,直接换成一行
htop加一个轻量告警就够; - 三个自建笔记工具:最后只留一个,其余数据合并导出,容器全删;
- 一个吃灰的网盘:搭好之后传了两次文件就没再用,留着还占着 500MB 内存;
- 一堆重复的监控:uptime、延迟、证书过期各一个,合并成一个自托管方案。
砍完之后,内存占用降了差不多 40%,最重要的是:半夜弹的告警少了,因为我需要盯的东西变少了。
三、优雅地”送走”一个服务
退役服务最忌讳的就是手一抖直接 docker rm -f,那样数据没备份、依赖没理清,回头想恢复都没门。正确的做法是分四步走,我以退役 Uptime Kuma 为例:
第一步,先摸清底细。看看它到底占了多少资源,状态如何:
# 查看容器状态、资源占用
docker ps -a --filter "name=uptime-kuma" \
--format "table {{.Names}}\t{{.Status}}\t{{.Size}}"
第二步,停容器但不删数据。用 compose 停止,数据卷原样保留,给自己留个后悔的机会:
# 停掉并移除容器,但数据卷仍保留
cd ~/docker/uptime-kuma
docker compose down
第三步,备份数据再决定去留。导出数据卷里的内容,打包留档:
# 用一次性容器把数据卷打包到备份目录
docker run --rm \
-v uptime-kuma_data:/data \
-v /backup:/backup \
alpine tar czf /backup/uptime-kuma-$(date +%F).tar.gz -C /data .
第四步,确认彻底不要了,再清理。删掉数据卷和堆积的无用镜像:
# 删除已停止容器对应的数据卷
docker volume rm uptime-kuma_data
# 清理悬空镜像和无用资源(慎用 -a,会清所有未运行容器的镜像)
docker system prune --volumes
这套流程走下来,哪怕哪天后悔了,备份还在、镜像还能拉,随时能满血复活。比”删了拉倒”稳妥得多。
四、求稳之后,我的三条判断标准
折腾三年最大的收获,其实不是技术,是克制。现在每次想上一个新服务,我都会先问自己三个问题:
- 它解决的真实问题是什么?如果答不上来,那大概率只是”看着想玩”;
- 它和现有服务重不重叠?重叠就说明我可能只是想换个新的,而不是真的缺;
- 半年后我还能不能维护它?凡是依赖一堆外部 API、配置复杂到记不住的,慎重。
留下来的,都是一句话能说清用途、出问题五分钟能定位的服务。少了花架子,反而更愿意去用、去维护。
写在最后
Homelab 的意义从来不是”我搭了多少服务”,而是”这些服务让我的生活和工作真的变省心了吗”。如果你也发现自己陷在不停部署、不停吃灰的循环里,不妨抽个周末,照着上面三条标准做一次减法。砍掉一半之后,你会发现:能稳定跑三年的三个服务,比吃灰三个月的三十个服务,值钱得多。
我是 IT 大叔,一个在本地自建路上越走越清醒的折腾党。下回见。
