Kodi für die Nutzung mit einer MySQL-Datenbank konfigurieren

Möchte man Kodi über mehrere Geräte synchron halten (Vorschaubilder, Quellen, Abspielfortschritt usw.), kann ein MySQL-Server verwendet werden. In dieser Anleitung wird beschrieben, welche speziellen Einstellungen auf dem auf jedem QNAP-NAS vorhandenen MySQL-Server getätigt werden müssen, damit Kodi diesen verwenden kann. Für die Konfiguration wird phpMyAdmin verwendet, was evtl. zuvor noch konfiguriert werden muss. Als Beispiel-Anwender wird der Benutzername kodi verwendet.


Ausserdem werden Vorlagen für die notwendigen Kodi-Konfigurationsdateien bereitgestellt und Hinweise dazu gegeben.

1. Der MySQL-Server auf dem QNAP-NAS aktivieren


2. Die Benutzer über phpMyAdmin definieren

Für den Zugriff von einem lokalen, auf dem NAS in der HD-Station laufenden, Kodi muss der Benutzer kodi%HOSTNAME (HOSTNAME ist der in der Systemsteuerung vergebene Name des NAS) erstellt werden:



Für Zugriffe von einem entfernt laufenden (anderer Client wie z.B. ein PC) Kodi wird der Benutzer kodi% benötigt:



Beide Nutzer sollten der Einfachheit halber dasselbe Passwort verwenden.


3. Freigabe für geteilte Nutzerdaten erstellen

Ziel ist es ja, die Nutzerdaten von verschiedenen Kodi-Clients gemeinsam zu verwenden. Die gemeinsamen Daten sollen hier nun in einer Freigabe auf dem NAS abgelegt werden (hier beispielhaft Kodi genannt). Dorthin muss das userdata-Verzeichnis kopiert werden, was sich im Kodi-Konfigurationsverzeichnis (Linux allgemein: $HOME/.kodi/userdata, Windows: C:\Users\Benutzer\AppData\Roaming\Kodi\userdata, MyKodi17 auf dem NAS: /share/CACHEDEV1_DATA/.qpkg/mykodi17/homes/newkodi17/.kodi/userdata). Hier in der Anleitung nennen wir das geteilte Verzeichnis userdata_shared.


Optional kann man einen eigenen NAS-Benutzer für kodi einrichten, um den Zugriff von Kodi-Clients über das Netzwerk zu beschränken. Dieser Nutzer sollte alles Notwendige (Medien) lesen können und natürlich das Verzeichnis userdata_shared in der Freigabe Kodi schreiben. Diesen Benutzer fragt Kodi dann beim ersten Zugriff auf die Freigabe ab und speichert ihn lesbar (unverschlüsselt!, deshalb der eigene Benutzer) in der passwords.xml ab.


4. Kodi-Konfigurationsdatei advancedsettings.xml erstellen

Über die advancedsettings.xml kann man die Kodi-Standardquellen nun in die erstellte Freigabe Kodi/userdata_shared umleiten. Die Date advancedsettings.xml muss im Kodi-Konfigurationsverzeichnisses jedes Kodi-Clients erstellt werden.


Es ist sinnvoll, folgende Dinge über mehrere Kodi-Clients zu teilen: Favoriten, Quellen, RSS-Feeds, Thumbnails und Addon-Data. Für die Medien-Quellen wird eine Datei sources.xml (siehe unten) verwendet, für Favoriten favourites.xml usw. (siehe Dateinamen in advancedsettings.xml). Diese Dateien müssen sich userdata_shared befinden bzw. werden von Kodi dann dort erstellt.


Der Zugriff wird grundsätzlich über SMB erfolgen, auch von einem auf dem NAS in der HD-Station laufenden Kodi. Dafür werden in der advancedsettings.xml noch pathsubstitutions benötigt.


Hier ist nun ein Beispiel einer advancedsettings.xml für die Nutzung von Kodi auf PC oder z.B. Android. Auf dem NAS müssen noch einige spezielle Dinge eingefügt werden, weshalb es für dieses eine leicht abgewandelte Version der advancedsettings.xml gibt (siehe darunter). Der Platzhalter NASIP muss jeweils durch die IP-Adresse des NAS ersetzt werden, passwort mit dem Passwort des zuvor konfigurierten MySQL-Benutzers.


Auf dem NAS dieselbe advancedsettings.xml wie oben, aber noch das hinzufügen:


5. Gemeinsame Medien-Quellen über sources.xml definieren

Auf die Medienquellen muss immer von allen Kodi-Clients (auch Kodi auf dem NAS) über die SMB-Freigaben zugegriffen werden, da Kodi diese in der Datenbank einträgt. Am Einfachsten ist das Bearbeiten der Datei sources.xml mit einem Texteditor, danach ändert man die Quellen ja eher selten. Nach dem Kodi-Start muss für jede Quelle dann dann noch in einem der Kodi-Clients noch einmalig der Inhalt festgelegt werden (Scraper auswählen usw.), damit diese in die Kodi-Mediendatenbank aufgenommen werden.


Die Quellen stehen in sources.xml, also in etwa so:


6. Was sonst noch wichtig ist


Alle Kodi-Clients sollten idealerweise dieselbe Version haben. Verschiedene Kodi-Versionen können verschiedene Datenbankversionen verwenden, darüber funktioniert der Austausch dann logischerweise nicht mehr. Welche Kodi-Versionen welche Datenbankversionen verwenden findest man hier: https://kodi.wiki/view/Databases . Innerhalb einer Kodi-Hauptversion sind die Datenbankversionen meist gleich. Bei einem Upgrade auf eine neue Kodi-Version, wird Kodi eine neue Datenbankversion erzeugen und die alten Daten übernehmen, die alte Datenbank bleibt bestehen.


Wenn Kodi die Datenbanken korrekt erstellen konnte, werden diese in phpMyAdmin links in der Datenbankliste angezeigt. Sie heissen MyMusicXX und MyVideosXX, wobei XX für die Datenbankversion steht. Sollte es Probleme beim Erstellen der Datenbanken geben, so meldet Kodi diese in seiner Log-Datei kodi.log im Kodi-Konfigurationsverzeichnis auf dem jeweiligen Client.


7. Weitergehende Informationen und Tutorials


Weitere grundsätzliche Informationen über die Konfigurationsdateien sind im offiziellen Kodi-Wiki beschrieben: https://kodi.wiki/view/Main_Page

Details über die Elemente innerhalb der advancedsettings.xml könne z.B. hier nachgeschlagen werden: https://kodi.wiki/view/Advancedsettings.xml


Es gibt auch ein sehr empfehlenswertes Tutorial auf YouTube, das sehr viel ausführlicher die Konfiguration beschreibt (ohne die NAS-spezifischen Besonderheiten). Das Tutorial wurde zwar für XBMC (den Kodi-Vorgänger) erstellt, aber die meisten Dinge treffen auch auf Kodi zu.


Kommentare 2

  • Notwendige Anpassungen für Kodi 18:

    Mit Kodi 18 wird die Umleitung der Datei sources.xml über advancedsettings.xml nicht mehr unterstützt. Diese muss sich nun lokal auf jedem Client befinden. Der Inhalt der sources.xml bleibt aber gleich. Ideal ist das nicht, da man nach Änderungen die Datei wieder auf allen Clients aktualisieren muss. Aber so oft ändert sich da ja normalerweise nichts.


    Um die Umleitung aus der advancedsettings.xml zu entfernen, muss zusätzlich folgender Abschnitt wieder gelöscht werden:

    XML: advancedsettings.xml
    1. <substitute>
    2. <from>special://profile/sources.xml</from>
    3. <to>smb://NASIP/Kodi/userdata_shared/sources.xml</to>
    4. </substitute>
  • Hier noch ein paar kleine Ergänzungen bzw. Verbesserungen:

    Aus eigener Erfahrung, und mittlerweile auch im Kodi-Wiki dokumentiert, sollte das Thumbnail-Verzeichnis nicht zwischen mehreren Clients geteilt werden. Das führt zu Problemen, da die Zuordnung der Bilddateien über eine lokale SQLite-Datenbankdatei im lokalen Kodi-Benutzerordner gespeichert wird (in userdata/Database/Textures13.db). Jeder Client hat eine eigene lokale Textures-Datei und diese kann auch nicht geteilt werden und das führt zu Inkonsistenzen, was sich meist in falschen oder gar fehlenden Vorschaubildern in Kodi äußert.


    Sollten Clients aktuell ein Thumbnail-Verzeichnis teilen, dann kann man das einfach auflösen. Dazu sollte jeder Client natürlich sein eigenes Thumbnail-Verzeichnis bekommen, gleichzeitig muss aber auch die jeweilige Textures-Datei (userdata/Database/Textures13.db) entfernt werden (Kodi vorher beenden!). Der Inhalt des alten Thumbnail-Ordners kann einfach gelöscht werden, Kodi legt die Dateien automatisch wieder an, wie auch Textures13.db. Immer daran denken, beide Teile immer zusammen zu entfernen, sonst gibt es Probleme.


    Das Thumbnail-Verzeichnis kann wie folgt abgelegt werden:

    • Lokal auf dem jeweiligen Client, wenn ausreichend Speicher zur Verfügung steht. Dazu einfach die pathsubstitution für den thumbnail-Ordner aus der advancedsettings.xml entfernen, Kodi legt diese dann im Kodi-Benutzerverzeichnis neu an. Diese Variante ist von der Zugriffszeit natürlich die Beste.
    • Auf einem externen Laufwerk oder auf dem NAS über das LAN, wenn z.B. nicht ausreichend lokaler Speicher zur Verfügung steht (wie z.B. auf meinem Shield TV). Dazu muss die pathsubstitution für den Thumbnail-Ordner in der advancedsettings.xml angepasst werden, und zwar für jeden Client getrennt, da jeder Client ja sein eigenes Verzeichnis bekommen soll.
    XML: advancedsettings.xml (Ausschnitt für lokale Umleitung unter Windows)
    1. <pathsubstitution>
    2. <substitute>
    3. <from>special://thumbnails</from>
    4. <to>G:\Kodi\userdata\thumbnails\</to>
    5. </substitute>
    6. </pathsubstitution>

    (für Linux entsprechend den Teil <from> anpassen)


    XML: advancedsettings.xml (Ausschnitt für LAN)
    1. <pathsubstitution>
    2. <substitute>
    3. <from>special://thumbnails</from>
    4. <to>smb://NASIP/Kodi/userdata_shared/thumbnails.Shield/</to>
    5. </substitute>
    6. </pathsubstitution>