Installation

For Nginx Proxy Manager 2.16 or later there is nothing to install, see Nginx Proxy Manager. To replace the upstream package certbot-dns-azure, see Switching from certbot-dns-azure.

Requirements

  • Python 3.10 or newer (tested on 3.10 to 3.13).

  • certbot 3.0 or newer. There is deliberately no upper bound, so the plugin never forces pip to downgrade an existing certbot.

  • The Azure SDK packages (azure-identity, azure-mgmt-dns 8.x or 9.x, azure-core) are installed automatically as dependencies.

The plugin must be installed into the same Python environment as certbot.

pip

A dedicated virtual environment keeps certbot and the plugin apart from the system Python:

python3 -m venv /opt/certbot
/opt/certbot/bin/pip install certbot certbot-dns-azure-modern
ln -s /opt/certbot/bin/certbot /usr/local/bin/certbot

If certbot already lives in a virtual environment, install the plugin with that environment’s pip. Do not combine a certbot from the distribution’s packages with a plugin from PyPI (recent distributions refuse pip install into the system Python, PEP 668); install certbot itself with pip as shown.

Docker

The repository contains a minimal Docker/Dockerfile based on Alpine that installs certbot and the plugin from PyPI; no image is published, build it yourself:

git clone https://github.com/cloudchristoph/certbot-dns-azure-modern.git
cd certbot-dns-azure-modern
docker build -t certbot-dns-azure -f Docker/Dockerfile Docker/
docker run -it --rm \
  -v /etc/letsencrypt:/etc/letsencrypt \
  certbot-dns-azure \
  certbot certonly \
    --authenticator dns-azure \
    --dns-azure-config /etc/letsencrypt/azure.ini \
    --agree-tos --email admin@example.com --non-interactive \
    -d example.com -d '*.example.com'

Verify the installation

certbot plugins --text

The output should start the plugin’s entry with:

* dns-azure
Description: Obtain certificates using a DNS TXT record (if you are using Azure
for DNS).

If it is missing, see Plugin not listed by certbot plugins.