本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

集成Cloudflare DNS-01 ACME验证的完整Caddy Docker镜像
部署轻松无忧的Caddy服务器,内置支持Cloudflare DNS-01 ACME挑战。简化SSL证书管理,确保服务器无需手动更新即可保持安全,是一种轻松可靠的解决方案。
amd64、arm64、arm/v7(树莓派)、ppc64le和s390x,确保在广泛设备和系统上的兼容性。要使用预构建的Docker镜像,从GitHub容器注册表或Docker Hub拉取:
docker pull ghcr.io/caddybuilds/caddy-cloudflare:latest docker pull caddybuilds/caddy-cloudflare:latest # alpine版本 docker pull ghcr.io/caddybuilds/caddy-cloudflare:alpine docker pull caddybuilds/caddy-cloudflare:alpine
可在Docker设置中使用该镜像。以下是示例docker-compose.yml文件:
version: "3.7" services: caddy: image: caddybuilds/caddy-cloudflare:latest restart: unless-stopped cap_add: - NET_ADMIN ports: - "80:80" - "443:443" - "443:443/udp" volumes: - $PWD/Caddyfile:/etc/caddy/Caddyfile - $PWD/site:/srv - caddy_data:/data - caddy_config:/config environment: - CLOUDFLARE_API_TOKEN=your_cloudflare_api_token volumes: caddy_data: external: true caddy_config:
将数据卷定义为外部卷可确保docker-compose down不会删除该卷。可能需要使用docker volume create caddy_data手动创建它。
将your_cloudflare_api_token替换为实际的Cloudflare API令牌。
以下是一个示例Caddyfile配置,帮助您快速入门。此配置设置ACME DNS挑战提供程序以使用Cloudflare,并提供简单的静态网站服务。
在此配置中,ACME DNS挑战提供程序设置为全局,因此适用于Caddy提供的所有站点。
# 要使用您自己的域名(带自动HTTPS),首先确保您的域名A/AAAA DNS记录正确指向 # 此机器的公网IP,然后将下面的"example.com"替换为您的域名。 { # 设置ACME DNS挑战提供程序为Cloudflare,适用于所有站点 acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN} } example.com { # 设置此路径为您的网站目录。 root * /usr/share/caddy # 启用静态文件服务器。 file_server # 另一个常见任务是设置反向代理: # reverse_proxy localhost:8080 # 或通过php-fpm提供PHP网站: # php_fastcgi localhost:9000 encode gzip tls { # 无需在此处指定dns,已全局设置 } } another-example.com { root * /usr/share/caddy file_server encode gzip tls { # 无需在此处指定dns,已全局设置 } }
example.com { # 设置此路径为您的网站目录。 root * /usr/share/caddy # 启用静态文件服务器。 file_server # 另一个常见任务是设置反向代理: # reverse_proxy localhost:8080 # 或通过php-fpm提供PHP网站: # php_fastcgi localhost:9000 encode gzip tls { dns cloudflare {env.CLOUDFLARE_API_TOKEN} } } another-example.com { root * /usr/share/caddy file_server encode gzip tls { dns cloudflare {env.CLOUDFLARE_API_TOKEN} } }
要使用Cloudflare DNS挑战提供程序,需要在Cloudflare账户中创建API令牌。按照以下步骤创建具有必要权限的令牌:
登录Cloudflare:
导航到API令牌:
创建自定义令牌:
配置令牌权限:
指定账户和区域资源:
创建并存储令牌:
设置环境变量:
CLOUDFLARE_API_TOKEN设置为刚创建的令牌值。例如,在Docker环境中,可在docker-compose.yml文件中设置此环境变量:
version: "3.7" services: caddy: image: caddybuilds/caddy-cloudflare:latest restart: unless-stopped cap_add: - NET_ADMIN ports: - "80:80" - "443:443" - "443:443/udp" volumes: - $PWD/Caddyfile:/etc/caddy/Caddyfile - $PWD/site:/srv - caddy_data:/data - caddy_config:/config environment: - CLOUDFLARE_API_TOKEN=your_cloudflare_api_token volumes: caddy_data: external: true caddy_config:
将数据卷定义为外部卷可确保docker-compose down不会删除该卷。可能需要使用docker volume create caddy_data手动创建它。
将your_cloudflare_api_token替换为实际的Cloudflare API令牌。
要为所有ACME事务配置ACME DNS挑战提供程序,将以下内容添加到您的Caddyfile:
{ acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN} }
此配置设置提供程序使用Cloudflare DNS模块,并使用环境变量提供的API令牌。它确保Caddy服务器可以使用DNS-01挑战自动颁发和续期SSL证书。
此设置与在tls指令的ACME颁发者配置中指定提供程序相同。
示例Caddyfile
GitHub容器注册表和Docker Hub上的caddy-cloudflare镜像提供以下标签:
latest:
<version>:
2.7.6:Caddy 2.7.6版本的完整版本标签,确保使用此确切版本。
(例如:docker pull ghcr.io/caddybuilds/caddy-cloudflare:2.8.0)
2.7:2.7系列中最新补丁版本的次要版本标签,允许次要更新而不破坏兼容性。
2:2.x系列中最新版本的主要版本标签,在保持兼容性的同时提供主要版本内的更新。
alpine:始终指向基于Alpine的镜像的最新稳定版本。
<version>-alpine:基于Alpine的镜像的特定版本标签(例如2.7.6-alpine)。caddybuilds/caddy-cloudflare镜像支持多种平台,确保在广泛设备和系统上的兼容性。支持的平台包括:
基于Alpine的镜像提供轻量级替代方案,基于流行的Alpine Linux项目。Alpine Linux比大多数发行版基础镜像小得多(约5MB),通常会产生更精简的镜像。
要使用基于Alpine的镜像,从GitHub容器注册表或Docker Hub拉取:
docker pull ghcr.io/caddybuilds/caddy-cloudflare:alpine docker pull caddybuilds/caddy-cloudflare:alpine
此Docker镜像针对树莓派进行了优化,允许在这些流行的单板计算机上部署带有Cloudflare DNS集成的Caddy。无论使用树莓派3还是最新的树莓派4,此镜像都提供无缝运行所需的支持。
要在树莓派上使用镜像,请确保运行兼容的操作系统(如Raspberry Pi OS)并安装了Docker。然后可以像在其他系统上一样拉取并运行镜像:
docker pull ghcr.io/caddybuilds/caddy-cloudflare:latest
如果您希望构建自己的Docker镜像,请按照以下步骤操作:
GITHUB_TOKEN(在GitHub Actions中自动可用)DOCKERHUB_USERNAME(可选,如果要推送到DockerHub)DOCKERHUB_TOKEN(可选,如果要推送到DockerHub)分叉此仓库 到您的GitHub账户。
克隆分叉的仓库到本地机器:
git clone [***] cd caddy-cloudflare
设置GitHub Secrets:
GITHUB_TOKEN:在GitHub Actions中自动可用。DOCKERHUB_USERNAME:您的DockerHub用户名(可选)。DOCKERHUB_TOKEN:您的DockerHub访问令牌(可选)。自定义工作流(如果需要):
.github/workflows/check-caddy-release.yml配置为检查Caddy新版本并构建Docker镜像。您可以根据需要自定义计划或工作流的任何其他部分。提交并推送任何更改(如果进行了自定义):
git add . git commit -m "自定义工作流" git push origin main
手动触发工作流(可选):
监控工作流:
Docker镜像:
docker pull ghcr.io/YOUR_GITHUB_USERNAME/caddy-cloudflare:latest
您可以在项目中使用构建的Docker镜像。以下是如何在docker-compose.yml文件中使用它的示例:
version: "3.7" services: caddy: image: ghcr.io/YOUR_GITHUB_USERNAME/caddy-cloudflare:latest restart: unless-stopped cap_add: - NET_ADMIN ports: - "80:80" - "443:443" - "443:443/udp" volumes: - $PWD/Caddyfile:/etc/caddy/Caddyfile - $PWD/site:/srv - caddy_data:/data - caddy_config:/config environment: - CLOUDFLARE_API_TOKEN=your_cloudflare_api_token volumes: caddy_data: external: true caddy_config:
将数据卷定义为外部卷可确保docker-compose down不会删除该卷。您可能需要使用docker volume create caddy_data手动创建它。
将YOUR_GITHUB_USERNAME替换为您的GitHub用户名,your_cloudflare_api_token替换为您的实际Cloudflare API令牌。
如果您有任何改进或错误修复,欢迎打开问题或提交拉取请求。
本项目采用MIT许可。详情参见LICENSE文件。



免费版仅支持 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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429