从零搭建東雲 Nano:一次 Hugo 博客上线记录
记录東雲 Nano 从本地设计、GitHub 托管到 Vercel 与自定义域名上线的过程。
文章目录
作者说明:本文由 OpenAI Codex 根据本次建站过程整理并撰写。
我想要一个属于自己的博客:页面安静、阅读舒服,可以使用自己的域名,而且以后更新文章不能太麻烦。
于是,東雲 Nano 从一个本地文件夹开始,经过 Hugo、GitHub、Vercel 和阿里云 DNS,最终在 shinonome-nano.me 上线。这篇文章把整个过程记录下来,也保留那些真正遇到过的问题。
最终采用的方案
网站的工作链路是:
本地 Hugo 源码 → GitHub 私有仓库 → Vercel 自动构建 → 自定义域名
各部分的职责很清楚:
- Hugo 把 Markdown 文章生成静态网页;
- GitHub 保存源码和每次修改记录;
- Vercel 自动构建、托管网站并提供 HTTPS;
- 阿里云 DNS 把已经购买的域名指向 Vercel。
这是一个纯静态博客,没有数据库,也不需要自己维护服务器。对个人写作而言,结构简单,后续负担也小。
为什么选择 Hugo
Hugo 是一个静态网站生成器。文章以 Markdown 文件保存,构建后得到普通的 HTML、CSS 和 JavaScript 文件。
它的优点很直接:页面加载快;源码和文章可以长期保存在本地;不依赖后台管理系统;需要搬家时只要带走仓库;写完文章推送到 GitHub 后即可自动发布。
这次使用的 Hugo 版本是 0.165.0。固定版本很重要,后面遇到的部署故障正好说明了这一点。
从空目录开始搭建
项目位于 Windows 的 D:\shinonome-nano-blog。站点没有直接套用完整的现成主题,而是围绕个人写作重新制作布局和样式,最终包含:
- 首页、文章列表与文章详情;
- 标签、归档、关于和站内搜索;
- 自定义 404 页面与深色模式;
- 阅读进度条、文章目录和前后篇导航;
- canonical、Open Graph、站点地图和 robots.txt 等基础 SEO 信息。
视觉上最初使用了偏粉的色彩,后来调整为更朴素的灰绿色与暖金色。字体也没有继续依赖 Google Fonts,而是改用本地系统字体栈,减少外部资源对访问速度的影响。
本地预览使用:
cd D:\shinonome-nano-blog
.\tools\hugo-0.165.0\hugo.exe server -D
然后访问 http://localhost:1313。保存文章或样式后,页面通常会自动刷新。
把源码交给 GitHub
为了保留修改历史,并让 Vercel 自动读取源码,我创建了私有仓库 iamsohungry/shinonome-nano-blog,使用 main 分支。
git add .
git commit -m "Initial Hugo blog"
git push -u origin main
Git 提交邮箱使用 GitHub 提供的 noreply 地址。它不是用来收信的邮箱,而是为了在提交记录中隐藏真实邮箱,同时让 GitHub 正确识别提交者。
生成目录和本地工具通过 .gitignore 排除,避免把能够重新生成的文件重复提交到仓库。
使用 Vercel 自动部署
Vercel 通过 GitHub 应用连接仓库。授权时没有开放全部仓库,而是只允许它访问这个博客仓库。
导入项目后选择 Hugo,根目录为 ./,输出目录为 public,生产分支为 main。从此,只要有新提交推送到 main,Vercel 就会自动构建并发布最新版本。
实际遇到的故障:Hugo 版本太旧
第一次部署没有成功。构建日志显示 Vercel 默认安装的是 Hugo 0.58.2,它无法理解博客使用的现代模板语法,最终报错:
can't evaluate field Locale in type *langs.Language
问题不在文章内容,也不需要为了兼容旧版本重写模板。更干净的解决方式是在 Vercel 项目的生产环境中增加:
HUGO_VERSION=0.165.0
重新部署后,构建在几秒内完成,状态变为 Ready。固定版本也能避免构建环境变化导致网站突然失效。
绑定自己的域名
域名 shinonome-nano.me 购买于阿里云,但网站并不托管在中国大陆服务器上。域名注册商、DNS 服务商和网站托管商可以彼此独立。
在 Vercel 中添加主域名和 www 域名后,再按 Vercel 给出的值在阿里云 DNS 添加两条记录:
| 类型 | 主机记录 | 记录值 |
|---|---|---|
| A | @ | 216.198.79.1 |
| CNAME | www | b799b619445cb65a.vercel-dns-017.com |
DNS 生效后,Vercel 自动签发 HTTPS 证书。现在访问 www.shinonome-nano.me 也会跳转到主域名 shinonome-nano.me。
因为使用的是境外托管,这套方案不以中国大陆服务器备案为前提,但从中国大陆访问时,速度和稳定性仍可能受到网络环境影响。
日常怎样更新文章
新文章放在 content/posts 中,使用 Markdown 编写。发布前把文章头部的 draft 设置为 false,本地预览确认无误后运行:
git add .
git commit -m "发布文章:文章标题"
git push
后面的事情由 Vercel 自动完成。域名和 DNS 不需要每次重新设置。
费用与维护
目前 GitHub 使用个人免费方案,Vercel 使用适合非商业个人项目的 Hobby 免费方案,阿里云 DNS 也使用免费版。因此在正常的个人博客用量下,长期需要主动支付的主要费用是域名续费。
真正需要维护的事情只有几项:继续写作、偶尔检查部署状态、不要让域名过期,以及在未来升级 Hugo 时先进行本地构建测试。
写在最后
建站最容易让人犹豫的地方,往往不是写代码,而是工具之间应该怎样连接。把每个环节的职责拆开以后,整个过程就清楚了:Hugo 负责内容,GitHub 负责保存,Vercel 负责发布,DNS 负责把名字带到网站。
现在,東雲 Nano 已经在清晨的微光里亮起来了。接下来真正重要的事,是慢慢把这里写满。