certbot-dns-valuedomain
ValueDomain DNS Authenticator plugin for Certbot.
This plugin automates the process of completing a dns-01 challenge by creating, and subsequently removing, TXT records using the ValueDomain API.
Features
- ✅ Automatic DNS-01 challenge completion
- ✅ Support for wildcard certificates
- ✅ Automatic TXT record cleanup
- ✅ Retry logic with exponential backoff
- ✅ Rate limit handling
- ✅ Comprehensive error handling
- ✅ Secure credential management
Installation
From PyPI (Recommended)
pip install certbot-dns-valuedomain
From Source
git clone https://github.com/chrono-meter/certbot-dns-valuedomain.git
cd certbot-dns-valuedomain
pip install -e .
Prerequisites
- Python 3.9 or higher
- Certbot 1.1.0 or higher
- ValueDomain account with API access
- Domain managed by ValueDomain
Python Version Support
| Python Version | Status | Notes |
|---|---|---|
| < 3.9 | ❌ Not supported | Use plugin version 0.x for older Python |
| 3.9 | ✅ Supported | Minimum version |
| 3.10 | ✅ Supported | Stable |
| 3.11 | ✅ Supported | Recommended |
| 3.12 | ✅ Supported | Latest stable |
| 3.13+ | 🔄 Testing | Should work, not officially tested |
Configuration
Named Arguments
| Argument | Description | Default |
|---|---|---|
--dns-valuedomain-credentials |
ValueDomain credentials INI file (Required) | None |
--dns-valuedomain-propagation-seconds |
Seconds to wait for DNS propagation | 60 |
Credentials File
Create a credentials file with your ValueDomain API information:
# ValueDomain API credentials
dns_valuedomain_api_key = your_api_key_here
dns_valuedomain_domain = example.com
The path to this file can be provided using the --dns-valuedomain-credentials command-line argument.
Security Best Practices
Important: Protect your credentials file with appropriate permissions:
chmod 600 /path/to/valuedomain.ini
Recommended location: ~/.secrets/certbot/valuedomain.ini
Usage Examples
Obtain a Certificate
certbot certonly
--authenticator dns-valuedomain
--dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini
-d example.com
Obtain a Wildcard Certificate
certbot certonly
--authenticator dns-valuedomain
--dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini
-d example.com
-d '*.example.com'
Obtain a Certificate with Custom Propagation Time
If you experience DNS propagation issues, increase the wait time:
certbot certonly
--authenticator dns-valuedomain
--dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini
--dns-valuedomain-propagation-seconds 120
-d example.com
Renew Certificates
certbot renew
--authenticator dns-valuedomain
--dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini
Automatic Renewal with Cron
Add to your crontab (crontab -e):
# Renew certificates daily at midnight
0 0 * * * certbot renew --authenticator dns-valuedomain --dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini --quiet
Or use systemd timer (recommended for modern systems):
# Enable certbot timer
systemctl enable --now certbot-renew.timer
Test Certificate Issuance (Dry Run)
certbot certonly --dry-run
--authenticator dns-valuedomain
--dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini
-d example.com
Getting ValueDomain API Key
- Log in to ValueDomain
- Navigate to your account settings
- Go to API settings section
- Generate a new API key
- Copy the API key to your credentials file
- Ensure your domain is properly configured in ValueDomain
ValueDomain API
This plugin uses the ValueDomain REST API v1:
- Get DNS records:
GET /domains/{domain}/dns - Set DNS records:
PUT /domains/{domain}/dns
API Documentation: https://www.value-domain.com/api/doc/domain/
Authentication
The plugin uses Bearer token authentication:
Authorization: Bearer YOUR_API_KEY
Troubleshooting
DNS Propagation Errors
If you encounter DNS propagation timeout errors:
# Increase propagation wait time
--dns-valuedomain-propagation-seconds 120
API Authentication Errors
Error: API authentication failed
Solutions:
- Verify your API key is correct and active
- Check that the domain is managed by your ValueDomain account
- Ensure the credentials file has correct permissions (
chmod 600) - Verify the credentials file path is correct
Permission Denied Errors
Error: Permission denied when reading credentials
Solution:
chmod 600 ~/.secrets/certbot/valuedomain.ini
Rate Limit Errors
The plugin automatically handles rate limits with exponential backoff. If you consistently hit rate limits, consider:
- Reducing the frequency of certificate requests
- Contacting ValueDomain support to increase your API limits
Debug Mode
For detailed error information, use the --debug flag:
certbot certonly --debug
--authenticator dns-valuedomain
--dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini
-d example.com
Common Issues
Issue: "Plugin not found"
# Reinstall the plugin
pip uninstall certbot-dns-valuedomain
pip install certbot-dns-valuedomain
Issue: "Invalid credentials format"
Ensure your credentials file follows this format:
dns_valuedomain_api_key = your_key
dns_valuedomain_domain = example.com
Development
Setup Development Environment
# Clone the repository
git clone https://github.com/chrono-meter/certbot-dns-valuedomain.git
cd certbot-dns-valuedomain
# Create a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venvScriptsactivate
# Install development dependencies
pip install -r requirements-dev.txt
# Install in editable mode
pip install -e .
Run Tests
# Run all tests
pytest tests/
# Run with coverage
pytest tests/ --cov=certbot_dns_valuedomain --cov-report=html
# View coverage report
open htmlcov/index.html
Code Quality
# Format code
black certbot_dns_valuedomain tests
# Lint code
flake8 certbot_dns_valuedomain tests
# Type checking
mypy certbot_dns_valuedomain --ignore-missing-imports
Running Tests Before Commit
# Run all checks
black certbot_dns_valuedomain tests &&
flake8 certbot_dns_valuedomain tests &&
pytest tests/ --cov=certbot_dns_valuedomain
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Contribution Guidelines
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests for new functionality
- Ensure all tests pass (
pytest tests/) - Format your code (
black .) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Code Style
- Follow PEP 8 guidelines
- Use Black for code formatting
- Add type hints where applicable
- Write comprehensive docstrings
- Include unit tests for new features
Security
Reporting Security Issues
If you discover a security vulnerability, please email the maintainer directly instead of using the issue tracker.
Security Best Practices
- Never commit credentials to version control
- Use strict file permissions (600) for credentials files
- Rotate API keys regularly
- Use environment-specific credentials
- Review logs for sensitive information leakage
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Support
- Issues: GitHub Issues
- Documentation: GitHub Wiki
- Discussions: GitHub Discussions
Acknowledgments
- Certbot - The Let's Encrypt client
- ValueDomain - DNS provider
- All contributors to this project
Related Projects
- Certbot - Official Certbot client
- certbot-dns-cloudflare - Cloudflare DNS plugin
- certbot-dns-route53 - Route53 DNS plugin
Changelog
See CHANGELOG.md for a list of changes in each version.
Author
chrono-meter stz2012
Project Status
This project is actively maintained. Issues and pull requests are regularly reviewed.
Note: This plugin is not officially affiliated with ValueDomain or Let's Encrypt.
Metadata
Release files for certbot-dns-valuedomain 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| certbot_dns_valuedomain-1.2.0.tar.gz | 19.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| certbot_dns_valuedomain-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.9 kB
Release files / certbot_dns_valuedomain-1.2.0.tar.gz
| Download URL | certbot_dns_valuedomain-1.2.0.tar.gz |
|---|---|
| Size | 19.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d435612a6ec6741fe6053006e4affd8a65b21a488ae95a1a4fa8d55d67f543c9
|
|
BLAKE2b-256 checksum How to use checksums |
a1fd746359576e45265223cf7b2cf7f0a7e5572dd5db524f94fcb2259ff6372e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jul 6, 2026.
Transparency logRelease files / certbot_dns_valuedomain-1.2.0-py3-none-any.whl
| Download URL | certbot_dns_valuedomain-1.2.0-py3-none-any.whl |
|---|---|
| Size | 16.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0dc4c522c79a03165ddfb55c5c0288a0513efab7d5a26753dc0d04a7fcb98a91
|
|
BLAKE2b-256 checksum How to use checksums |
e66a6f9c516deac8fdcda236109dd08c37eacafb71429436f9de7b158c0af0c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jul 6, 2026.
Transparency log