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