Proxmox Virtual Environment is a virtualisation platform designed for the provisioning of hyper-converged infrastructure. Proxmox allows the deployment and management of virtual machines and containers. It is based on a modified Ubuntu LTS kernel.
One of the requirements for the use of Proxmox with ClouDNS is to have access to our HTTP API. All our Premium DNS and DDoS Protected DNS plans include access to the HTTP API and can be used to generate free SSL certificates with Cerbot for any hostname you need. Another important condition is, that your domain is delegated to our name servers and the DNS for the domain name is hosted on our side.





As you know, ClouDNS provides Sectigo SSL certificates. Currently, there is no difference in the security between the provided Positive SSL certificates and Let's Encrypt SSL certificates. The advantage of the Positive SSL certificates is that they are issued by Sectigo for 1 year (Let's Encrypt certificates are issued for 3 months) and the relying party warranty they have. The Let's Encrypt SSL certificates are a good option for mail servers, control panels, internal systems, and other types of administrative services, but using trusted SSL certificates is still an advantage for commercial websites.
Overview
TurnKey Linux appliances (including WordPress LXC containers running on Proxmox) can automatically request and renew Let’s Encrypt certificates using the confconsole (TUI).
When DNS-01 validation is selected, TurnKey uses the following stack:
confconsole → dehydrated → dns-lexicon → DNS provider APISymptoms
During certificate issuance, the process fails with an error similar to:
AttributeError: 'str' object has no attribute 'get'
ERROR: deploy_challenge hook returned with non-zero exit code
The error occurs at the stage:
Creating a TXT challenge-record with cloudns
As a result:
Root Cause
The issue is not related to Let’s Encrypt and not a ClouDNS API outage.
The root cause is an invalid dns-lexicon configuration structure passed by confconsole.
This typically happens when:
auth_id instead of auth_subidWhen this happens, lexicon crashes internally and raises:
AttributeError: 'str' object has no attribute 'get'
Important Context
Because of this, variable names and configuration formats differ from acme.sh documentation.
Correct Configuration (Solution)
Recommended: Use a ClouDNS sub-user
In the ClouDNS control panel:
confconsole → Lexicon configuration
When prompted for the Lexicon provider configuration, enter:
auth_subid: XXXXX
auth_password: YYYYYYYY
Where:
auth_subid is the ClouDNS sub-auth IDauth_password is the sub-user passwordImportant Notes
auth_id when working with a sub-userauth_password must not be emptyAlternative: Master account (not recommended)
If you explicitly use the ClouDNS master account, the configuration would be:
auth_id: XXXXX
auth_password: YYYYYYYY
However, using a sub-user is strongly recommended for security reasons.
Troubleshooting Checklist
If you still see the error:
AttributeError: 'str' object has no attribute 'get'
Verify that:
auth_password is present and non-emptyauth_subid for sub-usersResult
With the correct configuration:
auth_subid
auth_password
dns-lexicon is able to:
_acme-challenge TXT recordSummary
If you encounter:
AttributeError: 'str' object has no attribute 'get'
while using TurnKey confconsole + dehydrated + dns-lexicon + ClouDNS, the fix is to use auth_subid instead of auth_id when working with a ClouDNS sub-user.