54

Greetings Lemmings!

I am not new to self hosting; been at it for a few years. And I have neglected a very important part of my home lab; MUSIC!

So I stream music from Navidrome to all of my devices.

My music library has grown organically over the years, for probably the past 17 years. And a few times I had manually organized and fixed up some of the tags. But ultimately I ended up with a mess of a library.

I am working on cleaning that up. Though I absolutely should have cleaned it up before I created 2 backup scripts.

In short, I have a script that is called from a systemd service on a timer that runs my backup script that essentially more or less uses rsync to mirror the files in LiveMusicDir to MusicArchive1. This happens on my docker host where my Navidrome lives. The Music is on an NFS share hosted outside of the docker host.

The next step I run another similar setup on my desktop; systemd service running a script on a timer that uses rsync and other dependencies to track changes.

What I plan to do is organize the source. I am using beets, and learning as I go.

What methods do you use for managing a large music library?

you are viewing a single comment's thread
view the rest of the comments
[-] hellmo_luciferrari@lemmy.zip 1 points 10 hours ago

Right now I am running beets against my live music dir and running a few different commands on it to see:

Duplicate albums:

  beet duplicates \
    --album \
    --full \
    --strict \
    --key albumartist \
    --key album \
    --path \
  > config/duplicate-albums.txt 

Searching across different albums:

docker exec -i -u abc beets \
  beet duplicates \
    -F \
    -s \
    -k artist \
    -k title \
    -f '$id | $artist | $album | $title | $format | $bitrate | $length | $path' \
  > config/duplicates-across-albums.txt

And running this right now for audio checksum comparison:

docker exec -i -u abc beets \
  beet duplicates \
    -F \
    -C 'ffmpeg -i {file} -f crc -' \
    -f '$id | $artist | $album | $title | $format | $bitrate | $path' \
  > config/duplicates-audio-checksum.txt

And when that is done I know I can inspect candidate based on ID with something like this:

docker exec -it -u abc beets \
  beet ls 'id:1524' \
  -f '$id
Artist: $artist
Album: $album
Title: $title
Format: $format
Bitrate: $bitrate
Sample rate: $samplerate
Bit depth: $bitdepth
Length: $length
Path: $path'

I have the main music I am scanning mounted in read only right now; but when I am done collecting some information about it, I am going to remount and restart the container, along with modifying some config options.

Ultimately, I am going to go Artist by artist with something like this:

docker exec -it -u abc beets \
  beet duplicates \
    -s \
    -k artist \
    -k album \
    -k title \
    --move /quarantine \
    'albumartist:"Example Artist" album:"Example Album"'
this post was submitted on 18 Jul 2026
54 points (98.2% liked)

Selfhosted

60758 readers
151 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

Detailed Rules Post

  1. Be civil.

  2. No spam.

  3. Posts are to be related to self-hosting.

  4. Don't duplicate the full text of your blog or readme if you're providing a link.

  5. Submission headline should match the article title.

  6. No trolling.

  7. Promotion posts require active participation, with an account that is at least 30 days old. F/LOSS without a paywall has exceptions, with requirements. See the rules link for details. Tags [CBH] or [AIP] are required, see the links in Rule 8 for details.

  8. AI-related discussions and AI-involved promotional posts have additional requirements for tagging, as noted in Rule 7 and the AI & Promotional Post Expanded Rules post, and find example disclosures here.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 3 years ago
MODERATORS