Sharing Music with Apple iTunes

This is a very old article. It has been imported from older blogging software, and the formatting, images, etc may have been lost. Some links may be broken. Some of the information may no longer be correct. Opinions expressed in this article may no longer be held.

OK, so a few weeks ago my old G3 iBook broke down. Yesterday I took delivery of a brand new (well, eBay-sourced, but new for me) G4 iBook and was about to start synching my music collection from my Linux desktop when it struck me that that’s just a dumb idea. I’ve got a 54 Mbps wireless network, so why not put it to good use. There must be a way to get iTunes to be able to play my OGG files directly off the Linux server.

One option is Rhythmbox which I happened to already use as my main audio player on Linux. It is able to participate in iTune’s music sharing function by virtue of its DAAP plugin. However, this solution relied on me always being logged into the Linux box with Rhythmbox running. What if someone else was logged in?

Then I discovered Firefly Media Server a DAAP daemon capable of sharing a whole directory of music files (including several formats which iTunes doesn’t support — Firefly transcodes them into WAV on the fly!). This seemed like a great solution, so I installed it.

However, iTunes doesn’t have a place to enter the Linux box’s IP address to start using the service. iTunes relies on being able to “pluck music servers out of the æther” using Zeroconf/mDNS/Rendevous/Bonjour, so I needed to delve into the scary world of Avahi, a free open-source implementation of Zeroconf, which runs on Linux (amongst many other platforms). This turned out to be much easier than I expected, so I have embarked upon “zeroconfing my server to the max”.

Here are some files which can be installed into /etc/avahi/services/ to announce various services:

mt-daapd.service (Firefly)
postgresql.service (PostgreSQL)
mail.service (IMAP, Postfix, etc)