Hexo+github+Obsidian搭建个人博客平台
由于本地使用obsidian对笔记进行编辑和分类时,多端同步繁琐,无法在线查看。因此选用Hexo博客框架+Github建站,搭建一个自己的个人博客页面,同时通过配置Obsidian,使得在本地也可以使用Obsidian进行管理和笔记的编辑。
(其实是羡慕别人炫酷的个人博客×)😄😄
效果
一.新建Github仓库
1.创建同名仓库
注意图中
Repository name
必须为Owner.github.io
,这样github才能正确识别为github pages
二.创建Hexo项目
Hexo是一个快速、简洁且高效的博客框架,且开源社区提供了大量的第三方主题样式,可一键生成华丽的个人博客网页。官网链接Hexo
1.安装Hexo
确保已经安装了如下工具
- Node.js (Node.js 版本需不低于 10.13,建议使用 Node.js 12.0 及以上版本)
- Git
然后通过npm安装Hexo脚手架
1 | npm install -g hexo-cli |
安装完成后,建站(创建Hexo项目),将<folder>
替换成你的文件夹名
1 | hexo init <folder> |
新建完成后,指定文件夹的目录如下:
1 | . |
之后主要会用到_config.yml文件和source文件夹
2.修改配置
修改_config.yml中的配置
1 | # Site |
各参数说明如下
参数 | 描述 |
---|---|
title |
网站标题 |
subtitle |
网站副标题 |
description |
网站描述 |
keywords |
网站的关键词。支持多个关键词。 |
author |
您的名字 |
language |
网站使用的语言。对于简体中文用户来说,使用不同的主题可能需要设置成不同的值,请参考你的主题的文档自行设置,常见的有 zh-Hans 和 zh-CN 。 |
timezone |
网站时区。Hexo 默认使用您电脑的时区。请参考 时区列表 进行设置,如 America/New_York , Japan , 和 UTC 。一般的,对于中国大陆地区可以使用 Asia/Shanghai 。 |
1 | # URL |
其他配置可以先不用改,后续配置Hexo主题的时候再对应修改
三.配置Hexo主题(Butterfly为例)
由于默认的主题比较简陋,好在社区提供了大量的现成的Hexo主题框架供我们选择,网页链接:Themes | Hexo
1.选择主题
我们可以根据自己的需要和审美,选择一款自己喜爱的主题,这边笔者选择的是比较热门的一款Butterfly主题。
2.安装和配置
选择主题后,我们需要找到该主题的官方文档,来进行配置。例如Butterfly的参考文档如下:
首先安装主题,在你的Hexo根目录
下
1 | git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly |
然后应用主题,修改Hexo根目录下的/_config.yml
1 | # Extensions |
接着安装必要的渲染器插件
1 | npm install hexo-renderer-pug hexo-renderer-stylus --save |
为了减少升级主题后带来的不便,请使用以下方法(建议,可以不做)。
在 hexo 的根目录创建一个文件 _config.butterfly.yml,并把主题目录的 _config.yml 内容复制到 _config.butterfly.yml 去。( 注意: 复制的是主题的 _config.yml ,而不是 hexo 的 _config.yml)
Hexo会自动合并主题中的
_config.yml
和_config.butterfly.yml
里的配置,如果存在同名配置,会使用_config.butterfly.yml
的配置,其优先度较高。
然后根据官方文档和自己需求,进行页面的定制即可,参考文档如下:
四.配置Obsidian
为了获得在本地管理和组织所有笔记的良好体验,推荐本地使用Obsidian进行编辑。但Obsidian和Hexo需要一些额外的配置。
首先用Obsidian打开Hexo的根目录
修改.gitignore文件,忽略产生的.obsidian配置信息。修改如下,主要是添加了最后一行.obsidian/workspace
1 | .DS_Store |
修改obsidian配置
- 修改新建笔记存放的位置,因为Hexo默认是放在
source/_posts
文件夹下的,所以需要修改与之保持一致。 - 关闭Wiki链接,Hexo不支持,如果不关闭在本地obsidian是有效果的,部署至网站后,图片和文件会加载不出。
- 修改附件默认存放位置,在
source
文件夹下可以新建一个img或其他名字的文件夹,用于存放笔记中的图片,文件,视频等 - 添加忽略文件,将Hexo项目除source文件夹外其他文件夹排除。
添加模板
obsidian可以自定义模板信息,通过模板快速创建Hexo的front-matter信息
在source/_obsidian
文件夹下新建template.md文件,内容如下:
1 | --- |
之后使用obsidian添加新笔记时,只需要引入该模版即可。
添加插件
自动生成categories
在本地使用Obsidian时,我们常常会用笔记的路径(如前端/Vue)来代表其
categories(分类)
,但在Hexo中需要在front-matter中手动定义categories
,如果我们不想每次都手动配置,而是让Hexo自动以笔记的路径来定义其categories
。
添加hexo-auto-category
依赖,根据文件目录自动生成 categories 信息
1 | npm install hexo-auto-category --save |
在根目录下的_config.yml
添加配置
1 | # Generate categories from directory-tree |
生成唯一静态链接
默认的笔记链接是根据笔记的时间+标题生成的,但如果我们修改了笔记的时间,那么如果别的文章中引用了这篇笔记,就会失效。
添加hexo-abbrlink
依赖
1 | npm install hexo-abbrlink --save |
在根目录下的_config.yml
添加配置
1 | permalink: posts/:abbrlink/ |
Obsidian文件树插件
由于直接用Obsidian打开Hexo项目,目录树会显示很多无关紧要的目录,在Obsidian中我们只需要关注
source/_post
这个文件夹即可。
在Obsidian第三方插件中安装File Tree Alternative Plugin
插件
文件夹聚焦效果:
五.配置一键部署
配置一键部署功能,可以实现本地博客编写完毕后,一键同步到github上,并同步响应的个人主页。参考文档如下:部署 | Hexo
安装hexo-deployer-git插件
1 | npm install hexo-deployer-git --save |
然后修改根目录下的_config.yml
文件(注意不是主题配置文件)
1 | # Deployment |
参数 | 描述 | 默认 |
---|---|---|
repo |
库(Repository)地址 | 建议使用git@github.com 形式的 |
branch |
分支名称 | gh-pages (GitHub) coding-pages (Coding.net) master (others) |
message |
自定义提交信息 | Site updated: {{ now('YYYY-MM-DD HH:mm:ss') }} ) |
token |
可选的令牌值,用于认证 repo。用 $ 作为前缀从而从环境变量中读取令牌 |
然后执行指令,如果提示需要验证github帐号和密码,则可以配置SSH密钥认证,方式在这就不赘述了,自行百度即可。
1 | hexo clean; |
踩坑记录
总得来说,按照Hexo和Butterfly文档进行配置,笔者自己遇到的问题并不多,如果读者在配置中,遇到问题的欢迎留言评论~
1.配置评论功能
网上大多都是使用Valine管理评论的,因为其无需后端,但是自从2022年起,其不支持国内用户使用了。因此换用了Waline+Vercel构建评论功能。
参考文档如下:快速上手 | Waline
但Vercel的节点,国内无法访问,因此要使用评论功能,只能通过
特殊手段
,除非自己购买了域名。
2.配置一键部署
笔者自己通过hexo d部署到github时,经常出现timeout out的情况(也有部分是网络原因),后来发现是因为仓库链接写的是https的形式,改成
git@github.com
形式的情况就好很多。
1 | # Deployment |
3.标签页/分类页/关于我页面缺失
也就是图中的这些,其中archives是创建Hexo框架时已经有的,不需要自己手动配置,而标签,分类,友链,关于界面是需要手动配置的。
其配置的具体方式如下:Butterfly 安裝文檔(二) 主題頁面 | Butterfly
进入项目根目录,输入如下命令:
1 | hexo new page tags |
然后在source/tags文件夹下会新建一个index.md文件,进入该文件,进行如下修改:
1 | --- |
然后重新执行指令:
1 | hexo clean; |
其余页面的配置也类似。
友链页的配置请参考:Butterfly 安裝文檔(二) 主題頁面 | Butterfly