一台VPS多用:把年付的钱花出3倍价值
年付的VPS只跑一个博客?浪费了。小够教你一台VPS多用:博客+监控告警+RSS阅读器+私人Git仓库,1核2G轻松承载,年付的钱花出3倍价值。
我是小够。很多人年付买了台 VPS,只跑一个博客,CPU常年5%以下——这钱花得太浪费了。今天讲"一台多用":一台 1核2G 的 VPS,怎么同时跑4个服务,还稳稳的。
组合方案:博客 + 监控 + RSS + Git
这四个是绝配,理由是资源错峰:
- 博客(WordPress 或 Hugo):主力,白天有人访问
- Uptime Kuma 监控:监控你的所有网站和 VPS,资源占用极小,24小时跑
- FreshRSS 阅读器:RSS 订阅,定时抓取,资源占用小
- Gitea 私人 Git 仓库:代码托管,平时几乎不占资源
1核2G 跑这四个,内存占用大概 1.2G 左右,还有富余。1核1G 的话,去掉 Gitea,三个也轻松。
怎么跑:Docker 是答案
一台多用,别一个一个装到系统里,用 Docker Compose 管理:
- 每个服务一个容器,互不干扰
- 备份就是备份数据卷和 compose 文件
- 想迁走,整套 compose 搬过去就行
新手怕 Docker?其实现在的一键脚本和面板(1Panel、宝塔的 Docker 管理)已经把门槛降得很低了。学一次,受用所有 VPS。
资源分配的原则
- 内存是硬约束:4个服务里,博客(尤其 WordPress+MySQL)最吃内存,先保证它
- 定时任务错峰:备份、RSS 抓取,别都定在凌晨3点,错开半小时
- 留 20% 余量:内存用到80%是警戒线,长期90%以上,迟早 OOM
资源规划:四个服务各吃多少资源
动手前先估算,避免搭到一半内存爆了。以下按"够用"的下限估算(具体以官方文档为准,截至撰写时):
- 博客(WordPress):PHP + MySQL,1G 内存是生死线。文章不多、插件不多的话,1G 能跑;想宽松,上2G
- Uptime Kuma:Node.js 应用,官方文档的最低要求不高,512M 内存的小鸡就能跑得很欢
- FreshRSS:PHP 应用,内存占用小,256M 都够
- Gitea:Go 写的,资源占用感人,1核1G 跑得飞起
加起来:1核2G 是舒适线,1核1G 是紧凑线(去掉 Gitea)。估算方法:每个服务按官方最低要求 × 1.5 倍,加起来就是你的内存需求。
Docker Compose 实战:目录结构
一台多用,目录结构建议这样:
~/apps/
├── blog/
│ ├── docker-compose.yml
│ └── data/
├── uptime-kuma/
│ ├── docker-compose.yml
│ └── data/
├── freshrss/
│ └── ...
└── backup.sh # 一键备份所有 data 目录
每个服务独立目录,data 目录就是它的全部身家。备份=打包所有 data 目录,迁移=复制整个 apps 文件夹。这套结构用习惯了,换 10 台机器都不怕。
反向代理用 Nginx Proxy Manager 或 Traefik,一个 80/443 端口管所有服务的域名。每个服务一个子域名:blog.你的域名、status.你的域名、rss.你的域名,清爽。
告警:监控自己的也要被监控
Uptime Kuma 监控所有服务,但谁监控 Uptime Kuma 自己?答案是:外部免费监控。
UptimeRobot 免费版(50 个监控项)监控你的 Uptime Kuma 公网地址。双保险:内部监控管得细,外部监控管"整台机器挂了"的情况。两边都告警,基本不会漏。
告警通道建议 Telegram Bot:免费、即时,国内直连可用性相对较好。把告警 Bot 和日常 Bot 分开,半夜被吵醒时,一看是哪个 Bot 就知道严重程度。
进阶:什么时候该拆成两台
一台多用是美德,但"多"有个度。出现下面四个信号,就说明该拆了:
信号一:资源长期压着 80% 线
内存、CPU 长期在 80% 以上,偶尔还飙到 95%——这不是"充分利用",这是"走钢丝"。一次流量小高峰、一次定时任务撞车,就可能 OOM。资源告警天天响,说明这台机器已经到头了。
信号二:生产和实验开始打架
博客跑着好好的,你在同一台上折腾个新项目,一个配错把 Nginx 搞挂了,博客跟着遭殃。“别混生产和实验"是铁律,违反的代价就是一次真实的宕机。实验另起一台最便宜的 VPS,一年也就十几二十美元,买的是"折腾自由”。
信号三:单点故障输不起
一台机器挂了,四个服务全挂。如果其中某个服务(比如客户的网站、接单的业务)宕机一小时就丢钱,那就不能接受"全放在一个篮子里"。重要的服务拆出去,至少保证"挂一台不影响吃饭的家伙"。
信号四:需要隔离
- 客户项目 vs 个人项目:客户的东西单独一台,账算得清,出问题不连累
- 公开服务 vs 私人服务:博客是公开的,Gitea 私库、私人网盘是私密的,混在一起安全边界模糊
怎么拆:按"稳定 vs 折腾"拆
拆分原则:稳定的一台,折腾的一台,而不是按应用类型拆。比如:
- A 机器(稳定):博客 + Uptime Kuma + FreshRSS,不动它,让它安安静静跑
- B 机器(折腾):Gitea + 各种实验项目,随便折腾,挂了不心疼
B 机器买最便宜的就行,A 机器买稳的。两台加起来,可能比一台高配还便宜——这就是拆分的经济学。记住拆分的时机:早了浪费钱,晚了交学费,四个信号出现任意两个,就是动手的时候。
资源告警设置:内存 80% 线
前面说了"内存用到 80% 是警戒线",但光知道没用,得让机器在越线时主动喊你。告警分三层:
第一层:资源阈值告警(必做)
盯这四个指标,阈值小够推荐:
- 内存使用率 > 80%:警告,看看是谁在吃内存;> 90%:严重,准备处理,OOM killer 可能已经在路上了
- 磁盘使用率 > 80%:警告,日志、备份文件是两大元凶;> 90%:严重,磁盘满了服务直接罢工
- CPU 5 分钟平均 > 80%:持续 10 分钟以上,说明有进程在搞事
- 流量:月流量用到 80%,提醒一下,别超了被限速或扣费
工具选择:已经装了 Uptime Kuma 的,可以顺手装个 Netdata(开箱即用,Web 界面看资源曲线);轻量党用 cron + 简单脚本定时检查,超阈值就发 Telegram。方法不重要,重要的是有人(机器)替你盯着。
第二层:服务存活告警(已做)
就是前面说的 Uptime Kuma + UptimeRobot 双保险。资源告警管"机器快不行了",存活告警管"服务已经挂了",两层缺一不可。
第三层:告警疲劳防护
告警最大的敌人不是"没告警",是"告警太多被无视"。三条经验:
- 阈值别设太低:内存 50% 就告警,你三天就麻木了,该响的时候不看
- 分级:警告走 Telegram 普通消息,严重才 @ 所有人/打电话。半夜被吵醒三次都是"磁盘 81%",你会想把告警全关了
- 定期复盘:每个月看一眼告警记录,误报多的阈值往上调,漏报的往下调
记住:告警是手段,不是目的。目的是"出问题时你知道",不是"手机天天响"。
反模式:别在一台上堆太多
一台多用是美德,但"多"有个度。小够的红线:
- 别混生产和实验:跑着客户网站的机器,别拿来折腾新东西。实验用另一台便宜的
- 别堆重 IO 应用:Nextcloud 网盘 + 博客 + 数据库,三重 IO 叠加,SSD 再快也扛不住
- 单点故障要有数:一台机器挂了,四个服务全挂。重要服务还是要异地备份
算账:值多少钱
一台年付20美元的 VPS,跑4个服务,平均一个服务5美元/年。如果分开买4台最便宜的 VPS,一年也要40美元+。一台多用,直接省一半——这就是"把年付的钱花出3倍价值"。
当然,前提是这台 VPS 稳定。商家别选太野的,监控自己搭的 Uptime Kuma 正好监控它自己(再加个外部的免费监控做双保险,比如 UptimeRobot 免费版)。
记住:VPS 是资源,不是摆设。让它忙起来,你的钱才没白花。
常见问题
Q:1核1G 的机器,一台多用真的够吗? A:够,但要做减法:博客用 Hugo 这类静态生成(不占内存),或者 WordPress 精简插件;去掉 Gitea(最吃资源的一个)。1核1G 跑博客 + Uptime Kuma + FreshRSS 是小够验证过的舒适组合——“验证过"指的是资源估算层面,具体以你实际跑的占用为准,装完看一周的监控曲线再下结论。
Q:Docker 和直接装到系统里,选哪个? A:一台多用选 Docker。理由:隔离性好(一个服务搞崩不影响其他)、备份简单(数据卷一打包就行)、迁移方便(compose 文件搬过去)。直接安装适合"一台只跑一个服务"的场景。学 Docker 的成本,一周就回本。
Q:一台多用,备份怎么做? A:三层备份:①每个服务的 data 目录每日打包(就是前面目录结构里的 backup.sh);②整机快照(商家面板的一键快照,大改动前打一个);③异地一份(备份包同步到另一台机器或对象存储)。记住 3-2-1 原则:3 份数据、2 种介质、1 份异地。
Q:多个服务共用 80/443 端口,域名怎么分? A:用反向代理(Nginx Proxy Manager 或 Traefik),每个服务一个子域名:blog.你的域名、status.你的域名、rss.你的域名。反向代理负责按域名分发,一台机器一个 443 端口管所有服务,证书还能自动续。子域名在 DNS 里加 A 记录指向同一台机器就行。