docker-compose.yaml
services:
traefik:
image: traefik:v2.5
command:
- --api.insecure=true
- --providers.docker=true
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.letsencrypt.acme.email=jonathan763@hotmail.com
- --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json
- --certificatesresolvers.letsencrypt.acme.tlschallenge=true
- --providers.file.filename=/etc/traefik/traefik_dynamic_config.yml
labels:
# Define the secure headers middleware
- "traefik.http.middlewares.secure-headers.headers.sslredirect=true"
- "traefik.http.middlewares.secure-headers.headers.framedeny=true"
- "traefik.http.middlewares.secure-headers.headers.stsincludesubdomains=true"
- "traefik.http.middlewares.secure-headers.headers.stspreload=true"
- "traefik.http.middlewares.secure-headers.headers.stsseconds=63072000"
- "traefik.http.middlewares.secure-headers.headers.contenttypenosniff=true"
- "traefik.http.middlewares.secure-headers.headers.accesscontrolallowmethods=GET,POST"
- "traefik.http.middlewares.secure-headers.headers.accesscontrolalloworiginlist=foobar.com"
- "traefik.http.middlewares.secure-headers.headers.accesscontrolmaxage=100"
- "traefik.http.middlewares.secure-headers.headers.addvaryheader=true"
- "traefik.http.middlewares.secure-headers.headers.contentsecuritypolicy=script-src 'self'"
- "traefik.http.middlewares.secure-headers.headers.referrerpolicy=origin-when-cross-origin"
ports:
- "8080:8080"
- "80:80"
- "443:443"
volumes:
- ./letsencrypt:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik_dynamic_config.yml:/etc/traefik/traefik_dynamic_config.yml:ro
networks:
- traefik_default
restart: always
nginx1:
image: nginx:latest
container_name: nginx1
labels:
- "traefik.enable=true"
- "traefik.http.routers.nginx1.rule=Host(`test1.cloche.ca`)"
- "traefik.http.routers.nginx1.entrypoints=websecure"
- "traefik.http.routers.nginx1.tls.certresolver=letsencrypt"
restart: always
networks:
- traefik_default
networks:
traefik_default:
external: false
vlan2:
external: true
http:
routers:
test2:
entrypoints:
- "websecure"
rule: "Host(`test2.cloche.ca`)"
tls:
certResolver: letsencrypt
service: test2
services:
test2:
loadBalancer:
servers:
- url: "http://192.168.22.16:80"
tls:
options:
default:
minVersion: VersionTLS12
cipherSuites:
# Recommended ciphers for TLSv1.2
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
# Recommended ciphers for TLSv1.3
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
tlsv13only:
minVersion: VersionTLS13