diff --git a/docker-compose.yml b/docker-compose.yml index 9e80445..ee4dd42 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -36,7 +36,11 @@ x-swarm-env: &swarm-env # DB separati per dominio: GA_DB_PATH: /app/state/runs.db STRATEGY_CRYPTO_DB_PATH: /app/state/strategy_crypto.db - # Subpath sotto cui la dashboard NiceGUI e' esposta da Traefik + # Subpath sotto cui la dashboard NiceGUI e' esposta da Traefik. + # IMPORTANT: NON usare StripPrefix middleware con questo. NiceGUI/Starlette + # gestisce internamente il root_path su request path che ARRIVANO con prefix. + # StripPrefix causa doppio prefix negli asset URL (NiceGUI prefixa + uvicorn + # rilegge X-Forwarded-Prefix e prefixa di nuovo). DASHBOARD_ROOT_PATH: /strategy_crypto_gui services: @@ -109,10 +113,11 @@ services: - traefik.http.routers.strategy-crypto-gui.entrypoints=websecure - traefik.http.routers.strategy-crypto-gui.tls.certresolver=mytlschallenge - "traefik.http.services.strategy-crypto-gui.loadbalancer.server.port=${SWARM_DASHBOARD_PORT:-8080}" - # StripPrefix: rimuove /strategy_crypto_gui prima di girare al container. - # NiceGUI ha root_path=/strategy_crypto_gui per generare link assoluti corretti - # (lato browser), ma le route FastAPI interne restano "/", "/paper", ecc. — - # quindi il prefix esterno DEVE essere stripped dal proxy. - - "traefik.http.middlewares.strategy-crypto-stripprefix.stripprefix.prefixes=/strategy_crypto_gui" - - "traefik.http.routers.strategy-crypto-gui.middlewares=strategy-crypto-stripprefix" + # replacepathregex (NON stripprefix): strippa il prefix dalla request senza + # aggiungere X-Forwarded-Prefix header. uvicorn vede solo root_path da + # ui.run(root_path=...), quindi gli asset URL vengono prefissati una sola + # volta (no doppio prefix come succederebbe con stripprefix). + - "traefik.http.middlewares.strategy-crypto-replace.replacepathregex.regex=^/strategy_crypto_gui(/.*|$$)" + - "traefik.http.middlewares.strategy-crypto-replace.replacepathregex.replacement=$$1" + - "traefik.http.routers.strategy-crypto-gui.middlewares=strategy-crypto-replace" - com.centurylinklabs.watchtower.enable=true