一. 准备工作
1. 下载OpenWrt CT模板
- 复制以下命令到PVE终端下载OpenWrt CT模板
- 主路由已经安装跳过这一步
1
| wget -q -O /var/lib/vz/template/cache/immortalwrt-24.10.0-x86-64-rootfs.tar.gz 'https://github.ixin.top/https://github.com/Thx-Zq/PVE-/releases/download/LXC_OpenWrt/immortalwrt-24.10.0-x86-64-rootfs.tar.gz'
|
2. 安装OpenWrt容器
1 2 3 4 5 6 7 8 9 10
| pct create 101 \ local:vztmpl/immortalwrt-24.10.0-x86-64-rootfs.tar.gz \ --rootfs xt:5 \ --ostype unmanaged \ --hostname OpenWrt \ --arch amd64 \ --cores 2 \ --memory 512 \ --swap 0 \ -net0 bridge=vmbr0,name=eth0
|
解释:
pct create:容器创建命令
101:容器ID,可根据自己情况设定
local:vztmpl/immortalwrt-24.10.0-x86-64-rootfs.tar.gz: 上传/下载到local—CT模板中的OP固件全名
--rootfs:模版为rootfs文件
local-lvm:1 :模板安装后磁盘镜像所在(部分小伙伴可能只有1个local没有local-lvm,注意用local),冒号后数字代表分配磁盘大小(单位G)按需设置,1为1G,2为2G
--ostype unmanaged:操作系统类型,这里没有填写指定的操作系统(不会影响)
--hostname Openwrt-LXC:主机名(容器名称)可自定义。
--arch amd64:设置为64位
--cores 1:分配给容器的核心数,1:1核,2:2核等等(按需设置)
--memory 512:分配给容器最大的内存数量(单位M)(按需设置)
--swap 0:交换分区设置为0(按需设置)
-net0 bridge=vmbr0,name=eth0:网卡,上桥接PVE默认虚拟网桥vmbr0,名称eth0。必须,否则op无法联网。
3. 编辑 nano /etc/pve/lxc/101.conf
1 2 3 4 5 6 7 8 9 10 11 12
| features: keyctl=1,mknod=1,nesting=1 lxc.apparmor.profile: unconfined lxc.include: /usr/share/lxc/config/openwrt.common.conf lxc.cgroup2.devices.allow: a lxc.cap.drop: lxc.mount.auto: proc:mixed sys:ro cgroup:mixed lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file lxc.net.0.flags: up lxc.net.0.type: veth lxc.net.0.link: vmbr0 lxc.net.0.name: eth0 lxc.net.0.hwaddr: aa:aa:aa:aa:aa:a1
|
解释:
lxc.net.0.flags: up #别动
lxc.net.0.type: veth #虚拟口“veth”,直通口“phys”
lxc.net.0.link: vmbr0 #该处为虚拟口的名称,直通的填写主机显示网口的名称(这是我的主机管理网口,一定不要直通,但是帅小伙都会搞直通,然后帅帅的问)。
lxc.net.0.name: eth0 #虚拟机中显示网口的名称。
lxc.net.0.hwaddr: aa:aa:aa:aa:aa:a1 #虚拟mac地址,不填写会自动生成。
二. 初始化
1. 启动OP-LXC容器
- 编辑
vi /etc/config/network
- 键盘按
i 进入编辑模式修改IP
- 修改完IP后键盘按
ESC 退出编辑模式——英文冒号 :wq 回车保存退出
service network restart 重启网络服务
2. 浏览器中输入OP-LXC的IP 登录WebUI
- 网关(主路由)
- DNS(主/备2个较好)
- HDCP(关闭此处DHCP和动态 DHCP)
- IPv6(关闭)
3. 开启IPv6
添加新接口


三. 插件安装
进入 系统-软件包-更新列表**
ttyd 终端
luci-app-advanced-reboot 高级重启
luci-app-filemanager 文件管理器
- 安装
iStore商店(ARM64 & x86-64通用)
1 2 3 4 5
| opkg update || exit 1 cd /tmp wget https://github.ixin.top/https://github.com/linkease/openwrt-app-actions/raw/main/applications/luci-app-systools/root/usr/share/systools/istore-reinstall.run chmod 755 istore-reinstall.run ./istore-reinstall.run
|
- 安装网络向导和首页(ARM64 & x86-64通用)
1
| is-opkg install luci-i18n-quickstart-zh-cn
|
四. 科学上网所需依赖安装
1 2 3 4 5 6 7 8 9
| #iptables opkg update opkg install bash iptables dnsmasq-full curl ca-bundle ipset ip-full iptables-mod-tproxy iptables-mod-extra ruby ruby-yaml kmod-tun kmod-inet-diag unzip luci-compat luci luci-base opkg install /tmp/openclash.ipk
#nftables 建议安装这个其他的不用安装 opkg update opkg install bash dnsmasq-full curl ca-bundle ip-full ruby ruby-yaml kmod-tun kmod-inet-diag unzip kmod-nft-tproxy luci-compat luci luci-base kmod-nft-socket opkg install /tmp/openclash.ipk
|
五. 终端免密登录
编辑 vi /etc/config/ttyd 文件目录
- /bin/login 后面加
-f root 变成 ‘/bin/login -f root’

输入命令 /etc/init.d/ttyd reload 生效
六. 部署hexo博客
安装Node.js
- 更新包管理器
- 安装Node.js
1
| opkg install node node-npm
|
- 安装完成后,检查是否安装成功。执行
node -v命令,看到版本信息,则说明安装成功。
- 修改npm源。npm下载各种模块,默认是从国处服务器下载,速度较慢,建议配置成华为云镜像源。打开CMD窗口,运行如下命令:
1
| npm config set registry https://mirrors.huaweicloud.com/repository/npm/
|
安装git
1
| opkg install git git-http
|
- 配置git用户名和邮箱
1 2
| git config --global user.name Thx-Zq git config --global user.email thx719@163.com
|
- 通过
git config -l 检查是否配置成功。
- 安装ssh
1
| opkg install openssh-keygen openssh-client
|
- 配置公钥连接Github
1
| ssh-keygen -t rsa -C thx719@163.com
|
- 提示
Enter file in which to save the key直接一路回车即可,新手小白不推荐设置密钥
- 之后打开root目录文件夹下的.ssh的文件夹,会看到以下文件
id_rsa私钥
id_rsa.pub公钥
- 将 SSH KEY 配置到 GitHub
- 进入github,点击右上角头像 选择
settings,进入设置页后选择 SSH and GPG keys,名字随便起,公钥填到Key那一栏。
- 测试连接,输入以下命令
- 第一次连接会提示
Are you sure you want to continue connecting (yes/no/[fingerprint])?,输入yes即可
创建GitHub.io仓库
- 点击右上角的
+按钮,选择New repository,创建一个<用户名>.github.io的仓库。
- 仓库名字的格式必须为:
<用户名>.github.io (注意:前缀必须为用户名,此为预览博客需要,后期可修改仓库名)
- 可见性必须选择
Public 方便第一次部署检查问题,点击 Creat repository 进行创建即可
初始化 Hexo 博客
- 创建一个文件夹用来保存博客源码
- 在终端输入如下命令安装 Hexo
1
| npm install -g hexo-cli && hexo -v
|
3. 初始化 Hexo 项目安装相关依赖。
1 2 3
| hexo init hexo 这个需要科学环境 cd hexo npm i
|
初始化项目后,hexo目录下有如下结构:
- node_modules:依赖包
- scaffolds:生成文章的一些模板
- source:用来存放你的文章
- themes:主题
- .npmignore:发布时忽略的文件(可忽略)
- _config.landscape.yml:主题的配置文件
- config.yml:博客的配置文件
- package.json:项目名称、描述、版本、运行和开发等信
4. 将静态博客挂载到 GitHub Pages
- 安装 hexo-deployer-git
1
| npm install hexo-deployer-git --save
|
- 修改
_config.yml 文件
- 在hexo目录下的_config.yml,就是整个Hexo框架的配置文件了。可以在里面修改大部分的配置。详细可参考官方的配置描述。
- 修改最后一行的配置,将repository修改为你自己的github项目地址即可,还有分支要改为
main代表主分支(注意缩进)。
1 2 3 4
| deploy: type: git repository: git@github.com:Thx-Zq/Thx-Zq.github.io.git branch: main
|
七. 安装主题
- 在博客根目录里安装最新版主题
1 2
| cd hexo git clone -b main https://github.com/anzhiyu-c/hexo-theme-anzhiyu.git themes/anzhiyu
|
- 第一次使用需要安装 pug 以及 stylus 的渲染器
1
| npm install hexo-renderer-pug hexo-renderer-stylus --save
|
应用主题
- 修改 hexo 配置文件
_config.yml,把主题改为anzhiyu
覆盖配置
- 覆盖配置可以使
主题配置放置在 anzhiyu 目录之外,避免在更新主题时丢失自定义的配置。
1
| cp -rf ./hexo/themes/anzhiyu/_config.yml ./hexo/_config.anzhiyu.yml
|
以后如果修改任何主题配置,都只需修改 _config.anzhiyu.yml 的配置即可。
注意:
- 只要存在于
_config.anzhiyu.yml 的配置都是高优先级,修改原 _config.yml 是无效的。
- 每次更新主题可能存在配置变更,请注意更新说明,可能需要手动对
_config.anzhiyu.yml 同步修改。
- 想查看覆盖配置有没有生效,可以通过
hexo g --debug 查看命令行输出。
- 如果想将某些配置覆盖为空,注意不要把主键删掉,不然是无法覆盖的
配置主题与主站配置文件
- 生成标签页和分类页
1 2 3
| cd hexo hexo new page tags hexo new page categories
|
- 找到
source/tags/index.md 这个文件,修改添加 type: "tags"
1 2 3 4 5 6 7
| --- title: 标签 date: 2025-02-028 20:30:00 type: "tags" comments: false top_img: false ---
|
- 找到
source/categories/index.md 这个文件,修改添加 type: "categories"
1 2 3 4 5 6 7
| --- title: 分类 date: 2025-02-028 20:31:00 aside: false top_img: false type: "categories" ---
|
剩下的工作就是配置_config.yml和_config.anzhiyu.yml文件,修改博客参数。
配置文章模版
/scaffolds目录下有几个模版文件,其中
- post.md:新建博文模版
- page.md:新建标签页模版
- post.md模版,仅供参考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| --- title: {{ title }} #【必需】页面标题 date: {{ date }} #【必需】页面创建日期 updated: #【可选】页面更新日期 tags: #【可选】文章标签 categories: #【可选】文章分类 keywords: #【可选】文章关键字 description: #【可选】文章描述 top: # 1 置顶 top_img: #【可选】文章顶部图片 comments: #【可选】显示文章评论模块(默认 true) cover: https://img.090227.xyz/file/ae62475a131f3734a201c.png #【可选】文章缩略图(如果没有设置 top_img,文章页顶部将显示缩略图,可设为 false/图片地址/留空) toc: #【可选】显示文章 TOC(默认为设置中 toc 的 enable 配置) toc_number: #【可选】显示 toc_number(默认为设置中 toc 的 number 配置) toc_style_simple: #【可选】显示 toc 简洁模式 copyright: #【可选】显示文章版权模块(默认为设置中 post_copyright 的 enable 配置) copyright_author: #【可选】文章版权模块的文章作者 copyright_author_href: #【可选】文章版权模块的文章作者链接 copyright_url: #【可选】文章版权模块的文章作者链接 copyright_info: #【可选】文章版权模块的版权声明文字 mathjax: #【可选】显示 mathjax(当设置 mathjax 的 per_page: false 时,才需要配置,默认 false) katex: #【可选】显示 katex(当设置 katex 的 per_page: false 时,才需要配置,默认 false) aplayer: #【可选】在需要的页面加载 aplayer 的 js 和 css,请参考文章下面的音乐 配置 highlight_shrink: #【可选】配置代码框是否展开(true/false)(默认为设置中 highlight_shrink 的配置) aside: #【可选】显示侧边栏 (默认 true) swiper_index: 10 #【可选】首页轮播图配置 index 索引,数字越小越靠前 top_group_index: 10 #【可选】首页右侧卡片组配置, 数字越小越靠前 ai: #【可选】文章ai摘要 background: "#fff" #【可选】文章主色,必须是16进制颜色且有6位,不可缩减,例如#ffffff 不可写成#fff ---
<div class="video-container"> [up主专用,视频内嵌代码贴在这] </div>
<style> .video-container { position: relative; width: 100%; padding-top: 56.25%; /* 16:9 aspect ratio (height/width = 9/16 * 100%) */ }
.video-container iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } </style>
|
- page.md模版,仅供参考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| --- title: {{ title }} #【必需】页面标题 date: {{ date }} #【必需】页面创建日期 type: #【必需】标签、分类、关于、音乐馆、友情链接、相册、相册详情、朋友圈、即刻页面需要配置 updated: #【可选】页面更新日期 comments: #【可选】显示页面评论模块(默认 true) description: #【可选】页面描述 keywords: #【可选】页面关键字 top_img: https://img.090227.xyz/file/ae62475a131f3734a201c.png #【可选】页面顶部图片 mathjax: #【可选】显示 mathjax(当设置 mathjax 的 per_page: false 时,才需要配置,默认 false) katex: #【可选】显示 katex(当设置 katex 的 per_page: false 时,才需要配置,默认 false) aside: #【可选】显示侧边栏 (默认 true) aplayer: #【可选】在需要的页面加载 aplayer 的 js 和 css,请参考文章下面的音乐 配置 highlight_shrink: #【可选】配置代码框是否展开(true/false)(默认为设置中 highlight_shrink 的配置) top_single_background: #【可选】部分页面的顶部模块背景图片 ---
|
更多功能
文章置顶
安装插件
1
| npm install hexo-generator-topindex --save
|
设置置顶
给需要置顶的文章加入top参数,如下:
1 2 3 4 5 6 7 8 9
| --- title: 每天一个linux命令 date: 2017-01-23 11:41:48 top: 1 categories: - 运维 tags: - linux命令 ---
|
如果存在多个置顶文章,top后的参数越大,越靠前。
开启本地搜索
安装插件
你需要安装 hexo-generator-search,根据它的文档去做相应配置
1
| npm install hexo-generator-search --save
|
设置主题配置文件
1 2 3 4
| local_search: enable: true preload: false CDN:
|
| 参数 |
解释 |
| enable |
是否开启本地搜索 |
| preload |
预加载,开启后,进入网页后会自动加载搜索文件。关闭时,只有点击搜索按钮后,才会加载搜索文件 |
| CDN |
搜索文件的 CDN 地址(默认使用的本地链接) |
字数统计
你需要安装hexo-wordcount
1
| npm install hexo-wordcount --save
|
修改 主题配置文件:
1 2 3 4 5
| wordcount: enable: true post_wordcount: true min2read: true total_wordcount: true
|
安知鱼主题官方文档
新建文章
新建博文命令
新建标签页命令
确认无误后使用以下命令,将本地文章推送至GitHub仓库即可
1 2 3 4 5 6 7
| // Git BASH终端 hexo cl && hexo g && hexo d
// 或者
// VSCODE终端 hexo cl; hexo g; hexo d
|
本地进行预览
1 2 3 4 5 6 7
| // Git BASH终端 hexo cl && hexo s
// 或者
// VSCODE终端 hexo cl; hexo s
|