1Panel 踩坑记录

vicat
vicat
发布于 2024-04-26 / 727 阅读
1
1

1Panel 踩坑记录

今天购买了 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 被占了。我懵逼了,就寻思主域名难道是被代理服务的地址?那这里写了 44380 怎么办,我之前的配置文件里面有一大堆的重定向。。。

总之一通瞎填加搜索以后才知道,这个主域名就是 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 配置即可大功告成。


评论