{"id":26825,"library":"certbot-dns-duckdns","title":"certbot-dns-duckdns","description":"A Certbot plugin that automates DNS-01 ACME challenge validation for DuckDNS domains via a TXT record. Version 1.8.0 requires Python >=3.10 and supports certbot 5+. Released sporadically, with maintenance updates and dependency bumps.","status":"active","version":"1.8.0","language":"python","source_language":"en","source_url":"https://github.com/infinityofspace/certbot_dns_duckdns","tags":["certbot","dns-01","duckdns","acme","ssl","tls"],"install":[{"cmd":"pip install certbot-dns-duckdns","lang":"bash","label":"PyPI install"}],"dependencies":[],"imports":[{"note":"The public import path changed in v1.8.0? Actually the internal underscore package is used; direct import may fail.","wrong":"from certbot_dns_duckdns import DuckDNSAuthenticator","symbol":"Authenticator","correct":"from certbot_dns_duckdns._internal.dns_duckdns import DuckDNSAuthenticator"}],"quickstart":{"code":"import os\nfrom certbot_dns_duckdns._internal.dns_duckdns import DuckDNSAuthenticator\n\ntoken = os.environ.get('DUCKDNS_TOKEN', '')\nauth = DuckDNSAuthenticator(token)\n# Use with certbot: certbot certonly --authenticator certbot-dns-duckdns:duckdns --certbot-dns-duckdns:duckdns-credentials /path/to/credentials.ini","lang":"python","description":"Initialize the authenticator with a DuckDNS token. Credentials file format: dns_duckdns_token = <your-token>"},"warnings":[{"fix":"Upgrade to latest certbot-dns-duckdns and ensure Python >=3.10.","message":"certbot-dns-duckdns v1.7.0 dropped support for Python 3.9 and switched from python-certbot to the internal certbot API. Older versions (<=1.6) are incompatible with certbot 5+.","severity":"breaking","affected_versions":">=1.7.0"},{"fix":"Refer to the CLI as certbot-dns-duckdns:duckdns.","message":"The plugin's entry point name is 'duckdns', not 'certbot-dns-duckdns'. Use --authenticator certbot-dns-duckdns:duckdns.","severity":"gotcha","affected_versions":"all"},{"fix":"Use --certbot-dns-duckdns:duckdns-credentials /path/to/credentials with line 'dns_duckdns_token = YOUR_TOKEN'.","message":"DuckDNS token must be set in the credentials file or as environment variable DUCKDNS_TOKEN. If using the file, ensure permissions are strict (600).","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use: from certbot_dns_duckdns._internal.dns_duckdns import DuckDNSAuthenticator","cause":"The public API is not exposed at the top level; it's in the _internal subpackage.","error":"ImportError: cannot import name 'DuckDNSAuthenticator' from 'certbot_dns_duckdns'"},{"fix":"Ensure plugin is installed and use: --authenticator certbot-dns-duckdns:duckdns --certbot-dns-duckdns:duckdns-credentials /path/to/credentials.ini","cause":"Missing the colon between plugin name and argument; or plugin not installed correctly.","error":"certbot: error: unrecognized arguments: --certbot-dns-duckdns:duckdns-credentials"},{"fix":"Verify token and domain at https://duckdns.org. The token must have permission to update TXT records for your domain.","cause":"Invalid DuckDNS token or domain not configured for DuckDNS.","error":"PluginError: An error occurred (NotAuthorized) when calling the UpdateTxtRecord operation"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}