Servers transport not found

I have defined a serverstransports via file provider but when I try to use it it with a docker container label is gives the error:

2025-09-28T10:02:42Z ERR github.com/traefik/traefik/v3/pkg/server/router/router.go:155 > error="error building proxy for server URL http://172.21.0.14:3000: getting RoundTripper: servers transport not found speedtest-openspeedtest-transport@docker" entryPointName=websecure routerName=speedtest-openspeedtest-regex@docker

Earlier in the log I do have:

2025-09-28T09:41:32Z DBG github.com/traefik/traefik/v3/pkg/server/configurationwatcher.go:227 > Configuration received config={"http":{"serversTransports":{"speedtest-openspeedtest-transport":{"disableHTTP2":true,"forwardingTimeouts":{"dialTimeout":"30s","idleConnTimeout":"1m30s","pingTimeout":"15s","responseHeaderTimeout":"16m39s"}}}},"tcp":{},"tls":{},"udp":{}} providerName=file

I don’t understand?

Share your full Traefik static and dynamic config, and Docker compose file(s) if used.

Ok here they are.

traefik.yml

global:
checkNewVersion: false
sendAnonymousUsage: true

entryPoints:
web:
address: ":80"
reusePort: true
http:
redirections:
entryPoint:
to: websecure
scheme: https
permanent: true

websecure:
address: ":443"
http:
tls:
certResolver: cloudflare
domains:
- main: "\*.dhjensen.tech"
middlewares:
- ipallowlocal@docker
asDefault: true

providers:
docker:
network: backend
defaultRule: "Host(`{{ .ContainerName }}.dhjensen.tech`)"
exposedByDefault: false
file:
filename: "/etc/traefik/dynamic/traefik-dynamic.yml"
directory: "/etc/traefik/dynamic"

accessLog: {}

api:
dashboard: true
insecure: false

tls:
stores:
default:
defaultGeneratedCert:
resolver: cloudflare
domain:
- main: "\*.dhjensen.tech"
- sans: [ ]

certificatesResolvers:
cloudflare:
acme:
email: dhjen@outlook.com
storage: /ssl-certs/acme.json
dnsChallenge:
provider: cloudflare

log:
level: debug

Dynamic.yml

http:
  serversTransports:
    speedtest-openspeedtest-transport:
      disableHTTP2: true
      forwardingTimeouts:
        responseHeaderTimeout: "999s"

Traefik docker-compose.yml

name: Traefik

services:
  traefik:
    image: traefik:v${TRAEFIK_VERSION}
    container_name: traefik
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik.yml:/etc/traefik/traefik.yml:ro
      - ./dynamic/:/etc/traefik/dynamic:ro
      - traefik-ssl-certs:/ssl-certs:rw
    environment:
      - CF_API_EMAIL
      - CF_DNS_API_TOKEN
      - CF_ZONE_API_TOKEN
    ports:
      - "0.0.0.0:80:80"
      - "0.0.0.0:443:443"
    networks:
      - traefik
      - traefik-backend
    restart: unless-stopped
    labels:
      - wud.tag.include=^v\d+\.\d+\.\d+$$
      - traefik.enable=true
      - traefik.http.routers.dashboard.rule=Host(`${DASHBOARD_FQDN}`)
      - traefik.http.routers.dashboard.service=api@internal
      - traefik.http.middlewares.dashboard-auth.basicauth.users=${DASHBOARD_USERS}
      - traefik.http.middlewares.ipallowlocal.ipAllowList.sourceRange=${TRAEFIK_IP_ALLOW_RANGES}
      - traefik.http.routers.dashboard.middlewares=dashboard-auth@docker

networks:
  traefik:
    name: traefik
    driver: bridge
  traefik-backend:
    driver: bridge
    name: backend

volumes:
  traefik-ssl-certs:

Speedtest docker-compose.yml

name: OpenSpeedTest

services:
    speedtest:
      image: openspeedtest/latest:v${SPEEDTEST_VERSION}
      container_name: speedtest
      volumes:
        - /etc/timezone:/etc/timezone:ro
      ports:
        - "127.0.0.1:3001:3000"
        - "127.0.0.1:3002:3001"
      networks:
        - backend
        - nginx-proxy-manager_frontend
      restart: unless-stopped
      labels:
        - wud.tag.include=^v\d+\.\d+\.\d+$$
        - traefik.enable=true
        - traefik.http.middlewares.speedtestheader.headers.accesscontrolalloworiginlist=*
        - traefik.http.middlewares.speedtestheader.headers.accesscontrolallowheaders=Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With
        - traefik.http.middlewares.speedtestheader.headers.accessControlAllowMethods=GET,POST,OPTIONS
        - traefik.http.middlewares.speedtestheader.headers.customResponseHeaders.Cache-Control=no-store,no-cache,max-age=0,no-transform
        - traefik.http.middlewares.speedtestheader.headers.customResponseHeaders.Pragma=no-cache
        - traefik.http.middlewares.speedtestheader.headers.customResponseHeaders.Expires=0
        - traefik.http.middlewares.speedtestheader.headers.customResponseHeaders.Etag=""
        - traefik.http.middlewares.speedtestnocompress.compress=false
        - traefik.http.middlewares.speedtestheaderoptions.headers.accessControlAllowCredentials=true
        - traefik.http.middlewares.speedtestheaderoptions.headers.accesscontrolallowheaders=Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With
        - traefik.http.middlewares.speedtestheaderoptions.headers.accesscontrolalloworiginlist=* always
        - traefik.http.middlewares.speedtestheaderoptions.headers.accessControlAllowMethods=GET,POST,OPTIONS
        - traefik.http.middlewares.speedtestheaderregex.headers.customResponseHeaders.Cache-Control=public, max-age=31536000
        - traefik.http.middlewares.speedtestcompress.compress=true
        - traefik.http.middlewares.speedtestcompress.compress.encodings=gzip
        - traefik.http.middlewares.speedtestcompress.compress.includedContentTypes=text/plain, text/css, application/json, application/x-javascript, text/xml, application/xml, application/xml+rss, text/javascript, application/javascript, image/svg+xml
        - traefik.http.services.speedtest-openspeedtest.loadbalancer.serverstransport=speedtest-openspeedtest-transport
        - traefik.http.routers.speedtest-openspeedtest.middlewares=speedtestheader@docker,speedtestnocompress@docker
        - traefik.http.routers.speedtest-openspeedtest-options.rule=Host(`speedtest.dhjensen.tech`) && Method(`OPTIONS`)
        - traefik.http.routers.speedtest-openspeedtest-options.middlewares=speedtestheaderoptions@docker
        - traefik.http.routers.speedtest-openspeedtest-regex.rule=Host(`speedtest.dhjensen.tech`) && PathRegexp(`^.+\.(?:css|cur|js|jpe?g|gif|htc|ico|png|html|xml|otf|ttf|eot|woff|woff2|svg)$`)
        - traefik.http.routers.speedtest-openspeedtest-regex.observability.accesslogs=false
        - traefik.http.routers.speedtest-openspeedtest-regex.middlewares=speedtestheaderregex@docker,speedtestcompress@docker

networks:
  backend:
    external: true
    driver: bridge
  nginx-proxy-manager_frontend:
    external: true
    driver: bridge

Try

  - traefik.http.services.speedtest-openspeedtest.loadbalancer.serverstransport=speedtest-openspeedtest-transport@file
                                                                                                                 ^

as it is defined in a dynamic config from providers.file.

Also decide for file or directory, you got

providers:
  file:
    filename: "/etc/traefik/dynamic/traefik-dynamic.yml"
    directory: "/etc/traefik/dynamic"

but the doc state:

The filename and directory options are mutually exclusive. It is recommended to use directory.

Thank you that was it with the @file

I also changed to directory: only :slight_smile:

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.