HOWTO Install Firefly Media Server (mt-daapd) on CentOS 5
From Consultancy.EdVoncken.NET
I have a fairly large collection of Audio CDs, all ripped to MP3. Currently these files are served from my fileserver, using Samba and NFS. The library is also shared with iTunes using a Windows XP PC with iTunes and the iTunes Library Updater (ITLU) utility.
This solution has several drawbacks:
- ITLU is no longer being developed, so I'm reluctant to update my iTunes installation on the PC
- Windows PC needs to be left running for iTunes library sharing
A better solution would be to share the iTunes library from the CentOS fileserver, using Firefly Media Server (formerly known as mt-daapd).
Contents |
Obtaining Firefly Media Server
The source code for Firefly can be downloaded from their website. The build mechanism consists of the well-known "./configure; make; make install" sequence from GNU AutoConf.
Here, we will use the stable version (mt-daapd-0.2.4.2).
Dependencies
You will need at least the following packages on CentOS 5 to build the software:
- gcc (C compiler)
- gdbm-devel (for gdbm.h)
- libid3tag-devel (for id3tag.h)
- zlib-devel
Build the software
Note: in this HOWTO, I will build and install the software the "old-fashioned way". The archive also contains a ".spec" file that is typically used on RedHat / Fedora systems for building RPM-format software packages. The instructions below should be fairly generic and independent of your Linux distribution.
Untar the source archive into a temporary subdirectory and run the ./configure script:
# cd /path/to/mt-daapd-0.2.4.2/ # ./configure < ...snip... > configure: creating ./config.status config.status: creating src/Makefile config.status: creating admin-root/Makefile config.status: creating contrib/Makefile config.status: creating debian/Makefile config.status: creating Makefile config.status: creating config.h config.status: config.h is unchanged config.status: executing depfiles commands
If you run into problems, read the config.log output. Most likely, you did not install one of the dependencies. I missed the zlib-devel dependency at first, and got a completely unrelated error message during ./configure - the solution was in config.log.
Next, build the software:
# make make all-recursive make[1]: Entering directory `/path/to/mt-daapd-0.2.4.2' Making all in src make[2]: Entering directory `/path/to/mt-daapd-0.2.4.2/src' < ...snip... > make[1]: Leaving directory `/path/to/mt-daapd-0.2.4.2'
Finally, install the software
# make install < ...snip... > make[1]: Leaving directory `/path/to/mt-daapd-0.2.4.2'
This will install the mt-daapd daemon in /usr/local/sbin/, and the webserver files under /usr/local/share/mt-daapd/.
Configure the software
- Copy the example configuration files (/path/to/mt-daapd-0.2.4.2/contrib/mt-daapd.conf and mt-daapd.playlist) to /etc/
- Edit mt-daapd.conf:
- Configure the correct path to your MP3 collection. NOTE: there can be NO whitespace in the path, it does not work in this version.
- Choose a nice server name (this is the name you will see under iTunes "Shared Libraries")
- Enable logging to /var/log/mt-daapd.log
mp3_dir /path/to/your/mp3/collection servername MP3 Jukebox logfile /var/log/mt-daapd.log
Run the software
- Copy the startup script (/path/to/mt-daapd-0.2.4.2/contrib/mt-daapd) to /etc/init.d/
- Enable and start the service
chkconfig --add mt-daapd service mt-daapd start
Watch the logfile (/var/log/mt-daapd.log), the daemon will scan for MP3 files on first run:
2009-01-04 17:34:12: Starting rendezvous daemon 2009-01-04 17:34:12: Starting signal handler 2009-01-04 17:34:13: Loading playlists 2009-01-04 17:34:13: Initializing database 2009-01-04 17:34:13: Starting mp3 scan < ...snip... > 2009-01-04 17:37:29: Starting web server from /usr/local/share/mt-daapd/admin-root on port 3689 2009-01-04 17:37:29: Registering rendezvous names 2009-01-04 17:37:29: Scanned 7221 songs in 197 seconds
Now, open iTunes on your Mac (or PC) and look for shared libraries; you should see "MP3 Jukebox" in the list!
Creating Smart Playlists
Once you have confirmed that Firefly Media Server is running properly, you may want to set up some Smart Playlists. These are configured in /etc/mt-daapd.playlist. There are lots of examples in this file; I have added a couple of my own. I've prefixed each playlist with a keyword ("Genre: ") so they stay together when sorted.
### By Genre ###
"Genre: Acoustic" {
Genre is "Acoustic"
}
"Genre: Alternative Rock" {
Genre is "Alternative Rock"
}
"Genre: Gothic" {
Genre includes "Gothic"
}
"Genre: Pop" {
Genre is "Pop"
}
"Genre: Rock" {
Genre is "Rock"
}