HJ Note

My thoughts, life and investments

Thursday

19

February 2015

2

COMMENTS

MySQL을 통한 KODI/XBMC의 라이브러리 공유

Written by , Posted in Hobbies

Kodi Home

집에 여러 디바이스에 KODI를 설치하고 NAS에 저장해 둔 미디어 파일들을 공유해서 사용하고 있다. 그런데 가장 번거로운 것이 NAS에 저장해둔 미디어 파일들의 라이브러리를 각각의 디바이스에서 따로 관리하고 정리하는 일이었다.

한군데서 정리한 라이브러리와 각 컨텐츠의 시청 여부, 또 어디까지 봤는지 등의 정보를 모든 디바이스에서 공유할 수 있다면 너무 편리할 것 같다는 생각이 들어 폭풍 검색해 보니 MySQL 데이터베이스를 통해 가능한 방법이 있었다.

과정을 복기하고 기록하는 마음으로 정리해본다.

일단, 집 안에 KODI가 설치된 모든 디바이스들이 언제나 라이브러리 정보를 공유해야 하기 때문에 MySQL Server가 돌아갈 PC는 언제나 켜져 있는 것이 좋다는 제약이 있다. 집 PC들을 둘러보니 이에 딱 맞는 PC는 ‘라즈베리파이’였다.

Raspberry Pi

이 라즈베리파이 PC는 현재 다른 목적 (디지털 액자로 만들기 위해 작업 중)을 가지고 있는데, 이런 목적 덕분에 24시간 365일 켜져 있을 가능성이 가장 높은 PC이다. 또한 올라가 있는 OS가 Raspbian으로 Linux 기반이기 때문에 MySQL Server를 올리기에도 전혀 무리가 없어 보였다. 일단 라즈베리파이를 KODI의 라이브러리 정보 공유 서버로 활용하기로 하고, 다음 단계를 하나씩 보면…

1. Raspbian 최신 상태로 만들기

SSH를 통해 MySQL Server를 돌릴 Target PC에 접속한다. (참고로 윈도우에서는 SSH를 이용하기 위해서 Putty라는 어플리케이션을 사용하면 된다. 아래 화면은 Mac에서 작업하는 모습)

SSH Connect

SSH를 통해 Target PC에 성공적으로 접속하여 위와 같은 상태가 되면, 아래와 같은 명령을 내려준다.

sudo apt-get update && sudo apt-get upgrade

현재 Raspbian이 최신 상태인지 확인하고, 그렇지 않다면 Upgrade가 진행될 것이다. 다음 과정은 MySQL Server를 설치하는 것이다.

sudo apt-get install mysql-server

역시 설치 과정이 쭉 진행될 것이고, 설치가 종료되면 아래와 같은 화면이 뜨면서 MySQL Server의 Root 계정의 Password를 설정하게 된다.

MySQL Root Password

여기까지 진행하게 되면, 이제 MySQL Server의 설치는 마친 것이다. 이제 MySQL Server에서 몇 가지를 설정해 줘야 하는데, 첫번째는 MySQL Server가 구동하는 IP 주소를 정확히 셋팅해 줘야 한다. /etc/mysql/my.cnf 파일이 해당 정보를 가지고 있는데, 아래와 같이 명령어를 내려서 my.cnf 파일을 수정해준다.

sudo nano /etc/mysql/my.cnf

위 명령어를 실행하면, 아래와 같이 파일 편집기가 실행되고 my.cnf 파일을 불러오게 된다. 아래로 쭉 스크롤 다운하다보면 아래 스크린샷의 명암이 쳐진 부분을 찾을 수 있다. 기존에 이 부분은 아래와 같은 IP가 아닌 127.0.0.1로 셋팅되어 있는데, 이 것을 해당 PC의 정확한 IP 정보를 확인하여 고쳐줘야 한다. 나의 Target PC인 라즈베리파이의 IP는 192.168.1.3으로 셋팅해 둔 상태라 아래와 같이 변경을 했다. (참고로 공유기의 DHCP 기능을 쓰고 있으면 디바이스들의 IP가 시시때떄 바뀔 수 있는데, MySQL Server를 돌릴 PC의 IP는 고정 IP인 것이 좋다. 이 부분은 조금만 검색하면 어떻게 IP를 고정할 수 있는지찾을 수 있기 때문에 생략)

MySQL.cnf

여기까지 진행한 후에는 Ctrl+X를 눌러 해당 파일을 저장하고, MySQL Server를 재시작 해주면 된다.

sudo restart mysql

다음 단계는 MySQL Server에 KODI에서 사용할 계정을 생성해 주는 일이다.

mysql -u root -p

위 명령어를 입력하고 엔터를 치면 MySQL Server에 접속을 하게 된다. Password를 묻는데, 위에서 설정한 Root 계정의 Password를 입력하면 된다. MySQL Server에 접속을 하게 되면 다음 프롬프트 상에서 아래와 같이 ‘kodi’ 이용자를 생성하고, 권한을 Full로 주면 된다.

CREATE USER ‘kodi’ IDENTIFIED BY ‘kodi’;
GRANT ALL ON *.* TO ‘kodi’;

이렇게 하면 ‘kodi’라는 User가 MySQL Server 내에 생기게 된다. 여기까지 진행되었으면, quit 명령어를 통해 일단 MySQL Server에서 빠져 나온다. 그리고 ‘kodi’ 계정이 잘 생겼는지 확인해 보기로 한다. 아래와 같이 명령을 내리고, Password를 물으면 똑같이 kodi라고 적어주고 Enter.

mysql -u kodi -p

KODI ACCESS

kodi 계정으로 성공적으로 접속이 되면 일단 1차 성공이다. 따로 Database를 생성해줄 필요는 없다. Kodi에서 직접 필요한 Database를 생성하고 Table 등도 만들 것이기 때문에..

다음은 가장 중요한 AdvancedSettings.xml 파일을 만들고, 이 파일을 적절한 폴더로 옮겨주는 일이 남았다. AdvancedSettings.xml 파일의 역할은 여러 Device들의 라이브러리를 MySQL을 통해 공유한다는 것을 명시해 주는 것이다. AdvancedSettings.xml 파일은 메모장을 열어 작성하면 된다. 유의할 점은 반드시 단순 Text로 작성해야 한다는 점이다. 메모장 등에 아래 Script를 그대로 Copy & Paste 해주고 빨간색 폰트 부분만 위에서 지정한 Target PC의 IP로 변경하고 저장하면 된다.

<advancedsettings>
  <videodatabase>
    <type>mysql</type>
    <host>***.***.***.***</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>kodi</pass>
  </videodatabase>
  <musicdatabase>
    <type>mysql</type>
    <host>***.***.***.***</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>kodi</pass>
  </musicdatabase>
</advancedsettings>

 

이렇게 만든 파일을 이제 각각의 Device의 UserData 폴더에 Copy 해주면 설정 작업은 모두 끝난다. OS별 UserData 폴더의 위치는 아래와 같다.

Android: Android/data/org.xbmc.kodi/files/.kodi/userdata/
iOS: /private/var/mobile/Library/Preferences/kodi/userdata/
Linux: ~/.kodi/userdata/
Mac OS X: /Users/<your_user_name>/Library/Application Support/Kodi/userdata/
OpenELEC: /storage/.kodi/userdata/
Windows: 시작 버튼 – type %APPDATA%\kodi\userdata – <Enter>

이제 설정 작업은 완료되었고, 앞으로 라이브러리 업데이트를 책임질 Main Device를 하나 정해서 그 디바이스를 통해 NAS에 있는 미디어 컨텐츠들을 불러서 라이브러리를 정리해주면 된다. NAS에 연결할 때는 Samba로 연결하면 된다. NFS로도 가능할 것 같은데 KODI가 설치되어 있는 Device 중 윈도우 기반의 PC가 있다면 가급적 Samba로 연결하는 것이 좋을 것 같다.

마지막으로 업데이트를 책임질 Main Device에서 위 설정을 마친 후 최초 Kodi를 구동하기 전과 후를 비교해보면,

Kodi를 최초 구동하기 전에 MySQL 서버의 Database를 확인해보면 아래와 같은 DB들이 보인다.

Before Database

이제 업데이트를 책임질 Device에서 Kodi를 구동한 후 Home 화면이 뜨면 (최초 Kodi 구동시 다운된 듯이 멈춰있을 수 있는데, 서버에 DB를 생성하는데 시간이 걸리는 것이니 참고 기다리면 된다.), 다시 SSH 상에서 Database가 어떻게 바뀌었는지 확인해본다. 아래와 같이 Video와 Music 관련 새로운 데이터베이스가 생성된 모습을 확인할 수 있으며, 앞으로 이 데이터베이스에 집안의 모든 Kodi Device들이 공유할 라이브러리 정보가 저장되게 된다.

After Database

업데이트를 책임질 Main Device에서 라이브러리를 모두 정리한 후에 다른 Device에서 Kodi를 구동하게 되면 바로 정리된 라이브러리를 볼 수 있다. 이로써 온 집안의 모든 Device에서 Seamless한 미디어 라이프를 즐길 준비를 마무리하게 되었다. =)

Kodi Home

2 Comments

  1. 헌짱
    • 헌짱

Leave a Reply

Your email address will not be published. Required fields are marked *