本文最后更新于 330 天前,如有失效请评论区留言。
申请SSL证书时出现的错误
Error: Command failed: certbot certonly --config "/etc/letsencrypt.ini" --cert-name "npm-11" --agree-tos --email "[email protected]" --domains "*.bimiracle.top,bimiracle.top" --authenticator dns-dnspod --dns-dnspod-credentials "/etc/letsencrypt/credentials/credentials-11"
An unexpected error occurred:
ModuleNotFoundError: No module named 'zope'
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /tmp/certbot-log-_v8s5qvp/log or re-run Certbot with -v for more details.
at ChildProcess.exithandler (node:child_process:402:12)
at ChildProcess.emit (node:events:513:28)
at maybeClose (node:internal/child_process:1100:16)
at Process.ChildProcess._handle.onexit (node:internal/child_process:304:5)
这里分为国内服务器和国外服务器(主要是网络差别导致的国内需要更改源)
国外服务器解决办法
首先
docker ps
复制CONTAINER ID 执行下面代码
docker exec d47c24a2bef0 pip install zope
安装完成就可以返回保存SSL即可成功
国内服务器解决办法
进入docker容器内
docker exec -it xxx bash
先更改Debian系统的软件源,参考:(https://mirrors.ustc.edu.cn/help/debian.html)
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
然后更新
apt update && apt dist-upgrade
使用腾讯源安装缺少的zope包,你也可以换成其他源
pip install -i https://mirrors.cloud.tencent.com/pypi/simple zope
pip install -i https://mirrors.cloud.tencent.com/pypi/simple certbot-dns-dnspod
然后再添加SSL就成功了
使用Dockerfile
解决上面的问题后你还会发现问题只是临时解决了,你使用
docker compose down
docker compose up -d
重启后会发现错误依然存在
为了避免每次都进行重复的安装,可以使用Dockerfile在原镜像基础上添加一个安装zope包命令
先在 compose.yml
文件所在目录创建一个名为 Dockerfile
的文件注意没有后缀,然后粘贴下面代码
FROM jc21/nginx-proxy-manager:latest
# Install zope
RUN pip install zope
保存后在 compose.yml
中添加
build:
context: .
dockerfile: Dockerfile
然后执行
docker compose up -d --build && docker compose logs -f
启动服务,并在启动之前构建镜像,并实时输出日志你就会看见正在安装zope
成功执行后也不会有任何报错了