一个人的全栈基础设施
2026年4月8日
2 分钟阅读
曾田力
独立开发
DevOps
VPS
自动化
为什么不用 PaaS
Vercel、Railway、Render 这些平台确实方便,但有几个问题:
- 成本不可控:流量突增时账单会吓人
- 厂商锁定:迁移成本随时间指数增长
- 灵活性不足:想跑个 cron job 或 websocket 都有限制
- 学习深度不够:对底层一无所知,出问题时无从排查
一台 VPS($30/月)就能跑所有服务,完全自主可控。
架构全景
┌─── Cloudflare ───┐
│ DNS + CDN │
│ CF Access │
│ Origin Rule │
└────────┬─────────┘
│ :8443
┌────────┴─────────┐
│ Nginx │
│ (反向代理) │
└────────┬─────────┘
│
┌─────────────────┼─────────────────┐
│ │ │
┌─────┴─────┐ ┌─────┴─────┐ ┌──────┴──────┐
│ systemd │ │ Docker │ │ Static │
│ (24) │ │ (4) │ │ Files │
└───────────┘ └───────────┘ └─────────────┘
网络层
- Cloudflare:DNS 解析 + CDN 缓存 + DDoS 防护
- CF Access:Zero Trust 认证(邮箱验证码),替代自建认证
- Origin Rule:所有流量通过 CF 代理,回源到 VPS 的 8443 端口
Nginx
单一入口,按子域名路由到不同后端:
server {
server_name tianlizeng.cloud;
location / { proxy_pass http://127.0.0.1:3000; }
}
server {
server_name dashboard.tianlizeng.cloud;
location / { proxy_pass http://127.0.0.1:3001; }
}
# ... 更多子域名
服务管理
所有服务用 systemd 管理:
# 查看所有服务状态
systemctl list-units --type=service --state=running | grep -E "website|dashboard|hydro"
# 部署新版本
cd /var/www/website && bash deploy.sh
# deploy.sh 自动: git pull → build → restart
自动化
部署
每个项目标配 deploy.sh:
git pull origin main
pnpm install --frozen-lockfile
pnpm build
sudo systemctl restart website
监控
health_check.py:定期检查所有服务的 HTTP 响应status.tianlizeng.cloud:公开状态页briefing 系统:每天早上邮件推送系统状态摘要
DNS 管理
# 列出所有 DNS 记录
python3 ~/Dev/devtools/lib/tools/cf_api.py dns list
# 添加新子域名
python3 ~/Dev/devtools/lib/tools/cf_api.py dns add hydro-new A 104.218.100.67
成本
| 项目 | 月费 |
|---|---|
| VPS (PureVoltage 4C/8G) | $30 |
| 域名 (tianlizeng.cloud) | ~$1 |
| Cloudflare | $0 (Free plan) |
| 合计 | ~$31/月 |
1.3。任何 PaaS 平台都做不到这个成本。
经验
- systemd 是最好的进程管理器——不需要 PM2、supervisor 等额外工具
- Cloudflare Free 够用——CDN、DDoS 防护、SSL、Access 全免费
- 标准化部署脚本——每个项目的 deploy.sh 结构一致,降低心智负担
- 不要过度容器化——简单的 Node.js/Python 应用直接 systemd 就行,Docker 留给真正需要隔离的场景