Charlie ← 全部文章
2026-08-02 · 折腾记录

个人网站到底该放哪:我 NAS 和 PaaS 都用过,结论可能反直觉

服务器机柜屏幕上的红色 403
我的网站对所有访客返回 403,持续一周没人发现

先说事故。我的个人网站 generalwu.com 之前一直跑在家里的 NAS 上——群晖 + Docker 里的 nginx + Cloudflare Tunnel 穿透出去。方案没问题,直到我发现一件事:

整个网站对所有访客返回 403,持续了一个多星期,我完全不知道。

没有监控,没有告警,是我自己手贱 curl 了一下才发现的。排查结果哭笑不得:NAS 上网站目录的权限是 770,加上群晖的 ACL 限制,nginx 容器里的 worker 进程(uid 101)连目录都进不去。改两行 chmod 就好了——但「挂了没人发现」这件事让我认真想了一遍:静态网站这种没有状态的东西,到底该不该放在自己家里。

想完的结果是:我把它搬到了 Cloudflare Pages。这篇文章就是整个思考过程和迁移实录。

两种方案到底在比什么

我两个都真实用过,不是云评测。先把结论表放这,后面展开。

NAS + TunnelPaaS(CF Pages 等)
部署方式手动传文件 + 修权限git push / wrangler deploy
运维责任全是你:进程、磁盘、权限、Tunnel平台管可用性
故障发现靠自己 curl(血泪教训)基本不会整站挂
访问速度家庭宽带 + Tunnel 出海全球 CDN
能跑什么任何东西:Docker 服务、数据库静态站 + 受限函数
版本/回滚没有每次部署可回滚
数据归属完全在自己手里在平台上
成本机器已在跑,边际 0免费额度内 0
NAS+Tunnel 与 PaaS 方案对比表
两种方案逐项对比
NAS+Tunnel 与 Cloudflare Pages 架构对比
左:旧方案每一环都自己维护;右:Pages 把可用性抽象掉

NAS 方案的真正问题不是技术,是「你就是运维」

NAS 通过 Tunnel 连接到云端
NAS + Tunnel 解决「家里服务暴露到公网」

NAS + Cloudflare Tunnel 这个组合,技术上我很喜欢:不要公网 IP,不用端口转发,Tunnel 自动处理 HTTPS 证书,运营商封入站端口也不怕。它解决的是「怎么把家里的服务暴露到公网」,这个问题 Vercel 和 Pages 回答不了。

但用它托管一个纯静态博客,属于高射炮打蚊子,还顺带把运维责任全背上了。403 那次事故,在任何一个 PaaS 上都不可能发生——因为根本不存在「目录权限」这回事。平台把可用性这层全抽象掉了。

免费额度到底有多少,我扒了官方文档

「免费」这两个字每家都喊,但具体到数字差别很大。我把 Cloudflare Pages 和 Vercel 官方文档里的免费额度抄出来,你自己看:

免费额度Cloudflare PagesVercel (Hobby)
带宽/流量不限量(官方明确不按带宽计费)100 GB/月,超出 $0.15/GB
构建次数500 次/月不限(但占用构建时长配额)
单文件大小25 MiB(大文件要转 R2)
单站文件数20,000 个
自定义域名不限(挂自己域名免费 + 自动 HTTPS)免费
函数调用走 Workers 免费额度(10 万次/天)100 万次/月,超了按量
Cloudflare Pages 与 Vercel 免费额度对比表
免费额度逐项对比,Pages 的不限带宽是杀手锏

看出来了吗——对个人静态站,Pages 的「不限带宽」是杀手锏。Vercel 的 100 GB 对一个有点流量的站一不留神就超,超了就是真金白银。这也是为什么英文圈但凡聊「免费托管」,Cloudflare Pages 几乎是默认答案。Vercel 真正的强项是 Next.js 的深度集成和服务端渲染,纯静态站用它属于杀鸡用牛刀还费钱。

PaaS 的缺点也很真实

别把 PaaS 想成银弹。它的短板同样明确:

迁移实录:20 分钟搬完一个站

整个过程比我想象的顺。步骤:

  1. 整站打包(HTML + 图片 + 头像视频),git init,推到 GitHub 私有仓库。
  2. Cloudflare API 创建 Pages 项目。想直连 GitHub 仓库做自动部署,结果 Pages 的 Git 集成报了个内部错误(8000011),改走 wrangler direct upload。
  3. npx wrangler pages deploy . --project-name=xxx,14 个文件 6 秒传完,xxx.pages.dev 立刻能访问。
  4. API 绑定自定义域名,把 DNS 的 CNAME 从 Tunnel 指向 Pages。
  5. 三分钟左右证书签发完成,域名 active。
NAS 迁移到 Cloudflare Pages 的五步流程
整个迁移五步,20 分钟

顺手记两个排障点,给要照做的人:

我的最终架构:各管各的

左边灰暗机房与右边明亮云端的对比
静态内容交给云端,服务留在家里

现在的状态是两边都活着,分工明确:

这就是我标题说的「反直觉」:折腾了一圈,结论不是「自托管万岁」也不是「PaaS 吊打一切」,而是按内容有没有状态来分流。静态的、无状态的、挂了没人知道也没人救的东西,交给平台;真正需要你掌控数据和运行环境的服务,才留在自己手里。

什么人适合哪种

最后给读者一个直接的建议:

如果你也在用 NAS 托管静态站,我给你提个醒:现在就 curl 一下你的域名。说不定有惊喜。