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?

  • Decronym@lemmy.decronym.xyzB
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 hour ago

    Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:

    Fewer Letters More Letters
    NAS Network-Attached Storage
    NFS Network File System, a Unix-based file-sharing protocol known for performance and efficiency
    Plex Brand of media server package

    [Thread #56 for this comm, first seen 19th Jul 2026, 03:30] [FAQ] [Full list] [Contact] [Source code]

  • freedom@lemy.lol
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 hour ago

    I actually made a copy of my library (for safety) and had hermes agent scan it and fix it so that it would register well with navidrome and be named coherently. It was very impressive what local AI could do. If you have a gpu with 12+ GB VRAM, you can do it local with an uncensored model. Cloud providers can probably do it too, but might throw safety warning.

  • BruisedMoose@piefed.social
    link
    fedilink
    English
    arrow-up
    2
    ·
    3 hours ago

    I see you’re settling in beets and if that works for you, that is excellent. Just this week, I started running it on copies of some albums in my collection to see how it did.

    Over the last year, I’ve ripped (or cleaned up existing) about 25,000 songs. My process has really been rip them with whatever tags I can find, put them all through MP3tag to retrieve and clean up metadata, then run a script to backup the FLAC off-site, convert to MP3 locally, and copy to my NAS in my preferred directory structure.

    I was thinking maybe I don’t want to deal with the tagging, hence my trials with beets. But you know, I don’t necessarily trust everything in Musicbrainz or like how they handle some things, so I’m probably going to stick with the semi-manual tagging. I am looking at still using beets to handle lyrics, replaygain, and fleshing out less important metadata.

    • hellmo_luciferrari@lemmy.zipOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 hours ago

      I havent trusted it with my music in RW mode yet. I was just getting statistics. however, I am using a custom built docker container based off Lyrica that downloads LRC files for me. Its running right now. And I like having karaoke style synced lyrics .

  • TheHolm@aussie.zone
    link
    fedilink
    English
    arrow-up
    1
    ·
    4 hours ago

    NFS / Shares - over complicated. Just syncthing it around (and snapshot on backup server), for nearly static data as music it is perfect.

  • ThePooDragon@lemmy.world
    link
    fedilink
    English
    arrow-up
    13
    ·
    7 hours ago

    I personally use a music tagging/renaming program called Picard. Point it at a relatively unorganized music folder, it tries to identify each track based on the existing metadata or acoustic signature, adds/modifies the track metadata based on the Music Brainz database, and runs a custom renaming script that moves it into place per my preferences.

    Its not as automated as I would like, and takes some hand holding, but keeps my collection clean and standardized.

    • hellmo_luciferrari@lemmy.zipOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      6 hours ago

      I was looking into setting a docker container of Picard, and see what I could do with it. However, I was looking for the most automated solution I could find; and happened to land on Beets.

      Though I may still try out Picard as a supplementary option.

  • Grass@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    2
    ·
    5 hours ago

    I just use lidarr to rewrite the tags to be consistent and that seems to be enough for navidrome to put the correct cover art 90% of the time.

  • CerebralHawks@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    3
    ·
    6 hours ago

    Definitely more advanced than what I do! I’ve also been collecting for a long time, and I’ve just been storing the media. I went from Windows/x86-64 to Mac/ARM64 a few years back, and I have kinda limited options that way. I would have just gone to Linux if my computers didn’t die, but at the time, Apple made sense.

    I do Apple Music, but, that doesn’t answer the question. I also self-host my music via a Plex server. I got Plex Pass for well under $100 on sale years and years ago. Much harder to recommend now. Plexamp is awesome for music, and I also use Prologue (iOS app) for audiobooks hosted on Plex.

    For tagging, I use Mp3Tag and tag manually. It was free on Windows, but the guy wants $30 for it on Mac. It’s a long story as to why, but after he was kind enough to explain it to me… I paid the man. (For my part, I’d used it for free for many years and I got a lot of miles out of it, and still do, and it’s a good, well maintained app from a solo developer.) There are free alternatives. Not so many good ones on Mac (part of why I paid). For album art, I get them from Apple using this handy site (not mine): https://bendodson.com/projects/itunes-artwork-finder/ — you can use 600px or you can use either 2000px or 3000px, I forget which. I’m good with 600px. I think Apple uses the smaller size for phones and the bigger one for TVs and Macs (especially as iMacs have 5K screens now).

    My library might also not be as big as yours is. Plex says I have 14,462 tracks indexed. Maybe those are rookie numbers, I dunno. I pretty much have everything I want. All I’d really want now is to take my Apple Music playlists and download them to m4a 192k or similar. I have a few decade playlists that are like 500-600 songs each (80s, 90s, and 00s).

    • hellmo_luciferrari@lemmy.zipOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      6 hours ago

      I have gone in so many different directions. When I was on Windows I would use MusicBee or MediaMonkey for tagging, I would do it album by album. It was pretty great, but I haven’t used Windows in years. There are not any Media players that are for local files that I even like for Linux.

      So, I ultimately moved to Navidrome. Have lost some of my tunes, but was at 50k at one point. I am back down to about 23k.

      Beets seems pretty neat so far, automatic is my goal!

  • starshipwinepineapple@programming.dev
    link
    fedilink
    English
    arrow-up
    3
    ·
    6 hours ago

    My music is on my PC hard drive and synced to my server. Last year I spent a few weeks tagging my old stuff and i tried beets, kid3, and picard but ended up liking picard the most just since it was a lot better at grouping albums together and finding the best matches ime. Any new music is tagged with picard. Then i run a navidrome docker container with the music library mounted. And i use feishin for desktop and symfonium for mobile use.

    If you’re interested, i wrote about my experience migrating from iTunes to navidrome and tagging my music here (no ads, monetization, or tracking)

  • irmadlad@lemmy.world
    link
    fedilink
    English
    arrow-up
    5
    ·
    edit-2
    7 hours ago

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

    I have a physical collection I have been accumulating for decades now, that goes as far back as 1937. I have converted everything to flac and it resides on a NAS drive. I have used Beets and Picard, and back in the day MP3Tag for tagging, and surprisingly, MusicBee (Windows) is great for embedding lyrics. It takes a while to embed lyrics in a large collection. Currently I have everything tagged, in their respective artists/albums, and embedded lyrics for about 75-80% of them. I run Navidrome and stream via Feishin locally, and Substreamer on my mobile.

    ETAL I have also used czkawka_gui in the past to clean out duplicates.

    • hellmo_luciferrari@lemmy.zipOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      6 hours ago

      MusicBee, I loved that player back when I was a Windows user. And MediaMonkey if you didn’t mind paying. Those two were the best music players. Now that I am full time Linux, there isn’t a player that even compares.

      However, Feishin is about as close as I can get to a UI I like for a player, and luckily it works with Navidrome (jellyfin and others too)

  • __hetz@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    3
    ·
    7 hours ago

    Beets for importing, ascii only, lastgenre, fetchart, whatever other plugins I’m forgetting, /artist/yyyy_album_name/ directory structure, 01_title.ext for single disc, 01-01_title.ext for multi disc. I invoke beets manually just to keep an eye on how things get matched up and tagged during the process. I deal in full albums, LPs, compilations and such because it’s often easier to maintain and match metadata than with individual tracks. I guess it’s a data hoarder / archivist compulsion too, but it’s rare I can’t find at least one other track on an album appreciable so… why not?

    A weekly rsync pushes the beets DB and library from my TrueNAS server to another server with a 8TB external dedicated to backing up my most important stuff (personal projects, password store, compose files, confs, etc). I’ve got an rsync alias set up on my laptop I invoke manually because I’m nearing the limit of what I want to allot to music. At least until I decide to get a larger drive.

    That’s local in triplicate, with zraid on the NAS and a fourth copy on my phone, which leaves me feeling pretty good about not losing any music outside of a house fire or tornado. I was also rsync’ing all my media (music, movies, shows) to another TrueNAS setup at a relative’s but some things have changed with that so it’s on hold. Not fond of missing my off-site backup but hopefully can resolve it soon.

    Everything is local only right now. The library is mounted read-only in Jellyfin so can play music from pretty much any phone, TV, computer, my Steam Deck, etc throughout the house. If I ever decide to open things up, reverse proxy or whatever, I might look into Finamp but I buy a flagship phone every six to ten years for the storage space so I can just take my music with me. Might eventually switch that to a dedicated music device.

    • hellmo_luciferrari@lemmy.zipOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      6 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"'
      
  • galacticworm@piefed.social
    link
    fedilink
    English
    arrow-up
    1
    ·
    5 hours ago

    I have a bunch of actions setup in mp3tag which strips out all but the absolute necessary tags, and uses the cover from the directory to add the cover to the files… once tagging is correct, you can use any library.

  • SnailMagnitude@mander.xyz
    link
    fedilink
    English
    arrow-up
    3
    ·
    7 hours ago

    A mishmash of beets and the old ways got me to where I am, navidrome with a bit of mpv & kodi.

    I’m currently trying to ignore it and plan to return with a new workflow over the next year or so. Beets will be part of this but also need some python, shell glue and other tools working together, and things are changing at little faster than they once were.

    I spent a little time a few months back grabbing NPR and KEXP audio at scale with yt-dlp and having them land with decent tags as navidrome compliant albums and now feel a little more confident incorporating oddities into sacred realm of jazz flacs.

    But the one folder to rule them all is still in the planning stages.

    • hellmo_luciferrari@lemmy.zipOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      6 hours ago

      The way I used to do, I can’t believe I spent that much time. I would literally go folder by folder and rename things. Then when I got a little older and a little smarter used MusicBee or MediaMonkey to tag and rename music files. But even that became too much for me to want to do.

      Ultimately I want the most automated way I can do it. But luckily all new music coming in is named with the same format every single time, and is properly tagged.

      It’s all of my legacy stuff I have to clean up really.

      • SnailMagnitude@mander.xyz
        link
        fedilink
        English
        arrow-up
        1
        ·
        6 hours ago

        Yeah, I’m not about to rush in but I suspect over the next year or so I’ll be letting an llm loose on my old crates to see what happens and MacGyver some sort of Dread Pirate Robot that can run locally and is a frankenstein of beets, plugins and other projects that will eat music and shit albums.

  • ryokimball@infosec.pub
    link
    fedilink
    English
    arrow-up
    3
    ·
    7 hours ago

    “unsorted” folder contains input. “Music” folder has full library; any imports must go through beets. rsync to remote backups; one scripted/automatic, one manual & password-protected. Restores (needed once or twice) are done with beets import, but whatever flag that does “just import, don’t tag”

    • hellmo_luciferrari@lemmy.zipOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      6 hours ago

      Once I have my music gone through and deduped, as well as tagged, I will likely never have to run it again; as the music my server ingests is already properly tagged.

      • ryokimball@infosec.pub
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 hours ago

        The deduping is a little difficult. Obv matching files are caught with regular dedupe tools, but I’ve been meaning to make a script to use fingerprinting (dejavu is the library I think?) to find matches. Problem is the fingerprints are about as big as the music files themselves.

        • hellmo_luciferrari@lemmy.zipOP
          link
          fedilink
          English
          arrow-up
          2
          ·
          2 hours ago

          Beets can do some sort of fingerprint with ffmpeg and in another comment I posted a snippet that I used ti generate a log. I’ve only done dry runs.