!Let's Encrypt Logo
基于letsencrypt基础镜像构建的Let's Encrypt证书自动获取与续期工具,通过webroot验证方式管理SSL证书。
本镜像提供了一种简单高效的方式,通过Let's Encrypt自动获取和续期SSL证书,采用webroot验证方式(即通过Web服务器的特定目录进行域名所有权验证)。适用于需要为Web服务(如Nginx、Apache等)配置HTTPS且希望自动管理证书生命周期的场景,避免手动操作证书续期的繁琐流程。
首先需配置Web服务器,确保其能正确响应/.well-known/acme-challenge路径的请求。以Nginx为例,添加如下配置:
nginxlocation '/.well-known/acme-challenge' { default_type "text/plain"; # 设置默认MIME类型为纯文本 root /tmp/letsencrypt; # 指定验证文件存放目录(需与后续挂载路径一致) }
运行Web服务器容器时,需挂载两个卷以与letsencrypt-webroot容器共享:
bash-v /data/letsencrypt:/etc/letsencrypt # 存储证书的持久化目录 -v /data/letsencrypt-www:/tmp/letsencrypt # webroot验证目录(需与Web服务器配置的root一致)
执行以下命令启动证书管理容器,替换示例中的域名和***:
bashdocker run \ --name some-letsencrypt \ -v /data/letsencrypt:/etc/letsencrypt \ # 挂载证书存储目录 -v /data/letsencrypt-www:/tmp/letsencrypt \ # 挂载webroot验证目录 -e 'DOMAINS=example.com [***] \ # 需申请证书的域名(空格分隔多个域名) -e 'EMAIL=***' \ # 用于紧急通知和密钥恢复的*** -e 'WEBROOT_PATH=/tmp/letsencrypt' \ # webroot验证目录路径(需与Web服务器配置一致) kvaps/letsencrypt-webroot
证书生成后,应用可通过以下路径访问证书文件:
/etc/letsencrypt/live/example.com/privkey.pem/etc/letsencrypt/live/example.com/cert.pem/etc/letsencrypt/live/example.com/chain.pem/etc/letsencrypt/live/example.com/fullchain.pem注意:必须完整挂载
/etc/letsencrypt目录,不可仅挂载/etc/letsencrypt/live子目录,否则该目录下证书文件的符号链接将无法正常工作!
可配置证书续期后的触发动作(如重载服务配置),实现依赖服务的自动更新。
挂载Docker Socket:需将主机的Docker Socket挂载到容器,以允许操作其他容器:
bash-v /var/run/docker.sock:/var/run/docker.sock
链接目标容器:通过--link参数链接需要操作的服务容器(如Nginx):
bash--link some-nginx # "some-nginx"为目标容器名称
设置续期钩子环境变量:通过LE_RENEW_HOOK环境变量定义触发动作,支持以下示例:
bash-e 'LE_RENEW_HOOK=docker kill -s HUP @CONTAINER_NAME@'
bash-e 'LE_RENEW_HOOK=docker restart @CONTAINER_NAME@'
注:
@CONTAINER_NAME@会自动替换为通过--link指定的容器名称。
以下是结合Nginx和letsencrypt-webroot的完整Docker Compose配置示例:
docker-compose.yml
yamlnginx: restart: always # 容器退出时自动重启 image: nginx # 使用***Nginx镜像 hostname: example.com # 主机名(需替换为实际域名) volumes: - /etc/localtime:/etc/localtime:ro # 同步主机时间 - ./nginx:/etc/nginx:ro # 挂载本地Nginx配置(只读) - ./letsencrypt/conf:/etc/letsencrypt # 共享证书目录 - ./letsencrypt/html:/tmp/letsencrypt # 共享webroot验证目录 ports: - 80:80 # HTTP端口(用于证书验证) - 443:443 # HTTPS端口 environment: - LE_RENEW_HOOK=docker kill -s HUP @CONTAINER_NAME@ # Nginx重载钩子(示例) letsencrypt: restart: always # 容器退出时自动重启 image: kvaps/letsencrypt-webroot # 当前letsencrypt镜像 volumes: - /etc/localtime:/etc/localtime:ro # 同步主机时间 - /var/run/docker.sock:/var/run/docker.sock # 挂载Docker Socket以操作其他容器 - ./letsencrypt/conf:/etc/letsencrypt # 证书存储目录(与Nginx共享) - ./letsencrypt/html:/tmp/letsencrypt # webroot验证目录(与Nginx共享) links: - nginx # 链接Nginx容器,用于续期钩子 environment: - DOMAINS=example.com [***] # 需申请证书的域名(空格分隔,替换为实际域名) - EMAIL=*** # 联系***(替换为实际***) - WEBROOT_PATH=/tmp/letsencrypt # webroot验证目录(需与Nginx配置一致) - EXP_LIMIT=30 # 证书到期前30天开始尝试续期(默认值) - CHECK_FREQ=30 # 每30天检查一次证书状态(默认值)
支持单次运行模式,即执行一次证书更新后立即退出容器,适用于通过外部定时任务(如Cron)触发的场景。只需在docker run命令末尾添加once参数:
bashdocker run \ --name some-letsencrypt \ -v /data/letsencrypt:/etc/letsencrypt \ -v /data/letsencrypt-www:/tmp/letsencrypt \ -e 'DOMAINS=example.com [***] \ -e 'EMAIL=***' \ -e 'WEBROOT_PATH=/tmp/letsencrypt' \ kvaps/letsencrypt-webroot \ once # 单次运行模式
| 环境变量 | 说明 | 示例值 | 默认值 |
|---|---|---|---|
DOMAINS | 需申请证书的域名列表(空格分隔多个域名) | example.com [***] | 无(必填) |
EMAIL | 联系***,用于接收证书到期通知及密钥恢复 | *** | 无(必填) |
WEBROOT_PATH | webroot验证目录路径(需与Web服务器配置的root一致) | /tmp/letsencrypt | /tmp/letsencrypt |
CHOWN | 证书文件的所有者(用户:组) | www-data:www-data | root:root |
CHMOD | 证书文件的权限(八进制格式) | 600 | 644 |
EXP_LIMIT | 证书到期前多少天开始尝试续期(整数) | 30 | 30 |
CHECK_FREQ | 证书续期检查频率(天数,整数) | 30 | 30 |
LE_RENEW_HOOK | 证书续期后的触发动作(需配合Docker Socket和--link使用) | docker restart @CONTAINER_NAME@ | 无 |
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429