Poor Man Media Server
Posted on January 9, 2025
Tags: madeof:atoms
Some time ago I installed minidlna on our media server: it was pretty easy to do, but quite limited in its support for the formats I use most, so I ended up using other solutions such as mounting the directory with sshfs.
Now, doing that from a phone, even a pinephone running debian, may not be as convenient as doing it from the laptop where I already have my ssh key :D and I needed to listed to music from the pinephone.
So, in anger, I decided to configure a web server to serve the files.
I installed lighttpd because I already had a role for this kind of configuration in my ansible directory, and configured it to serve the relevant directory in /etc/lighttpd/conf-available/20-music.conf
:
$HTTP["host"] =~ "music.example.org" {
server.name = "music.example.org"
server.document-root = "/path/to/music"
}
the domain was already configured in my local dns (since everything is only available to the local network), and I enabled both
20-music.conf
and 10-dir-listing.conf
.And. That’s it. It works. I can play my CD rips on a single flac exactly in the same way as I was used to (by ssh-ing to the media server and using alsaplayer).
Then this evening I was talking to normal people1, and they mentioned that they wouldn’t mind being able to skip tracks and fancy things like those :D and I’ve found one possible improvement.
For the directories with the generated single-track ogg files I’ve added some playlists with the command ls *.ogg > playlist.m3u
, then in the directory above I’ve run ls */*.m3u > playlist.m3u
and that also works.
With vlc I can now open music.example.org/band/album/p…to listen to an album that I have in ogg, being able to move between tracks, or I can open music.example.org/band/playlis… and in the playlist view I can browse between the different albums.
Left as an exercise to the reader2 are writing a bash script to generate all of the playlist.m3u files (and running it via some git hook when the files change) or writing a php script to generate them on the fly.
- as much as the members of our LUG can be considered normal.↩︎
- i.e. the person in the LUG who wanted me to share what I had done.↩︎
rag. Gustavino Bevilacqua reshared this.
Elena ``of Valhalla''
in reply to Elena ``of Valhalla'' • •I'm not sure whether this post will be updated, but I've updated the blog post with the php script provided by a reader.
Don't you all love it when reader do their exercises? :D
reshared this
rag. Gustavino Bevilacqua, Oblomov e ghostdancer reshared this.