http: routers: http-catchall: rule: "HostRegexp(`{host:.+}`)" entryPoints: - web middlewares: - redirect-to-https service: noop %{~ for _, service in services } %{~ for _, subservice in service } ${subservice.name}: rule: "Host(`${subservice.host}${subservice.host != "" ? "." : ""}${subservice.domain}`)" entryPoints: - websecure service: ${subservice.name} tls: certResolver: letsencrypt %{~ endfor } %{~ endfor } nextcloud: rule: "Host(`nextcloud.aldon.fr`)" entryPoints: - websecure service: nextcloud tls: certResolver: letsencrypt rocket: rule: "Host(`discussion.fefan.fr`)" entryPoints: - websecure service: rocket tls: certResolver: letsencrypt wiki: rule: "Host(`benoit.mathieu.wiki`)" entryPoints: - websecure service: wiki tls: certResolver: letsencrypt vaultwarden: rule: "Host(`vaultwarden.aldon.fr`)" entryPoints: - websecure service: vaultwarden tls: certResolver: letsencrypt keycloak: rule: "Host(`keycloak.aldon.fr`)" entryPoints: - websecure service: keycloak tls: certResolver: letsencrypt services: %{~ for _, service in services } %{~ for _, subservice in service } ${subservice.name}: loadBalancer: passHostHeader: true servers: - url: "http://${subservice.ip}:${subservice.port}" %{~ endfor } %{~ endfor } noop: loadBalancer: servers: - url: "http://127.0.0.1" nextcloud: loadBalancer: passHostHeader: true servers: - url: "http://192.168.1.30:11000" rocket: loadBalancer: passHostHeader: true servers: - url: "http://192.168.1.15:3000" wiki: loadBalancer: passHostHeader: true servers: - url: "http://192.168.1.38:8080" vaultwarden: loadBalancer: passHostHeader: true servers: - url: "http://192.168.1.36:80" keycloak: loadBalancer: passHostHeader: true servers: - url: "http://192.168.1.34:8080" middlewares: redirect-to-https: redirectScheme: scheme: https