今天“豆豆技术站”正式上线了!虽然部署过程只用了几个小时,但中间踩了不少坑。为了让大家少走弯路,我把这段折腾经历记录下来。

为什么选择 Hugo + GitHub + Cloudflare?

我有自己的服务器,最初想用 mdBook。但 mdBook 适合书籍展示,格式太固定,不适合折腾。最终我选择了 Hugo —— 虽有一段时间没用,但基础还在。

在主题选型上我花了不少时间,从花哨的 Blowfish 转向了更严谨的 FixIt。虽然我的重心正转向 GoRust,但 2026 年初的首要任务是搭建好这个支持中英双语的“根据地”。

站长忠告:切忌心急。 很多弯路其实是因为没读懂 Cloudflare 的英文提示就直接上手导致的。


避坑指南:我踩过的六个坑

1. 误判服务:Workers 还是 Pages?

这是最尴尬的一个坑。我一直在 Cloudflare Workers 里折腾,结果页面永远显示 Hello World。AI 告诉我是配置文件没生效,我折腾半天无果,最后通过 Google 搜索才发现:我要部署的是静态站(Pages),而不是函数脚本(Workers)。换成 Pages 服务后,一遍过。

2. DNS 托管的“心理障碍”

Cloudflare 的免费计划要求将 DNS 托管给它。起初我很抗拒,因为我还有阿里云的子域名(如小程序后端 mp)在运行,担心影响原有业务。

  • 解决方法:在域名注册商后台将 DNS 服务器换成 Cloudflare 提供的地址。
  • 关键点:激活后,记得把原来的解析记录在 Cloudflare 重新添加一遍。以后新增解析都在 Cloudflare 完成。

3. 页面样式“裸奔”:baseURL 没填对

部署完成后,网站能打开但没有样式(CSS 加载失败)。

  • 原因:F12 检查发现 URL 地址不对。
  • 解决:在 hugo.toml 中将 baseURL 修改为你的自定义域名。
  • 进阶:在 Cloudflare 构建命令中使用 hugo -b $CF_PAGES_URL,系统会自动处理域名。

4. CNAME 无法直接生效

我起初打算在原域名商处使用 CNAME,但死活打不开。事实证明,为了享受 Cloudflare 的全套防护和证书服务,DNS 托管是最高效的选择。

5. Error 1001 报错

配置好 DNS 依然报 1001 错误。这是因为你只在 DNS 做了指向,没在 Pages 后台“对暗号”。

  • 解决:进入 Cloudflare Pages 项目 -> 自定义域 -> 设置自定义域

6. 证书错误与重定向循环

刚切换 DNS 时,浏览器提示证书不安全。

  • 解决:边缘证书签发需要 10-30 分钟。同时,在 SSL/TLS 设置中,建议将模式从 “Flexible” 改为 “Full”,可以避免很多重定向导致的死循环。

经验总结

一、 样式无法打开?检查 baseURL

确保 hugo.toml 中的 baseURL 与你的最终访问域名一致。

二、 托管 DNS 后的业务兼容

  • 好处: 获得免费 SSL、DDoS 防护和全球加速。
  • 方案: 对于不想经过 Cloudflare 代理的子域名(如后端 API),只需在 Cloudflare DNS 界面将对应的“橙色小云朵”点成灰色(仅限 DNS),流量就会直连原服务器,完全不影响原有业务。

三、 解决 1001 报错

必须在 Pages 仪表盘手动添加自定义域名,Cloudflare 才会识别并放行请求。

四、 证书与安全模式

  1. 耐心: 等待证书签发完毕。
  2. 模式设置: 优先选择 “Full” 模式,确保链路加密配置一致。

“种一棵树最好的时间是十年前,其次是现在。”
2026 年的第一天,我的新站终于在不断的“趟坑”中起航了。