diff --git a/content/posts/how-to-expose-traefik-2-dashboard-securely-docker-swarm.md b/content/posts/how-to-expose-traefik-2-dashboard-securely-docker-swarm.md index 5bd75b2..0bba22a 100644 --- a/content/posts/how-to-expose-traefik-2-dashboard-securely-docker-swarm.md +++ b/content/posts/how-to-expose-traefik-2-dashboard-securely-docker-swarm.md @@ -1,4 +1,4 @@ -+++ ++++ title = "How to expose Traefik 2.x dashboard securely on Docker Swarm" date = "2020-01-12" author = "Aloïs Micard" @@ -38,18 +38,25 @@ version: '3' services: reverse-proxy: - image: traefik:v2.0.2 + image: traefik:v2.3.4 command: + # Docker swarm configuration - "--providers.docker.endpoint=unix:///var/run/docker.sock" - "--providers.docker.swarmMode=true" - "--providers.docker.exposedbydefault=false" - "--providers.docker.network=traefik-public" + # Configure entrypoint - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" + # SSL configuration - "--certificatesresolvers.letsencryptresolver.acme.httpchallenge=true" - "--certificatesresolvers.letsencryptresolver.acme.httpchallenge.entrypoint=web" - "--certificatesresolvers.letsencryptresolver.acme.email=user@domaine.com" - "--certificatesresolvers.letsencryptresolver.acme.storage=/letsencrypt/acme.json" + # Global HTTP -> HTTPS + - "--entrypoints.web.http.redirections.entryPoint.to=websecure" + - "--entrypoints.web.http.redirections.entryPoint.scheme=https" + # Enable dashboard - "--api.dashboard=true" ports: - 80:80 @@ -98,18 +105,25 @@ version: '3' services: reverse-proxy: - image: traefik:v2.0.2 + image: traefik:v2.3.4 command: + # Docker swarm configuration - "--providers.docker.endpoint=unix:///var/run/docker.sock" - "--providers.docker.swarmMode=true" - "--providers.docker.exposedbydefault=false" - "--providers.docker.network=traefik-public" + # Configure entrypoint - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" + # SSL configuration - "--certificatesresolvers.letsencryptresolver.acme.httpchallenge=true" - "--certificatesresolvers.letsencryptresolver.acme.httpchallenge.entrypoint=web" - "--certificatesresolvers.letsencryptresolver.acme.email=user@domaine.com" - "--certificatesresolvers.letsencryptresolver.acme.storage=/letsencrypt/acme.json" + # Global HTTP -> HTTPS + - "--entrypoints.web.http.redirections.entryPoint.to=websecure" + - "--entrypoints.web.http.redirections.entryPoint.scheme=https" + # Enable dashboard - "--api.dashboard=true" ports: - 80:80 @@ -169,18 +183,25 @@ version: '3' services: reverse-proxy: - image: traefik:v2.0.2 + image: traefik:v2.3.4 command: + # Docker swarm configuration - "--providers.docker.endpoint=unix:///var/run/docker.sock" - "--providers.docker.swarmMode=true" - "--providers.docker.exposedbydefault=false" - "--providers.docker.network=traefik-public" + # Configure entrypoint - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" + # SSL configuration - "--certificatesresolvers.letsencryptresolver.acme.httpchallenge=true" - "--certificatesresolvers.letsencryptresolver.acme.httpchallenge.entrypoint=web" - "--certificatesresolvers.letsencryptresolver.acme.email=user@domaine.com" - "--certificatesresolvers.letsencryptresolver.acme.storage=/letsencrypt/acme.json" + # Global HTTP -> HTTPS + - "--entrypoints.web.http.redirections.entryPoint.to=websecure" + - "--entrypoints.web.http.redirections.entryPoint.scheme=https" + # Enable dashboard - "--api.dashboard=true" ports: - 80:80 diff --git a/content/posts/how-to-install-traefik-2-docker-swarm.md b/content/posts/how-to-install-traefik-2-docker-swarm.md index 5a9e670..3766f6b 100644 --- a/content/posts/how-to-install-traefik-2-docker-swarm.md +++ b/content/posts/how-to-install-traefik-2-docker-swarm.md @@ -1,4 +1,4 @@ -+++ ++++ title = "How to install Traefik 2.x on a Docker Swarm" date = "2019-10-21" author = "Aloïs Micard" @@ -42,7 +42,7 @@ version: '3' services: reverse-proxy: - image: traefik:v2.0.2 + image: traefik:v2.3.4 command: - "--providers.docker.endpoint=unix:///var/run/docker.sock" - "--providers.docker.swarmMode=true" @@ -188,14 +188,17 @@ version: '3' services: reverse-proxy: - image: traefik:v2.0.2 + image: traefik:v2.3.4 command: + # Docker swarm configuration - "--providers.docker.endpoint=unix:///var/run/docker.sock" - "--providers.docker.swarmMode=true" - "--providers.docker.exposedbydefault=false" - "--providers.docker.network=traefik-public" + # Configure entrypoint - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" + # SSL configuration - "--certificatesresolvers.letsencryptresolver.acme.httpchallenge=true" - "--certificatesresolvers.letsencryptresolver.acme.httpchallenge.entrypoint=web" - "--certificatesresolvers.letsencryptresolver.acme.email=user@domaine.com" @@ -307,21 +310,17 @@ reserved TLD used for local area network) ## Bonus: Create an automatic HTTPS redirect -If you want to redirect all HTTP traffic to HTTPS it can be done by easily by using a Middleware. Just add the following -labels to to the Traefik configuration file. +If you want to redirect all HTTP traffic to HTTPS it can be done by easily: ```yaml -labels: - - "traefik.enable=true" - - "traefik.http.services.traefik.loadbalancer.server.port=888" # required by swarm but not used. - - "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)" - - "traefik.http.routers.http-catchall.entrypoints=web" - - "traefik.http.routers.http-catchall.middlewares=redirect-to-https@docker" - - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" +command: + ... + # Global HTTP -> HTTPS + - "--entrypoints.web.http.redirections.entryPoint.to=websecure" + - "--entrypoints.web.http.redirections.entryPoint.scheme=https" ``` -It will create a router named *http-catchall* that will intercept all HTTP request (using the hostregexp) and will -forward it to the router named redirect-to-https. This router will perform a redirection to the HTTPS scheme. +It will create a global redirection from all HTTP traffic to HTTPS. --- @@ -332,18 +331,24 @@ version: '3' services: reverse-proxy: - image: traefik:v2.0.2 + image: traefik:v2.3.4 command: + # Docker swarm configuration - "--providers.docker.endpoint=unix:///var/run/docker.sock" - "--providers.docker.swarmMode=true" - "--providers.docker.exposedbydefault=false" - "--providers.docker.network=traefik-public" + # Configure entrypoint - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" + # SSL configuration - "--certificatesresolvers.letsencryptresolver.acme.httpchallenge=true" - "--certificatesresolvers.letsencryptresolver.acme.httpchallenge.entrypoint=web" - "--certificatesresolvers.letsencryptresolver.acme.email=user@domaine.com" - "--certificatesresolvers.letsencryptresolver.acme.storage=/letsencrypt/acme.json" + # Global HTTP -> HTTPS + - "--entrypoints.web.http.redirections.entryPoint.to=websecure" + - "--entrypoints.web.http.redirections.entryPoint.scheme=https" ports: - 80:80 - 443:443