免费构建个人博客:Hexo + GitHub + Cloudflare

免费构建个人博客:Hexo + GitHub + Cloudflare
Pythonahy免费构建个人博客:Hexo + GitHub + Cloudflare
0. 前置准备
- US.KG: 用于注册免费域名。
- Cloudflare: 用于域名解析和加速。
- Node.js: 用于运行 Hexo。
- Git: 用于版本控制和部署。
- GitHub: 用于代码托管和静态站点部署。
一、注册域名
1. 注册 US.KG 帐号
打开 US.KG 注册帐号,电话地址等信息可以使用 身份生成器。
2. KYC 验证
重新登录 US.KG,选择 Github KYC 选项,然后点击 Proceed to GitHub。
在最下方填入以下信息,包括 us.kg 的用户名以及注册该网站的原因:
- Username: XXX
- Reason for Registering the .US.KG Domain Name (Why): Study and build website.
勾选五个方框,然后点击 Proceed to GitHub。
在仓库主页 FreeDomain 上给一个 Star。
3. 创建域名
登录 US.KG,我们可以创建三个域名,点击 Domain Registration 创建域名。
输入域名前缀,点击 Check。
显示可以创建。
4. Cloudflare 绑定域名
登录 Cloudflare,点击右上角 添加站点,输入在 us.kg 注册的域名。
套餐选择免费的,点击继续。
点击继续前往激活。
将 Cloudflare 提供的服务器地址复制到 us.kg。
点击 Register。
这样就完成了 us.kg 的域名设置。
回到 Cloudflare ,点击继续。
刷新一下,显示如下即表示成功。
二、安装 Hexo
1. 安装 Node.js
下载 Node.js,安装时除了修改安装目录为 D 盘,其余步骤都点击下一步。
安装完成后,使用 Win + R 输入 CMD 打开命令行,输入 node -v,如果出现版本号,则说明安装成功。
将 npm 源修改为阿里云镜像源,在 CMD 窗口运行以下命令:
1 | npm install -g cnpm --registry=https://registry.npmmirror.com |
2. 安装 Git
下载 Git,安装时除了修改安装目录为 D 盘,其余步骤都点击下一步。
Git CMD是 Windows 命令行风格。Git Bash是 Linux 系统命令行风格(推荐使用)。Git GUI是图形化界面(不建议新手使用)。
1 | git config -l # 查看所有配置 |
3. 使用 SSH 连接 GitHub
打开 Git Bash。
配置用户名和邮箱,用户名为 GitHub 账号,邮箱为注册 GitHub 的邮箱。
1 | git config --global user.name "用户名" |
使用 git config -l 检查是否配置成功。
配置公钥 GitHub,执行以下命令生成 SSH 公钥,用于计算机连接 GitHub。
1 | ssh-keygen -t rsa -C "邮箱" |
在提示 Enter file in which to save the key 时,直接一路回车即可,不推荐设置密钥。
使用 Everything 搜索 id_rsa.pub 并打开路径。
id_rsa.pub 就是公钥,用记事本打开并复制内容,然后在 GitHub 中找到 Settings - SSH and GPG keys 配置 SSH 密钥。
名字随便填一个。
测试连接,输入以下命令:
1 | ssh -T git@github.com |
提示 Are you sure you want to continue connecting (yes/no/[fingerprint])?,输入 yes 即可。
出现 You've successfully 则表示成功,完成了环境准备工作。
4. 创建 GitHub 仓库
打开 GitHub,点击右上角的 + 号,选择 New repository,创建一个 <用户名>.github.io 的仓库。
仓库名字的格式必须为:<用户名>.github.io,可见性选择 public,方便第一次部署检查问题,点击 Create repository 进行创建。
5. 初始化 Hexo 博客
创建一个文件夹保存博客源码,这里选的路径为 D:/Hexo-Blog,在文件夹内右键鼠标,选择 Open Git Bash here。
在 Git BASH 输入以下命令安装 Hexo:
1 | npm install -g hexo-cli && hexo -v |
完成安装后,输入 hexo -v 验证是否成功。
初始化 Hexo 项目并安装相关依赖:
1 | hexo init blog-demo |
初始化后,D 盘博客文件夹下会出现以下文件:
- node_modules:依赖包
- scaffolds:生成文章的一些模板
- source:用来存放文章
- themes:主题
- .npmignore:发布时忽略的文件(可忽略)
- _config.landscape.yml:主题的配置文件
- _config.yml:博客的配置文件
- package.json:项目名称、描述、版本、运行和开发等信息
输入 hexo cl && hexo s 启动项目。
打开浏览器,输入地址:http://localhost:4000/,看到以下效果,说明构建成功了。
6. 将静态博客挂载到 Github Pages
修改 _config.yml 文件,在 Blog-demo 目录下的 _config.yml,这是 Hexo 框架的配置文件,可以修改大部分配置,可参考官方wiki。
修改最后一行的配置,将 repository 修改为自己的 GitHub 项目地址,branch 要改为 main 代表主分支(注意缩进)。
1 | deploy: |
安装 hexo-deployer-git:
1 | npm install hexo-deployer-git --save |
部署到 GitHub,输入命令:
1 | hexo clean && hexo generate && hexo deploy |
如果出现 Deploy done,则说明部署成功了。
hexo clean:删除之前生成的文件,可以用hexo cl缩写。hexo generate:生成静态文章,可以用hexo g缩写。hexo deploy:部署文章,可以用hexo d缩写。
稍等两分钟,打开浏览器访问:https://<用户名>.github.io/,就可以看到博客内容了。
7. 配置 Cloudflare Pages
打开 Cloudflare,在 Workers 和 Pages 中选择 创建项目。
选择 Pages 的 连接到 Git。
保存并部署。
点击继续处理项目,在 Cloudflare 中,自定义域粘贴我们注册的 us.kg 复制的域名。
稍等一会。
这样域名就绑定了。
把 GitHub 中的仓库设置为私有仓库,点击 Settings。
在最下面找到 Danger Zone。
三、安装博客主题安知鱼
1. 安装博客主题
打开 VS Code,选择 文件 - 打开文件夹。
在终端输入命令:
1 | git clone -b main https://github.com/anzhiyu-c/hexo-theme-anzhiyu.git themes/anzhiyu |
2. 应用主题
修改 Hexo 的配置文件 _config.yml,将主题修改为 anzhiyu。
安装 pug 和 stylus 渲染插件,在 VS Code 终端输入命令:
1 | npm install hexo-renderer-pug hexo-renderer-stylus --save --registry=http://registry.npmmirror.com |
3. 覆盖主题配置
将 /themes/anzhiyu/_config.yml 文件复制到 hexo 根目录,并重命名为 _config.anzhiyu.yml。以后修改任何主题配置,都只需修改 _config.anzhiyu.yml 的配置即可。
注意:
_config.anzhiyu.yml中的配置优先级最高,修改原_config.yml无效。- 每次更新主题,可能存在配置变更,请注意更新说明,可能需要手动对
_config.anzhiyu.yml同步修改。 - 可以使用
hexo g --debug查看命令行输出,确认配置是否生效。 - 如果想将某些配置覆盖为空,注意不要把主键删掉。
4. 本地启动 Hexo
1 | # 本地预览 |
5. Hexo 常用命令
以下是 Hexo 博客常用命令:
| 命令 | 描述 |
|---|---|
hexo new [layout] <title> |
创建一篇新的文章 |
hexo generate 或 hexo g |
生成静态文件 |
hexo server 或 hexo s |
启动本地服务器 |
hexo deploy 或 hexo d |
部署网站 |
hexo clean |
清除缓存文件和已生成的静态文件 |
hexo clean; hexo server |
清除缓存并启动本地服务器查看最新效果 |
hexo clean; hexo generate; hexo deploy |
清除缓存后生成新文件并把内容发布到自己的服务器 |
四、安知鱼主题设置
一、样式设置
1. nav 相关设置
修改 _config.anzhiyu.yml 中的代码:
1 | nav: |
2. 博客名称设置
修改 _config.yml 中tltle 和 subtitle 顺便把 language 为中文 zh-CN
1 | # Site |
3. 菜单栏设置
3.1 文章
1 | menu: |
- 3.1.1 分类页设置
在 Hexo 博客根目录下打开终端,输入:
1 | hexo new page categories |
找到 source/categories/index.md 这个文件,修改添加 type: "categories":
1 |
|
- 3.1.2 标签页设置
在 Hexo 博客根目录下打开终端,输入下面的命令生成标签页:
1 | hexo new page tags |
找到 source/tags/index.md 这个文件,修改添加 type: "tags":
1 |
|
3.2 友链
_config.anzhiyu.yml,只设置友人帐:
1 | menu: |
- 3.2.1 友人帐
在 Hexo 博客根目录下打开终端,输入:
1 | hexo new page link |
找到 source/link/index.md 这个文件:
1 |
|
新建文件 source/_data/link.yml,如果没有 _data 文件夹,请自己新建。在 source/_data/link.yml 中输入:
1 | - class_name: 框架 |
4. 搜索设置
安装插件 hexo-generator-search,并根据它的文档进行配置:
1 | npm install hexo-generator-search --save |
打开 _config.anzhiyu.yml,搜索 Local search,把 enable 的值改为 true。
设置主题配置文件:
1 | local_search: |
| 参数 | 解释 |
|---|---|
enable |
是否开启本地搜索 |
preload |
预加载,开启后,进入网页后会自动加载搜索文件。关闭时,只有点击搜索按钮后,才会加载搜索文件 |
CDN |
搜索文件的 CDN 地址(默认使用的本地链接) |
5. 首页顶部设置
1 | # 首页随便逛逛people模式 而非技能点模式,关闭后为技能点模式需要配置creativity.yml |
1 | # 首页顶部相关配置 |
创建 /source/_data/creativity.yml,输入以下内容:
1 | - class_name: 开启创造力 |
6. 首页顶部设置
1 | # 首页顶部相关配置 |
7. 非轮播显示
配置 _config.anzhiyu.yml:
1 | swiper: |
tips、title、image、link 自己填
8. 侧边栏设置
1 | # aside (侧边栏) |
社交链接:
1 | # 要加社交帐号则自己添加 |
侧边个人资料图像:
1 | # Image (图片设置) |
二、其它设置
1. 配置文章模板
在 /scaffolds 目录下有几个模板文件,其中:
post.md:新建文章模板page.md:新建标签页模板
1.1 post.md 模板,仅供参考
1 |
|
1.2 page.md 模板,仅供参考
1 |
|
2. 文章设置置顶
配置置顶参数 top:
如果存在多个置顶文章,top 后的参数越大,越靠前:
3. 给文章设定密码
先安装 hexo-blog-encrypt:
1 | npm install --save hexo-blog-encrypt |
不需要将 password: 密码 添加到文章开头,在前面的自定义 post.md:新建文章模板中已经内置了,在需要的时候,设置 password 的值就行。
4. 字数统计
先安装插件:
1 | npm install hexo-wordcount --save |
将下面的 enable 修改为 true:
1 | # wordcount (字数统计) |
地点显示日本修改 location 即可,把 expand 设置为 true,会展开全部目录。
1 | # toc (目录) |
5. 添加 RSS 订阅支持
1 | npm install hexo-generator-feed --save |
在 _config.yml 文件中配置:
1 | # Site |
再配置 _config.anzhiyu.yml:
1 | # social settings (社交图标设置) |
6. 博客永久链接设置
安装 hexo-abbrlink 插件:
1 | npm install hexo-abbrlink --save |
配置 _config.yml 中的内容:
1 | # # URL |
7. 添加音乐
修改 _config.anzhiyu.yml:其它默认,修改 id 为自己网易音乐的
1 | # 左下角音乐配置项 |
8. 添加豆瓣看书电影到博客
1. 先安装插件 hexo-douban
1 | npm install hexo-douban --save |
2. 配置文件
打开 _config.yml 只要修改 id,其它默认:
1 | douban: |
3. 生成豆瓣页面
1 | hexo douban |
不知道为什么,获取的电影太慢,或者哪里出问题了,我一天时不时刷新,才加进来 100 不到。
4. 配置生成目录
打开 _config.anzhiyu.yml,会在主题文件夹下的 public 目录生成一个 books 和 movies 文件夹。
1 | menu: |
上面的自定义图标:
1 | 阅读: /books/ || anzhiyu-icon-book-open |
安知鱼支持修改图标,打开 anzhiyu 主题图标,使用 anzhiyu-icon- + 图标的名字,比如 anzhiyu-icon-play。
9. 添加烟火特效
enable 设置为 true 即可:
1 | fireworks: |
10. 配置 Twikoo 评论系统
1. 申请 MongoDB 账号
进邮箱验证激活账号。
填写问卷调查。
选择免费套餐,云服务商选择 aws,地区选择 N. Virginia (us-east-1)。
接下来会得到一个用户名和密码,先复制一份保存,等下会用到。
在 Database Access 页面点击 Add New Database User 创建数据库用户。
Authentication Method 选 Password,在 Password Authentication 下设置数据库用户名,点击 Autogenerate Secure Password 生成密码并复制密码。
选择 Atlas Admin,最后点击 Add User。
在 Network Access 页面点击 Add IP Address,点击 ALLOW ACCESS FROM ANYWHERE,点击 Confirm。
- 在 Database 页面点击 Connect,连接方式选择 Drivers。
复制如下数据库连接字符串,将连接字符串中的 <username>:<password> 修改为刚刚创建的数据库 用户名:密码,<> 不要保留。
2. Vercel 部署
打开 Vercel 注册账号,用 GitHub 登录。
点击 一键部署,填入项目名字,点击 Create。
点击 Continue to Dashboard。
点击设置。
点击 Domains,设置自定义域名。
不绑定自己的域名,会出现评论不显示,或者用不了的情况,所以需要绑定我们自己的域名。
输入自己的域名,复制下面的信息。
打开 Cloudflare 选择自己的服务器,点击,dns,记录。
在 Domains 中,出现打勾就行。
配置环境变量并调试配置,找到 Environment Variables,添加环境变量 MONGODB_URI,值为前面记录的数据库连接字符串。
找到 Deployment Protection,设置 Vercel Authentication 为 Disabled,然后点击 Save。
找到 Function,将 Function Region 修改为你需要的地区。
重新部署应用,点击 Deployments,点击三个点,点击 Redeploy。
勾选 Use existing Build Cache 然后点击下面的 Redeploy。
出现这个表示成功了。
接下来就是配置 _config.anzhiyu.yml,搜索 Twikoo:
1 | comments: |
修改:use: Twikoo,lazyload: true。
再修改下面这里,重新部署即可:
1 | # Twikoo |
运行命令:
1 | hexo clean; hexo generate; hexo deploy |
效果:
为 Twikoo 添加 Telegram 即时消息推送
1.访问 BotFather 输入 /newbot 为机器人起一个名字,为机器人选择一个用户名须以Bot结尾,我们会得到 API token
2.激活自己的机器人并链接 LivegramBot
点击 t.me/机器人用户名 ,输入 /start
访问 LivegramBot 发送 /addbot 回复自己机器人的 API token
看到 Success! 说明成功啦!
3.获取 chat id
访问 userinfobot 输入 /start 获取 Id
4.拼接 PUSHOO_TOKEN
格式为 api_token#chat_id,比如:759xxx:xxxx_s0#48xxx
7594980291:AAFvLtRDJAYs_cLeJjyMchjJ88dIzWFx_s0#483000844
5.设置 Twikoo
在 Twikoo 的即时通知里面。
PUSHOO_CHANNEL 填入:telegram
PUSHOO_TOKEN 填入:api_token#chat_id
SC_MAIL_NOTIFY 填入:true
评论看了下,通知成功
五、遇到的问题
一、Chrome 浏览器报错 ERR_SSL_VERSION_OR_CIPHER_MISMATCH
此网站无法提供安全连接,使用了不受支持的协议。
访问 Cloudflare 点击账户主页,选择自己有问题的域名
选择 SSL/TLS 概述,更改加密模式为完全(严格)
点击 SSL/TLS 边缘证书,发现这里没有证书
拖到下面,先点击禁用通用 SSL,再启用通用 SSL
返回上面,稍微等一下,可以看到部署成功了






