Sunday, December 3, 2017

How to install and configure Kodi on Linux to use NFS and MySQL

Plex and Kodi are very popular media player software. Both of these software have pros and cons in various aspects such as open source vs closed source, free vs paid, server end transcoding vs client end transcoding etc.

When it comes to configurations, Plex is easier to configure than Kodi. However if you are a Linux user, configuring Kodi is not difficult. Actually it is easier than what I thought.

My use case is sharing media files across a LAN. An Espressobin works as the centralized headless media source, a Fedora desktop and an Android Tab as the Kodi clients.

I chose NFS to share the files and MySQL to share the Libraries.

1. Install and configure NFS server on the NAS


I'm using Armbian on my Espressobin, hence the package management tool is apt-get. 

apt-get install nfs-kernel-server

Then I have configured /etc/exports file which is the configuration file for NFS server to share the directory where my media files are.

Methods of configuring this file is explained in Kodi Wiki in detailed manner.
http://kodi.wiki/view/NFS#NFS_sharing_from_Linux

I used option one where all UIDs connected to the NFS server are mapped to UID 65534 (i.e. user nobody)

Content of my /etc/exports file,

root@espressobin:~# cat /etc/exports  | grep -v '#'
/mnt/kodi_test 192.168.8.0/24(rw,all_squash,insecure)


Then I executed exportfs -ra command to refresh the NFS shares.

At this point, the NFS share has been successfully configured.

 

2. Install and configure MySQL server on the NAS


The steps required for this are well documented in the Kodi Wiki,
http://kodi.wiki/view/MySQL/Setting_up_MySQL

In brief the steps are,
  • Install MySQL server,
apt-get install mysql-server

  • Change Bind Address,
Change bind-address in /etc/mysql/mysql.conf.d/mysqld.cnf file

  • Restart MySQL Server,
service mysql restart

  • Execute SQLs to create and configure required database user in MySQL server,
mysql -u root -p

CREATE USER 'kodi' IDENTIFIED BY 'kodi';
GRANT ALL ON *.* TO 'kodi';
flush privileges;


Now I have finished configuring the server side. I have installed and configured NFS and MySQL on my NAS. Now it's time to configure client side. So I installed Kodi on my Fedora desktop.

3. Use MySQL in Kodi


Even though I have created MySQL server and the required MYSQL users on the NAS, Kodi runs on my Desktop must be configured to use the MySQL server.

For that I need to create a XML file called advancedsettings.xml and put it to a directory in each Kodi clients. The directory location is OS specific and the correct location is documented here,
http://kodi.wiki/view/Userdata#Location_of_the_userdata_folder

So I have created my advancedsettings.xml in ~/.kodi/userdata/  in my Fedora desktop machine.

[user@localhost userdata]$ pwd
/home/user/.kodi/userdata


[user@localhost userdata]$ cat advancedsettings.xml
<advancedsettings>
  <videodatabase>
    <type>mysql</type>
    <host>192.168.8.102</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>kodi</pass>
  </videodatabase>
  <musicdatabase>
    <type>mysql</type>
    <host>192.168.8.102</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>kodi</pass>
  </musicdatabase>
  <videolibrary>
    <importwatchedstate>true</importwatchedstate>
    <importresumepoint>true</importresumepoint>
  </videolibrary>
</advancedsettings>


4. Use NFS share in Kodi


I started Kodi on the Fedora desktop and added the NFS share as the media source.

Instruction on adding a shared source is documented here,
http://kodi.wiki/view/Adding_video_sources#Adding_Remote_sources

In brief the steps are,
  • Click on the settings icon
  • Click on Media Settings
  • Click on Library
  • Select  Videos from "Manage Sources"
  • Click on Add Videos
  • Then Click on Browse from "Add Video Source" window
  • Choose Network File System (NFS) option from the drop down

That's it. the Espressobin NAS has been configured,
  • to share content via NFS to Kodi running on devices connected to my LAN
  • to maintain a centralized Kodi library in MySQL server running on the same NAS.

Was that difficult? I don't think so.

No comments:

Post a Comment