Docker下搭建AdguardHome时的SSL路径问题

使用EasyPanel后,一堆东西都变成了容器化的搭建,包括AdguardHome。虽然一键生成很好很舒服,但SSL证书的路径找起来就麻烦了很多。本文将记录在用EasyPanel搭建完AdguardHome后,如何解决SSL路径问题,让SSL证书即便更新,也不用手动输入。


现状

搭建好AdguardHome后,SSL证书文件的路径并不在容器的,可以直接输入的地方。不得不自己手动粘贴证书的内容。

这样的坏处显而易见,letsencrypt的证书3个月更新一次,我得每3个月就手动贴一次,麻烦得很。

Docker下,证书路径无法设置

证书在哪里?

经过寻找,我发现EasyPanel的每个证书都在下述路径(非该面板用户请自行寻找)

/etc/easypanel/traefik/dump/<YOUR DOMAIN>

这个路径并不能直接输入到上述的地址里,所以我需要定时设置,把证书复制到一个在容器内也能看到并引用的文件夹里。

证书应该复制到哪里去?

再次经过寻找,我发现上述的这个路径

/opt/adguardhome/work/

对应的就是服务器文件系统的这个文件夹(非该面板用户请自行寻找)

/etc/easypanel/projects/<YOUR PROJECT NAME>/adguardhome/volumes/work

所以,我在work文件夹下创建文件夹,这里假设名字叫<SSLCERT>,用以保存证书。


使用Crontab命令定期复制文件

最后就简单了,使用下面的命令进行定时操作的设定

#以root权限进行设定
sudo -i

#进入crontab
crontab -e

#把certificate.crt和privatekey.key分别复制,因为测试的关系,我设置了每5分钟一次
#分别把<YOUR DOMAIN><YOUR PROJECT NAME>以及<SSLCERT>根据自己的路径替换成正确的名字
*/5  * * * * cp /etc/easypanel/traefik/dump/<YOUR DOMAIN>/privatekey.key /etc/easypanel/projects/<YOUR PROJECT NAME>/adguardhome/volumes/work/<SSLCERT>
*/5  * * * * cp /etc/easypanel/traefik/dump/<YOUR DOMAIN>/certificate.crt /etc/easypanel/projects/<YOUR PROJECT NAME>/adguardhome/volumes/work/<SSLCERT>

代码到这里结束,完成并正常推出后应该会看到这样一行字。

等待一会后用Winscp之类的看看文件有没有成功复制即可。


达成的效果

每N分钟复制一次证书到容器内指定的文件夹以供AdguardHome引用。

这样证书出现更新之类的,都不用再手动复制了。


实现环境

  • 甲骨文云arm主机
  • Ubuntu22.04
  • EasyPanel 2.11.1

AdguardHome
AdguardHome

(完)