Firefly(旧名:mt-daap)【iTuneサーバ】

■本家 http://www.fireflymediaserver.org/
■CP932対応 http://www.kzsoft.to/~kazu/mt-daapd/

libid3tag導入

yum install --enablerepo=rpmforge libid3tag libid3tag-devel

mt-daap導入

cd /usr/local/src/
wget http://downloads.sourceforge.net/mt-daapd/mt-daapd-0.2.4.1.tar.gz
tar xvzf mt-daapd-0.2.4.1.tar.gz
cd mt-daapd-0.2.4.1
./configure
make
make install

mt-daapの起動スクリプト、confファイルを配置

cp /usr/local/src/mt-daap-0.2.4.1/contrib/mt-daapd.conf /etc/
cp /usr/local/src/mt-daap-0.2.4.1/contrib/mt-daapd /etc/init.d/

設定ファイル(/etc/init.d/mt-daapd)の編集

#!/bin/bash
#
# chkconfig: 2345 85 15
# description: mt-daapd is a multi-threaded DAAP server for iTunes
# processname: mt-daapd
# pidfile: /var/run/mt-daapd
#
# source function library
. /etc/init.d/functions
[ -e /etc/mt-daapd.conf ]

RETVAL=0

start() {
      echo -n $"Starting DAAP server: "
      #set the full path to the installed mt-daapd
      daemon /usr/local/sbin/mt-daapd
#       daemon mt-daapd
      RETVAL=$?
      echo
      [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mt-daapd
}

stop() {
      echo -n $"Shutting down DAAP server: "
      # This is broken.
#       killall -INT mt-daapd
      killproc mt-daapd
      RETVAL=$?
      echo
      [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mt-daapd
}

case "$1" in
start)
      start
      ;;
stop)
      stop
      ;;
restart|reload)
      stop
      start
      RETVAL=$?
      ;;
status)
      status mt-daapd
      RETVAL=$?
      ;;
*)
      echo $"Usage: $0 {start|stop|restart|condrestart|status}"
      exit 1
esac

exit $RETVAL

設定ファイル(/etc/mt-daapd.conf)の編集

# $Id: mt-daapd.conf 454 2004-12-29 06:20:26Z rpedde $
#
# This is the mt-daapd config file.
#
# If you have problems or questions with the format of this file,
# direct your questions to rpedde@users.sourceforge.net.
#
# You can also check the website at http://mt-daapd.sourceforge.net,
# as there is a growing documentation library there, peer-supported
# forums and possibly more.
#


#
# web_root (required)
#
# Location of the admin web pages.
#
# If you installed from .RPM, .deb, or tarball with --prefix=/usr, then
# this is correct.
#
# If you installed from tarball without --prefix=/usr, then the correct
# path is probably /usr/local/share/mt-daapd/admin-root.
#

#web_root       /usr/share/mt-daapd/admin-root
web_root        /usr/local/share/mt-daapd/admin-root

#
# port (required)
#
# What port to listen on.  It is possible to use a different
# port, but this is the default iTunes port
#

port            3689

#
# admin_pw (required)
#
# This is the password to the administrative pages
#

admin_pw        mt-daapd

#
# db_dir (required)
#
# This is where mt-daapd stores its database of song information.
#
# If you installed from .RPM or .deb, then this directory already
# exists.  If not, then YOU MUST CREATE THIS DIRECTORY!
#

db_dir          /var/cache/mt-daapd

#
# mp3_dir (required)
#
# Location of the mp3 files to share.  Note that because the
# files are stored in the database by inode, these must be
# in the same physical filesystem.
#

#mp3_dir                /mnt/mp3
mp3_dir         /music-data/mp3

#
# servername (required)
#
# This is both the name of the server as advertised
# via rendezvous, and the name of the database
# exported via DAAP.  Also know as "What shows up in iTunes".
#

servername      mt-daapd

#
# runas (required)
#
# This is the user to drop privs to if running as
# root.  If mt-daapd is not started as root, this
# configuration option is ignored.  Notice that this
# must be specified whether the server is running
# as root or not.
#

runas   nobody

#
# playlist (optional)
#
# This is the location of a playlist file.
# This is for Apple-style "Smart Playlists"
# See the mt-daapd.playlist file in the
# contrib directory for syntax and examples
#
# This doesn't control static playlists... these
# are controlled with the "process_m3u" directive
# below.
#

playlist        /etc/mt-daapd.playlist

#
# password (optional)
#
# This is the password required to listen to MP3 files
# i.e. the password that iTunes prompts for
#

#password       mp3

#
# extensions (optional)
#
# These are the file extensions that the daap server will
# try to index and serve.  By default, it only indexes and
# serves .mp3 files.  It can also server .m4a and .m4p files,
# and just about any other files, really.  Unfortunately, while
# it can *attempt* to serve other files (.ogg?), iTunes won't
# play them.  Perhaps this would be useful on Linux with
# Rhythmbox, once it understands daap.  (hurry up!)
#
#

extensions .mp3,.m4a,.m4p

#
# logfile (optional)
#
# This is the file to log to.  If this is not configured,
# then it will log to the syslog.
#
# Not that the -d <level> switch will control the log verbosity.
# By default, it runs at log level 1.  Log level 9 will churn
# out scads of useless debugging information.  Values in between
# will vary the amount of logging you get.
#

logfile /var/log/mt-daapd.log

#
# art_filename (optional)
#
# There is experimental support thanks to Hiren Joshi
# (hirenj@mooh.org) for dynamically adding art to the id3v2
# header as it is streamed (!!).  If you were using a music system
# like zina or andromeda, for example, with cover art called
# "_folderOpenImage.jpg", you could use the parameter
# art_file _folderOpenImage.jpg and if the file _folderOpenImage.jpg
# was located in the same folder as the .mp3 file, it would appear
# in iTunes.  Cool, eh?
#

#art_filename _folderOpenImage.jpg

#
# rescan_interval
#
# How often to check the file system to see if any mp3 files
# have been added or removed.
#
# if not specified, the default is 0, which disables background scanning.
#
# If background rescanning is disabled, a scan can still be forced from the
# "status" page of the administrative web interface
#
# Setting a rescan_interval lower than the time it takes to rescan
# won't hurt anything, it will just waste CPU, and make connect times
# to the daap server longer.
#
#

rescan_interval 300

# always_scan
#
# The default behavior is not not do background rescans of the
# filesystem unless there are clients connected.  The thought is to
# allow the drives to spin down unless they are in use.  This might be
# of more importance in IDE drives that aren't designed to be run
# 24x7.  Forcing a scan through the web interface will always work
# though, even if no users are connected.

# always_scan 0
always_scan 1

#
# process_m3u
#
# By default m3u processing is turned off, since most m3u files
# sitting around in peoples mp3 directories have bad paths, and
# I hear about it.  :)
#
# If you are sure your m3u files have good paths (i.e. unixly pathed,
# with relative paths relative to the directory the m3u is in), then
# you can turn on m3u processing by setting this directive to 1.
#
# I'm not sure "unixly" is a word, but you get the idea.
#

# process_m3u 0

#
# scan_type
#
#
# This sets how aggressively mp3 files should be scanned to determine
# file length.  There are three values:
#
# 0 (Normal)
#   Just scan the first mp3 frame to try and calculate size.  This will
#   be accurate for most files, but VBR files without an Xing tag will
#   probably have wildly inaccurate file times.  This is the default.
#
# 1 (Aggressive)
#   This checks the bitrates of 10 frames in the middle of the song.
#   This will still be inaccurate for VBR files without an Xing tag,
#   but they probably won't be quite as inaccurate as 0.  This takes
#   more time, obviously, although the time hit will only happen the
#   first time you scan a particular file.
#
# 2 (Painfully aggressive)
#   This walks through the entire song, counting the number of frames.
#   This should result in accurate song times, but will take the most
#   time.  Again, this will only have to be incurred the first time
#   the file is indexed.
#

# scan_type  0

#
# compress
#
# Whether to use gzip content-encoding when transferring playlists etc.
# This was contributed as a patch by Ciamac Moallemi just prior to the 0.2.1
# release, and as such, hasn't gotten as much testing as other features.
#
# This feature should substantially speed up transfers of large databases
# and playlists.
#
# It will eventually default to 1, but currently it defaults to 0.
#

# compress 0

キャッシュディレクトリ、キャッシュファイルの作成

mkdir -p /var/cache/mt-daapd
touch /var/cache/mt-daapd/songs.gdb

サービスの自動起動と設定確認

chkconfig --level 345 mt-daapd on

■設定確認

chkconfig --list | grep mt-daapd
mt-daapd 0:off 1:off 2:off 3:on 4:on 5:on 6:off

サービスの開始

/etc/init.d/mt-daapd start
Starting DAAP server:                                      [  OK  ]

サービスのプロセス確認

pgrep -fl mt-daap

管理画面へのアクセス
■管理画面URLは適宜変更して読みかえる。

http://127.0.0.1:3689/

■ID/PASSについて
設定は、以下の通り。
■PASSは、/etc/mt-daapd.confに記載のものを使用

ID  : admin
PASS: mt-daapd

出先からSSH PortForwardでアクセス(DAAP via SSH)
■mDNSProxyResponderPosixを使用します。
Apple社からソースコードをDL

Bonjour Source Code

http://developer.apple.com/networking/bonjour/download/
cd /usr/local/src/
wget http://www.opensource.apple.com/darwinsource/tarballs/other/mDNSResponder-107.6.tar.gz
tar xvzf mDNSResponder-107.6.tar.gz
cd mDNSResponder-107.6/mDNSPosix
make os=linux
cd build/prod

■ユーザのbinディレクトリにコピーする。

cp mDNSProxyResponderPosix ~/bin

■下記コマンドを実行しPROXYを実行
★”fuchiwaki-share”で囲われているところがiTuneで表示される名前です。

mDNSProxyResponderPosix 127.0.0.1 squeal "fuchiwaki-share" _daap._tcp. 3689

■SSHでmt-daapdが稼働しているサーバへ接続

ssh -L 3689:server-no-IP:3689 username@mt-daap_server-no-IP

コメント

タイトルとURLをコピーしました