Traefik Cloudflare DNS 挑战
Docker Compose 配置示例
traefik:
image: "traefik:2.3.7"
container_name: "traefik"
restart: unless-stopped
ports:
- "80:80"
- "443:443"
#- "8080:8080"
environment:
- CF_DNS_API_TOKEN=${CF_DNS_API_TOKEN}
volumes:
- ./traefik/config:/etc/traefik
- traefik-ssl-certs:/ssl-certs
- /etc/localtime:/etc/localtime
- "/var/run/docker.sock:/var/run/docker.sock:ro"
depends_on:
- app
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.entrypoints=websecure"
- "traefik.http.routers.traefik.tls.certresolver=myresolver"
- "traefik.http.routers.traefik.rule=Host(`traefik.domain.id`)"
- "traefik.http.routers.traefik.service=api@internal"将 traefik.domain.id 替换为您的实际域名。
创建一个 .env 文件并添加以下内容:
CF_DNS_API_TOKEN=
此令牌可从 Cloudflare 获取。
在 Cloudflare 中创建 API 令牌的步骤,该令牌具有管理域 DNS 所需的权限
步骤 1:登录您的 Cloudflare 账户
第 2 步:访问 API 令牌设置
步骤 3:创建新的 API 令牌
Langkah 4:Mengatur Izin API 令牌
如果选择创建自定义令牌:
代币配置步骤
步骤 5:创建并保存 API 令牌
步骤 6:保存 API 令牌
创建 traefik/config/traefik.yaml 文件:
global:
checkNewVersion: false
sendAnonymousUsage: false
api:
dashboard: true
debug: true
accessLog: {}
entryPoints:
web:
address: :80
websecure:
address: :443
serversTransport:
insecureSkipVerify: true
http:
middlewares:
redirect-to-https:
redirectScheme:
scheme: https
permanent: true
certificatesResolvers:
myresolver:
acme:
email: xxx@gmail.com
storage: /ssl-certs/acme.json
dnsChallenge:
provider: cloudflare
resolvers:
- "1.1.1.1:53"
- "8.8.8.8:53"
delayBeforeCheck: 5
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
file:
directory: /etc/traefik
watch: true将 xxx@gmail.com 替换为您用于 Cloudflare 的电子邮件。
运行 Traefik
运行以下命令启动 Traefik:
docker compose up -d
然后,通过 http://traefik.domain.id 或您输入的域名访问仪表板
配置已完成。
调试 DNS 质询过程
要调试 DNS 质询,请使用以下命令检查文件:
cat /ssl-certs/acme.json
但是,您需要先访问 Traefik 容器:
docker exec -it traefik sh
规范网址
欲了解更详细信息,请访问我博客上的原始帖子。