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
|
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.
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>
|