
certbot/dns-linode本镜像为Certbot的官方Docker镜像,集成了Linode DNS插件,用于通过DNS-01挑战(DNS-01 challenge)自动化获取和续期SSL/TLS证书。Certbot是由电子前哨基金会(EFF)开发的开源证书管理工具,支持与Let's Encrypt等证书颁发机构(CA)交互,实现证书的全自动管理。Linode DNS插件通过Linode DNS API自动添加/删除DNS TXT记录,完成域名所有权验证,无需暴露服务器80/443端口。
*.example.com)| 功能特性 | 说明 |
|---|---|
| DNS-01挑战支持 | 自动生成并管理DNS TXT记录,完成CA对域名所有权的验证 |
| Linode DNS API集成 | 通过Linode API操作DNS记录,无需手动配置 |
| 证书生命周期自动化 | 支持证书申请、续期、吊销等全流程自动化,默认续期检查周期为30天 |
| 官方维护与兼容性 | 基于Certbot核心镜像(certbot/certbot:v1.7.0)构建,兼容其基础功能 |
| 轻量与安全 | 最小化镜像设计,减少***面,遵循Docker最佳实践 |
*.example.com等通配符证书(HTTP-01挑战不支持通配符域名)。domain读写权限),获取方式:
domain权限 → 保存令牌。| 变量名 | 必要性 | 说明 |
|---|---|---|
LINODE_API_TOKEN | 必需 | Linode API访问令牌,用于操作DNS记录(需domain读写权限) |
通过Certbot命令行参数配置插件行为,常用参数如下:
| 参数 | 说明 | 默认值 |
|---|---|---|
--dns-linode | 指定使用Linode DNS插件作为认证器(authenticator) | - |
--dns-linode-propagation-seconds | DNS记录传播等待时间(因Linode DNS生效延迟,建议设置≥30秒) | 10秒 |
--dns-linode-credentials | 替代环境变量的凭据文件路径(文件格式:dns_linode_api_token = <令牌>) | - |
通过docker run直接运行容器,获取证书并持久化存储至本地目录:
bashdocker run -it --rm \ -v /etc/letsencrypt:/etc/letsencrypt \ # 挂载证书存储目录(本地持久化) -v /var/lib/letsencrypt:/var/lib/letsencrypt \ # 挂载Certbot工作目录 -e LINODE_API_TOKEN="your_linode_api_token" \ # 替换为实际Linode API令牌 certbot/dns-linode:v1.7.0 \ # 镜像版本(当前v1.7.0) certonly \ # 仅获取证书(不自动配置服务器) --dns-linode \ # 使用Linode DNS插件 --dns-linode-propagation-seconds 60 \ # 设置DNS传播等待时间(根据网络延迟调整) -d "example.com" \ # 目标域名(支持多个-d参数,如-d "*.example.com") -d "*.example.com" \ --email "***" \ # 管理员***(用于证书到期通知) --agree-tos \ # 同意CA服务条款 --non-interactive # 非交互式运行(适合自动化脚本)
Certbot默认会自动续期剩余有效期<30天的证书,通过renew命令触发续期:
bashdocker run -it --rm \ -v /etc/letsencrypt:/etc/letsencrypt \ -v /var/lib/letsencrypt:/var/lib/letsencrypt \ -e LINODE_API_TOKEN="your_linode_api_token" \ certbot/dns-linode:v1.7.0 \ renew \ # 续期命令 --dns-linode \ --dns-linode-propagation-seconds 60 \ --non-interactive
通过docker-compose.yml定义服务,便于集成到现有Docker环境:
yamlversion: '3.8' services: certbot-linode: image: certbot/dns-linode:v1.7.0 volumes: - /etc/letsencrypt:/etc/letsencrypt - /var/lib/letsencrypt:/var/lib/letsencrypt environment: - LINODE_API_TOKEN=your_linode_api_token # 替换为实际令牌 command: > certonly --dns-linode --dns-linode-propagation-seconds 60 -d example.com -d *.example.com --email *** --agree-tos --non-interactive restart: "no" # 证书获取为一次性任务,无需持续运行
续期配置:可通过cron任务定期执行续期命令,例如添加系统定时任务:
bash# 每天凌晨3点执行续期(输出日志至/var/log/certbot-renew.log) 0 3 * * * docker run --rm -v /etc/letsencrypt:/etc/letsencrypt -v /var/lib/letsencrypt:/var/lib/letsencrypt -e LINODE_API_TOKEN="your_linode_api_token" certbot/dns-linode:v1.7.0 renew --dns-linode --non-interactive >> /var/log/certbot-renew.log 2>&1
LINODE_API_TOKEN需严格保密,避免泄露(建议通过环境变量或加密凭据文件传递,不直接写入命令行)。/etc/letsencrypt和/var/lib/letsencrypt目录必须通过Docker Volume挂载至宿主机,否则容器重启后证书将丢失。--dns-linode-propagation-seconds(如60-120秒),确保Linode DNS记录生效。:v1.7.0),避免自动升级导致兼容性问题。manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务