Sunday, November 29, 2015

Cài đặt MySQL trên RPI chạy OSMC, Openwrt hoặc NasBuffalo

Giới thiệu:
Ở bài viết Sử dụng MySQL để đồng bộ Library Phim và Nhạc của KODI, mình đã hướng dẫn các bạn dùng MYSQL để đồng bộ KODI database, bài viết này hướng dẫn chi tiết cách cài đặt Mysql trên các nền OS thường dùng tại mạng gia đình.
Nếu Router của bạn cài OpenWrt, và có cổng USB thì tốt nhất nên cài Mysql lên Router để share database, nên mỗi khi bạn bật KODI lên, kết nối vào mạng là database sẽ đồng bộ lên luôn, cả userdata cũng vậy.
Nếu Router không đáp ứng được thì chúng ta chuyển sang phương án tiếp theo là cài trên RPI hoặc Nas (nếu có).

Cài MySql Server cho Raspberry Pi chạy OSMC:
    
Trên OS Openelec là OS build sẵn nên không cài được Mysql Server, Các bác có thể cài OSMC tương tự Openelec nhưng tùy biến cao hơn. Nếu NAS chạy Debian cũng sử dụng cách này (NasBufflo của mình đang dùng cái này, nhẹ mà nhanh hơn cái Firmware của hãng).
1. Dùng Pytty Login vào thiết bị:
apt-get update
apt-get install mysql-server
# khai báo pass khi có thông báo hỏi
2. Config Mysql
Sau khi cài xong, dùng WinSCP login vào thiết bị, edit file /etc/mysql/my.cnf
Thay đổi dòng
Từ: bind-address = 127.0.0.1
thành: bind-address = 0.0.0.0
Sau đó khởi động lại MySQL server và tiến hành config mysql server, trên pytty gõ lệnh:
Code:
/etc/init.d/mysql restart  
#hoặc 
/etc/init.d/mysqld restart
mysql -u root -p
# các lệnh sau của mysql, chỉ copy phần sau của "mysql>" nhé
mysql> CREATE USER 'kodi' IDENTIFIED BY 'kodi';
mysql> GRANT ALL ON *.* TO 'kodi';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'kodi' IDENTIFIED BY 'kodi';
mysql> flush privileges;
mysql> exit
#exit ra ngoài


Xong, các bạn config tiếp advancedsettings.xml trên KODI, phần IP là IP của thiết bị chạy MYSQL Server là xong thôi.

Cài đặt MYSQL trên NAS:
Mình hướng dẫn cho Nas Bufflo, các loại khác cũng tương tự thôi. Trước hết các bác cần mở Telnet/SSH các dòng NAS chạy firmware Linux Buffalo.
Firmware mặc định của NAS đã cài sẵn MYSQL rồi, các bạn chỉ việc bật nó lên thôi.
1. Enable MySQL:
Truy cập NAS qua WEB: Vào phần [Network] - [MySQL server].
- Click [Modify Settings].
- Enable MySQL server.
- Chọn folder cho MySQL database và configuration.
- Click [Save].
2. Config MYSQL Server cho KODI
Sau khi khởi động lại NAS, dùng Pytty Login vào NAS: Chạy lệnh
Code:
mysql -u admin -p
#để login vào mysql
# các lệnh sau của mysql, chỉ copy phần sau của "mysql>" nhé
mysql> CREATE USER 'kodi' IDENTIFIED BY 'kodi';
mysql> GRANT ALL ON *.* TO 'kodi';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'kodi' IDENTIFIED BY 'kodi';
mysql> flush privileges;
mysql> exit
#exit ra ngoài

Xong, các bạn config tiếp advancedsettings.xml trên KODI, phần IP là IP của NAS là xong thôi.
Cài đặt MYSQL trên OpenWRT:
- Cài đặt Openwrt nhận và mở rộng bộ nhớ lên USB (cần usb 2gb trở lên là ok)
- Dùng Pytty kết nối SSH vào Router, gõ lệnh
Code:
opkg update
#cập nhật các gói ứng dụng
opkg install mysql-server samba36-server luci-app-samba
#đợi cho cài xong
/etc/init.d/mysqld stop
killall mysqld

Dùng WinSCP login vào Router, tìm đến file /etc/my.cnf
mở file lên tìn đến dòng
Code:
bind-address        = 127.0.0.1
sửa lại thành
bind-address        = 0.0.0.0
Xong Save lại, chuyển sang Pytty, gõ lệnh:
Code:
mysql_install_db --force
# để config lần đầu chạy mysql
killall mysqld
/etc/init.d/mysqld restart
mysql -u root -p
#xong nhấn 2 lần enter, bỏ qua ko điền pass, sẽ vào mysql dạng:
# các lệnh sau của mysql, chỉ copy phần sau của "mysql>" nhé
mysql> CREATE USER 'kodi' IDENTIFIED BY 'kodi';
mysql> GRANT ALL ON *.* TO 'kodi';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'kodi' IDENTIFIED BY 'kodi';
mysql> flush privileges;
mysql> exit
#exit ra ngoài
/etc/init.d/mysqld enable
/etc/init.d/mysqld restart

Config Samba: Chúng ta sẽ share Folder /mnt (folder mount USB), thành tên USB, sau khi share xong, từ Win các bạn có thể truy cập như ổ đĩa share bình thường.
Ở Pytty, gõ lệnh
Code:
smbpasswd -a root
#để đặt pass share samba
/etc/init.d/samba enable
/etc/init.d/fstab enable

Truy cập Router qua WEB, vào phần Services/Network Shares

Nhấn Add , điền thông tin share như hình, xong save lại, chuyển sang tab Edit Tamplate
Tại đây sửa cho mình thế này: sửa dòng invalid users = root thành valid users = root, xong save lại, và khởi động lại router.
Sau khi khởi động lại, từ Windows explorer của Win, thử gõ địa chỉ
\\192.168.1.1\USB\
điền user root và pass root bạn đặt lúc trước, nếu vào được là ok, tạo luôn folder userdata để làm tiếp theo hướng dẫn Sử dụng MySQL để đồng bộ Library Phim và Nhạc của KODI (XBMC) 


Friday, November 27, 2015

Sử dụng MySQL để đồng bộ Library Phim và Nhạc của KODI (XBMC)

Giới thiệu:
Các bạn có nhiều thiết bị chạy KODI(XBMC) trong mạng nhà bạn, chúng ta sử dụng MySQL để đồng bộ dữ liệu phim và nhạc (database) để chia sẻ giữa các thiết bị. Mysql cho phép lưu trữ tất cả dữ liệu phim và nhạc của bạn trên MYSQL Server, các bạn có thể truy cập và đồng bộ giữa các thiết bị với nhau. Ví dụ đang xem dở phim ở phòng khách, lên phòng ngủ bật tiếp chỗ đang xem dở. 
Nguyên lý thế này: chúng ta dùng Mysql server chạy trên 1 thiết bị online 24/24 của bạn, Mysql server sẽ lưu toàn bộ dữ liệu về KODI database, các thiết bị chạy KODI mỗi khi bật lên sẽ kết nối vào đó và đồng bộ dữ liệu thông qua MYSQL Client có sẵn của KODI.
Các tính năng cơ bản:
- Các phim đã xem và chưa xem, thời gian xem được đồng bộ cho tất cả các thiết bị
- Tạm dừng xem ở thiết bị này, xem tiếp ở thiết bị khác như nói ở trên
- 1 cơ sở dữ liệu chung cho tất cả thiết bị.
- Các bạn có cài lại KODI thì thư viện MEDIA của bạn cũng sẽ không bị mất.
- Mysql tương đối nhẹ, hỗ trợ nhiều OS.
Có nhiều cách để đồng bộ database KODI giữa các thiết bị cùng 1 mạng gia đình: Share qua UPNP, PLEX server, mình đã thử qua và thấy MYSQL vẫn là chuyên nghiệp nhất.
Cài đặt MYSQL:
MYSQL server có thể cài ở bất kỳ thiết bị nào hỗ trợ:
- Có thể cài trên ROUTER của bạn chạy Openwrt (nếu Router có hỗ trợ USB để mở rộng bộ nhớ lưu)
- Có thể cài trên Các loại NAS, nếu bạn dùng NAS để tải và lưu phim sẽ rất tiện. NAS nên để chế độ StaticIP để sử dụng MYSQL Server và dễ quản lý hơn.
- Nếu bạn dùng thiết bị chạy Openelec để chạy KODI, có thể cài luôn MYSQL Server trên thiết bị đó luôn.
Cách cài đặt MYSQL Server tham khảo: (Hướng dẫn cụ thể cài Mysql và Samba Server)
Tham khảo thêm: MySQL on all OS.

Config KODI để kết nối với MYSQL Server:
- Nếu phim các bạn lưu trên NAS, xem phim qua Samba server của NAS
- Dùng Notepad tạo file advancedsettings.xml với nội dung:
Code:
<advancedsettings>
  <videodatabase>
    <type>mysql</type>
    <host>192.168.1.1</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>kodi</pass>
  </videodatabase> 
  <musicdatabase>
    <type>mysql</type>
    <host>192.168.1.1</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>kodi</pass>
  </musicdatabase>
  <videolibrary>
    <importwatchedstate>true</importwatchedstate>
    <importresumepoint>true</importresumepoint>
  </videolibrary>
</advancedsettings>

Trong đó: 192.168.1.1 là địa chỉ IP của thiết bị chạy MYSQL Server
Lưu lại, copy file advancedsettings.xml vừa tào  vào thư mục userdata, trên tất cả các thiết bị chạy KODI. Khởi động lại thiết bị chạy KODI.
Lưu ý là tất cả các thiết bị chạy KODI phải cùng version KODI thì mới đồng bộ được nhé. Không quan trọng bạn chạy KODI trên WIN, MAC, ANDORID hay OPENELEC, miễn là cùng phiên bản KODI là đồng bộ được.
Tiến hành đồng bộ thử KODI database vào Mysql Server:
Trên 1 thiết bị vừa khời động lại, các bác tiến hành quét phim vào thư viện như bình thường, KODI sẽ quét cả thư viện phim của bạn. Về quản lý phim các bạn tham khảo bài Hướng dẫn tự động hóa việc tải phim qua Torrent bằng CouchPotato và transmission. Mình dùng để tải và quản lý phim, nên khi KODI quét sẽ có đầy đủ tất cả thông tin phim.
Khi KODI quét và IMPORT phim lên server thì, đồng thời ở các thiết bị khác sẽ đểu được đồng bộ theo.
Xong phần Share database thông qua MYSQL Server

Share thư mục userdata:
thư mục userdata của kodi lưu trữ những thông tin sau có thể share giữa các thiết bị:
- sources.xml - các đường dẫn đến server hệ thống của bạn (NAS) của bạn
- mediasources.xml - các đường dẫn đến nguồn phim, nhạc của bạn
- folder playlists
- favourites.xml

Share thư mục này dùng chung thì bạn chỉ cần cài đặt ở 1 thiết bị các thiết bị khác cũng sẽ được đồng bộ, ví dụ các bạn dùng tính năng "add to favourite" ở 1 thiết bị, thiết bị khác cũng sẽ luu đường dẫn đó, quá tiện phải ko
Thường thì thư mục share userdata nên đặt chung với thiết bị cài MYSQL Server và có thiết bị này cũng cài Samba server để chia sẻ thư mục dùng chung. 
Các bạn tạo 1 thư mục tên userdata, sau đó truy cập vào thư mục userdata của 1 thiết bị KODI của bạn, copy thành phần ở trên (file sources.xml, mediasources.xml,folder playlists và avourites.xml) đã có vào folder userdata vừa tạo. 
Edit file advancedsettings.xml thêm các dòng sau: (dưới đây tham khảo nhé, các bạn edit theo của bạn)
Code:
<advancedsettings>
<pathsubstitution>
 <substitute>
    <from>special://profile/mediasources.xml</from>
    <to>smb://root:root@192.168.1.1/USB/userdata/mediasources.xml</to>
  </substitute>
<substitute>
    <from>special://profile/sources.xml</from>
    <to>smb://root:root@192.168.1.1/USB/userdata/sources.xml</to>
  </substitute>
 <substitute>
    <from>special://profile/playlists/</from>
    <to>smb://root:root@192.168.1.1/USB/userdata/playlists/</to>
  </substitute>
<substitute>
    <from>special://profile/favourites.xml</from>
    <to>smb://root:root@192.168.1.1/USB/userdata/favourites.xml</to>
  </substitute>
</pathsubstitution>
<videodatabase>
    <type>mysql</type>
    <host>192.168.1.1</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>kodi</pass>
  </videodatabase> 
  <musicdatabase>
    <type>mysql</type>
    <host>192.168.1.1</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>kodi</pass>
  </musicdatabase>
  <videolibrary>
    <importwatchedstate>true</importwatchedstate>
    <importresumepoint>true</importresumepoint>
  </videolibrary>
</advancedsettings>

Giải thích đường dẫn : smb://root:root@192.168.1.1/USB/userdata/
smb --> là share SAMBA
root:root: là user và pass
192.168.1.1 : IP của samba server

Mình cài MYSQL và samba server trên ROUTER chạy Openwrt nên IP là 192.168.1.1, MYSQL và samba server tương đối nhẹ mà.
Một điểm mình rất thích ở cách share MYSQL và USERDATA folder là, khi cài lại KODI, các bạn chỉ cần copy file advancedsettings.xml (có thông tin MYSQL server và userdata đã tạo ở trên)đến thiết bị mới cài, thoát ra vào lại là mọi thứ lại trở lại như cũ, ko cần scan lại phim, tất cả các plist giữ nguyên, các nguồn phim đươc add sẵn. Thật tiện phải không!