MoleLab 的第一版是一个很朴素的静态博客:Hugo 负责生成页面,Blowfish 负责主题,GitHub 保存源码,Cloudflare Pages 负责构建、托管和 HTTPS。
这篇文章记录一下从零搭起来的过程,也顺手写清楚后续维护时要注意的地方。
为什么选这套组合#
Hugo 的优点是快、简单、生成结果完全静态。博客没有登录、数据库或后台管理,静态站就足够了。
Blowfish 是一个功能比较完整的 Hugo 主题,自带深色模式、搜索、文章列表、多语言切换和比较舒服的排版。MoleLab 目前使用的是 Blowfish 的 background 首页布局。
GitHub 用来保存源码和版本历史。Cloudflare Pages 从 GitHub 拉取代码,每次推送到 main 分支都会自动构建并发布。
本地初始化#
本地需要安装 Hugo extended 版本。我的环境里使用的是:
hugo version然后在项目目录初始化站点:
hugo new site . --force
git init -b main主题使用 Git submodule 管理:
git submodule add https://github.com/nunocoracao/blowfish.git themes/blowfish因为当前需要 Hugo 0.163.1 无警告构建,而 Blowfish 最新发布版的兼容信息还没更新,所以 submodule 暂时跟踪官方的 hugo-new-version 分支。等 Blowfish 发布包含这次兼容元数据的新版本后,再切回正式 release tag。
配置双语#
MoleLab 现在是中英文双语站点。中文是默认语言,输出在根路径:
https://molelab.dev/英文输出在:
https://molelab.dev/en/核心配置是:
baseURL = "https://molelab.dev/"
defaultContentLanguage = "zh-cn"
defaultContentLanguageInSubdir = false
disableDefaultLanguageRedirect = true中文内容放在 content/zh-cn,英文内容放在 content/en。同一篇文章在两个语言目录里使用相同路径,Hugo 和 Blowfish 就能把它们识别为互相对应的翻译页面。
推到 GitHub#
站点源码提交后推到 GitHub:
git add .
git commit -m "Initialize bilingual Hugo Blowfish blog"
git remote add origin https://github.com/molefool/hugo.git
git push -u origin main之后日常更新就是普通的 Git 流程:本地修改、构建验证、提交、推送。
Cloudflare Pages 配置#
Cloudflare Pages 连接 GitHub 仓库后,生产分支选择 main。
构建命令:
git submodule update --init --recursive && hugo --minify -b https://molelab.dev/输出目录:
public环境变量:
HUGO_VERSION = 0.163.1
HUGO_ENV = production-b https://molelab.dev/ 很重要。它会让 canonical、RSS、站点地图和多语言链接都指向正式域名,而不是临时的 pages.dev 域名。
绑定自定义域名#
Cloudflare Pages 部署成功后,在项目里进入“自定义域”,添加 molelab.dev。
如果域名 DNS 也托管在 Cloudflare,Cloudflare 会自动处理记录和证书。等待状态变成 active 后,访问 https://molelab.dev/ 就会进入 Pages 部署出来的站点。
常见坑#
第一类坑是主题 submodule。Cloudflare 构建时必须能拿到主题代码,所以构建命令里要先执行:
git submodule update --init --recursive第二类坑是 Hugo 版本。Hugo 更新很快,主题有时会滞后一小步。构建前最好本地跑一次:
hugo --gc --minify第三类坑是 baseURL。正式域名确定后,要让本地配置和 Cloudflare 构建命令都使用同一个域名。
中国大陆访问速度怎么优化#
MoleLab 现在用的是 Cloudflare Pages 免费方案。它的优点是省心、免费、自动 HTTPS、全球边缘网络和 Git 自动部署。但对于中国大陆访问,它不保证稳定,也不等同于国内 CDN。
免费轻量优化可以先做这些:
- 尽量保持纯静态页面,不引入大前端框架。
- 图片压缩后再上传,少用超大背景图。
- CSS、JS、图片使用长缓存,HTML 保持短缓存。
- Cloudflare 里开启 Brotli、HTTP/3、Early Hints 等免费性能选项。
- 使用正式
baseURL,避免资源和 canonical 链接绕到临时域名。
这些优化能减少请求量和传输体积,但解决不了所有线路问题。如果以后 MoleLab 的主要读者在中国大陆,真正稳定的路线通常是备案后使用国内云厂商或国内 CDN;折中路线是保留 Cloudflare Pages,同时增加国内镜像,比如对象存储加 CDN,或者试用对大陆网络更友好的静态托管平台。
现阶段我会先保持这套免费方案,把内容和站点结构打磨好。速度优化先做低成本项,等内容多起来、访问数据明确之后,再决定要不要上国内镜像。