• 0 Posts
  • 3 Comments
Joined 14 days ago
cake
Cake day: June 5th, 2025

help-circle
  • My use case: collection based on single-flac + cuesheets, thousands, many of which are HD. Setup: all the music is in an NFS share in my HTPC, which also runs Kodi (flatpak) for both video and audio media. That machine is connected to my main audio setup via USB DAC.

    The Kodi music DB is hosted externally in mariaDB in the same server. I use 2 headless Kodi (OSMC) clients with HiFiBerry DACs as streamers around the house, using the same DB/media. Lastly I also have an Nvidia Shield running Kodi also exposing the same collection/DB.

    Over the years I have tested many alternatives, including navidrome, volumio, and others, but they all struggle handling my music collection, choke processing cuesheets or don’t even support them, or can’t handle NFS reliably or at all, or can’t process 24 bit content etc.

    I couldn’t find any solution nearly as reliable, performant or flexible as this one. I use this setup pretty much daily. With incremental improvements, it’s been running for more than 10 years.

    Each Kodi client can be managed via its web interface (a little dated but fully functional and reliable), amd via Android app (I use Yatse).

    The main server also exposes the music collection via DLNA.

    I looked at jellyfin/Plex in the past as well but for muy use case, it’s over-complicated and didn’t add value.


  • Fair comment, I should qualified my answer: I use an ssh tunnel with auto-reconnect option, wrapped inside a systemd service. In all this years, I still have to run into a problem that wasn’t external (server down, no internet at home etc) I agree that wireguard is the proper solution however it requires a lot of extra configuration and support in both ends, which now is prevalent but not so much 5+ years ago. Also for a single port solution, ssh is so much simpler, practical and reliable, you only need an ssh user at the other end.

    ExecStart=/usr/bin/ssh -NT -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes -R localhost:YOUR_PORT:localhost:YOUR_PORT SOME_USER@YOUR_SERVER