version: "3.9" services: media: image: nginx:1.27-alpine restart: unless-stopped container_name: mindboost-media-server volumes: - ./nginx/html:/usr/share/nginx/html:ro - ./nginx/conf.d:/etc/nginx/conf.d environment: - MEDIA_API_KEY=key-mindboost-media-server # ⇦ beliebig ändern - SERVER_NAME=b.mindboost.team # ⇦ beliebig ändern command: > /bin/sh -c ' envsubst < /etc/nginx/conf.d/default.conf.template \ > /etc/nginx/conf.d/default.conf \ && nginx -t \ && exec nginx -g "daemon off;"' labels: - "traefik.enable=true" ######################################################### # 1) ROUTER ➜ /media/… (Prefix + Strip) ######################################################### - "traefik.http.routers.media-prefix.rule=Host(`b.mindboost.team`) && PathPrefix(`/media`)" - "traefik.http.routers.media-prefix.entrypoints=websecure" - "traefik.http.routers.media-prefix.tls.certresolver=http_resolver" - "traefik.http.routers.media-prefix.middlewares=strip-media" - "traefik.http.middlewares.strip-media.stripPrefix.prefixes=/media" - "traefik.http.routers.media-prefix.service=media" ######################################################### # 2) ROUTER ➜ /noise.wav /forest.flac … (Root-Pfad) ######################################################### - "traefik.http.routers.media-root.rule=Host(`b.mindboost.team`) && Path(`/{file:.*\\.(mp3|aac|m4a|ogg|opus|flac|wav)$}`)" - "traefik.http.routers.media-root.entrypoints=websecure" - "traefik.http.routers.media-root.tls.certresolver=http_resolver" - "traefik.http.routers.media-root.service=media" # Upstream-Port des Containers - "traefik.http.services.media.loadbalancer.server.port=80" networks: - proxy networks: proxy: external: true