今天购买了 1Panel 的专业版,遂准备将旧服务迁移到 1Panel 管理下。其实 1Panel 有好有坏,好处自不必多说,坏处就是完完全全捆绑到它的生态上,有迁移成本。
原有服务
在服务器上之前部署了如下服务
nginx:hosted(用作入口)
halo2:docker compose
postgresql:docker compose
rsshub:docker compose
watchtower:compose(用来更新 rsshub)
clash-premium:compose(科学)
frps:compose
qiandao:compose
chatgpt_proxy:compose(自己写的一个 rust 的用于连接 gpt 的项目)
并且有如下 nginx
配置:
frp_proxy.conf
rsshub_proxy.conf
chatgpt_proxy.conf
blog_proxy.conf
可以看出来我这里基本没有静态网站,就算有也会被封在容器里面用单独的 nginx
来代理。
部署流程
0. 安装 OpenResty
1Panel 重度依赖 OpenResty
,要创建网站就需要安装 OpenResty
。点击应用商店安装后,显示安装成功了,也显示不能重复安装,但是就是启动不了。说找不到可以启动的 OpenResty
容器。后来我去查看了服务器上的镜像,发现镜像压根没拉下来。好家伙那你好意思说已经安装成功了。
尝试手动拉取,报错说 archive/tar: invalid tar header
。然后论坛说因为 docker
版本太老了。还得升级 docker
。我的 docker
版本是 20.10
,要我升级。
升。解决。
那我建议,安装 1Panel
的时候对 docker
版本进行检测,提示用户不建议使用老版本。
1. 添加网站
1panel 对于干干净净的服务器十分友好,对于我这种先前有服务在用的,某些配置有理解成本。这里就要提到我踩的第一个坑了
创建反向代理网站时有些内容不理解
在他的用户界面内,有个关于主域名的概念,输入框里面的提示是 支持域名:端口
这个我是真没看懂啊。主域名到底是啥?官方文档也说的模棱两可的。
填写需要绑定的主要域名以及端口
因为我这里想的还是 nginx
那一套,listen 443 ssl
+ server_name
的节奏,我就填上了 blog.vicat.top:443
。然后出问题了,说 443
被占了。我懵逼了,就寻思主域名难道是被代理服务的地址?那这里写了 443
那 80
怎么办,我之前的配置文件里面有一大堆的重定向。。。
总之一通瞎填加搜索以后才知道,这个主域名就是 server_name
,在我这里就是 blog.vicat.top
。这个东西坑了我一个小时,一个巨大无比的坎。在填好以后创建网站之后,一切就顺理成章起来了。
然后就是顺水推舟的创建 acme
,创建 dns
,绑定证书,配置重定向,一套小连招。
好了,这里坑又来了
在创建完一个站点以后,我直接去尝试创建第二个站点,配置了一半以后点击了取消,再去操作其它站点的时候,OpenResty
直接炸裂。因为找不到新建站点的目录。那可不很正常,我就是没有新建,我点取消了啊。结果直接容器崩掉,我去手动删除配置文件后才恢复正常。
2. 工具箱--Fail2ban
按照官方文档来,使用的很方便
3. 主机--终端
这里因为我之前为 ssh
配置了 google-totp
的两步认证,所以无法直接自动登录。点进来我寻思通过私钥认证。
这里我又懵逼了。这私钥是。。?本机私钥?我试图粘贴进去,好家伙,没用。想了想逻辑不会是需要将容器内的公钥添加到 authorized_keys
里面吧?结果发现 1Panel
也妹容器啊。后来开始粘各路公钥,不好使。
之后才发现,这里的私钥要自己生成/用之前已经在 authorized_keys
里面配过公钥的私钥。不过这个操作倒是挺常见的,很多应用都是这么干的。但是这里确实没有第一时间想到。
4. waf
挺好的,还有请求的审计,但是之后会被它坑到。。
5. 准备迁移 Halo
在 1Panel
应用商店中设计的应用都是通过独立容器部署的,所以需要安装 PostgreSQL
到一个单独的容器。然后点击安装后报错了,说:当前用户无权限。
之后才知道原来我自己的请求被 WAF
拦截掉了。。。我也不知道我被拦截了,只能是重复:登录 -> 安装 -> 填配置 -> 无权限 -> 被踢掉 -> 登录。
只能先暂时关闭这个功能了。
6. PostgreSQL 数据迁移
用 Navicat
旧版本的有福了,如果安装的是最新版的 PostgreSQL
的话,Navicat
旧版本(<=16.2)是连不上滴。只能升版呢~
升级以后发现只有一张表,迁移过去完事
7. 迁移 Halo
把原来的数据文件拷贝到 /opt/1panel/apps/halo/halo/data
下启动即可
之后再对网站进行重新配置以及 ssl
配置即可大功告成。