2024 年我的 Hexo 博客终极方案 -(二)优化
我将我的 Hexo 博客方案分为了三篇:
(一)搭建(二)优化(三)图床
Hexo 插件hexo-abbrlinkhexo-abbrlink 插件可以为每一篇文章通过通过算法生成一个唯一且永久的链接,截止到 2024 年 03 月 23 日为止,这个插件已经有两年没有更新了,但是仍然可以使用。
我个人喜欢比较简短的链接,比如 https://lvxianchao.com/5d23b6a.html 这种,至于把博文标题给转为拼音放到链接里去那种,弄得链接又臭又长的,看着很难受,虽然利于 SEO,但我宁愿不要。
安装1bun add hexo-abbrlink --save
我的配置1234567891011121314151617# _config.ymlpermalink: :abbrlink.html# hexo-abbrlinkabbrlink: alg: crc32 #support crc16(default) and crc32 rep: hex #support dec(default) and hex drafts: true #( ...
2024 年我的 Hexo 博客终极方案 -(一)搭建
我将我的 Hexo 博客方案分为了三篇:
(一)搭建(二)优化(三)图床
回顾职业生涯这些年,文章没写几个,但博客搭建干了好多遍。
每次用一个新的技术手段搭建起来一个博客,写了几篇水文以后就不了了之了,直到下次又想写博客,然后采取一种新的手段,直接将之前积攒下来的水文全干掉。
每次想写博客,都是想将当时研究了一阵的某种解决问题的方案或者重要的笔记等内容记录下来,以备后续之需。因为同一个问题,不知道什么时候就又需要了,然后想起来自己之前做过同样的事情,有现成的解决方案,但博客没了。
2024 年,我决定最后一次折腾博客,不再在各种博客技术或平台之间跳来跳去,将所写的内容积攒下来,在这世间留下一丝足迹。
这一次,我决定还是使用 Hexo 来搭建,因为我很喜欢那种什么都不用管直接写 Markdown 然后一条命令就能部署上去的感觉,不需要后台,不需要记录账号密码,不需要为了 SEO 友好,要用鼠标点这里输入关键词,点那里输入描述等操作,就只是纯粹地写就行了,非常适合我这种技术人。
类似 Hexo 这种博客解决方案还有基于 Go 语言的 Hugo,不过自从它诞生以来,我每隔一段时间就会去看 ...
Ubuntu 22.04 LTS 服务器环境初始化
开启 root 用户远程连接
我不要每次都要 sudo,太鸡儿麻烦。
执行 sudo passwd root 以后输入两次 root 用户的密码。
VIM 编辑 /etc/ssh/sshd_config,把 PermitRootLogin prohibit-password 注释掉,下面来一行 PermitRootLogin yes。
下文涉及的操作均以 root 用户进行。
更改 HOSTNAME腾讯云的服务器(当然不光只有它家)在初始化安装完以后,服务器的 hostname 都非常长,非常难看,平时终端的时候也占地方干扰视线,必须办了,我直接改名为 tencent。
1hostnamectl set-hostname tencent
安装 Docker身处在这个狗币网络之下,当然采用国内镜像站安装 Docker,我选择清华,虽然上不了它,但是我爱它。
12export DOWNLOAD_URL="https://mirrors.tuna.tsinghua.edu.cn/docker-ce"curl -fsSL https://get.docker.com/ ...
利用镜像交换机获取本地直播源 OpenWRT 双 WAN 口实现局域网任意设备观看 IPTV
最近收拾屋子,发现了好久没用过的电信 IPTV 机顶盒。
自从家里买了小米的激光投影仪以后,一直看的网络电视,就想着利用这个盒子把直播源抓下来,然后配合 OpenWRT 让局域网内任意设备随时都可以观看电视直播,甚至可以分享到公网,方便其它人。
于是我特意从京东买了一款带端口镜像功能的 TP-LINK 千兆 8 口交换机,型号是 TL-SG2008D。
获取直播源整体思路思路是这样,准备两根网线:
将交换机的 千兆口 1 连接到光猫的 ITV 接口。
将交换机的 千兆口 8 连接到我的 Mac 上。
将机顶盒随便插入到交换机上的任意网口上。
然后在交换机的控制台里设置把 千兆口 1 镜像到 千兆口 8,因为我的 Mac 连接到了 千兆口 8 上,所以我可以用 WireShark 软件进行抓包分析。
设置交换机的端口镜像在按照上述思路将设备连接好以后,机顶盒先不要开机。
进入到交换机管理控制台,我手里这款交换机的 IP 是的 10.18.18.251,先将我的 Mac 改为同一网段下的任意 IP,比如 10.18.18.252。
在交换机后里的进入到 监控 -> 端口监控 页面 ...
CentOS 7.9 安装网卡驱动
由于公司没有分配本地开发服务器,我用了我自己的主机,然后打算把公司分配给我的台式主机刷成服务器以方便团队开发。
在安装了 CentOS 7.9 以后,发现无法上网,执行 ip addr 命令看查,发网没有网卡,只有一个本地 Lo 网络配置,猜测应该是网卡没有驱动导致的。
下载驱动于查了主板自带的集成网卡的型号是 RTL8125 2.5GbE,在网上搜索到一个网站可以下载到网卡型号的驱动(https://mirror.rc.usf.edu/elrepo/elrepo/el7/x86_64/RPMS/ ),进到这个网址以后直接搜索 8125 关键词找到几个驱动,我下载了最新的这个:
安装驱动将上面下载好的网卡驱动放到优盘里一份,并在主机上挂载优盘。
插上优盘以后,执行 fdisk -l 命令查看信息,找到优盘的物理路径比如 /dev/sda1 之类的,创建 /mnt/usb 文件夹,名称可以随意,执行 mount /dev/sda1 /mnt/usb 挂载优盘。
挂载成功后,我把这个网卡驱动复制出来了一份放在了 /root 目录下,然后执行 yum install k ...
ThinkPad E431 刷成 CentOS 7.9 个人家用服务器
最近闲来无事,把我上大学时买的人生第一台笔记本电脑 ThinkPad E431 给刷成 Linux 当作家用服务器,来水一下。
安装操作系统这个没什么好说的,基本思路就是从腾讯、阿里或者官网等地方下载 IOS 系统镜像,然后找个优盘和写盘工具搞就行了。
修改主机名称为了提高辨识度,先给主机改个名,命令为:hostnamectl set-hostname 主机名,主机名 随便写,比如我这个机器直接就是:hostnamectl set-hostname thinkpad。
开启远程 Root 账号登录12345# 修改配置sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config# 重启服务systemctl restart sshd
实际上就是修改 /etc/ssh/sshd_config 这个配置文件,将 #PermitRootLogin yes 前面的 # 去掉。
至此,就可以在别的机器上使用舒服的软件来远程 SSH 到 CentOS 上操作了,复制、粘贴更方便。
关闭笔记本 ...
Mac 上使用脚本自动检测 DNS 速度
最近想要找一个能够自动测试 DNS 速度的工具,最好还能自动找出速度最快的 DNS 的工具,最终结果是没找到特别满意的,但是在 Github 上有一个项目,算是基本能够满足需求。
工具的名字是:dnsperftest ,Mac 上使用起来也比较简单。
安装依赖1brew install bc bind
下载项目1git clone --depth=1 https://github.com/cleanbrowsing/dnsperftest/
修改 DNS 名单脚本里默认带的 DNS 都是国外的,我在中国大陆不需要,先进去把 DNS 改成常用的几个,比如:
阿里: 223.5.5.5、223.6.6.6
114:114.114.114.114
腾讯:119.29.29.29
百度: 180.76.76.76
执行 cd dnsperftest 进入到项目录中,vim dnstest.sh 进行修改,将原来的:
123456789101112131415PROVIDERSV4="1.1.1.1#cloudflare 4.2.2.1#level3 8.8.8.8#google ...
解决 Nginx Proxy Manager 在更新 SSL 证书时报错 Internal Error 的问题
发现问题今天突然发现,之前用 Nginx Proxy Manager 申请的 Let’s Encrypt SSL 证书过期了,就上去更新一下,结果发现报错了,在点击更新证书按钮的时候,直接弹窗报错说是:Internal Error。
更新镜像当时想着,也挺长时间没有更新 NPM 的镜像了,就打算直接去更新一波镜像看看能不能顺路解决这个问题,结果更新到了 2.10.1 以后,发现容器起不来了。进入到容器里看日志说是 80 端口被占用,但我在宿主机上查了一下,没有进程会占用 80 端口。
降级Google 了一下,在 Github Issue 里看到很多人都和我一样,也顺便找到了解决方法:降级。
在我降级到了 2.9.22 版本以后,容器还是起不来,再查看日志,报错的原因已经不是端口被占用了,说明第一个问题已经解决。
解决 DNSPod 独家问题接下来就是小众问题了,由于我用的是 DNSPod 的 DNS 做的泛域名 SSL,在用 DNSPod 的时候,会有一个问题:缺少 zope 这个组件,于是进入到容器里安装一下相关缺少的组件,回到浏览器里刷新页面以后,再次点击 更新证书 按钮以后就成 ...
解决 Github 报错: kex_exchange_identification: Connection closed by remote host
123456kex_exchange_identification: Connection closed by remote hostConnection closed by 20.205.243.166 port 22fatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.
生成:ssh-keygen -t ed25519 -C "备注tliy"
在 ~/.ssh/config 里新增:
1234Host github.com HostName ssh.github.com User git Port 443
验证:ssh -T git@github.com
1234567ssh -T git@github.comThe authenticity of host '[ssh.github.com]:443 ([20.205.243.160]:443 ...
Gogs 部署 Webhook
Gogs 同时支持 Git 和 Web 方式的钩子,Git 方式比较适合 Gogs 代码仓库和项目部署在同一台服务器上的情况,Web 钩子适合代码仓库和项目部署在不同服务器上的情况。无论是哪种情况,Web 钩子都可以做到,相比于 Git 钩子,Web 钩子要稍微麻烦一点,因为是跨服务器的,需要写脚本,调用接口。
假设我的 Gogs 服务器部署在 A 服务器上,然后项目部署在 B 服务器上,那么配置好 Gogs 的 Web 钩子以后,仓库在收到了你订阅的操作以后,会调用你配置的接口地址(这个接口应该是 B 服务器提供),把相关信息以 API 的方式推送给 B,然后 B 服务器在收到 API 推送请求以后,应该根据情况,如仓库、分支、事件等进行相关逻辑操作。
Gogs 的 Web 钩子配置的地方在 仓库设置 -> 管理 Web 钩子,在添加新的 Web 钩子处选择 Gogs:
在之后跳出来的页面里配置上推送地址、和 密钥文本 后点击 添加 Web 钩子,会提示添加钩子成功,再次点击钩子名称可以编辑钩子。
在编辑钩子的页面的底部,可以查看到推送记录和进行测试推送。
这里我以本机为例, ...