前言

我的博客之前一直部署在个人购买的服务器上。由于前端和后端都是自己实现的,为了让前后端能够交互,确实需要一台暴露在外网的服务器。然而,个人维护服务器需要处理很多事情:代码更新后的 CI/CD、HTTPS 证书续签(从 2025 年开始每三个月就要操作一次,非常麻烦)、CDN 配置等等。最近服务器刚好到期,我便开始思考:个人博客真的需要这么复杂吗?答案是否定的。只要我接受无后端架构,市面上就有很多成熟且免费的解决方案。经过一番调研,我决定采用以下关键词来搭建新的博客:Hexo、GitHub、CloudFlare。

静态博客框架 - Hexo

程序员的文章通常以 Markdown 语法为基础,市面上有很多支持 Markdown 的静态博客框架。我选择 Hexo 主要是因为其主题 Butterfly 比较符合我的审美。本文并非从零开始的部署教程,Hexo 和 Butterfly 的官方文档已经非常详细,建议直接参考它们来了解如何使用。

托管仓库 - GitHub

这一点无需多言。为了实现 CI/CD,自然需要将代码和配置托管在公网上。由于后续会依赖 CloudFlare,GitHub 便成为了自然的选择。值得注意的是,很多教程建议将构建后的产物托管在 GitHub 上,但这并没有充分利用完整的 CI/CD 流程。我猜测这是因为 GitHub 提供了 GitHub Pages 功能,可以通过托管构建产物并支持 ${username}.github.io 域名访问,所以这种方式一直被沿用下来。

部署 - CloudFlare Pages

请注意,本教程建议在 GitHub 上托管源码,而非构建后的产物。,至于要怎么样使用这个源码,NetlifyGitHub PagesCloudFlare Pages 都可以。

Netlify

网上有很多相关教程。授权 GitHub 仓库后,即可获得一个访问链接(通常是 *.netlify.app)。唯一需要注意的一点是,构建输出目录应填写 /public。这种方式的好处是,一旦源码仓库更新,便会通过 Webhook 自动触发构建和发布,推送后稍等片刻即可完成发布,非常省心。

GitHub Pages

这个网上也有很多教程,HexoGitHub 官方都提供了指南,结合两者按步骤操作即可。需要注意的是,这会创建两个仓库:一个是源码仓库,另一个是 ${username}.github.io 仓库(用于存放构建后的产物)。

CloudFlare Pages

CloudFlare Pages 的作用与 Netlify 类似。我选择 CloudFlare Pages 的原因在于,我会同时使用 CloudFlare 的对象存储和 CDN 服务,而 CloudFlare 提供了统一的管理控制台,集中管理更加方便。对于个人用户来说,其免费额度足够且资源丰富。虽然网上也有相关教程,但大多已不是最新版本,我在部署过程中遇到了一些坑,因此在这里详细说明一下。

  1. 进入 CloudFlare 的控制台,创建一个新的 Pages 应用

    1

  2. 这里是第一个坑,CloudFlare 默认创建的是 Worker,而我们需要创建的是 Pages,请记住一定要选择 Pages

    2

  3. 按照引导连接上 GitHub 仓库就行,记得选择对分支以及构建输出目录一定要填 public

    3

    4

    5

  4. 部署成功之后通过对应的 *.pages.dev 即可访问

对象存储 - CloudFlare R2

博客文章中的图片需要一个图床,这里我首推 CloudFlare R2。其免费的请求次数和存储空间,在做好基础防护的情况下,对于个人博客来说完全够用。开通 R2 需要绑定信用卡,这个问题可以通过某些二手平台解决。

推荐一个能够有效压缩图片大小并保证质量的网站:TinyPNG, 免费且无广告。

结语

完成以上准备工作后,个人博客基本上就部署得差不多了。CloudFlare 会自动刷新证书有效期,并支持代码推送后的 CI/CD。它还提供了基础的 CDN 和 DDoS 防护,甚至免费的对象存储——这一切都是完全 Free,Crazy!!

如果想自定义域名的话,可以参考一下教程:使用 Hexo + GitHub + Netlify + Cloudflare 搭建个人博客的全流程

CloudFlare R2 的基础防刷教程:防止 Cloudflare R2 被恶意刷次数的实用技巧