From 81ca6ca52292447347614f98ef6c37568ba845c0 Mon Sep 17 00:00:00 2001 From: Rocket-Quack <202538874+Rocket-Quack@users.noreply.github.com> Date: Mon, 19 Jan 2026 15:23:06 +0100 Subject: [PATCH 1/4] chore(traefik): usage of v3 traefik with v2 rule syntax --- overrides/compose.https.yaml | 5 ++++- overrides/compose.proxy.yaml | 5 ++++- overrides/compose.traefik-ssl.yaml | 3 +++ overrides/compose.traefik.yaml | 5 ++++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/overrides/compose.https.yaml b/overrides/compose.https.yaml index 9096e560..66ca8d06 100644 --- a/overrides/compose.https.yaml +++ b/overrides/compose.https.yaml @@ -8,11 +8,14 @@ services: - traefik.http.routers.frontend-http.rule=Host(${SITES:?List of sites not set}) proxy: - image: traefik:v2.11 + image: traefik:v3.6 restart: unless-stopped command: - --providers.docker=true - --providers.docker.exposedbydefault=false + # Keep v2 rule syntax for now + # Ensure compatibility with existing labels (will be removed if v3 transistion is complete) + - --core.defaultRuleSyntax=v2 - --entrypoints.web.address=:80 - --entrypoints.web.http.redirections.entrypoint.to=websecure - --entrypoints.web.http.redirections.entrypoint.scheme=https diff --git a/overrides/compose.proxy.yaml b/overrides/compose.proxy.yaml index 32ce9fab..39b36749 100644 --- a/overrides/compose.proxy.yaml +++ b/overrides/compose.proxy.yaml @@ -7,10 +7,13 @@ services: - traefik.http.routers.frontend-http.rule=HostRegexp(`{any:.+}`) proxy: - image: traefik:v2.11 + image: traefik:v3.6 command: - --providers.docker - --providers.docker.exposedbydefault=false + # Keep v2 rule syntax for now + # Ensure compatibility with existing labels (will be removed if v3 transistion is complete) + - --core.defaultRuleSyntax=v2 - --entrypoints.web.address=:80 ports: - ${HTTP_PUBLISH_PORT:-80}:80 diff --git a/overrides/compose.traefik-ssl.yaml b/overrides/compose.traefik-ssl.yaml index b83cb8e4..1c3a0ad2 100644 --- a/overrides/compose.traefik-ssl.yaml +++ b/overrides/compose.traefik-ssl.yaml @@ -23,6 +23,9 @@ services: - --providers.docker=true # Do not expose all Docker services, only the ones explicitly exposed - --providers.docker.exposedbydefault=false + # Keep v2 rule syntax for now + # Ensure compatibility with existing labels (will be removed if v3 transistion is complete) + - --core.defaultRuleSyntax=v2 # Create an entrypoint http listening on port 80 - --entrypoints.http.address=:80 # Create an entrypoint https listening on port 443 diff --git a/overrides/compose.traefik.yaml b/overrides/compose.traefik.yaml index 7765e19d..1846597f 100644 --- a/overrides/compose.traefik.yaml +++ b/overrides/compose.traefik.yaml @@ -1,6 +1,6 @@ services: traefik: - image: "traefik:v2.11" + image: "traefik:v3.6" restart: unless-stopped labels: # Enable Traefik for this service, to make it available in the public network @@ -24,6 +24,9 @@ services: - --providers.docker=true # Do not expose all Docker services, only the ones explicitly exposed - --providers.docker.exposedbydefault=false + # Keep v2 rule syntax for now + # Ensure compatibility with existing labels (will be removed if v3 transistion is complete) + - --core.defaultRuleSyntax=v2 # Create an entrypoint http listening on port 80 - --entrypoints.http.address=:80 # Enable the access log, with HTTP requests From 166a9040414d522a9d7ea2faf0f53b17cad21931 Mon Sep 17 00:00:00 2001 From: Rocket-Quack <202538874+Rocket-Quack@users.noreply.github.com> Date: Mon, 19 Jan 2026 15:24:43 +0100 Subject: [PATCH 2/4] docs: deprecation note for SITES in favor of SITES_RULE for v3 traefik --- docs/02-setup/04-env-variables.md | 4 ++++ docs/02-setup/05-overrides.md | 2 ++ 2 files changed, 6 insertions(+) diff --git a/docs/02-setup/04-env-variables.md b/docs/02-setup/04-env-variables.md index 1001c888..c49cdc50 100644 --- a/docs/02-setup/04-env-variables.md +++ b/docs/02-setup/04-env-variables.md @@ -60,6 +60,10 @@ SITES=`mysite.example.com` SITES=`{any:.+}` ``` +>Note: `SITES` currently supplies the host list that goes into the `Host(...)` rules. Once the Traefik v3 transition is completed, the plan is to switch to `SITES_RULE` (full rule expression) and deprecate `SITES` to map the Traefik Rule Syntax. + +>Currently the used syntax is pinned to v2 via `--core.defaultRuleSyntax=v2`). + --- ## Site Configuration diff --git a/docs/02-setup/05-overrides.md b/docs/02-setup/05-overrides.md index 9188489d..783868f7 100644 --- a/docs/02-setup/05-overrides.md +++ b/docs/02-setup/05-overrides.md @@ -4,6 +4,8 @@ Overrides extend the base compose.yaml with additional services or modify existi docker compose -f compose.yaml -f overrides/compose.mariadb.yaml -f overrides/compose.redis.yaml config > compose.custom.yaml ``` +Note: The Traefik-based overrides uses Traefik v3.6 and `--core.defaultRuleSyntax=v2` for compatibility with existing traefik v2.11. This flag is temporary and will be removed once the transition to v3.6 is completed. + | Overrider | Purpose | Additional Info | | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | | **Database** | | | From a6e92bf984f5b1f22c0b82efd4b85644daf716f5 Mon Sep 17 00:00:00 2001 From: Rocket-Quack <202538874+Rocket-Quack@users.noreply.github.com> Date: Mon, 19 Jan 2026 17:36:49 +0100 Subject: [PATCH 3/4] fix(lint): Traefik transition comment typo --- overrides/compose.https.yaml | 2 +- overrides/compose.proxy.yaml | 2 +- overrides/compose.traefik-ssl.yaml | 2 +- overrides/compose.traefik.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/overrides/compose.https.yaml b/overrides/compose.https.yaml index 66ca8d06..536ef276 100644 --- a/overrides/compose.https.yaml +++ b/overrides/compose.https.yaml @@ -14,7 +14,7 @@ services: - --providers.docker=true - --providers.docker.exposedbydefault=false # Keep v2 rule syntax for now - # Ensure compatibility with existing labels (will be removed if v3 transistion is complete) + # Ensure compatibility with existing labels (will be removed if v3 transition is complete) - --core.defaultRuleSyntax=v2 - --entrypoints.web.address=:80 - --entrypoints.web.http.redirections.entrypoint.to=websecure diff --git a/overrides/compose.proxy.yaml b/overrides/compose.proxy.yaml index 39b36749..d757833e 100644 --- a/overrides/compose.proxy.yaml +++ b/overrides/compose.proxy.yaml @@ -12,7 +12,7 @@ services: - --providers.docker - --providers.docker.exposedbydefault=false # Keep v2 rule syntax for now - # Ensure compatibility with existing labels (will be removed if v3 transistion is complete) + # Ensure compatibility with existing labels (will be removed if v3 transition is complete) - --core.defaultRuleSyntax=v2 - --entrypoints.web.address=:80 ports: diff --git a/overrides/compose.traefik-ssl.yaml b/overrides/compose.traefik-ssl.yaml index 1c3a0ad2..11bb92f9 100644 --- a/overrides/compose.traefik-ssl.yaml +++ b/overrides/compose.traefik-ssl.yaml @@ -24,7 +24,7 @@ services: # Do not expose all Docker services, only the ones explicitly exposed - --providers.docker.exposedbydefault=false # Keep v2 rule syntax for now - # Ensure compatibility with existing labels (will be removed if v3 transistion is complete) + # Ensure compatibility with existing labels (will be removed if v3 transition is complete) - --core.defaultRuleSyntax=v2 # Create an entrypoint http listening on port 80 - --entrypoints.http.address=:80 diff --git a/overrides/compose.traefik.yaml b/overrides/compose.traefik.yaml index 1846597f..4c3b8a88 100644 --- a/overrides/compose.traefik.yaml +++ b/overrides/compose.traefik.yaml @@ -25,7 +25,7 @@ services: # Do not expose all Docker services, only the ones explicitly exposed - --providers.docker.exposedbydefault=false # Keep v2 rule syntax for now - # Ensure compatibility with existing labels (will be removed if v3 transistion is complete) + # Ensure compatibility with existing labels (will be removed if v3 transition is complete) - --core.defaultRuleSyntax=v2 # Create an entrypoint http listening on port 80 - --entrypoints.http.address=:80 From a1265baed67279cdcc0c6cecf7ac412aa71605b6 Mon Sep 17 00:00:00 2001 From: RocketQuack <202538874+Rocket-Quack@users.noreply.github.com> Date: Mon, 19 Jan 2026 19:07:33 +0100 Subject: [PATCH 4/4] chore: run pre-commit fixes --- docs/02-setup/04-env-variables.md | 4 ++-- overrides/compose.https.yaml | 2 +- overrides/compose.proxy.yaml | 2 +- overrides/compose.traefik-ssl.yaml | 2 +- overrides/compose.traefik.yaml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/02-setup/04-env-variables.md b/docs/02-setup/04-env-variables.md index c49cdc50..d169d518 100644 --- a/docs/02-setup/04-env-variables.md +++ b/docs/02-setup/04-env-variables.md @@ -60,9 +60,9 @@ SITES=`mysite.example.com` SITES=`{any:.+}` ``` ->Note: `SITES` currently supplies the host list that goes into the `Host(...)` rules. Once the Traefik v3 transition is completed, the plan is to switch to `SITES_RULE` (full rule expression) and deprecate `SITES` to map the Traefik Rule Syntax. +> Note: `SITES` currently supplies the host list that goes into the `Host(...)` rules. Once the Traefik v3 transition is completed, the plan is to switch to `SITES_RULE` (full rule expression) and deprecate `SITES` to map the Traefik Rule Syntax. ->Currently the used syntax is pinned to v2 via `--core.defaultRuleSyntax=v2`). +> Currently the used syntax is pinned to v2 via `--core.defaultRuleSyntax=v2`). --- diff --git a/overrides/compose.https.yaml b/overrides/compose.https.yaml index 536ef276..8e70fdfa 100644 --- a/overrides/compose.https.yaml +++ b/overrides/compose.https.yaml @@ -13,7 +13,7 @@ services: command: - --providers.docker=true - --providers.docker.exposedbydefault=false - # Keep v2 rule syntax for now + # Keep v2 rule syntax for now # Ensure compatibility with existing labels (will be removed if v3 transition is complete) - --core.defaultRuleSyntax=v2 - --entrypoints.web.address=:80 diff --git a/overrides/compose.proxy.yaml b/overrides/compose.proxy.yaml index d757833e..6b668437 100644 --- a/overrides/compose.proxy.yaml +++ b/overrides/compose.proxy.yaml @@ -11,7 +11,7 @@ services: command: - --providers.docker - --providers.docker.exposedbydefault=false - # Keep v2 rule syntax for now + # Keep v2 rule syntax for now # Ensure compatibility with existing labels (will be removed if v3 transition is complete) - --core.defaultRuleSyntax=v2 - --entrypoints.web.address=:80 diff --git a/overrides/compose.traefik-ssl.yaml b/overrides/compose.traefik-ssl.yaml index 11bb92f9..2770ce5b 100644 --- a/overrides/compose.traefik-ssl.yaml +++ b/overrides/compose.traefik-ssl.yaml @@ -23,7 +23,7 @@ services: - --providers.docker=true # Do not expose all Docker services, only the ones explicitly exposed - --providers.docker.exposedbydefault=false - # Keep v2 rule syntax for now + # Keep v2 rule syntax for now # Ensure compatibility with existing labels (will be removed if v3 transition is complete) - --core.defaultRuleSyntax=v2 # Create an entrypoint http listening on port 80 diff --git a/overrides/compose.traefik.yaml b/overrides/compose.traefik.yaml index 4c3b8a88..6e34acf4 100644 --- a/overrides/compose.traefik.yaml +++ b/overrides/compose.traefik.yaml @@ -24,7 +24,7 @@ services: - --providers.docker=true # Do not expose all Docker services, only the ones explicitly exposed - --providers.docker.exposedbydefault=false - # Keep v2 rule syntax for now + # Keep v2 rule syntax for now # Ensure compatibility with existing labels (will be removed if v3 transition is complete) - --core.defaultRuleSyntax=v2 # Create an entrypoint http listening on port 80