I finally decided to setup a Rendezvous music server on my home server, as suggested by a Mac OS X Hints article. I first tried the daapd server, using Apple's multicast DNS (mDNS) server. I then moved to mt-daapd, for its quasi-support of smart playlists. Finally, I moved back to daapd, due to it being added to Debian and it finally supporting playlists.
While all the components of daapd were available pre-packaged for Debian's testing or unstable distributions (at one time), I was running the stable distribution (Woody), and didn't want to upgrade just to support a new music server.
An overview of the process was that three new pieces of software (libid3tags, mdns, and daapd) needed to be downloaded and compiled, and two runtime daemons needed to be installed and configured. The results are worth the minor effort !
Woody supports the v0.14 version of libid3tags, but daapd requires the v0.15 version of the API. Trying to install the 0.15 version (available in testing) on Woody using Debian (apt-get -s -t testing install libid3tags0-dev) results in a major upgrade. A much cleaner way is to download the source (ftp://ftp.mars.org/pub/mpeg/libid3tag-0.15.1b.tar.gz, part of the MAD: MPEG Audio Decoder project) and install it directly.
Unpack the tarball, creating a directory: libid3tag-0.15.1b. Straighforward ./configure, make, and sudo make install. I intentionally didn't change the default install libraries to the debian defaults (/usr/lib instead of /usr/local/lib) to avoid overwriting the current debian install.
The only catch was making sure that the shared library created is known by the system. Edit the /etc/ld.so.conf file to include a line with the library installation directory: /usr/local/lib. Then run sudo ldconfig to update the system.
Download the Rendezvous server itself from Apple. but decided to go with the Apple code ().
Make sure that you have the latest version of zlib installed: sudo apt-get update; sudo apt-get install zlib
Unpack the tarball, creating a directory: mDNSResponder-XX.X. Ignore the top level Makefile, and go directly to an OS-specific sub-directory: mDNSPosix. Once there, simply type make os=linux, followed by sudo make os=linux install. It too will be installed in /usr/local as well as the /etc/init.d tree.
It was there that I had problems. The default daemon start/stop script wasn't working. I modified it, and added a hook to run any commands in /etc/default/mdns for static services.
The main addition to the start/stop script was registration of the service with the mDNSResolver, using /etc/default/mdns. In order to support these registrations, copy mDNSPosix/build/prod/mDNSProxyResponderPosix to /usr/local/bin/.
The actual command (mDNSProxyResponderPosix 172.16.0.1 homeserver "Music Jukebox" _daap._tcp. 3689 &) prints out a couple of error messages, but seems to register the service OK. Since we are running the resolver daemon, it returns quickly and probably doesn't need to be run in the background. Go ahead and start the resolver now: sudo /etc/init.d/mdns start.
An open source implementation is Avahi. A lightweight open source implementation is also mdnsd available. A moment of silence here for Howl, once a rising star, now discontinued.
The last piece of the puzzle is the Apple proprietary digital audio access (DAA) protocol server. I used daapd, written by Alexander Oberdoster
Unpack the tarball, creating a directory: daapd-0.2.4b. Change to that directory, make, and then sudo make install. It will be installed in /usr/local as well. Once again, daemon start/stop script provided wasn't working. I modified it.
Now edit the /etc/daapd.conf file to reflect your choice of server names and possibly password protection as well. Make a directory, /var/lib/daapd/, and change its owner to nobody:nogroup. This directory will hold both the cache of music information and the pid file of the running daemon.
Go ahead and start the server: sudo /etc/init.d/daapd start.
You should now be able to discover the music server from iTunes !
One last piece of house-keeping is linking the startup script so it will run at boot:
sudo ln -s /etc/init.d/daapd /etc/rc2.d/S93daapd
sudo ln -s /etc/init.d/daapd /etc/rc3.d/S93daapd