• 1 Post
  • 53 Comments
Joined 7 months ago
cake
Cake day: March 18th, 2025

help-circle













  • nfreak@lemmy.mltoSelfhosted@lemmy.world*Permanently Deleted*
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    2 months ago

    This is gonna get a bit into my particular setup but sure

    Explo’s a super early in development “discover weekly” generator, relies on Listenbrainz scrobbling and runs on a cron job to download the playlist from your connected source (in my case slskd), put it in a folder, and create a Navidrome playlist out of it. I use the SLSKD_MIGRATE option (my feedback is actually the reason the dev even added it), so my files are downloaded to my slskd dir and explo moves them to a separate library.

    I’m very particular about my library though so I don’t want it just throwing everything into the same folder as the rest of my music, and I have 2 users, so my directories are like:

    • /music/me
    • /music/wife
    • /discover/me
    • /discover/wife

    Keeping the discover folders for Explo completely outside the main library, but mounted in Navidrome as additional libraries, helps keep things very separate. Explo’s also smart enough to check with Navidrome before searching for a track - if it already exists in the library, then it won’t redownload it.

    I run 2 Explo instances, 2 hours apart, and in between those runs I have another cron job that wipes out my slskd downloads directory for a clean slate.

    One small catch I ran into: Explo needs a Navidrome admin account to kick off the library scan, but my users aren’t admins (since an admin automatically has access to every single library). So each week when it runs I need to log in as an admin and re-assign each playlist accordingly. Not a big deal, and the dev already has some ideas in mind to address this in the future. This also becomes a small bit of an issue with the whole “don’t download existing tracks” thing - Explo’s looking at the admin’s library which is everything, not the individual users’ libraries. So if one user’s playlist has a track that’s in the other user’s library, it won’t be properly added. Not the end of the world, but a mild annoyance.

    I will say (and this isn’t a fault of Explo), I’m not a big fan of Listenbrainz’s weekly playlist algorithm. About 2/3 of the playlist tends to be artists that I already listen to, so it feels like a bit of a waste. I hope down the road we can plug in last.fm or something which tends to be a bit better for that.


  • nfreak@lemmy.mltoSelfhosted@lemmy.world*Permanently Deleted*
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    2 months ago

    Yep! They released it like a week after I just set up a second instance lmao

    The only catch I noticed is that the default “/music” library can’t be changed, so I set up my directories in the container like:

    • /user1/music
    • /user1/discover
    • /user2/music
    • /user2/discover
    • /shared

    All 5 are set up as separate libraries, and I keep "/music/ in the container mounted to an empty directory. The discover folders are populated when Explo runs each week, that’s a whole project of its own.



  • nfreak@lemmy.mltoSelfhosted@lemmy.world*Permanently Deleted*
    link
    fedilink
    English
    arrow-up
    10
    ·
    edit-2
    2 months ago

    I’m in the middle of writing up a novel about my music stack since I’ve just about gotten it exactly where I want it. There’s no one-size-fits-all answer here and it’s difficult to really replicate the behavior of major streaming services.

    The short version of what I have set up:

    • Backend: Navidrome

    • Frontends: Feishin (both desktop and hosted) and Symfonium

    • Remote access: Pangolin (this does involve keeping a Navidrome rest endpoint totally exposed so Tailscale/Netbird/Wireguard are fine too, but I wanted to be sure my wife can access it from her work PC in the office)

    • Library and metadata management: Lidarr, beets, and metadata-remote. Lidarr does the bulk (one instance per user/library), beets handles manual imports, and MDRM is for fine-tuning and really obscure stuff

    • Searching/Downloading: Lidarr + Tubifarry + slskd. Also support smaller artists as much as possible, bandcamp purchases and merch and whatever go a long way.

    • Discovery: Explo

    I’ll have a full beginning to end writeup pretty soon hopefully. It’s still not perfect, and juggling multiple users adds a huge layer of complexity, but I’m happy with where it’s at.




  • Pangolin with an Authentik login required. Jellyfin’s set up with OIDC too but that’s more for convenience than security (especially since password auth doesn’t seem possible to disable, so it’s just hidden with CSS which does jack shit for security).

    I’m paranoid so I only expose 3 services total without Pangolin/Authentik in front of them: Authentik itself, headscale, and navidrome’s rest endpoint (the last one skeeves me a bit but it’s mandatory for it to work remotely in the situations I want it, like a web player on work machines). Anything else I personally need remote access to, I can get through tailscale - Pangolin for me covers friends and family usage and a few niche situations.