unRAID-Docker ·

UNRAID下使用脚本自动更新NginxProxyManager中的证书

写在最前面:本文大量参考https://post.smzdm.com/p/a6lron8z/,感谢原作者(虽然他细节处很多错漏)。

关于NginxProxyManager的介绍和使用可以查看我的这篇文章:unraid应用介绍:NginxProxyManager-------一个非常优秀的免费反向代理服务器;

提前需要准备的东西:unraid中app商店的插件:CA User Scripts和你的阿里云的Access Key IDAccess Key Secret(其他域名提供商的请自行寻找对应方法)

UNRAID下使用脚本自动更新NginxProxyManager中的证书 unRAID-Docker 第1张废话不多说,我们在unraid界面找到setting中User Utilities标签下的User Scripts,UNRAID下使用脚本自动更新NginxProxyManager中的证书 unRAID-Docker 第2张,点击进入界面(这是一个运行自定义脚本的插件)。UNRAID下使用脚本自动更新NginxProxyManager中的证书 unRAID-Docker 第3张

点击 add new script 按钮添加一个新的自定义脚本,然后随便取个名字:例如acme。

随后界面刷新,出现你新添加的脚本,点击名字出现弹窗界面,点击edit script对脚本进行编辑;UNRAID下使用脚本自动更新NginxProxyManager中的证书 unRAID-Docker 第4张

进入后界面如图:UNRAID下使用脚本自动更新NginxProxyManager中的证书 unRAID-Docker 第5张

现在开始(脚本中默认的开头的#!/bin/bash请勿删除或者修改)

第一步,创建申请证书的容器:

docker run --rm -itd -v /你需要保存证书文件的路径:/acme.sh -e Ali_Key="********" -e Ali_Secret="*********" --net=host --entrypoint /bin/sh --name=acme.sh neilpang/acme.sh;

解释:这段代码唯二需要自定义填写的就是你准备存放文件的路径和你阿里云的api代码;

第二步:申请证书:

docker exec acme.sh --issue -d abc.com -d *.abc.com --dns dns_ali --force;

解释:代码中的abc.com请填入你自己的域名(不带子域名前缀),*.abc.com请填写为你要申请的子域名证书(*是泛域名)

第三步,生成NginxProxyManager需要的证书形式:

docker exec acme.sh --install-cert -d abc.com --key-file /acme.sh/privkey.pem --fullchain-file /acme.sh/fullchain.pem;

解释:这里唯一需要修改的就是把abc.com改为你的域名(不带子域名)

第四步:复制证书到NginxProxyManager配置文件中

cp -rf /你需要保存证书文件的路径*.pem   /你的NginxProxyManager配置文件路径/custom_ssl/npm-8/

解释:复制你申请下来的证书并替换到你的NginxProxyManager配置文件中,请自行找到你的NginxProxyManager中custom_ssl下npm-*路径(custom_ssl下存在多个npm目录,请填入数值最大的那个)

第五步:重启容器,使证书文件生效。

docker exec NginxProxyManager reboot

最后整个脚本文件是这样的:

#!/bin/bash
docker run --rm -itd -v /你需要保存证书文件的路径:/acme.sh -e Ali_Key="********" -e Ali_Secret="*********" --net=host --entrypoint /bin/sh --name=acme.sh neilpang/acme.sh;
docker exec acme.sh --issue -d abc.com -d *.abc.com --dns dns_ali --force;
docker exec acme.sh --install-cert -d abc.com --key-file /acme.sh/privkey.pem --fullchain-file /acme.sh/fullchain.pem;
cp -rf /你需要保存证书文件的路径*.pem   /你的NginxProxyManager配置文件路径/custom_ssl/npm-*/;
docker exec NginxProxyManager reboot

如图:UNRAID下使用脚本自动更新NginxProxyManager中的证书 unRAID-Docker 第6张

最后,点击save changes保存脚本。

设置定时执行:在脚本右边的下拉框里面选择custom,并且填入* * * */2 *,然后点击下面的apply保存即可

参与评论

  • moongu用户
    定时脚本是不是有问题Every minute on every day of every 2 months
    3月前 (06-24)
    1楼
    回复