traefik

Created Diff never expires
12 removals
Lines
Total
Removed
Words
Total
Removed
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
53 lines
13 additions
Lines
Total
Added
Words
Total
Added
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
53 lines
services:
services:
traefik:
traefik:
image: traefik:v3.3.5
image: traefik:v3.3.5
container_name: traefik
container_name: traefik
command:
command:
- "--api.dashboard=true"
- "--api.dashboard=true"
- "--providers.docker=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--entrypoints.web.http.redirections.entrypoint.permanent=true"
- "--entrypoints.web.http.redirections.entrypoint.permanent=true"
- "--certificatesresolvers.myresolver.acme.email=mymail@yandex.ru"
- "--certificatesresolvers.myresolver.acme.email=mymail@yandex.ru"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
- "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
labels:
labels:
- "traefik.enable=true"
- "traefik.enable=true"


# Middleware для редиректа www → корень (работает на обоих entrypoints)
- "traefik.http.middlewares.redirect-www-to-root.redirectregex.regex=^https?://www\\.(.+)"
- "traefik.http.middlewares.redirect-www-to-root.redirectregex.regex=^https?://www\\.(.+)"
- "traefik.http.middlewares.redirect-www-to-root.redirectregex.replacement=https://$1"
- "traefik.http.middlewares.redirect-www-to-root.redirectregex.replacement=https://$1"
- "traefik.http.middlewares.redirect-www-to-root.redirectregex.permanent=true"
- "traefik.http.middlewares.redirect-www-to-root.redirectregex.permanent=true"


- "traefik.http.routers.redirect-www.rule=HostRegexp(`www.{domain:[^/]+}`)"
# Правило для HTTP (порт 80) - сначала www→корень, потом HTTP→HTTPS
- "traefik.http.routers.redirect-www.entrypoints=web"
- "traefik.http.routers.redirect-www-http.rule=HostRegexp(`www.{domain:[^/]+}`)"
- "traefik.http.routers.redirect-www.middlewares=redirect-www-to-root"
- "traefik.http.routers.redirect-www-http.entrypoints=web"
- "traefik.http.routers.redirect-www.tls.certresolver=myresolver"
- "traefik.http.routers.redirect-www-http.middlewares=redirect-www-to-root,redirect-to-https@docker"

# Правило для HTTPS (порт 443) - только www→корень
- "traefik.http.routers.redirect-www-https.rule=HostRegexp(`www.{domain:[^/]+}`)"
- "traefik.http.routers.redirect-www-https.entrypoints=websecure"
- "traefik.http.routers.redirect-www-https.middlewares=redirect-www-to-root"
- "traefik.http.routers.redirect-www-https.tls=true"


# Дашборд Traefik
- "traefik.http.routers.traefik.rule=Host(`traefik-server.mystudio.studio`)"
- "traefik.http.routers.traefik.rule=Host(`traefik-server.mystudio.studio`)"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.entrypoints=websecure"
- "traefik.http.routers.traefik.entrypoints=websecure"
- "traefik.http.routers.traefik.tls.certresolver=myresolver"
- "traefik.http.routers.traefik.tls.certresolver=myresolver"
- "traefik.http.routers.traefik.middlewares=auth"
- "traefik.http.routers.traefik.middlewares=auth"
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr.....K.k/"
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr.....K.k/"
- "traefik.http.services.traefik.loadbalancer.server.port=8080"
- "traefik.http.services.traefik.loadbalancer.server.port=8080"
ports:
ports:
- "80:80"
- "80:80"
- "443:443"
- "443:443"
- "8080:8080"
- "8080:8080"
restart: always
restart: always
volumes:
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- traefik_certificates:/letsencrypt
- traefik_certificates:/letsencrypt
networks:
networks:
- traefik_network
- traefik_network

volumes:
traefik_certificates:
name: traefik_certificates

networks:
traefik_network:
name: traefik_network