NginxProxyManager / nginx-proxy-manager

Docker container for managing Nginx proxy hosts with a simple, powerful interface
https://nginxproxymanager.com
MIT License
22.99k stars 2.66k forks source link

AttributeError: module 'certbot.interfaces' has no attribute 'IAuthenticator' #2430

Open naoki66 opened 1 year ago

naoki66 commented 1 year ago

Checklist

Describe the bug

Error: Command failed: certbot certonly --config "/etc/letsencrypt.ini" --cert-name "npm-13" --agree-tos --email "AAAA@AAAA.com" --domains "*.AAA.com" --authenticator dns-aliyun --dns-aliyun-credentials "/etc/letsencrypt/credentials/credentials-13" An unexpected error occurred: AttributeError: module 'certbot.interfaces' has no attribute 'IAuthenticator' Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /tmp/certbot-log-i3b4nos8/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)

Nginx Proxy Manager Version

v2.9.19

To Reproduce Steps to reproduce the behavior:

  1. Go to 'SSL Certificates. Add Let's Encrypt Certificate.Domain Names : *.AAA.COM.
  2. ADD Email Address for Let's Encrypt .
  3. OPEN USER A DNS CHALLENGE。
  4. change DNS Provider is Aliyun,

dns_aliyun_access_key = KKKKEEEYYY dns_aliyun_access_key_secret = secretsecretsecretsecret

  1. Click on save
  2. Scroll down to '....'
  3. See error

Expected behavior

Screenshots

Operating System

Additional context

Rynal commented 1 year ago

This Works as Temporary Workaround for me.

Open the Container Shell docker exec -it nginxproxymanager_app_1 /bin/bash

apt update apt dist-upgrade apt install python3 python3-venv libaugeas0 python3 -m venv /opt/certbot/ /opt/certbot/bin/pip install --upgrade pip /opt/certbot/bin/pip install certbot==1.32.0 certbot-apache==1.32.0 acme==1.32.0

naoki66 commented 1 year ago

Error: Command failed: certbot certonly --config "/etc/letsencrypt.ini" --cert-name "npm-15" --agree-tos --email "MAIL" --domains "*.AAA.com" --authenticator dns-aliyun --dns-aliyun-credentials "/etc/letsencrypt/credentials/credentials-15" An unexpected error occurred: AttributeError: module 'certbot.interfaces' has no attribute 'IAuthenticator' Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /tmp/certbot-log-7ncs4i4z/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 Socket. (node:internal/child_process:458:11)
at Socket.emit (node:events:513:28)
at Pipe. (node:net:301:12)

[root@docker-nginx-proxy-manager:/app]# cat /tmp/certbot-log-7ncs4i4z/log
2022-11-26 10:32:24,165:DEBUG:certbot._internal.log:Exiting abnormally:
Traceback (most recent call last):
File "/usr/local/bin/certbot", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.7/dist-packages/certbot/main.py", line 19, in main
return internal_main.main(cli_args)
File "/usr/local/lib/python3.7/dist-packages/certbot/_internal/main.py", line 1707, in main
plugins = plugins_disco.PluginsRegistry.find_all()
File "/usr/local/lib/python3.7/dist-packages/certbot/_internal/plugins/disco.py", line 208, in find_all
cls._load_entry_point(entry_point, plugins)
File "/usr/local/lib/python3.7/dist-packages/certbot/_internal/plugins/disco.py", line 215, in _load_entry_p
oint
plugin_ep = PluginEntryPoint(entry_point)
File "/usr/local/lib/python3.7/dist-packages/certbot/_internal/plugins/disco.py", line 56, in init
self.plugin_cls: Type[interfaces.Plugin] = entry_point.load()
File "/usr/local/lib/python3.7/dist-packages/pkg_resources/init.py", line 2450, in load
return self.resolve()
File "/usr/local/lib/python3.7/dist-packages/pkg_resources/init.py", line 2456, in resolve
module = import(self.module_name, fromlist=['name'], level=0)
File "/usr/local/lib/python3.7/dist-packages/certbot_dns_aliyun/dns_aliyun.py", line 20, in
@zope.interface.implementer(interfaces.IAuthenticator)
AttributeError: module 'certbot.interfaces' has no attribute 'IAuthenticator'
2022-11-26 10:32:24,165:ERROR:certbot._internal.log:An unexpected error occurred:
2022-11-26 10:32:24,165:ERROR:certbot._internal.log:AttributeError: module 'certbot.interfaces' has no attribu
te 'IAuthenticator'

Jonohas commented 1 year ago

Having the same issue

Cheety commented 1 year ago

Me too

spoit commented 1 year ago

Possibly related to https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2420 and/or https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2427 ?

fiepfiep commented 1 year ago

same issue. would reverting to a previous image help?

LTAdmin87 commented 1 year ago

This Works as Temporary Workaround for me.

Open the Container Shell docker exec -it nginxproxymanager_app_1 /bin/bash

apt update apt dist-upgrade apt install python3 python3-venv libaugeas0 python3 -m venv /opt/certbot/ /opt/certbot/bin/pip install --upgrade pip /opt/certbot/bin/pip install certbot==1.32.0 certbot-apache==1.32.0 acme==1.32.0

This worked for me, but had to use command "pip3" instead of "/opt/certbot/bin/pip"

saffronjam commented 1 year ago

Same issue, with PowerDNS

fiepfiep commented 1 year ago

it seems updating the pip packages solves the issue. time for the devs to create a new image.

skye-z commented 1 year ago

This problem is caused by the wrong version of certbot, please go inside the docker container and execute the following command 👇

apt update
apt dist-upgrade
apt install python3 python3-venv libaugeas0
python3 -m venv /opt/certbot/
pip3 install --upgrade pip
pip3 install certbot==1.32.0 certbot-apache==1.32.0 acme==1.32.0

Please take care to backup your data

spoit commented 1 year ago

Can confirm that https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2430#issuecomment-1329981484 fixed it for me as well

edit: typo

bkakilli commented 1 year ago

I can confirm that https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2430#issuecomment-1329981484 fixed it. But certain lines are not needed and can be confusing for others, so the updated one:

apt update; apt upgrade -y
apt install -y libaugeas0
pip3 install --upgrade pip
pip3 install certbot==1.32.0 certbot-apache==1.32.0 acme==1.32.0

# Clean up cache [optional]
apt clean
pip3 cache purge

Note: I had to request the certifate twice from LetsEncrypt. My first trial gave an error (a different one), so you might need to try a few times until you get it.

Thanks @Rynal @skay-zhang

Misterbabou commented 1 year ago

Same issue for me. I had to go back to previous version (2.9.18)

boertianxia commented 1 year ago

For me, https://github.com/NginxProxyManager/nginx-proxy-manager/issues/2430#issuecomment-1329981484 works. But note, for example, I select Dynu DDNS on the web page, if no version is specified, it will automatically use certbot-dns-dynu==0.0.4 and update certbot==2.0.0, even if certbot==1.32.0 was set before, This is why some people still have no effect even after executing the above script So you need to manually install the previous version:

pip3 install certbot-dns-dynu==0.0.3 (it depends on certbot>=1.32.0)

The same for other plugins(cerbot-dns-xxx), you can go to pypi to check the historical version of certbot-dns-xxx, use "pip3 freeze" to view the current local certbot and plugin versions .

The script below works for me(docker image: jc21/nginx-proxy-manager:2.9.19)

apt update
apt upgrade -y
apt install -y libaugeas0
pip3 install --upgrade pip
pip3 install certbot==1.32.0 certbot-apache==1.32.0 acme==1.32.0
pip3 install certbot-dns-dynu==0.0.3
axza commented 1 year ago

came here because of:

✖  error     Error: Command failed: certbot renew --non-interactive --quiet --config "/etc/letsencrypt.ini" --preferred-challenges "dns,http" --disable-hook-validation
An unexpected error occurred:
ModuleNotFoundError: No module named 'zope'

    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)

Temporary fix with previous versions would be

pip3 install certbot==1.32.0 certbot-apache==1.32.0 acme==1.32.0 certbot-dns-ionos==2022.5.15
lucidnx commented 1 year ago

This Works as Temporary Workaround for me.

Open the Container Shell docker exec -it nginxproxymanager_app_1 /bin/bash

apt update apt dist-upgrade apt install python3 python3-venv libaugeas0 python3 -m venv /opt/certbot/ /opt/certbot/bin/pip install --upgrade pip /opt/certbot/bin/pip install certbot==1.32.0 certbot-apache==1.32.0 acme==1.32.0

Thanks for temp fix :)

LanceMcCarthy commented 1 year ago

Thank you! This also seems to fix the issue with "test server reachability" feature on the SSL page, too.

a3gill commented 1 year ago

This is it. It's what finally worked for me. DNS provider for GoDaddy was leading to the failure, but only because it bumped the version of certbot above 2.

I mixed a few approaches from above, but the key for me was pinning all the important certbot packages down to 1.32 while installing the DNS provider package with the following:

apt update && apt upgrade -y && apt install -y libaugeas0
pip3 install --upgrade pip
pip3 install certbot==1.32.0 certbot-nginx==1.32.0 acme==1.32.0 certbot-dns-godaddy
github-actions[bot] commented 6 months ago

Issue is now considered stale. If you want to keep it open, please comment :+1: