From d911fd22010a9710c3166b6f036b1c516f92bbf1 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Fri, 10 Apr 2026 09:40:59 +0200 Subject: [PATCH] fix: add traefik.docker.network label to provisioned containers Traefik's Docker provider resolves container IPs using the configured default network ('cameleer'). For dynamically-created containers not managed by compose, this network name doesn't match. Adding the traefik.docker.network label explicitly tells Traefik to use the cameleer-traefik network for routing, fixing 504 Gateway Timeouts on /t/{slug}/api/* paths. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../cameleer/saas/provisioning/DockerTenantProvisioner.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/net/siegeln/cameleer/saas/provisioning/DockerTenantProvisioner.java b/src/main/java/net/siegeln/cameleer/saas/provisioning/DockerTenantProvisioner.java index 8b9f594..c5c3595 100644 --- a/src/main/java/net/siegeln/cameleer/saas/provisioning/DockerTenantProvisioner.java +++ b/src/main/java/net/siegeln/cameleer/saas/provisioning/DockerTenantProvisioner.java @@ -131,6 +131,7 @@ public class DockerTenantProvisioner implements TenantProvisioner { labels.put("traefik.http.middlewares.server-strip-" + slug + ".stripprefix.prefixes", prefix); labels.put("traefik.http.routers.server-" + slug + ".middlewares", "server-strip-" + slug); labels.put("traefik.http.services.server-" + slug + ".loadbalancer.server.port", "8081"); + labels.put("traefik.docker.network", props.traefikNetwork()); labels.put("cameleer.tenant", slug); labels.put("cameleer.role", "server"); @@ -206,6 +207,7 @@ public class DockerTenantProvisioner implements TenantProvisioner { labels.put("traefik.http.middlewares.ui-strip-" + slug + ".stripprefix.prefixes", prefix); labels.put("traefik.http.routers.ui-" + slug + ".middlewares", "ui-strip-" + slug); labels.put("traefik.http.services.ui-" + slug + ".loadbalancer.server.port", "80"); + labels.put("traefik.docker.network", props.traefikNetwork()); labels.put("cameleer.tenant", slug); labels.put("cameleer.role", "server-ui");