{"id":4905,"library":"certbot-dns-multi","title":"Certbot DNS Multi-provider Plugin","description":"Certbot DNS plugin supporting multiple DNS providers by integrating with the `go-acme/lego` ACME client, which currently supports over 117 different DNS providers. It simplifies obtaining wildcard certificates and automating DNS-01 challenges for Certbot users. The current version is 4.33.0, and it appears to be actively maintained with regular updates.","status":"active","version":"4.33.0","language":"en","source_language":"en","source_url":"https://github.com/alexzorin/certbot-dns-multi","tags":["certbot","dns","acme","letsencrypt","wildcard","security","automation"],"install":[{"cmd":"pip install certbot-dns-multi","lang":"bash","label":"Standard pip installation"},{"cmd":"sudo /opt/certbot/bin/pip install certbot-dns-multi","lang":"bash","label":"For Certbot installed via official pip instructions"},{"cmd":"sudo snap install certbot-dns-multi\nsudo snap set certbot trust-plugin-with-root=ok\nsudo snap connect certbot:plugin certbot-dns-multi","lang":"bash","label":"For Certbot installed via Snap"}],"dependencies":[{"reason":"This is a Certbot plugin and requires Certbot itself. Requires Certbot 1.12.0 or newer for certain installation methods.","package":"certbot","optional":false}],"imports":[],"quickstart":{"code":"# Create a credentials file (e.g., /etc/letsencrypt/dns-multi.ini)\n# Replace 'cloudflare' with your DNS provider, and add required API tokens/keys.\n# Consult https://go-acme.github.io/lego/dns/ for provider-specific environment variables.\n# Example for Cloudflare:\n# dns_multi_provider = cloudflare\n# CLOUDFLARE_API_TOKEN=\"${CLOUDFLARE_API_TOKEN}\"\n\n# Secure the credentials file\nsudo chmod 0600 /etc/letsencrypt/dns-multi.ini\n\n# Issue a wildcard certificate using dns-multi plugin (example with Cloudflare)\n# Replace 'example.com' with your domain and ensure CLOUDFLARE_API_TOKEN is set as an environment variable or hardcoded in the ini for testing.\ncertbot certonly \\\n  -a dns-multi \\\n  --dns-multi-credentials /etc/letsencrypt/dns-multi.ini \\\n  -d \"*.example.com\" \\\n  --dry-run","lang":"bash","description":"To use `certbot-dns-multi`, create a credentials file specifying your DNS provider and API credentials. Secure this file, then invoke Certbot with the `dns-multi` authenticator and point to your credentials file. This example uses Cloudflare, but you must refer to the `go-acme/lego` documentation for the specific environment variables required by your chosen DNS provider."},"warnings":[{"fix":"Ensure Go 1.24 or newer is installed if `pip install` fails to find a pre-compiled wheel for your system, or use the `snap` installation method if available.","message":"Installing via `pip` on certain Linux x86_64 / amd64 distributions for Python versions earlier than 3.11, or on other platforms, may require Go 1.24+ to be installed on your server for the plugin to compile successfully.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Always consult the official `lego` documentation (https://go-acme.github.io/lego/dns/) for the correct credential names for your specific DNS provider.","message":"The plugin is controlled via a credentials file (`.ini`). The specific environment variable names for DNS provider API keys/tokens (e.g., `CLOUDFLARE_API_TOKEN`) are dictated by the underlying `go-acme/lego` library, not `certbot-dns-multi`.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Run `chmod 0600 /etc/letsencrypt/dns-multi.ini` (or the path to your credentials file) immediately after creation to prevent unauthorized access.","message":"The credentials file containing API keys/tokens must be secured with strict permissions.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Interact with `certbot-dns-multi` exclusively through `certbot` commands, specifying `-a dns-multi` and `--dns-multi-credentials`.","message":"This library is a Certbot plugin and is designed to be used via the `certbot` command-line interface. It does not expose a direct Python API for programmatic interaction.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-12T00:00:00.000Z","next_check":"2026-07-11T00:00:00.000Z"}