From 391fad6375488a0356c1c9e196f553c640c861ad Mon Sep 17 00:00:00 2001 From: Fern Garden Date: Sat, 19 Jul 2025 10:24:35 +0800 Subject: [PATCH 1/4] Add explo --- navidrome/compose.yaml | 18 +++++++++ navidrome/explo.env | 84 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 navidrome/explo.env diff --git a/navidrome/compose.yaml b/navidrome/compose.yaml index aaadb6e..c0e9ad5 100644 --- a/navidrome/compose.yaml +++ b/navidrome/compose.yaml @@ -15,14 +15,32 @@ services: - ND_PLAYLISTSPATH=Playlists networks: - default + - media - proxy restart: unless-stopped labels: caddy: music.fern.garden caddy.import: authentik + explo: + image: ghcr.io/lumepart/explo:latest + restart: unless-stopped + container_name: explo + volumes: + - ./explo.env:/opt/explo/.env + - /media/media/beets/explo:/data/ + - /media/downloads/slskd/downloads:/slskd/ + networks: + - default + - media + environment: + - TZ=Australia/Perth + - CRON_SCHEDULE=00 07 * * 1 # Runs weekly, every Monday at 07:00 + networks: default: + media: + external: true proxy: external: true diff --git a/navidrome/explo.env b/navidrome/explo.env new file mode 100644 index 0000000..6eb67b4 --- /dev/null +++ b/navidrome/explo.env @@ -0,0 +1,84 @@ +# === Discovery Config === + +# Service which recommends songs (only 'listenbrainz' is supported) +# DISCOVERY_SERVICE=listenbrainz +# Your ListenBrainz username +LISTENBRAINZ_USER=mtqueerie +# 'playlist' to fetch weekly playlist (50 songs), 'api' for fewer songs (good for testing) (default: playlist) +# LISTENBRAINZ_DISCOVERY=playlist + +# === Music System Configuration === + +# Music system you use: emby, jellyfin, mpd, plex or subsonic +EXPLO_SYSTEM=subsonic +# Address of your media system (e.g. http://127.0.0.1:4533) +SYSTEM_URL=http://navidrome:4533 +# Username with access to system (required for all except mpd) +SYSTEM_USERNAME=fern +# Password for the user (required for subsonic, recommended for plex) +SYSTEM_PASSWORD=${ND_SYSTEM_PASSWORD} +# API Key from your media system (required for emby and jellyfin, optional for plex) +API_KEY=${ND_API_KEY} +# Name of the music library in your system (emby, jellyfin, plex) +# LIBRARY_NAME= + +# === Downloader Configuration === + +# Directory to store downloaded tracks. It's recommended to make a separate directory (under the music library) for Explo +# PS! This is only needed when running the binary version, in docker it's set through volume mapping +# DOWNLOAD_DIR=/path/to/musiclibrary/explo/ +# Comma-separated list (no spaces) of download services, in priority order (default: youtube) +DOWNLOAD_SERVICES=slskd,youtube + +# Directory for writing .m3u playlists (required only for MPD) +# PLAYLIST_DIR=/path/to/playlist/folder/ + +# === YouTube Configuration === + +# YouTube Data API key (required if using youtube) +YOUTUBE_API_KEY=${YOUTUBE_API_KEY} +# Custom path to ffmpeg binary (default: defined in $PATH) +# FFMPEG_PATH= +# Custom path to yt-dlp binary (default: defined in $PATH) +# YTDLP_PATH= +# Comma-separated (without spaces) keywords to exclude from YouTube results (default: live,remix,instrumental,extended) +# FILTER_LIST=live,remix,instrumental,extended + +# === Slskd Configuration === + +# Slskd instance address (requires running instance) +SLSKD_URL=http://slskd:5030 +# Slskd API key +SLSKD_API_KEY=${SLSKD_API_KEY} +# Whether to move downloads under the DOWNLOAD_DIR or not (default: false) +# MIGRATE_DOWNLOADS=false +# Directory where slskd downloads tracks (default: /slskd/) +# PS! This is only needed on the binary version, in docker it's set through volume mapping +# SLSKD_DIR=/slskd/ +# Number of times to check search status before skipping the track (default: 5) +# SLSKD_RETRY=5 +# Number of download attempts for a track (default: 3) +# SLSKD_DL_ATTEMPTS=3 + +## Slskd Filtering + +# Comma-separated (without spaces) file extensions to download from (default: flac,mp3) +# EXTENSIONS=flac,mp3 +# Minimal Bit Depth (default: 8) +# MIN_BIT_DEPTH=8 +# Minimal Bitrate (default: 256) +# MIN_BITRATE=256 + +# === Metadata / Formatting === + +# Set to true to merge featured artists into title (recommended), false appends them to artist field (default: true) +# SINGLE_ARTIST=true + +# === Misc === + +# Minutes to sleep between library scans (default: 2) +# SLEEP=2 +# Keep previous weeks’ discoveries (set false if folder only holds discovered tracks (deletes every file from folder)) (default: true) +PERSIST=false +# Enable additional debug logs (default: false) +# DEBUG=false From 8b6c88a9bb54639cb628d9f592b21736675b1a79 Mon Sep 17 00:00:00 2001 From: komodo Date: Sat, 19 Jul 2025 10:34:28 +0800 Subject: [PATCH 2/4] [Komodo] fern: Write Compose File: update navidrome/compose.yaml --- navidrome/compose.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/navidrome/compose.yaml b/navidrome/compose.yaml index c0e9ad5..55499e6 100644 --- a/navidrome/compose.yaml +++ b/navidrome/compose.yaml @@ -26,8 +26,9 @@ services: image: ghcr.io/lumepart/explo:latest restart: unless-stopped container_name: explo + env_file: explo.env volumes: - - ./explo.env:/opt/explo/.env + # - ./explo.env:/opt/explo/.env - /media/media/beets/explo:/data/ - /media/downloads/slskd/downloads:/slskd/ networks: From f25741f575056d5e1380c1e61adf3ebc1eb985e5 Mon Sep 17 00:00:00 2001 From: komodo Date: Sat, 19 Jul 2025 10:35:48 +0800 Subject: [PATCH 3/4] [Komodo] fern: Write Compose File: update navidrome/compose.yaml --- navidrome/compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/navidrome/compose.yaml b/navidrome/compose.yaml index 55499e6..6a85a8a 100644 --- a/navidrome/compose.yaml +++ b/navidrome/compose.yaml @@ -36,7 +36,7 @@ services: - media environment: - TZ=Australia/Perth - - CRON_SCHEDULE=00 07 * * 1 # Runs weekly, every Monday at 07:00 + - CRON_SCHEDULE=00 09 * * 2 # Runs weekly, every Tuesday at 09:00. networks: default: From cb08d2e67a2a26279091acb1c9a45dd30a3d361f Mon Sep 17 00:00:00 2001 From: Fern Garden Date: Sat, 19 Jul 2025 10:47:40 +0800 Subject: [PATCH 4/4] Rename explo dir. Move slskd downloads to explo dir once complete. --- navidrome/compose.yaml | 2 +- navidrome/explo.env | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/navidrome/compose.yaml b/navidrome/compose.yaml index 6a85a8a..2f7bd2a 100644 --- a/navidrome/compose.yaml +++ b/navidrome/compose.yaml @@ -29,7 +29,7 @@ services: env_file: explo.env volumes: # - ./explo.env:/opt/explo/.env - - /media/media/beets/explo:/data/ + - /media/media/beets/Explo:/data/ - /media/downloads/slskd/downloads:/slskd/ networks: - default diff --git a/navidrome/explo.env b/navidrome/explo.env index 6eb67b4..966960d 100644 --- a/navidrome/explo.env +++ b/navidrome/explo.env @@ -18,7 +18,7 @@ SYSTEM_USERNAME=fern # Password for the user (required for subsonic, recommended for plex) SYSTEM_PASSWORD=${ND_SYSTEM_PASSWORD} # API Key from your media system (required for emby and jellyfin, optional for plex) -API_KEY=${ND_API_KEY} +# API_KEY= # Name of the music library in your system (emby, jellyfin, plex) # LIBRARY_NAME= @@ -51,7 +51,7 @@ SLSKD_URL=http://slskd:5030 # Slskd API key SLSKD_API_KEY=${SLSKD_API_KEY} # Whether to move downloads under the DOWNLOAD_DIR or not (default: false) -# MIGRATE_DOWNLOADS=false +MIGRATE_DOWNLOADS=true # Directory where slskd downloads tracks (default: /slskd/) # PS! This is only needed on the binary version, in docker it's set through volume mapping # SLSKD_DIR=/slskd/