
Bruno Croci 的网站迁移之旅
Bruno Croci 正在为 2026 年柏林的开源硬件峰会做准备。他的博客在 Ubuntu 16.04 上运行了 10 年,于 2026 年 5 月 21 日,他将其迁移到了 FreeBSD。
迁移动机:旧系统的安全隐患与成本考量
这个博客在 Digital Ocean 的 VPS 上运行了十多年,主机位于纽约市,运行的是 Ubuntu 16.04 LTS。该长期支持版本至少已停止支持 5 年,apt 软件包仓库失效,服务器安全性大打折扣。他曾有一个 WordPress 博客,运行在旧 VPS 上时出现过可疑链接。
他已在使用一台 Hetzner VPS 作为远程开发机,其价格实惠且可靠。旧的 Digital Ocean 服务器有 2GB 内存、1 个 vCPU、50GB 磁盘、每月 2TB 流量,运行 Ubuntu 16.04 x64,位于纽约市数据中心,每月费用 13 美元。而 Hetzner 服务器,最便宜的只需 3.56 欧元,内存和 CPU 是旧服务器的两倍,存储空间略少,但流量是十倍。他最终选择了配置更高、每月不到 6 欧元的服务器。
旧配置:简单但需改变
旧配置为博客和其他几个不太热门的网站提供服务,博客每月页面浏览量不超几千次。技术栈简单,由 nginx/1.10.3 静态提供内容,额外程序通过 apt 或 snap 安装。更新博客流程为:本地撰写文章、提交并推送到仓库、通过 SSH 连接到服务器、拉取仓库更新、运行 hugo。这台 VPS 最初几年还用于测试和编程,安装了很多过时软件,但运行稳定,关闭时正常运行时间达 1491 天。
选择 FreeBSD:尝新与技术优势
选择 FreeBSD 主要是想尝试不同东西,他阅读和观看了很多关于 BSD 系统的资料,之前也有过短暂使用经历。FreeBSD 因集成设计、安全性和 Jails 备受赞誉。
Jails 是一种虚拟化/容器化技术,在 FreeBSD 中存在超 25 年,比 Docker 出现早。它功能类似 Docker 容器,但 Docker 更适合“打包程序”,是临时、不可变的,而 Jails 是子系统,共享同一个内核。此外,其文件系统 ZFS 对服务器实用,比 Linux 的 Btrfs 更成熟,可自行快照,无需依赖 VPS 提供商。他计划为每个网站创建 Jail,安装所需工具,运行 nginx 实例,再创建主 Web 服务器 Jail 进行反向代理。
Hetzner VPS 与配置过程
Hetzner 创建虚拟机时镜像选择有限,但实际上提供 FreeBSD 镜像,以 ISO 镜像形式存在,需多操作几步找到。他选择 14.3 版本,按安装程序提示操作,很快完成系统安装。
他使用 Bastille 管理 Jails,这简化了创建 Jail 的过程。安装并启用 Bastille 只需执行“pkg install bastille”和“sysrc bastille_enable="YES"”。
技术栈方面,让一个 Jail 运行 Caddy 为所有网站提供服务,处理域名和 SSL 证书,每个网站有自己的 Jail。需配置内部虚拟网络适配器,使用 PF 创建互联网访问规则,启用 PF 完成网络栈配置。
创建 Jail 与网站迁移
创建 Caddy 服务器 Jail,使用 14.3 - RELEASE 版本引导,创建名为 caddy 的 Jail,IP 地址为 10.0.0.5,位于 bastille0 接口上。在 Jail 中安装 Caddy,将主机系统的配置目录挂载到 Jail 中。
第一个网站 es.cro.to 是为“抗议”巴西总统在疫情期间的表现而创建,之前由旧服务器托管。将网站仓库放在主机系统的 /usr/local/www/escroto 目录,使用 bastille 创建 Jail,使用 www/nginx 模板。将主机的网站目录挂载到 Jail 中,编写 deploy.sh 脚本部署网站。在 Caddy 配置中设置域名指向该 Jail。
博客使用 Hugo,将其克隆到 /usr/local/www/blog 目录,创建新 Jail,在 Jail 中安装 Hugo,编写部署脚本。将博客指向旧域名进行基准测试。
服务器基准测试:新服务器性能惊人
使用 wrk 和 hey 工具对网站进行基准测试,比较旧服务器的 crocidb.com 和新服务器的 crocidb.cro.to。在同一数据中心测试,旧服务器每秒处理 833 个请求,新服务器每秒处理 12260 个请求,平均延迟分别为 89 毫秒和 6 毫秒。
使用 VPN 从多个位置测试,旧服务器平均每秒处理 300 个请求,新服务器平均每秒处理 800 个请求。后来在 Vultr 的不同地区 VPS 上测试,发现新服务器默认套接字队列大小不足,增大后测试。结果显示,FreeBSD 服务器成功响应 100 万个请求,而 Ubuntu 服务器无法返回 2 万个请求。旧服务器只完成约 7% 的请求,新服务器完成 94%,新服务器每秒处理请求数至少快 3 倍,最多快 11 倍。
下定决心:迁移成功与收获
尽管基准测试有未解之谜,但他还是更新了 DNS 记录,博客正式在新机器上运行。设置 FreeBSD 网站托管机器并不复杂,他还提到有很多网络托管服务可供选择,但他喜欢自己选择的方式,在此过程中学到很多。
主要收获包括:Ubuntu 服务器稳定,设置不费力;配置 FreeBSD 比想象容易,在线文档完善;托管博客机器需大量网络知识;学习新系统带来乐趣,下次可能尝试 OpenBSD 或 NetBSD。最后他提到大部分流量由 AI 系统爬取产生。
相关文章
包括“揭秘 #!(Shebang):内核冒险之旅”“在 Ubuntu(Gnome on Wayland)上捕获屏幕延时摄影”“基于 Markdown 的 RSS 阅读器的本地优先同步设置”“我摆脱 Caps Lock 键的历程”“这个博客在 Ubuntu 16.04 上运行了 10 年,我将其迁移到了 FreeBSD”。

被折叠的 条评论
为什么被折叠?



