Pour un rendu optimal, activez JavaScript

La gestion de sa librairie Kodi avec Docker

 ·  ☕ 3 min de lecture  ·  🩊 Propositionjoe

LĂ©ger et efficace.

Objectifs

  • Centraliser afin de synchroniser les Ă©lĂ©ments de sa mĂ©diathĂšque kodi

    Prérequis:

  • Avoir une machine avec ip fixe qui accepte de lancer des containers docker

  • Utiliser un rĂ©pertoire de stockage des media accessible par toutes les platines kodi (nfs, ftp, sftp, samba, etc…)

Je vous propose aujourd’hui un tuto pour barbus amateur de sĂ©rie et film. Je l’Ă©cris puisque je n’ai pas trouvĂ© de rĂ©ponse prĂȘte Ă  appliquer sur la toile utilisant docker pour cet usage.

Mon hypothĂšse:

  • Le folk lambda hĂ©bergent ses vidĂ©os et les gĂšre avec plex/emby/jellyfin,
  • Le folks feignant installent docker-kodi-headless,
  • Les nerds n’ont pas besoin de ce tuto,
  • Reste quand mĂȘme quelques autres qui doivent se dĂ©brouiller comme moi pour compiler diffĂ©rentes sources.

Je prĂ©cise que je n’ai pas creusĂ© la solution feignante, puisque je voulais passer sur docker tout en conservant ma base sql prĂ©cĂ©dente voir ici pour en savoir plus sur la restauration d’une base sql.

Edit du 21 avril 2020

Pour vous simplifier la configuration, je vous propose un petit docker-compose qui sera plus simple Ă  mettre en place. Il ne vous restera ensuite qu’Ă  modifier vos advancedsettings.xml (voir en fin de l’article).
Enfin notez qu’en supplĂ©ment de la base maraidb, j’ai ajoutĂ© adminer pour vous simplifier le contrĂŽle du lien entre kodi et votre base, mais c’est supprimable.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# docker-compose.yaml
version: '3.7'

services:

  db:
    image: mariadb:latest
    container_name: kodi-db
    restart: unless-stopped
    environment:
      MYSQL_USER: kodi
      MYSQL_PASSWORD: kodi
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: kodi
    ports:
      - 3306:3306
    volumes:
      - ./conf:/etc/mysql/conf.d
      - ./data:/var/lib/mysql
    networks:
      - internal
      - web
    command: --sql_mode=""

  adminer:
    image: adminer
    container_name: adminer-kodi-db
    restart: unless-stopped
    ports:
      - 8080:8080
    networks:
      - internal
      - web

networks:
  web:
    external: true
  internal:
    external: false
1
2
3
4
#.conf/custom.cnf

      skip-grant-tables
      bind-address=0.0.0.0

Terminez en donnant Ă  kodi l’autorisation de crĂ©er des bases (je n’ai pas trouvĂ© comment automatiser ça avec docker-compose):

1
docker exec -it kodi-db bash
1
mysql -u root -p
1
GRANT ALL ON *.* TO 'kodi';

N’hĂ©sitez pas Ă  relancer plusieurs fois, mariadb ne prend pas toujours en compte le fichier de conf lors des premiers lancements.

Récupérer le container

PrĂ©parer le rĂ©pertoire de son container mariadb, le lancer et autoriser un accĂšs exterieur pour permettre Ă  kodi de s’y connecter.

1
2
~$ mkdir -p /opt/kodi-mariadb
~$ chown -R DOCKER-USER:DOCKER-USER /opt/kodi-mariadb

Voir ici ou lĂ  si vous avez des soucis de permission.

1
~$ docker create --name=mariadb -e PUID=1000 -e PGID=1000 -e MYSQL_ROOT_PASSWORD=XXXXXXXXXXXXXXXXXXXXX -e TZ=Europe/Paris -p 3306:3306 -v /opt/kodi-mariadb:/config --restart unless-stopped linuxserver/mariadb

Pour plus de dĂ©tail c’est ici.

1
~$ docker ps -a

Mon container s’appelle d46737f22533, il faudra adapter Ă  votre configuration.

1
~$ docker stop d46737f22533
1
~$ nano /opt/kodi-mariadb/custom.cnf
1
2
3
# custom.cnf
      skip-grant-tables
      bind-address=0.0.0.0

1
~$ docker start d46737f22533

Configuration de mariadb

CrĂ©er la base qu’utilisera kodi, et informer les diffĂ©rentes platines de l’adresse de cette base sql.

1
~$ docker exec -it mariadb /bin/bash
1
~$ mysql -h localhost -u root -p
1
2
3
      CREATE USER 'kodi' IDENTIFIED BY 'kodi';
      GRANT ALL ON *.* TO 'kodi';
      flush privileges;
1
~$ docker start d46737f22533

Configuration des platines Kodi

Cette derniĂšre Ă©tape sera Ă  reproduire sur toutes ses platines kodi (Voir ici).

1
~$ nano ~/.kodi/userdata/advancedsettings.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# ~/.kodi/userdata/advancedsettings.xml
      <advancedsettings>
        <videodatabase>
          <type>mysql</type>
          <host>IP-DOCKER-MARIADB</host>
          <port>3306</port>
          <user>kodi</user>
          <pass>kodi</pass>
        </videodatabase>
        <musicdatabase>
          <type>mysql</type>
          <host>IP-DOCKER-MARIADB</host>
          <port>3306</port>
          <user>kodi</user>
          <pass>kodi</pass>
        </musicdatabase>
        <videolibrary>
          <importwatchedstate>true</importwatchedstate>
          <importresumepoint>true</importresumepoint>
        </videolibrary>
      </advancedsettings>

Partagez

Propositionjoe
RÉDIGÉ PAR
Propositionjoe
Soyez rĂ©solus de ne servir plus et vous voilĂ  libres, Étienne de La BoĂ©tie, Bricoleur militant.