I'm hosting files on a Hetzner Storage Box. As for mounting those remotely, i have the choice between WebDAV, CIFS or sshfs.
Once mounted, those files will be accessed by liquidsoap.
The problem here is that liquidsoap can do a lot of open on the filesystem (in order to compute track duration, mixing, selection...). Especially since my scripts create random playlists on directories containing many files (10k+ is a possibility to consider).
Before setting up some tests i'm looking for some community advice on those three mount options, especially on those points:
- Caching. That may be the most important point. As stated, liquidsoap does a lot of
open, a filesystem which keeps all opened files in cache (even after they're closed) will quickly fill local disk space, and defeat the purpose of having those files stored remotely. On top of that, other services may make changes on the remote filesystem, those must be reflected immediately (we don't want liquidsoap to try and stream a file that was removed for example). - Speed. It needs to be fast, liquidsoap has to get the data and make the computations before it's too late to stream it.
- Security. The files are all public domain, and shared as such (another service proposes the download of those) so read access is not that much of a problem. But write access must be secure.
I'm open to any other solution if it fits my requirements.
[EDIT]
I did some benchmarks, 3 identical servers, except for the filesystem used to mount the remote storage.
- Application: azuracast (since it's the application used in the end, might as well benchmark the full product)
- Configuration: a full webradio. 25k+ files with scheduling, cross-fading... and transcoding to 15 streams (HLS/AAC, mp3, OGG/Flac, each with 5 different quality settings)
Server startup and library scan:
- Mark 1: docker compose up -d
- Mark 2: all services started
- Mark 3: scan complete, CIFS
- Mark 4: scan complete, DAVFS
- Mark 5: scan complete: SSHFS
It would seem that CIFS is the best choice here. Especially since i don't need complicated ACLs (the storage provider maps everything to the same user anyway).
I have two issues with it though, and would appreciate any confirmation/advice:
- Traffic isn't encrypted, but since all that data is public anyway, it's not an issue, is it?
- Authentication is encrypted, so there is no risk anyone getting write access to my data (at least by this vector), right?
Thanks

