使用Caddy和docker部署hexo博客
前言
以前这个博客是部署在阿里云的一台服务器上的,域名是 shirofune.cn
后来这台云服务器被我拿去直播服务器了
现在想把域名换成 homu.space ,同时换一台服务器,所以就重新部署一下
借着这个动机,顺便维护一下博客年久失修的依赖
新服务器的准备
添加虚拟内存
买了 99r 一年的服务器之后先 swap 一些虚拟内存
我用的是一个开箱即用的工具脚本
关于 swap 的一些介绍,还有具体的命令行操作可以看这个视频
更新 package
1 | sudo -i |
安装 docker
caddy 是一个 nginx 的替代
我希望通过 docker 来运行 caddy
官方提供了一个一键安装的脚本,脚本包含了 docker-compose
但是需要注意的是,要加上 --mirror
参数,指定国内镜像
1 | curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun |
命令解释
来自 chatgpt 的命令详解
curl: 这是一个命令行工具,用于从或向服务器传输数据。它支持许多协议,包括 HTTP、HTTPS、FTP 等。
-f: 如果请求失败,curl 会输出错误并退出,而不是返回页面内容。
-s: 使 curl 静默模式,不显示进度条或错误信息。
-S: 显示错误信息(通常与 -s 一起使用,以确保如果发生错误时仍能看到错误信息)。
-L: 如果请求的 URL 被重定向,curl 将自动跟随重定向。
https://get.docker.com: 这是 Docker 官方提供的一个脚本,用于简化 Docker 的安装过程。
|: 管道符,用于将前一个命令的输出作为后一个命令的输入。
bash: 这是一个命令行解释器,它将执行通过管道传递过来的脚本。
-s docker –mirror Aliyun: 这些是传递给脚本的参数:
-s docker: 指定要安装 Docker。
–mirror Aliyun: 指定使用阿里云的镜像源进行安装,通常在中国境内使用以提高下载速度和成功率。
设置一下 docker 镜像源,因为官方的 dockerhub 被墙了
1 | vim /etc/docker/daemon.json |
博客存放路径和 git 空仓库
1 | mkdir -p ~/site/hexo |
编辑 git 钩子
1 | vim ~/repo/hexo-blog.git/hooks/post-receive |
运行 caddy
我使用了 docker-compose 来编排 caddy 的运行参数
1 | version: "3" |
Caddyfile 是 caddy 的特殊配置文件,写法很简洁
Caddyfile:
1 | blog.homu.space { |
启动 caddy 镜像
1 | docker volume create caddy_data |
免密推送
1 | ssh-keygen -t rsa |
1 | hexo d |
域名备案
前面说是想换域名到新的服务器
域名在阿里云买的,服务器在腾讯云…
在腾讯云选择备案服务。填写一堆表单之后提交就好了
备案周期很长,还会被驳回。建议拿到域名之后就备案
备案遇到的各种问题
由于先前我已经备案过一次了,shirofune.cn 这个域名。
所以工信部那边有我的备案主体和备案网站。
我再次进行个人备案,备案新的网站的时候,接到了云服务商的电话,说我上一个网站由于已经关停,变成了空壳网站,我也就变成了空壳主体,需要先注销掉空壳主体后执行初次备案。或者重新把之前的网站开起来
重新开起来网站这个好麻烦,备案的那个服务器已经被上一家云服务商回收了。所以只能注销
好在阿里云可以在控制台中注销备案
坏在我把网站注销备案之后,并没有注销掉主体(这个时候我才知道,不论是个人还是企业,主体和网站是两个东西)
注销主体就无敌麻烦了!注销主体需要提供纸质材料邮寄到线下,或者去线下办理。
众所周知工信部办事效率很低… 且不说邮寄东西花的时间,动不动就是 20 天,40 天的办事周期(真是可悲)
再稍微等等,如果重新备案这条路太难走的话,还是考虑选择香港的服务器,买一台香港的 VPS 去部署服务(一年会贵几百块钱)
整理博客
因为博客本身很长时间没有维护,所以花时间整理了一下相关代码
解决一些命令行报错
删除了一些用不到的依赖(package.json)
使用 pnpm
放弃全局 hexo-cli,使用项目内的命令来操作 hexo
更新 hexo 依赖版本,更新 butterfly 主题版本
删除(或隐藏)了一些文章