:::: MENU ::::

Base de données Kodi centralisée sur un serveur Mysql

Pour ceux qui possèdent plusieurs appareils exploitant le lecteur multimédia Kodi, il peut être intéressant de déporter la base de données sur un serveur centralisé MySQL afin de pouvoir gérer en un seul point l’ajout de nouveaux contenus ou encore la gestion des épisodes vus/non vus. Cela permet aussi de réduire la charge de travail du Raspberry Pi.

Dans mon cas, je déporte la base de données de ma bibliothèque multimédia afin de partager cette dernière entre le Kodi présent sur ma BBox Miami et le Raspberry Pi tournant sous Xbian présent dans ma chambre. J’installe le serveur MySQL sur mon Raspberry Pi mais si vous disposez d’un NAS ou d’un serveur il est recommandé de les utiliser en tant que serveur MySQL (la carte SD du Raspberry ne supporte que moyennement les écritures répétées d’un serveur de base de données).

Logo MySQLLogo Kodi

Les logos de MySQL et Kodi

⚠ Attention : vos fichiers multimédias (films, séries, musiques …) devront être situés sur un stockage partagé sur le réseau (NAS, disque dur externe …) afin que chaque appareil puisse y accéder. Le protocole de partage (Samba, NFS, AFP…) doit également être identique pour l’ensemble des clients Kodi, afin de conserver les mêmes chemins d’accès. De plus, la version de Kodi utilisée devra être identiques sur l’ensemble de vos terminaux.

Installation de MySQL

Nous allons commencer de manière habituelle en mettant à jour les paquets avant de lancer l’installation de MySQL :

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mysql-server

Un mot de passe vous sera demandé durant l’installation, assurez-vous de vous en rappeler, ça sera le mot de passe root de votre serveur MySQL.

Configuration de MySQL

La configuration par défaut ne vous permet pas d’accéder (pour des raisons de sécurité) à votre serveur MySQL via le réseau (l’accès se fait uniquement en local sur le Raspberry Pi). Il faut donc dans un premier temps modifier la configuration de MySQL :

sudo nano /etc/mysql/my.cnf

Trouvez la ligne bind-address = 127.0.0.1, vous pouvez :

  • La commenter (#bind-address = 127.0.0.1 ), dans ce cas le serveur sera accessible depuis n’importe quelle adresse IP (à condition que la redirection de port soit correctement établie au niveau de votre box sinon ça sera depuis n’importe quelle adresse locale).
  • Définir la valeur à bind-address = 0.0.0.0  ce qui aura le même effet que la commenter.
  • Définir l’adresse IP du Raspberry (bind-address = 192.168.1.22  par exemple). Le serveur MySQL sera alors accessible uniquement via un appareil relié au réseau local.

On redémarre le serveur pour appliquer les modifications :

sudo service mysql restart

Nous allons nous connecter à la base directement depuis le Raspberry Pi à l’aide de la commande :

mysql --user=root --password=votrepasswd

Maintenant il faut savoir que l’utilisateur root créé lors de l’installation ne peut se connecter qu’en local par défaut. Si vous le désirez, vous pouvez autoriser une connexion via le réseau local à l’aide de cette commande :

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY 'password' WITH GRANT OPTION;

Dans ce cas, en indiquant 192.168.1.%, l’utilisateur root pourra alors se connecter depuis n’importe quel ordinateur de notre réseau local. L’utilisation du wildcard % uniquement autorisa la connexion depuis n’importe quelle adresse IP. N’oubliez pas de changer le mot de passe avant d’exécuter la commande.

Logo MySQL WorkbenchPour que Kodi puisse utiliser notre base de données, nous avons uniquement besoin de créer un utilisateur (la première instance de Kodi lancée se chargera de créer les Schémas ainsi que les tables nécessaires). Pour faire cela, vous pouvez soit utiliser un logiciel d’administration de base de données (je recommande MySQL Workbench, disponible à cette adresse : https://www.mysql.fr/products/workbench/) ou vous pouvez le faire via la ligne de commande directement.

Pourquoi ne pas utiliser phpMyAdmin ? phpMyAdmin requiert l’installation d’un serveur web (couplé à un interpréteur PHP) sur le Raspberry. Or, dans notre cas, nous n’aurons pas l’utilité du serveur web, il est donc préférable d’utiliser des outils externes tels que MySQL Workbench qui font le boulot (voir mieux que phpMyAdmin). De plus il existe des versions portables de cet outil d’administration.

CREATE USER 'kodi'@'192.168.1.%' IDENTIFIED BY 'new_password';

Kodi aura besoin de créer des schémas, des tables … Pour faire simple, nous allons donc lui attribuer tous les droits sur notre base de données :

GRANT ALL PRIVILEGES ON *.* TO 'kodi'@'192.168.1.%';
FLUSH PRIVILEGES;

Configuration de Kodi

Maintenant il faut configurer Kodi pour qu’il utilise la base de données MySQL. Pour cela il suffit de créer le fichier nommé advancedsettings.xml :

<advancedsettings>
  <videodatabase>
    <type>mysql</type>
    <host>192.168.1.22</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>password</pass>
  </videodatabase> 
  <musicdatabase>
    <type>mysql</type>
    <host>192.168.1.22</host>
    <port>3306</port>
    <user>kodi</user>
    <pass>password</pass>
  </musicdatabase>
  <videolibrary>
    <importwatchedstate>true</importwatchedstate>
    <importresumepoint>true</importresumepoint>
  </videolibrary>
</advancedsettings>

Enregistré maintenant ce fichier dans le dossier /home/xbian/.kodi/userdata/.

Voilà, il ne reste plus qu’à relancer Kodi. Ce dernier va se charger de créer les différents schémas et Tables nécessaires.

Une fois Kodi lancé, si l’on se connecte au serveur MySQL nous pouvons voir ces 2 schémas :

Schémas Kodi

Les schémas et tables générés par Kodi

Si le numéro situé en fin du nom des schémas est différent, c’est tout à fait normal. En effet ce dernier indique la version du schéma qui dépend donc de la version de Kodi.

Essayez maintenant le scan de nouveaux contenus, si jamais rien ne se passe, c’est notamment qu’il doit y avoir un problème de connexion à la base de données. Consultez alors les logs situés dans le dossier /home/xbian/.kodi/cache/temp/kodi.log afin de comprendre quel est le problème.

Il suffit de configurer de la même façon l’ensemble des clients Kodi que l’on souhaite mettre en commun. Il sera alors possible de commencer la lecture d’une vidéo sur un client Kodi et de reprendre à l’endroit exact où la lecture s’est arrêté depuis un second client. La mise à jour depuis un client mettra à jour l’ensemble des clients connectés à la base MySQL.

Pour plus d’informations concernant l’utilisation d’un serveur MySQL avec Kodi : https://kodi.wiki/view/MySQL

A propos de l'auteur :

C’est l’histoire d’un développeur pleine pile un peu touche à tout, qui découvre l'infrastructure et le nuage. Son plat préféré, c’est le hachi-corp sauce K8S. Détestant faire deux fois la même chose, féru d’automatisation, il s’est dévoué à la cause de l’infrastructure comme code, de la containérisation et du déploiement continu. Blogueur sur un site de Framboise, il a eu le malheur d’acheter une imprimante 3D, et cherche encore à comprendre pourquoi il est un fan ardu de Formule 1.


13 Comments

  • Répondre Julien Pagnier |

    Bonjour, j’ai suivi le tuto pour l’installation de la base de données plusieurs fois, est arrivé au stade ou je dois lancer Kodi après avoir copié les fichiers advancedsettings.xml dans les répertoires des applications Kodi, rien ne se passe sur le serveur MySQL, aucune table n’est créée.
    Pour info, j’utilise un nas Synology et Kodi en version 17.3 sur un pc windows, mon téléphone Android et ma TV Philips sous Android également.
    Merci d’avance pour votre aide

    • Répondre Manu |

      Etrange comme problème. Ton serveur MySQL est sur le Synology ou sur un Raspberry Pi ?
      Je pencherai soit pour un problème de configuration dans le fichier « advancedsettings.xml » (problème d’adresse IP ou d’utilisateur) ou alors un problème de droit pour l’utilisateur de la base MySQL.
      Tu as bien laissé démarrer complètement ton Kodi ? Il arrive que le processus soit plus ou moins long, surtout suite à une mise à jour Kodi.
      J’ai une configuration similaire : média et base MySQL sur un NAS Synology et des clients Kodi sur Raspberry Pi, Macbook et smartphone Android. Le tout fonctionne très bien en partageant la même base de données.

  • Répondre Frederic EGGENSPIELER |

    Bonjour
    J’avais le mêmes soucis avec la base MySQL sur le NAS Synology. Kodi sur le rpi se connecte pour la 1er fois grâce au user guest. Sur mon Synology cette user était désactivé. Après activation le rpi arrive à se connecter à la base MySQL.

    • Répondre Manu |

      Effectivement c’est une possibilité, de mon côté j’ai créé un user nommé « kodi » via phpmyadmin qui dispose de l’ensemble des droit ce qui évite les problèmes de désactivation.

  • Répondre Clochette |

    Je sais que l’article est assez ancien, mais l’utilisation de Emby sur un serveur de stockage permet d’utiliser les RPI comme simple client de lecture, il y a un plugin Emby pour Kodi.

    A la maison ce type de montage me permet d’utiliser de façon très simple plusieurs devices différents avec au choix le client Emby sur tablette et téléphone, et du Kodi à jour sur des cartes tel que Odroid, RPI, Rock64 mais aussi sur des Pc plus classique.

    My two cents.

    • Répondre Manu |

      Merci de faire découvrir Emby dont j’ignorais l’existence.
      Cependant on s’éloigne de l’utilisation type de Kodi, Emby nécessitant, comme Plex, un serveur avec un certaine puissance de calcul/mémoire pour la partie transcodage, là où une solution sous Kodi avec de multiples clients ne nécessite qu’un simple serveur de base de données type MySQL et un espace de stockage sur le réseau local.
      J’imagine que faire tourner le serveur Emby sous Raspberry est compliqué à cause des ressources matérielles limités.

  • Répondre Clochette |

    Désolé du temps de réponse, j’utilise une ‘infra’ basé sur Openstack, la partie domotique/multimédia est confié à de simple container Docker tournant sur une machine virtuelle, je n’ai pas noté de charge anormale.

    Emby peu-être déployé sur un ‘simple’ NAS, donc pourquoi pas sur une framboise.

  • Répondre Laurent |

    Bonsoir,
    Comme toi je dispose d’une bbox miami, j’ai un rpi3 avec base de données opérationnel.

    Kodi installé sur un portable windows 10 et sur un smartphone Android, aucun soucis pour ce connecter à la bdd.

    Par contre la miami ne s’y connecte pas, comment y a tu créé le fichier advancedsettings.xml ?

    Merci

    • Répondre Benoit |

      Bonjour Laurent,

      Dans mes souvenirs, il me semble que j’avais une application me permettant de créer un serveur FTP sur la BBox Miami (genre https://play.google.com/store/apps/details?id=com.estrongs.android.pop&hl=fr). L’application a beaucoup évolué depuis (et pas forcément en bien) donc je ne sais pas si l’option y est toujours présente. Néanmoins d’autres applications doivent pouvoir te permettre de créer un serveur FTP temporaire pour charger la configuration nécessaire.

      Bonne journée

  • Répondre Arnaud |

    Bonsoir
    Merci pour ce tuto clair et facile.
    L’article est ancien mais je tente ma chance, j’ai un soucis pour ma part, au redémarrage de Kodi après avoir crée le fichier advancedsettings.xml, J’ai un simple écran noir.
    Dans le log, tout se passe bien pour la connexion à la base mais en toute fin du fichier j’ai ça : T:1703932672 WARNING: CSkinInfo: failed to load skin settings
    Ce qui explique l’écran noir 🙂
    En supprimant le fichier advancedsettings tout reviens a la normal.
    Je suis sur OSMC/Kodi 17.6
    Je ne comprend pas ce que j’ai raté.
    Merci de votre aide.

    • Répondre Benoit |

      Bonjour,

      L’erreur semble concerner un problème de chargement de skin alors que vous modifiez les paramètres de base de données. Ceci est étrange.
      Avez-vous une autre erreur ?

      Sinon est-il possible de partager le fichier advancedsettings.xml afin de vérifier si la configuration est exacte ?

      Bonne journée

  • Répondre Butch74 |

    Bonjour
    J’ai installé sur un RaspBerry : OS Raspberry, MariaSQL, j’ai crée l’utilisateur ‘kodi’ avec son mot de passe suivant la procédure décrite. J’arrive à me connecter par mysql -ukodi -p puis mot de passe à l’ouverture de mysql. Je vois dans les logs que le fichier advancedsettings est bien lu avec l’adresse 192.168.1.1, le port 3306, le user kodi et son mot de passe. Mais j’ai échec de l’ouverture de la base. Quels sont les moyens complémentaires que je dois utiliser pour tester la config ?
    merci pour votre réponse.
    Christian

Laissez un commentaire