Okay, I think I got it.
First I installed Lighttpd, php5, and mysql on the router by following the instructions here: http://wpte.kicks-ass.net/forum/showthread.php?tid=1
Then I looked around for PHP-based media servers that would work with the router, and found Zina. Well actually, the first one I found was Streamline, but that one required php-iconv, which I couldn't get installed onto the router.
Installing Zina was pretty straightforward, pretty much all I had to do was set up the DB options and fix the default URL path/document root so that images/stylesheets/similar things would load correctly.
I noticed that the Zina server wasn't accessible from external hosts, however, so I added the following iptables
rule on the router:
iptables -I INPUT 1 -p tcp --dport 33333 -j ACCEPT
...33333 is the port I configured Lighttpd to listen on. Alternately, completely disabling the router's firewall also caused the media server to be accessible from external IP's, though I don't recommend that approach.
Right now the only issues remaining are:
- Zina appears to allow unauthenticated access to the audio files.
- I need to ensure my custom
iptables
rule will be applied automatically when the router reboots.
That first one is kind of a big deal. Maybe I can fix it by enabling mod_auth
on Lighttpd.
Edit: mod_auth did the trick.
Edit 2: I also ended up modifying some of the zina source code to write <user>:<password>@
into the playlist URL's that it generates. Stops media players that don't know how to remember account details from prompting for a username/password every time a new song starts.