Featured image of post 基于Hugo和notion部署私人博客

基于Hugo和notion部署私人博客

前情提要

很久之前就想要部署一个自己的博客了,但像著名的WordPress、Halo以及Typecho之类的,对我来说,要么是需要自己的服务器要么是太过臃肿(虽然后面把自己的手机装了Ubuntu,但还是懒得折腾),后面找到了hexo和hugo,但苦于每次更换设备都需要配置环境,并且懒癌晚期难以治疗,所以一直搁置,直到看到了GitHub上的Notion-Hugo 项目,这个项目部署后GitHub action会定时拉取notion上的文章(即取消draft的文章)更新,之后只需要在notion上写作,就好了,不需要其他操作。

废话不多说,以下是部署步骤

部署指南

1. 创建GitHub项目

1.1 必要条件

Notion 账户:作为CMS(内容管理系统),作为写作平台

GitHub 账户:用于 Fork、管理项目代码以及生成静态资源。

Cloudflare 账户:用于部署和发布。

1.2 创建GitHub项目仓库

https://github.com/HEIGE-PCloud/Notion-Hugo 页面,点击右上角绿色按键Use this template后点击 Create a new repository 创建项目

Repository name可以随意填写,担心notion笔记隐私问题可以选择Private

再点击Create repository即可创建

2. 连接notion和GitHub

2.1 新建notion集成

网页登录notion后访问我的集成 页面,点击新集成创建集成

新建之后点击配置集成

权限设置如下

点击上方的显示密钥并复制下来

2.2 连接GitHub和notion

  • GitHub操作

切换到刚才新建的GitHub项目,点击上方的Settings

找到左下方Secrets and variables内的Actions并点击

点击New Repository Secret新建,name 为 NOTION_TOKEN,Secrets填写notion集成复制的密钥。

  • Notion操作

前往项目的Notion Template 页面,点击右上角的复制图标复制模板到自己的notion笔记内

在复制的模板内点击右上角的三点图标选择集成,找到上文新建的集成并连接

  • 连接GitHub

复制当前的页面链接,前往上文新建的GitHub项目页面,找到 **notion-hugo.config.ts **并点击

点击右上角的铅笔图标并将链接替换成刚刚复制的链接

点击右上角的Commit changes提交保存

3.部署到Cloudflare Pages

3.1 新建KV空间

前往Cloudflare 页面,找到** 存储和数据库→KV**,点击 Create Instance 新建KV空间,名称可以随意填写

3.2 部署到Cloudflare Pages

找到Workers 和 Pages并点击右方的创建

选择Pages并导入上文配置好的GitHub项目

中间会有授权Cloudflare读取GitHub项目权限的页面,授权好之后选择项目点击开始部署

之后如下填写

构建命令 npm install; npm start; hugo

**构建输出目录 **public

HUGO_VERSION 0.147.5

NODE_VERSION 22.12.0

NOTION_TOKEN 为上文复制的notion密钥

填写好后点击保存并部署

3.3 绑定KV

部署好之后点击 设置→绑定→添加,选择KV命名空间

选择建立好的KV,变量名为 KV

保存

3.4 设置域名

如上文修改GitHub中notion链接一样,前往GitHub修改** notion-hugo.config.ts **中此处的域名

修改如图路径下config.toml的域名,此处还能修改博客默认的语言、网站名称和博客主题,项目默认有DoIt和ananke两种主题可选,如果想使用其他主题,需要自己添加设置,要注意的是默认文章是存放在content的posts文件夹内,使用其他主题需要设置好文章相应位置

如果没有绑定自己的域名的话可到部署页面看到默认的域名,要注意dev域名在中国大陆有可能被屏蔽,绑定自己的域名的话才能保证直连访问

如果要绑定自己的域名需要将域名托管到Cloudflare在此处设置自己的域名

设置好后 **notion-hugo.config.ts 和 config.toml **内也要改成相应的域名。

至此博客已经完全部署完毕

写作

后面写作直接在Notion Hugo内点击新建页面即可进行博文写作

后续

部署好之后就可以直接使用notion写作了,默认是每天0点自动同步,如果想要更新时间更快可以修改此处的时间

理论上是可以通过notion的自动任务联动GitHub,写作完之后自动同步,即notion取消draft勾选→自动化发送webhook→GitHub同步→Cloudflare发布,但我对博客的即时要求不高,而且又不懂代码,后续有闲工夫了再搞(大概)。

关于使用其他主题并且进行自定义修改的内容将放到下一篇

使用 Hugo 构建
主题 StackJimmy 设计