Traefik 2 配置了 docker 标签和 cloudflare https,找不到 404 页面

Traefik 2 configured with docker labels and cloudflare https, 404 page not found

我无法通过 Traefik v2 仪表板(或任何其他服务)404 page not found。我试图避免 traefik.yml 文件并使用 docker 撰写文件中的 commandlabels 配置所有内容。 HTTPS 有效,但内容不显示。

这是定义 traefik 服务的组合文件:

version: '3.3'
services:
  traefik:
    image: traefik:v2.2.1
    command:
     - --entrypoints.web.address=:80
     - --entrypoints.websecure.address=:443
     - --providers.docker
     - --providers.docker.swarmmode=true
     - --api
     - --entrypoints.websecure.http.tls.certresolver=myresolver
     - --certificatesresolvers.myresolver.acme.dnschallenge=true
     - --certificatesresolvers.myresolver.acme.email=${CF_API_EMAIL}
     - --certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
     - --certificatesresolvers.myresolver.acme.storage=acme.json
     - --certificatesresolvers.myresolver.acme.dnschallenge.provider=cloudflare
    labels:
      traefik.http.routers.traefik.tls.certresolver: myresolver
      traefik.http.services.traefik.loadbalancer.server.port: '8080'
      traefik.http.routers.http-catchall.middlewares: redirect-to-https
      traefik.http.middlewares.authtraefik.basicauth.users: user://V6Btlaf2i/ju5n/
      traefik.http.routers.http-catchall.rule: hostregexp(`{host:.+}`)
      traefik.http.routers.traefik.middlewares: authtraefik
      traefik.http.routers.traefik.entrypoints: websecure
      traefik.http.routers.traefik.service: api@internal
      traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: https
      traefik.http.routers.http-catchall.entrypoints: web
      traefik.http.routers.traefik.rule: Host(`traefik.example.com`)
    environment:
      CF_API_EMAIL: ${CF_API_EMAIL}
      CF_API_KEY: ${CF_API_KEY}
    ports:
     - 80:80
     - 443:443
    volumes:
     - /var/run/docker.sock:/var/run/docker.sock:ro
    networks:
     - external
    logging:
      driver: json-file
networks:
  external:
    external: true

如有任何建议,我们将不胜感激。

资源

通过一些更改使其工作:

  • 需要指定网络,因为它是外部网络:traefik.docker.network: external
  • 标签应该在集群模式下 deploy
  • 在 Cloudflare 中,token 应该取自“My Profile > API Tokens > Global API Key”
version: '3.3'
services:
  traefik:
    image: traefik:v2.2.1
    command:
     - --api
     - --api.insecure=true
     - --accessLog
     - --providers.docker
     - --providers.docker.swarmmode=true
     - --providers.docker.exposedbydefault=false
     - --entrypoints.web.address=:80
     - --entrypoints.websecure.address=:443
     - --certificatesresolvers.myresolver.acme.dnschallenge=true
     - --certificatesresolvers.myresolver.acme.dnschallenge.provider=cloudflare
    environment:
      CF_API_EMAIL_FILE: /run/secrets/cf_api_email
      CF_API_KEY_FILE: /run/secrets/cf_api_key
    ports:
     - 80:80
     - 443:443
    volumes:
     - /var/run/docker.sock:/var/run/docker.sock:ro
    networks:
     - external
    logging:
      driver: json-file
    deploy:
      labels:
        traefik.http.services.traefik.loadbalancer.server.port: '8080'
        traefik.http.routers.traefik.middlewares: auth
        traefik.http.routers.traefik.entrypoints: web
        traefik.http.middlewares.auth.basicauth.users: admin:2y05.ibkghcHaj6ala4xCsgJiww1/uCFB9w.
        traefik.docker.network: external
        traefik.enable: 'true'
        traefik.http.routers.traefik.rule: Host(`traefik.example.com`)
networks:
  external:
    external: true