우분투에 forked-daapd 설치해서 아이튠즈 서버 기능 추가하기

18 Feb

아이튠즈 서버

forked-daapd 를 알기전에 음악 관리는 여러 아이튠즈를 이용했다. 아내도 아이튠즈로 음악을 넣고 휴대폰에 동기화 시켜서 듣곤 했는데 어느새 귀찮다며 그냥 유튜브 틀어서 듣는다. 유튜브가 좋긴 한데 항상 휴대전화 화면을 켜 놔야 하고 듣고 있을 때는 다른 작업을 할 수 없다.

사실 아이튠즈로 음악 관리하는 것보다 더 귀찮은 것은 원하는 음악의 동기화라고 할 수 있다. 정해진 휴대전화의 공간 안에 원하는 음악만 골라서 동기화하는 것은 여간 손이 가는 일이 아니다. 게다가 요새는 운전할 때 음악 대신 팟캐스트를 듣기 때문에 음악 들을 일은 집에 있을 때 밖에 없다.

결국 우분투 서버에 mp3를 모아 놓고 거기서 스트리밍으로 듣기로 했다. 로컬 네트웍에서 음악 공유를 위해 애플이 Digital Audio Access Protocol (DAAP)를 내놓았고 아이튠즈에 적용되었다. 흔히 아이튠즈 서버라고 불리며 같은 네트웍 상의 기기들이 http로 접속을 해서 음악을 들을 수 있다. 현재는 아이튠즈 이외에도 여러 daap 서비스 (위키 참조) 등이 daap 서비스를 제공한다.

위의 4개 중 daap만 별로도 설치할 수 있는 것은 forked-daapd 밖에 없으므로 설치하기로 한다. 설치는 쉽다.

forked-daapd 설치

설치 안내는 GitHub에 잘 설명되어있다. 먼저 필요한 라이브러리들을 설치한다.

sudo apt-get install \
build-essential git autotools-dev autoconf libtool gettext gawk gperf \
antlr3 libantlr3c-dev libconfuse-dev libunistring-dev libsqlite3-dev \
libavcodec-dev libavformat-dev libavfilter-dev libswscale-dev libavutil-dev \
libasound2-dev libmxml-dev libgcrypt11-dev libavahi-client-dev zlib1g-dev \
libevent-dev avahi-daemon

라이브러리 설치가 끝나면 소스코드를 받아서 설치한다.

git clone https://github.com/ejurgensen/forked-daapd.git
cd forked-daapd
autoreconf -i
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
sudo make install

설정

설치가 끝나면 /etc/forked-daapd.conf를 열어서 설정을 변경한다.

general {
  uid = "daapd"
  ...
}

library {
  ...
  directories = { "/srv/music"}
  ...
}

다른 설정들은 나중에 바꿔도 되지만 uid와 directories는 먼저 바꿔줘야 한다. uid를 dappd에서 mp3 폴더에 접근 권한이 있는 아이디를 적어주면 된다. 아니면 daapd 아이디를 하나 만들어서 mp3 폴더의 접근 권한을 줘도 된다. directories는 mp3가 있는 폴더로 바꿔주면 된다.

forked-daapd 실행

/usr/sbin/forked-daapd를 실행하면 directories에 정의된 폴더를 읽어서 서비스를 시작한다. 하지만 매번 우분투가 재부팅 되면 서비스도 다시 시작해줘야한다. 따라서 부팅 때 서비스가 시작되도록 설정을 해줘야한다.

스크립트를 다운로드해서 /etc/init.d/forked-daapd로 저장한다.

먼저 스크립트를 실행 가능하게 바꿔준다.

$ sudo chmod +x /etc/init.d/forked-daapd

그리고 스크립트가 부팅 때 실행 되도록 설정해준다.

$ sudo update-rc.d forked-daapd defaults

그리고 실행!

$ sudo service forked-daapd start

안드로이드 클라이언트 등록

안드로이드용 클라이언트는 DAAP, Retune 등이 있는데 DAAP은 GUI가 좀 촌스럽지만 안드로이드 기기에서 음악을 직접 들을 수 있다. AirPlay를 지원하는 기기가 있다면 소리를 그 쪽으로 돌릴 수도 있다. 반면 Retune은 좀 더 세련된 GUI를 제공하지만 안드로이드에서 직접 음악을 들을 수 없다. Retune은 AirPlay의 리모콘 역할밖에 하지 못한다.

둘 중에 어떤 앱을 쓰던간에 forked-daapd에 클라이언트 등록을 먼저 해야한다. 등록을 하려면 기기 이름과 비밀번호가 필요한데 기기이름은 forked-daapd 로그에서 찾아야하고, 비밀번호는 앱에서 찾을 수 있다. 먼저 터미널을 하나 띄운 후 forked-daapd의 로그를 계속 보여주도록 한다.

$ tail -f /var/log/forked-daapd.log 

그리고 Retune을 실행시키면 로그에 다음과 같이 클라이언트를 하나 찾았다고 나온다.

[2016-02-18 17:00:40] [  LOG]   remote: Discovered remote 'SAMSUNG-SM-G920AZ' (id 000000000000000000000000ACB07858ED100E92) at 192.168.1.8:9025, paircode ACB07858ED100E92

forked-daapd가 찾은 클라이언트의 이름은 SAMSUNG-SM-G920AZ. 그리고 Retune이 4자리 비밀번호를 생성해서 아래처럼 보여준다.

Retune 등록

directories에서설정한 mp3 폴더에 확장자가 .remote로 끝나는 파일을 하나 만든다. 파일 이름은 뭐가 되든 상관없다. 그리고 forked-daapd가 보여주는 기기 이름과 Retune에 나오는 4자리 숫자를 써 넣고 저장하면 끝

SAMSUNG-SM-G920AZ
1872

잠시 기다리면 forked-daapd가 .remote 파일을 읽고 클라이언트를 등록한다. 그러면 화면이 바뀌면서 Playlists를 보여준다. 이제 집 안 어디에서든 서버에 저장된 음악을 즐길 수 있다.