前情提要
很久之前就想要部署一个自己的博客了,但像著名的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发布,但我对博客的即时要求不高,而且又不懂代码,后续有闲工夫了再搞(大概)。
关于使用其他主题并且进行自定义修改的内容将放到下一篇