Skip to main content

Release PyPI version

Alt text

IONOS Cloud DNS Certbot Authenticator Plugin

The IONOS Cloud DNS Certbot Plugin automates SSL/TLS certificate creation for IONOS Cloud zones. It implements the Authenticator interface which is used by Certbot to perform a DNS-01 challenge.

Requirements

To make use of the plugin, the following is needed:

Authentication Methods

Both username/password and token authentication are supported. The username/password method has the advantage of not requiring the user to intervene periodically. If a token is used, it falls under the responsibility of the user to renew the token periodically (IONOS tokens can have a maximum ttl of 365 days). Regardless of the method used, it is highly recommended to scope the privileges to the DNS management only. This can be done by creating a new IAM user under your main contract, and scoping the privileges to "Access and manage DNS". More details on how to create a bot user can be found here

[!IMPORTANT]
It is not recommended to use the credentials of the root/Admin account.

Installation

pip install certbot-dns-ionos-cloud

Arguments

Argument Example Description
--authenticator dns-ionos-cloud Tells certbot which plugin to use. dns-ionos should be used for this plugin.
--dns-ionos-cloud-credentials ./credentials.ini Denotes the directory path to the credentials file. Required.
--dns-ionos-cloud-propagation-seconds 120 Configures the duration in seconds that certbot waits before querying the TXT record. (Default: 120)

Credentials file

As mentioned in the previous section, the --dns-ionos-cloud-credentials needs to point to an ini file containing the IONOS API access token. The file must contain either the dns_ionos_cloud_token key with the value of the access token or the keys dns_ionos_cloud_username, dns_ionos_cloud_password with the values of the bot username and password, respectively.

dns_ionos_cloud_token=YOUR_API_JWT_ACCESS_TOKEN

or

dns_ionos_cloud_username=THE_BOT_ACCOUNT_USERNAME
dns_ionos_cloud_password=THE_BOT_ACCOUNT_PASSWORD

Example Usage

certbot certonly \
  --authenticator dns-ionos-cloud \
  --dns-ionos-cloud-credentials /path/to/credentials.ini \
  --dns-ionos-cloud-propagation-seconds 60 \
  --agree-tos \
  --rsa-key-size 4096 \
  -d 'example.com'

In the background, the plugin will try to find your zone. If found, it will create a TXT record for the DNS-01 challenge. At the end of the process, the TLS/SSL certificate is generated and the TXT record is deleted.

Support

If you encounter any issues or have suggestions, please feel free to open an issue.

License

This project is licensed under the Apache License 2.0 License - see the LICENSE file for details.

How to develop locally

To develop and test the plugin locally, it is recommend to create a python virtual environment. For example: python -m venv .venv

After activating the virtual environment, the following command should be used to install the project to the virtual environment local site packages: pip install -e .

Afterwards, any changes made to the plugin will be directly reflected when executing the certbot certonly --authenticator dns-ionos (without the need to execute pip install again).

It's important to note that the following arguments need also to be provided when developing locally in a virtual environment --logs-dir, --config-dir, --work-dir, otherwise the certbot will attempt to use the global folders for logging, configuration, and work. This may not work because of the lack of permissions, so you may see errors like below if those arguments are not set:

The following error was encountered:
[Errno 13] Permission denied: '/var/log/letsencrypt/.certbot.lock'
Either run as root, or set --config-dir, --work-dir, and --logs-dir to writeable paths.

As explained by the error message, to be able write to /var/log/letsencrypt/, root permissions are needed. However, when running as a root (e.g sudo certbot), the global certbot package will be used and not the one from the virtual environment. The solution is to set --logs-dir, --config-dir, and --work-dir to a different folder for which the current user has write permissions.

Testing

unit tests can be run using: make test

Related Plugins

It's important to note that this plugin targets IONOS Cloud DNS service. IONOS offers a different service for managing DNS zones, referred to as IONOS Developer DNS API. For the latter, there is dedicated plugin managed by the community: https://github.com/helgeerbe/certbot-dns-ionos

Release files for certbot-dns-ionos-cloud 2.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for certbot-dns-ionos-cloud 2.2.0
File Size Uploaded
certbot_dns_ionos_cloud-2.2.0.tar.gz 14.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for certbot-dns-ionos-cloud 2.2.0
File Interpreter ABI Platform
certbot_dns_ionos_cloud-2.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 27.7 kB

Release files / certbot_dns_ionos_cloud-2.2.0.tar.gz

Download URL certbot_dns_ionos_cloud-2.2.0.tar.gz
Size 14.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a4c8df6ebf2e1bcb846c779c2608adbed46f4c640637da9c737bc9c69a0b9387
BLAKE2b-256 checksum
How to use checksums
670e6d00d4bb7165df5b9290d2024f38f16130a25f9ece9faf8a51befab42411
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 14, 2026.

Transparency log

Release files / certbot_dns_ionos_cloud-2.2.0-py3-none-any.whl

Download URL certbot_dns_ionos_cloud-2.2.0-py3-none-any.whl
Size 13.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ce85ba8d53a86ef5d9db7a890d29bd2fc51b68143a02ac1af3f9dfedc4d0c5ed
BLAKE2b-256 checksum
How to use checksums
303677bbf117f168725e2111ba0c225bc5f0c14657877ced0fb44b3a60cbf278
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.2.0 This release

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page