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.
- ✅ 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
pip install certbot-dns-valuedomaingit clone https://github.com/chrono-meter/certbot-dns-valuedomain.git
cd certbot-dns-valuedomain
pip install -e .- Python 3.9 or higher
- Certbot 1.1.0 or higher
- ValueDomain account with API access
- Domain managed by ValueDomain
| 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 |
| Argument | Description | Default |
|---|---|---|
--dns-valuedomain-credentials |
ValueDomain credentials INI file (Required) | None |
--dns-valuedomain-propagation-seconds |
Seconds to wait for DNS propagation | 60 |
Create a credentials file with your ValueDomain API information:
# ValueDomain API credentials
dns_valuedomain_api_key = your_api_key_here
dns_valuedomain_domain = example.comThe path to this file can be provided using the --dns-valuedomain-credentials command-line argument.
Important: Protect your credentials file with appropriate permissions:
chmod 600 /path/to/valuedomain.iniRecommended location: ~/.secrets/certbot/valuedomain.ini
certbot certonly
--authenticator dns-valuedomain
--dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini
-d example.comcertbot certonly
--authenticator dns-valuedomain
--dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini
-d example.com
-d '*.example.com'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.comcertbot renew
--authenticator dns-valuedomain
--dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.iniAdd to your crontab (crontab -e):
# Renew certificates daily at midnight
0 0 * * * certbot renew --authenticator dns-valuedomain --dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini --quietOr use systemd timer (recommended for modern systems):
# Enable certbot timer
systemctl enable --now certbot-renew.timercertbot certonly --dry-run
--authenticator dns-valuedomain
--dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini
-d example.com- 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
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/
The plugin uses Bearer token authentication:
Authorization: Bearer YOUR_API_KEY
If you encounter DNS propagation timeout errors:
# Increase propagation wait time
--dns-valuedomain-propagation-seconds 120Error: 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
Error: Permission denied when reading credentials
Solution:
chmod 600 ~/.secrets/certbot/valuedomain.iniThe 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
For detailed error information, use the --debug flag:
certbot certonly --debug
--authenticator dns-valuedomain
--dns-valuedomain-credentials ~/.secrets/certbot/valuedomain.ini
-d example.com# Reinstall the plugin
pip uninstall certbot-dns-valuedomain
pip install certbot-dns-valuedomainEnsure your credentials file follows this format:
dns_valuedomain_api_key = your_key
dns_valuedomain_domain = example.com# 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 all tests
pytest tests/
# Run with coverage
pytest tests/ --cov=certbot_dns_valuedomain --cov-report=html
# View coverage report
open htmlcov/index.html# Format code
black certbot_dns_valuedomain tests
# Lint code
flake8 certbot_dns_valuedomain tests
# Type checking
mypy certbot_dns_valuedomain --ignore-missing-imports# Run all checks
black certbot_dns_valuedomain tests &&
flake8 certbot_dns_valuedomain tests &&
pytest tests/ --cov=certbot_dns_valuedomainContributions are welcome! Please feel free to submit a Pull Request.
- 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
- Follow PEP 8 guidelines
- Use Black for code formatting
- Add type hints where applicable
- Write comprehensive docstrings
- Include unit tests for new features
If you discover a security vulnerability, please email the maintainer directly instead of using the issue tracker.
- 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
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Issues: GitHub Issues
- Documentation: GitHub Wiki
- Discussions: GitHub Discussions
- Certbot - The Let's Encrypt client
- ValueDomain - DNS provider
- All contributors to this project
- Certbot - Official Certbot client
- certbot-dns-cloudflare - Cloudflare DNS plugin
- certbot-dns-route53 - Route53 DNS plugin
See CHANGELOG.md for a list of changes in each version.
chrono-meter stz2012
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.