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
规范网址
欲了解更详细信息,请访问我博客上的原始帖子。