一台个人博客服务器,跑了十年。配置不夸张:DigitalOcean 纽约 VPS,2GB RAM、1 vCPU、50GB 磁盘,月费约 13 美元,系统还是 Ubuntu 16.04 LTS。
它甚至很能撑。作者关机前看到的 uptime 是 1491 天,接近四年没重启。但这也正是反常的地方:一台暴露在公网、系统早已停止标准支持的机器,越稳定,越容易被人忘掉。
这次迁移的结果是:服务器搬到 Hetzner 德国机房,系统换成 FreeBSD 14.3,并用 Bastille 管理 FreeBSD Jails。每个静态站点放进独立 Jail,Caddy 单独跑在一个 Jail 里,负责 HTTPS 和反向代理。
我更在意的不是“FreeBSD 是否全面优于 Linux”。这个案例真正说明的是:个人静态站点在低成本 VPS 上,最该算的不是阵营账,而是维护债、隔离性和出事后的恢复成本。
旧服务器的问题不是不能跑,是不该继续赌
旧栈很朴素。Ubuntu 16.04 x64,nginx/1.10.3 托管静态页面,博客由 Hugo 生成。发布流程也偏手工:本地写作,提交代码,SSH 到服务器,拉仓库,再运行 Hugo。
这套东西能跑十年,本身说明它够简单。简单系统有一个好处:少动少错。问题是,Ubuntu 16.04 LTS 的标准支持早已结束,软件源和安全更新都不再像受支持版本那样可靠。
原文没有说旧服务器被入侵。这里不能替它编故障。但公网服务器长期停在 EOL 系统上,本质是在把安全更新、依赖安装和故障恢复都押给运气。
迁移还不只是安全。作者人在德国,Hetzner 的机器离他更近,价格更低,配置也更高。这个选择放在他的场景里成立,但不能直接推广成“Hetzner 一定优于 DigitalOcean”。如果主要访问者在北美,机房位置、延迟、支持体验都会改变判断。
| 项目 | 旧环境 | 新环境 | 这笔账怎么算 |
|---|---|---|---|
| 云服务商 | DigitalOcean 纽约 | Hetzner 德国 | 对作者更便宜、更近,但不代表普遍更优 |
| 系统 | Ubuntu 16.04 LTS | FreeBSD 14.3 | 关键是回到可维护状态 |
| 配置/价格 | 2GB RAM、1 vCPU、50GB,约 13 美元/月 | 原文称更便宜、配置更高 | 成本下降是迁移动机之一 |
| Web 栈 | nginx 静态站点 | Caddy 反代 + 多个 Jails | 证书和入口层更集中 |
| 发布维护 | 手工 SSH 后构建 | 每站点独立环境 | 更利于拆分、重建和排错 |
对还在维护老 Ubuntu、Debian 或 CentOS 小服务器的人,这里有一个直接动作:先查系统是否 EOL,再查 apt/yum 源是否还能稳定拿到安全更新。不要等到下一次改文章、续证书、装依赖时才发现整套环境已经锈住。
新架构的价值在隔离,但不是免费午餐
作者选择 FreeBSD,一部分是兴趣,一部分是看中 Jails 和 ZFS。Jails 不是 Docker 的换皮版本。
Docker 常被用来打包应用,强调镜像、部署和较短生命周期。FreeBSD Jails 更像共享内核下的轻量子系统。它可以长期运行,可以登录进去装工具,也可以像一台“小机器”那样维护。
新架构的主线很清楚:每个站点一个 Jail。需要 Hugo 或其他构建工具,就放在自己的环境里。对外只暴露 Caddy Jail,由它监听 80 和 443,自动处理 HTTPS 证书,再把请求反向代理到对应站点。
宿主机这一层,则用 PF 防火墙和内部虚拟网络把 Jails 串起来。ZFS 提供快照能力,遇到误操作时更容易回滚,也减少对 VPS 厂商付费备份的依赖。
这对多站点个人维护者有实际意义。一个站点配置坏了、依赖脏了,甚至出现安全问题,理论上可以销毁并重建对应 Jail。它不会把所有站点、构建工具、Web 服务都搅在同一个宿主机环境里。
但代价也清楚。FreeBSD、PF、ZFS、Bastille、Caddy、Jails,每一层都要理解一点。只想放一个 Hugo 博客的人,用受支持的 Ubuntu/Debian LTS,加 Caddy 或 nginx,可能更省心。
如果目标是尽量少运维,Netlify、Cloudflare Pages、GitHub Pages 这类托管静态站服务也许更合适。它们牺牲的是系统控制权,换来的是少管服务器。对很多个人博客,这笔交易并不亏。
| 路线 | 适合谁 | 收益 | 现实限制 |
|---|---|---|---|
| 继续用 Linux LTS + nginx/Caddy | 只想稳定托管一个小站的人 | 学习成本低,资料多 | 隔离和回滚要自己补 |
| FreeBSD + Bastille Jails | 想练系统运维、维护多个小站的人 | 隔离清楚,可销毁重建 | 初始复杂度更高 |
| 托管静态站服务 | 不想管服务器的人 | 证书、部署、可用性更省心 | 控制权和可玩性下降 |
对 FreeBSD、Jails、低成本 VPS 运维感兴趣的技术读者,这个案例更像一个合适的练手项目:规模小,风险可控,能把网络、文件系统、证书、反代和隔离都串起来。不要一上来拿生产业务试刀。先拿个人站点验证重建脚本、备份策略和证书续期。
迁移后最该盯的不是跑分,是能不能重建
这类个人站点迁移,最容易被误读成性能升级。可原文没有给完整基准测试、流量数据或故障统计,所以不该硬说它性能大幅提升。
目前能确认的价值,是架构更清楚了:站点被拆开,入口收敛到 Caddy,证书自动化,ZFS 可做快照。它至少让维护者不必把所有东西都堆在宿主机上。
后面真正该观察三件事。
| 观察点 | 为什么重要 | 不达标会怎样 |
|---|---|---|
| Jail 能否脚本化重建 | 隔离的价值要靠可恢复兑现 | 坏了仍要手工救火 |
| Caddy 证书和反代是否长期稳定 | 入口层出问题会影响所有站点 | 多站点一起不可用 |
| ZFS 快照是否配合异地备份 | 本机快照挡不住整机丢失 | VPS 事故时仍可能全丢 |
只在同一台 VPS 上做快照,不等于备份。它能救误删、配置改坏,挡不住账号事故、磁盘损坏或整机丢失。小站无大流量,不代表没有恢复需求。
这也是这篇实践记录最有用的地方:它把“还能跑”换成了“能不能维护、能不能隔离、能不能重来”。对个人网站来说,迁移窗口比技术选型更关键。系统还活着的时候拆,成本最低;等包管理器、证书、构建工具一起出问题,就成了集中还债。
所以,这不是一篇阵营文。FreeBSD 没有因此压过 Linux,Hetzner 也没有因此压过 DigitalOcean。它更像一次边界清楚的个人基础设施翻修:趁旧房子还没漏雨,把电线、水管和隔墙重新理一遍。
能跑十年当然难得。但对公网服务器来说,寿命不是唯一指标。该换的时候还不换,稳定也会变成债。
