
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
集成Cloudflare DNS-01 ACME验证的完整Caddy Docker镜像
部署轻松无忧的Caddy服务器,内置支持Cloudflare DNS-01 ACME挑战。简化SSL证书管理,确保服务器无需手动更新即可保持安全,是一种轻松可靠的解决方案。
amd64、arm64、arm/v7(树莓派)、ppc64le和s390x,确保在广泛设备和系统上的兼容性。要使用预构建的Docker镜像,从GitHub容器注册表或Docker Hub拉取:
shdocker 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文件:
yamlversion: "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文件中设置此环境变量:
yamlversion: "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上的https://github.com/caddybuilds/caddy-cloudflare/pkgs/container/caddy-cloudflare%E9%95%9C%E5%83%8F%E6%8F%90%E4%BE%9B%E4%BB%A5%E4%B8%8B%E6%A0%87%E7%AD%BE%EF%BC%9A
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的镜像优势
要使用基于Alpine的镜像,从GitHub容器注册表或Docker Hub拉取:
shdocker pull ghcr.io/caddybuilds/caddy-cloudflare:alpine docker pull caddybuilds/caddy-cloudflare:alpine
此Docker镜像针对树莓派进行了优化,允许在这些流行的单板计算机上部署带有Cloudflare DNS集成的Caddy。无论使用树莓派3还是最新的树莓派4,此镜像都提供无缝运行所需的支持。
要在树莓派上使用镜像,请确保运行兼容的操作系统(如Raspberry Pi OS)并安装了Docker。然后可以像在其他系统上一样拉取并运行镜像:
shdocker pull ghcr.io/caddybuilds/caddy-cloudflare:latest
如果您希望构建自己的Docker镜像,请按照以下步骤操作:
GITHUB_TOKEN(在GitHub Actions中自动可用)DOCKERHUB_USERNAME(可选,如果要推送到DockerHub)DOCKERHUB_TOKEN(可选,如果要推送到DockerHub)https://github.com/caddybuilds/caddy-cloudflare/fork 到您的GitHub账户。
克隆分叉的仓库到本地机器:
shgit clone https://github.com/YOUR_GITHUB_USERNAME/caddy-cloudflare.git cd caddy-cloudflare
设置GitHub Secrets:
GITHUB_TOKEN:在GitHub Actions中自动可用。DOCKERHUB_USERNAME:您的DockerHub用户名(可选)。DOCKERHUB_TOKEN:您的DockerHub访问令牌(可选)。自定义工作流(如果需要):
.github/workflows/check-caddy-release.yml配置为检查Caddy新版本并构建Docker镜像。您可以根据需要自定义计划或工作流的任何其他部分。提交并推送任何更改(如果进行了自定义):
shgit add . git commit -m "自定义工作流" git push origin main
手动触发工作流(可选):
监控工作流:
Docker镜像:
shdocker pull ghcr.io/YOUR_GITHUB_USERNAME/caddy-cloudflare:latest
您可以在项目中使用构建的Docker镜像。以下是如何在docker-compose.yml文件中使用它的示例:
yamlversion: "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许可。详情参见https://github.com/CaddyBuilds/caddy-cloudflare/blob/main/LICENSE%E6%96%87%E4%BB%B6%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务