FIX: MapStore Traefik config + Pulsar Manager routing

This commit is contained in:
Eric
2026-05-07 15:07:14 -04:00
parent 37d6c25070
commit dc571fbadd
48 changed files with 1355 additions and 2 deletions

14
dynamic/01-gitea.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
gitea:
rule: "Host(`gitea.digitribe.fr`)"
entryPoints:
- websecure
service: gitea
tls:
certResolver: letsencrypt
services:
gitea:
loadBalancer:
servers:
- url: "http://gitea:3000"

14
dynamic/02-honcho.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
honcho:
rule: "Host(`honcho.digitribe.fr`)"
entryPoints:
- websecure
service: honcho
tls:
certResolver: letsencrypt
services:
honcho:
loadBalancer:
servers:
- url: "http://honcho-api-1:8000"

14
dynamic/03-phpipam.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
phpipam:
rule: "Host(`phpipam.digitribe.fr`)"
entryPoints:
- websecure
service: phpipam
tls:
certResolver: letsencrypt
services:
phpipam:
loadBalancer:
servers:
- url: "http://phpipam-phpipam-web-1:80"

2
dynamic/04-geoserver.yml Normal file
View File

@@ -0,0 +1,2 @@
# Removed - redundant with routes.yml which uses correct container name
# geoserver router is defined in routes.yml

14
dynamic/05-onix.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
onix:
rule: "Host(`onix.digitribe.fr`)"
entryPoints:
- websecure
service: onix
tls:
certResolver: letsencrypt
services:
onix:
loadBalancer:
servers:
- url: "http://onix-adapter:8081"

14
dynamic/06-openclaw.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
openclaw:
rule: "Host(`openclaw.digitribe.fr`)"
entryPoints:
- websecure
service: openclaw
tls:
certResolver: letsencrypt
services:
openclaw:
loadBalancer:
servers:
- url: "http://openclaw-openclaw-gateway-1:18789"

14
dynamic/07-localai.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
localai:
rule: "Host(`localai.digitribe.fr`)"
entryPoints:
- websecure
service: localai
tls:
certResolver: letsencrypt
services:
localai:
loadBalancer:
servers:
- url: "http://localai-api-1:8080"

14
dynamic/09-pgadmin.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
pgadmin:
rule: "Host(`pgadmin.digitribe.fr`)"
entryPoints:
- websecure
service: pgadmin
tls:
certResolver: letsencrypt
services:
pgadmin:
loadBalancer:
servers:
- url: "http://scripts-pgadmin-1:80"

View File

@@ -0,0 +1,14 @@
http:
routers:
orion:
rule: "Host(`fiware-orion.digitribe.fr`)"
entryPoints:
- websecure
service: orion
tls:
certResolver: letsencrypt
services:
orion:
loadBalancer:
servers:
- url: "http://fiware-gis-quickstart-orion-1:1026"

View File

@@ -0,0 +1,14 @@
http:
routers:
ngsiproxy:
rule: "Host(`ngsiproxy.digitribe.fr`)"
entryPoints:
- websecure
service: ngsiproxy
tls:
certResolver: letsencrypt
services:
ngsiproxy:
loadBalancer:
servers:
- url: "http://fiware-gis-quickstart-ngsiproxy-1:3000"

14
dynamic/12-wg-easy.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
wg:
rule: "Host(`wg.digitribe.fr`)"
entryPoints:
- websecure
service: wg
tls:
certResolver: letsencrypt
services:
wg:
loadBalancer:
servers:
- url: "http://wg-easy:51821"

22
dynamic/13-geonetwork.yml Normal file
View File

@@ -0,0 +1,22 @@
http:
routers:
geonetwork:
rule: "Host(`geonetwork.digitribe.fr`)"
entryPoints:
- websecure
service: geonetwork
tls:
certResolver: letsencrypt
middlewares:
- geonetwork-root-redirect
middlewares:
geonetwork-root-redirect:
redirectRegex:
regex: "^/$"
replacement: "/geonetwork"
permanent: true
services:
geonetwork:
loadBalancer:
servers:
- url: "http://172.19.0.15:8080"

14
dynamic/14-ofn.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
ofn:
rule: "Host(`ofn.digitribe.fr`)"
entryPoints:
- websecure
service: ofn
tls:
certResolver: letsencrypt
services:
ofn:
loadBalancer:
servers:
- url: "http://openfoodnetwork-db-1:3000"

View File

@@ -0,0 +1,16 @@
http:
routers:
traefik-dashboard:
rule: "Host(`traefik.digitribe.fr`)"
entryPoints:
- websecure
service: api@internal
middlewares:
- traefik-auth
tls:
certResolver: letsencrypt
middlewares:
traefik-auth:
basicAuth:
users:
- "admin:$apr1$uTpnzwni$.N5Lep8M9ZaZMhasg9xgF."

204
dynamic/16-mapstore.yml.bak Normal file
View File

@@ -0,0 +1,204 @@
http:
routers:
mapstore-root:
rule: "Host(`mapstore.digitribe.fr`) && Path(`/`)"
entryPoints:
- websecure
service: mapstore-root-redirect
tls:
certResolver: letsencrypt
middlewares:
- mapstore-redirect
mapstore-app:
rule: "Host(`mapstore.digitribe.fr`) && PathPrefix(`/mapstore`)"
entryPoints:
- websecure
service: mapstore
tls:
certResolver: letsencrypt
mapstore-static:
rule: "Host(`mapstore.digitribe.fr`) && PathPrefix(`/dist`)"
entryPoints:
- websecure
service: mapstore
tls:
certResolver: letsencrypt
mapstore-static2:
rule: "Host(`mapstore.digitribe.fr`) && PathPrefix(`/assets`)"
entryPoints:
- websecure
service: mapstore
tls:
certResolver: letsencrypt
mapstore-static3:
rule: "Host(`mapstore.digitribe.fr`) && PathPrefix(`/web`)"
entryPoints:
- websecure
service: mapstore
tls:
certResolver: letsencrypt
mapstore-static4:
rule: "Host(`mapstore.digitribe.fr`) && PathPrefix(`/printing`)"
entryPoints:
- websecure
service: mapstore
tls:
certResolver: letsencrypt
mapstore-static5:
rule: "Host(`mapstore.digitribe.fr`) && PathPrefix(`/themes`)"
entryPoints:
- websecure
service: mapstore
tls:
certResolver: letsencrypt
mapstore-static6:
rule: "Host(`mapstore.digitribe.fr`) && PathPrefix(`/translations`)"
entryPoints:
- websecure
service: mapstore
tls:
certResolver: letsencrypt
mapstore-static7:
rule: "Host(`mapstore.digitribe.fr`) && PathPrefix(`/configs`)"
entryPoints:
- websecure
service: mapstore
tls:
certResolver: letsencrypt
mapstore-exact:
rule: "Host(`mapstore.digitribe.fr`) && PathPrefix(`/proxy`)"
entryPoints:
- websecure
service: mapstore-proxy
tls:
certResolver: letsencrypt
middlewares:
- mapstore-proxy-prefix
mapstore-geoserver:
rule: "Host(`mapstore.digitribe.fr`) && PathPrefix(`/geoserver`)"
entryPoints:
- websecure
service: mapstore-geoserver-backend
tls:
certResolver: letsencrypt
mapstore-geonetwork:
rule: "Host(`mapstore.digitribe.fr`) && PathPrefix(`/geonetwork`)"
entryPoints:
- websecure
service: geonetwork
tls:
certResolver: letsencrypt
mapstore-datahub:
rule: "Host(`mapstore.digitribe.fr`) && PathPrefix(`/datahub`)"
entryPoints:
- websecure
service: datahub
tls:
certResolver: letsencrypt
mapstore-import:
rule: "Host(`mapstore.digitribe.fr`) && PathPrefix(`/import`)"
entryPoints:
- websecure
service: import
tls:
certResolver: letsencrypt
middlewares:
- import-strip
mapstore-datafeeder:
rule: "Host(`mapstore.digitribe.fr`) && PathPrefix(`/datafeeder`)"
entryPoints:
- websecure
service: datafeeder
tls:
certResolver: letsencrypt
middlewares:
- datafeeder-auth
- datafeeder-strip
- datafeeder-add
middlewares:
mapstore-redirect:
redirectRegex:
regex: "^/$"
replacement: "/mapstore/"
permanent: true
datafeeder-auth:
headers:
customRequestHeaders:
sec-proxy: "true"
sec-username: "idatafeeder"
datafeeder-strip:
stripPrefix:
prefixes:
- "/datafeeder"
datafeeder-add:
addPrefix:
prefix: "/datafeeder"
import-strip:
stripPrefix:
prefixes:
- "/import"
forceSlash: true
mapstore-prefix:
addPrefix:
prefix: "/mapstore"
mapstore-strip-prefix:
stripPrefix:
prefixes:
- "/mapstore"
mapstore-proxy-prefix:
addPrefix:
prefix: "/mapstore"
services:
mapstore-root-redirect:
loadBalancer:
servers:
- url: "http://172.29.0.18:80"
mapstore:
loadBalancer:
servers:
- url: "http://172.29.0.18:80"
mapstore-proxy:
loadBalancer:
servers:
- url: "http://172.29.0.18:80"
mapstore-geoserver-backend:
loadBalancer:
servers:
- url: "http://172.29.0.17:8080"
geonetwork:
loadBalancer:
servers:
- url: "http://172.19.0.15:8080"
datahub:
loadBalancer:
servers:
- url: "http://172.19.0.2:80"
import:
loadBalancer:
servers:
- url: "http://172.19.0.8:80"
datafeeder:
loadBalancer:
servers:
- url: "http://172.19.0.22:8080"
datafeeder-gateway:
loadBalancer:
servers:
- url: "http://172.19.0.20:8080"# test 1776975088

View File

@@ -0,0 +1,14 @@
http:
routers:
georchestra:
rule: "Host(`georchestra.digitribe.fr`)"
entryPoints:
- websecure
service: georchestra
tls:
certResolver: letsencrypt
services:
georchestra:
loadBalancer:
servers:
- url: "http://172.19.0.20:8080"

14
dynamic/18-console.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
console:
rule: "Host(`georchestra-console.digitribe.fr`)"
entryPoints:
- websecure
service: console
tls:
certResolver: letsencrypt
services:
console:
loadBalancer:
servers:
- url: "http://172.19.0.9:8080/console"

14
dynamic/19-analytics.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
analytics:
rule: "Host(`analytics.digitribe.fr`)"
entryPoints:
- websecure
service: analytics
tls:
certResolver: letsencrypt
services:
analytics:
loadBalancer:
servers:
- url: "http://172.19.0.19:8080/analytics"

14
dynamic/20-datafeeder.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
datafeeder:
rule: "Host(`datafeeder.digitribe.fr`)"
entryPoints:
- websecure
service: datafeeder
tls:
certResolver: letsencrypt
services:
datafeeder:
loadBalancer:
servers:
- url: "http://datafeeder:8080/datafeeder"

14
dynamic/20-grafana.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
grafana:
rule: "Host(`grafana.digitribe.fr`)"
entryPoints:
- websecure
service: grafana
tls:
certResolver: letsencrypt
services:
grafana:
loadBalancer:
servers:
- url: "http://smart-city-grafana:3000"

14
dynamic/21-nodered.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
nodered:
rule: "Host(`node-red.digitribe.fr`)"
entryPoints:
- websecure
service: nodered
tls:
certResolver: letsencrypt
services:
nodered:
loadBalancer:
servers:
- url: "http://172.19.0.24:1880"

14
dynamic/22-influxdb.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
influxdb:
rule: "Host(`influxdb.digitribe.fr`)"
entryPoints:
- websecure
service: influxdb
tls:
certResolver: letsencrypt
services:
influxdb:
loadBalancer:
servers:
- url: "http://smart-city-influxdb:8086"

View File

@@ -0,0 +1,16 @@
http:
routers:
mosquitto2-dashboard:
rule: "Host(`mosquitto2.digitribe.fr`)"
entryPoints:
- web
- websecure
service: mosquitto2-dashboard-service
tls:
certResolver: letsencrypt
services:
mosquitto2-dashboard-service:
loadBalancer:
servers:
- url: "http://bunkerm_bunkerm_1:2000"

14
dynamic/22-mosquitto2.yml Normal file
View File

@@ -0,0 +1,14 @@
tcp:
routers:
mosquitto2:
rule: "HostSNI(`mosquitto2.digitribe.fr`)"
entryPoints:
- mqtt
service: mosquitto2
tls: {}
services:
mosquitto2:
loadBalancer:
servers:
- address: "172.29.0.33:1900"

13
dynamic/22-redpanda.yml Normal file
View File

@@ -0,0 +1,13 @@
http:
routers:
redpanda:
rule: "Host(`redpanda.digitribe.fr`)"
entryPoints:
- websecure
tls: true
service: redpanda-console
services:
redpanda-console:
loadBalancer:
servers:
- url: "http://smart-city-redpanda-console:8080"

14
dynamic/23-emqx.yml Normal file
View File

@@ -0,0 +1,14 @@
tcp:
routers:
emqx:
rule: "HostSNI(`emqx.digitribe.fr`)"
entryPoints:
- mqtt
service: emqx
tls: {}
services:
emqx:
loadBalancer:
servers:
- address: "emqx_emqx_1:1883"

View File

@@ -0,0 +1,28 @@
http:
services:
ogc-api-records:
loadBalancer:
servers:
- url: "http://172.29.0.5:8080"
ogc-api-records-me:
loadBalancer:
servers:
- url: "http://172.29.0.7:80"
routers:
ogc-api-records-me:
rule: "PathPrefix(`/ogc-api-records/me`)"
service: ogc-api-records-me
priority: 100
entryPoints:
- websecure
tls:
certResolver: letsencrypt
ogc-api-records:
rule: "PathPrefix(`/ogc-api-records`)"
service: ogc-api-records
priority: 1
entryPoints:
- websecure
tls:
certResolver: letsencrypt

14
dynamic/25-mosquitto.yml Normal file
View File

@@ -0,0 +1,14 @@
http:
routers:
mosquitto-ws:
rule: "Host(`mosquitto-ws.digitribe.fr`)"
entryPoints:
- websecure
service: mosquitto-ws
tls:
certResolver: letsencrypt
services:
mosquitto-ws:
loadBalancer:
servers:
- url: "http://bunkerm-bunkerm-1:2000"

15
dynamic/26-mosquitto.yml Normal file
View File

@@ -0,0 +1,15 @@
tcp:
routers:
mosquitto:
rule: "HostSNI(`mosquitto.digitribe.fr`)"
entryPoints:
- mqtt
service: mosquitto
tls:
certResolver: letsencrypt
services:
mosquitto:
loadBalancer:
servers:
- address: "scripts-mosquitto-1:1883"

15
dynamic/28-emqx-web.yml Normal file
View File

@@ -0,0 +1,15 @@
http:
routers:
emqx-dashboard:
rule: "Host(`emqx.digitribe.fr`)"
entryPoints:
- websecure
service: emqx-service
tls:
certResolver: letsencrypt
services:
emqx-service:
loadBalancer:
servers:
- url: "http://emqx_emqx_1:18083"

View File

@@ -0,0 +1,14 @@
tcp:
routers:
frost-mqtt-tcp:
entryPoints:
- mqtt
rule: "HostSNI(`frost.digitribe.fr`)"
service: frost-mqtt-tcp-service
tls:
passthrough: true
services:
frost-mqtt-tcp-service:
loadBalancer:
servers:
- address: "172.29.0.10:1883"

View File

@@ -0,0 +1,14 @@
http:
routers:
frost-mqtt-ws:
rule: "Host(`frost.digitribe.fr`) && PathPrefix(`/mqtt`)"
entryPoints:
- websecure
service: frost-mqtt-ws-service
tls:
certResolver: letsencrypt
services:
frost-mqtt-ws-service:
loadBalancer:
servers:
- url: "http://frost_allinone-web-1:8089"

27
dynamic/30-microcks.yml Normal file
View File

@@ -0,0 +1,27 @@
http:
routers:
microcks:
rule: "Host(`microcks.digitribe.fr`)"
entryPoints:
- websecure
service: microcks-service
tls: {}
# NGSI-LD contexts pour Stellio (Stellio Java HTTP client ne peut pas résoudre uri.etsi.org)
ngsi-contexts:
rule: "Host(`contexts.digitribe.fr`)"
entryPoints:
- websecure
service: microcks-specs-service
tls: {}
services:
microcks-service:
loadBalancer:
servers:
- url: "http://microcks:8080"
microcks-specs-service:
loadBalancer:
servers:
- url: "http://microcks-specs-server:8085"

View File

@@ -0,0 +1,12 @@
http:
routers:
mosquitto-ws:
rule: "Host(`mosquitto.digitribe.fr`) && PathPrefix(`/mqtt`)"
entryPoints:
- websecure
service: mosquitto-ws-service
services:
mosquitto-ws-service:
loadBalancer:
servers:
- url: "http://host.docker.internal:38084"

22
dynamic/30-prometheus.yml Normal file
View File

@@ -0,0 +1,22 @@
http:
middlewares:
prometheus-auth:
basicAuth:
usersFile: "/etc/traefik/dynamic/auth/prometheus.htpasswd"
routers:
prometheus:
rule: "Host(`prometheus.digitribe.fr`)"
entryPoints:
- websecure
middlewares:
- prometheus-auth
service: prometheus
tls:
certResolver: letsencrypt
services:
prometheus:
loadBalancer:
servers:
- url: "http://prometheus-brokers:9090"

View File

@@ -0,0 +1,14 @@
tcp:
routers:
mosquitto2-tcp:
entryPoints:
- mqtt
rule: HostSNI(`mosquitto2.digitribe.fr`)
service: mosquitto2-service
tls:
passthrough: true
services:
mosquitto2-service:
loadBalancer:
servers:
- address: bunkerm_bunkerm_1:1900

12
dynamic/99-test-mqtt.yml Normal file
View File

@@ -0,0 +1,12 @@
http:
routers:
test-mqtt:
rule: "Host(`mosquitto.digitribe.fr`)"
entryPoints:
- websecure
service: test-mqtt-service
services:
test-mqtt-service:
loadBalancer:
servers:
- url: "http://host.docker.internal:38084"

View File

@@ -0,0 +1 @@
admin:$apr1$fST4MKyc$Jlwbr1IHSSFYNfm07j3Q0.

17
dynamic/loki.yml Normal file
View File

@@ -0,0 +1,17 @@
# Loki — File-based routing (avoids Docker API version issue)
http:
routers:
loki:
rule: "Host(`loki.digitribe.fr`)"
entryPoints:
- websecure
service: loki
tls:
certResolver: letsencrypt
priority: 200
services:
loki:
loadBalancer:
servers:
- url: "http://172.29.0.27:3100"

12
dynamic/mainflux.yml Normal file
View File

@@ -0,0 +1,12 @@
http:
routers:
mainflux:
rule: "Host(`mainflux.digitribe.fr`)"
entryPoints: [websecure]
service: mainflux-nginx
tls: {}
services:
mainflux-nginx:
loadBalancer:
servers:
- url: "http://mainfluxlabs-nginx:80" # Port 80 (nginx), pas 3000

75
dynamic/openremote.yml Normal file
View File

@@ -0,0 +1,75 @@
# OpenRemote via Traefik v3 - File-based routing (CORRIGÉ 2026-05)
http:
routers:
openremote-manager:
rule: "Host(`openremote.digitribe.fr`)"
entryPoints:
- websecure
service: openremote-manager
middlewares:
- openremote-headers
tls:
certResolver: letsencrypt
openremote-manager-api:
rule: "Host(`openremote.digitribe.fr`) && PathPrefix(`/api/`)"
entryPoints:
- websecure
service: openremote-manager
middlewares:
- openremote-headers
priority: 100
tls:
certResolver: letsencrypt
# Console app config (static file) - rewrite vers /manager/consoleappconfig/
openremote-manager-consoleappconfig:
rule: "Host(`openremote.digitribe.fr`) && PathPrefix(`/consoleappconfig`)"
entryPoints:
- websecure
service: openremote-manager
middlewares:
- consoleappconfig-rewrite
- openremote-headers
priority: 95
tls:
certResolver: letsencrypt
# Keycloak sur le même domaine pour OIDC
openremote-keycloak:
rule: "Host(`openremote.digitribe.fr`) && PathPrefix(`/auth`)"
entryPoints:
- websecure
service: openremote-keycloak
middlewares:
- openremote-headers
priority: 90
tls:
certResolver: letsencrypt
middlewares:
# Rewrite /consoleappconfig/* vers /manager/consoleappconfig/*
consoleappconfig-rewrite:
replacePathRegex:
regex: "^/consoleappconfig/(.*)"
replacement: "/manager/consoleappconfig/$1"
# Headers requis pour OpenRemote (pas de Location: "https" !)
openremote-headers:
headers:
sslRedirect: true
customRequestHeaders:
X-Forwarded-Proto: "https"
X-Forwarded-Host: "openremote.digitribe.fr"
X-Forwarded-For: "10.0.0.0/8"
services:
openremote-manager:
loadBalancer:
servers:
- url: "http://openremote_manager_1:8080" # CORRIGÉ: underscore au lieu de tiret
openremote-keycloak:
loadBalancer:
servers:
- url: "http://openremote_keycloak_1:8080" # CORRIGÉ: underscore au lieu de tiret

17
dynamic/promtail.yml Normal file
View File

@@ -0,0 +1,17 @@
# Promtail — File-based routing
http:
routers:
promtail:
rule: "Host(`promtail.digitribe.fr`)"
entryPoints:
- websecure
service: promtail
tls:
certResolver: letsencrypt
priority: 200
services:
promtail:
loadBalancer:
servers:
- url: "http://smart-city-promtail:9080"

View File

@@ -5,6 +5,7 @@ http:
customRequestHeaders:
X-Forwarded-Host: "geoserver.digitribe.fr"
X-Forwarded-Proto: "https"
Origin: "https://geoserver.digitribe.fr"
geoserver-redirect:
replacePath:
path: "/geoserver/"
@@ -152,7 +153,7 @@ http:
geoserver:
loadBalancer:
servers:
- url: "http://172.29.0.13:8080"
- url: "http://172.29.0.8:8080"
onix:
loadBalancer:
servers:
@@ -168,7 +169,7 @@ http:
frost:
loadBalancer:
servers:
- url: "http://frost_allinone-web-1:8080"
- url: "http://frost_http-web-1:8080"
pgadmin:
loadBalancer:
servers:

30
dynamic/stellio.yml Normal file
View File

@@ -0,0 +1,30 @@
http:
routers:
stellio:
rule: "Host(`stellio.digitribe.fr`)"
entryPoints:
- websecure
service: stellio-api
tls:
certResolver: letsencrypt
priority: 200
microcks-specs:
rule: "Host(`microcks-specs.digitribe.fr`)"
entryPoints:
- websecure
service: microcks-specs-svc
tls:
certResolver: letsencrypt
priority: 200
services:
stellio-api:
loadBalancer:
servers:
- url: "http://stellio-api-gateway:8080"
microcks-specs-svc:
loadBalancer:
servers:
- url: "http://microcks-specs-server:8085"

13
dynamic/thingsboard.yml Normal file
View File

@@ -0,0 +1,13 @@
http:
routers:
thingsboard:
rule: "Host(`thingsboard.digitribe.fr`)"
entryPoints: [websecure]
service: thingsboard-haproxy
tls: {}
services:
thingsboard-haproxy:
loadBalancer:
servers:
- url: "http://172.29.0.9:8080" # thingsboard-core-1 sur traefik-public