I ended up switching to grafana instead, as it was easy to setup and supported sub paths much better.
The docker container in compose ended up being:
grafana:
image: grafana/grafana-oss:9.5.15
restart: always
depends_on:
- grafana_db
environment:
GF_DATABASE_TYPE: postgres
GF_DATABASE_HOST: grafana_db:5432
GF_DATABASE_NAME: grafana
GF_DATABASE_USER: grafana
GF_DATABASE_PASSWORD: passwordhere
GF_DATABASE_SSL_MODE: disable
GF_SECURITY_ADMIN_USER: admin
GF_SECURITY_ADMIN_PASSWORD: passwordhere
GF_SERVER_SERVE_FROM_SUB_PATH: true
GF_SERVER_DOMAIN: localhost
GF_SERVER_ROOT_URL: http://localhost:8088/reporting/
GF_ENABLE_GZIP: true
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.reporting.priority=100"
- "traefik.http.routers.reporting.rule=PathPrefix(`/reporting`)"
- "traefik.http.services.reporting.loadbalancer.server.port=3000"
volumes:
- ./grafana-data:/var/lib/grafana
- ./resources/grafana-provisioning:/etc/grafana/provisioning