NOTE · 2026.09.05

从零搭建東雲 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 已经在清晨的微光里亮起来了。接下来真正重要的事,是慢慢把这里写满。