From 0f2139211309534bdffe9ccfce087bb2ee5c5af8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Kr=C3=BCger?= Date: Sat, 15 Nov 2025 08:51:29 +0100 Subject: [PATCH] feat: add static file server for direct MP3 links - Add nginx service to serve music files at music.media.pivoine.art - Enables direct MP3 file URLs for website embedding - Serves files from /mnt/hidrive/users/valknar/Music read-only --- arty.yml | 1 + media/compose.yaml | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/arty.yml b/arty.yml index fd07f0a..452d3c8 100644 --- a/arty.yml +++ b/arty.yml @@ -157,6 +157,7 @@ envs: MEDIA_FILESTASH_CANARY: true MEDIA_NAVIDROME_IMAGE: deluan/navidrome:latest MEDIA_NAVIDROME_TRAEFIK_HOST: navidrome.media.pivoine.art + MEDIA_MUSIC_FILES_TRAEFIK_HOST: music.media.pivoine.art # PairDrop DROP_TRAEFIK_ENABLED: true DROP_COMPOSE_PROJECT_NAME: drop diff --git a/media/compose.yaml b/media/compose.yaml index 7293cb9..4d9804e 100644 --- a/media/compose.yaml +++ b/media/compose.yaml @@ -62,6 +62,32 @@ services: - 'traefik.docker.network=${NETWORK_NAME}' - 'com.centurylinklabs.watchtower.enable=${WATCHTOWER_LABEL_ENABLE}' + # Music Files - Static file server for direct MP3 links + music_files: + image: nginx:alpine + container_name: ${MEDIA_COMPOSE_PROJECT_NAME}_music_files + restart: unless-stopped + volumes: + - /mnt/hidrive/users/valknar/Music:/usr/share/nginx/html:ro + networks: + - compose_network + labels: + - 'traefik.enable=${MEDIA_TRAEFIK_ENABLED}' + # HTTP to HTTPS redirect + - 'traefik.http.middlewares.${MEDIA_COMPOSE_PROJECT_NAME}-music-redirect-web-secure.redirectscheme.scheme=https' + - 'traefik.http.routers.${MEDIA_COMPOSE_PROJECT_NAME}-music-web.middlewares=${MEDIA_COMPOSE_PROJECT_NAME}-music-redirect-web-secure' + - 'traefik.http.routers.${MEDIA_COMPOSE_PROJECT_NAME}-music-web.rule=Host(`${MEDIA_MUSIC_FILES_TRAEFIK_HOST}`)' + - 'traefik.http.routers.${MEDIA_COMPOSE_PROJECT_NAME}-music-web.entrypoints=web' + # HTTPS router + - 'traefik.http.routers.${MEDIA_COMPOSE_PROJECT_NAME}-music-web-secure.rule=Host(`${MEDIA_MUSIC_FILES_TRAEFIK_HOST}`)' + - 'traefik.http.routers.${MEDIA_COMPOSE_PROJECT_NAME}-music-web-secure.tls.certresolver=resolver' + - 'traefik.http.routers.${MEDIA_COMPOSE_PROJECT_NAME}-music-web-secure.entrypoints=web-secure' + # Service + - 'traefik.http.services.${MEDIA_COMPOSE_PROJECT_NAME}-music-web-secure.loadbalancer.server.port=80' + - 'traefik.docker.network=${NETWORK_NAME}' + # Watchtower + - 'com.centurylinklabs.watchtower.enable=${WATCHTOWER_LABEL_ENABLE}' + # Navidrome - Music streaming server with public sharing navidrome: image: ${MEDIA_NAVIDROME_IMAGE:-deluan/navidrome:latest}