= Medienserver und Client mittels Kodi einrichten =


== Was ist Kodi (ehemals XBMC) ==

Bei Kodi handelt es sich um eine ausgereifte Software zu Verwaltung, streaming und Wiedergabe von diversen Mediendaten. Das Mediencenter zeichnet durch seine Erweiterbarkeit durch Hunderte von Add-ons aus.

Musik, Bilder, lokale Videos und Mediatheken sowie Video-Channels im Web werden von Kodi widergegeben. Hierbei werden wirklich alle geläufigen Musik- und Videoformate abgespielt.

Ferner bindet Kodi neben lokalen Festplatten auch alle LAN-Ressourcen und Geräte-Server wie z.B. UPnP-Devices, NFS-Netzwerk, Windows-Netzwerk und HD-Homerun-Geräte (TV-Tuner) ein.



== Wie wird Kodi in diesem Beispiel eingesetzt ==


__Hardware:__

*Desktop PC
*Laptop
*Raspberry Pi 2
*Android Handy


__Software:__

*Debian als Betriebssystem für den Desktop PC und den Laptop
*KODI (ehemals XBMC)
*MariaDB (statt MySQL), ersetzt die interne Datenbank von Kodi
*phpMyAdmin (Optionales Tool für MariaDB)



= SERVER einrichten =


== Debian installieren ==

Debian wird z.B. von folgender Seite heruntergeladen:

https://www.debian.org/CD/http-ftp/

Hier befindet sich auch eine entsprechende Anleitung.

Kurz und Bündig:

*CD Image erstellen
*Installation gemäß selbsterklärenden Bildschirm Anweisungen durchführen



=== Festplattenpartitionen in unserem Beispiel ===

__Kleiner Tipp: __
*Für das HOME-Verzeichnis eine eigene Partition anlegen.
*Für die „echten Daten“ eine eigene komplette Festplatte verwenden (Erleichtert ggf. eine Neuinstallation des Betriebssystems)
*Filme, Serien, Mediendaten werden vermutlich so viel, dass sich eine eigene Festplatte lohnt, ist aber nicht Voraussetzung.


__128 GB SSD__
* 45 GiB -  ext4     /               - (Root)
* 10 GiB - SWAP                  - (Auslagerung)
* 60 GiB - ext4     /home      -  (Hier werden KEINE Daten sondern nur die „Einstellungen“ von Programmen in verstecken Verzeichnissen (mit „.“ beginnend) gespeichert.



__500 GB Festplatte (schnelle Version)__
* 400 GiB -  ext4     /Daten    -   Dokumente, Daten und temporär Filme zum bearbeiten (schneiden usw..)



__2000 GiB Festplatte (mittlere Geschwindigkeit)__
* 2000 GiB -  ext4     Medien-01     Filme, Serien, Musik, Bilder....



== MariaDB installieren ==

MariaDB ist (fast) vollständig kompatibel mit MySQL. Daher „merkt“ Kodi auch nicht, dass MariaDB verwendet wird.

MariaDB sollte in der „Konsole“ installiert werden, da während der Installation ein Passwort abgefragt wird. Diese Passwort sollte (obwohl es optional ist) unbedingt vergeben werden. Damit erleichtert Mann sich das Leben später gewaltig......

Bei der Installation durch eine grafische Software hatte ich schon Probleme und rate daher an dieser Stelle davon ab die grafischen „Helferlein“ zu verwenden.

Folgender Befehl kann in der Konsole verwendet werden:

 apt-get install mariadb-server-10.0  mariadb-server mariadb-client



==  phpMyAdmin installieren ==

Auch hier kann in der Konsole folgender Befehl verwendet werden:

 apt-get install php5 php5-mysql phpmyadmin 


== deb-multimedia installieren ==

In Source List wird folgender Eintrag hinzugefügt:


 deb http://debian-mirrors.sdinet.de/deb-multimedia stable main


Achtung: Verwenden Sie die gleiche Version wie auch Debian (z.B.: stable).

Wenn Sie hier eine andere Version (z.B testing) kann es zu Konflikten bei der weiteren Installation kommen.



== Kodi installieren ==

Kodi kann nun direkt mittels

 apt-get install kodi

aus den Paketquellen installiert werden

Für viele Betriebssysteme gibt es auf folgender Seite einen Installer bzw. weitere Beschreibungen:

__http://kodi.tv/download/__


Für Linux bzw. Debian wird folgende Beschreibung verwendet:

__http://kodi.wiki/view/HOW-TO:Install_Kodi_for_Linux__




== MariaDB (MySQL) Datenbank freigeben ==

In der Datei:

__/var/lib/mysql/my.cnf__  wird folgender Eintrag auskommentiert und die Datei gespeichert

 bind-address		= 127.0.0.1
 #bind-address		= 127.0.0.1

Neustart des Servers um die Änderung wirksam zu machen

 /etc/init.d/mysql restart


Weitere Infos z.B.: auf folgender Seite: http://www.sysadminslife.com/linux/quicktipp-mysql-externer-zugriff-erlauben-bind-address/



== MariaDB (MySQL) für Kodi vorbereiten ==

In der Konsole MariaDB starten


 mysql -u root -p


Passwort eingeben und durch folgende Befehle einen Benutzer mit entsprechenden Rechten anlegen. (Bitte ; am Ende der Zeile nicht vergessen und mit Return bestätigen)


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



== Samba „Server“ installieren und einrichten ==

In der Konsole mit folgendem Befehl installieren

 apt-get install tdb-tools samba-common samba 


Konfigurationsdatei um Freigabeverzeichnis ergänzen

 Weitere Tipps und eine Beschreibung: https://wiki.ubuntuusers.de/Samba_Server/smb.conf/


 [Medien-01]
 path = /Medien-01
 public = yes
 writable = yes
 comment = Medien 01
 printable = no
 guest ok = yes



== Samba clienten installieren und einrichten ==

In der Konsole mit folgendem Befehl installieren


 apt-get install smbclient




== Kodi auf dem Server für MariaDB einrichten ==


Bei dem Server wird folgende Einstellung vorgenommen:

Folgende Datei wird mit einem Texteditor geöffent:

__/home/BENUTZER/.kodi/userdata/advancedsettings.xml__


Wichtig ist hier der selbsterklärende Teil  __<videodatabase>__ und __<musicdatabase>__


 <advancedsettings> 
  <videodatabase>
   <type>mysql</type>
   <host>localhost</host>
   <port>3306</port>
   <user>kodi</user>
   <pass>kodi</pass>
  </videodatabase> 
  <musicdatabase>
   <type>mysql</type>
   <host>localhost</host>
   <port>3306</port>
   <user>kodi</user>
   <pass>kodi</pass>
  </musicdatabase>
  <videolibrary>
    <importwatchedstate>true</importwatchedstate>
    <importresumepoint>true</importresumepoint>
  </videolibrary>
  <tvshowmatching>
   <regexp>[Ss]([0-9]+)[][ ._-]*[Ee]([0-9]+)([^\\/]*)$</regexp>  <!-- foo.s01.e01, foo.s01_e01, S01E02 foo, S01 - E02 -->
   <regexp>[\._ -]()[Ee][Pp]_?([0-9]+)([^\\/]*)$</regexp>  <!-- foo.ep01, foo.EP_01 -->
   <regexp>([0-9]{4})[\.-]([0-9]{2})[\.-]([0-9]{2})</regexp>  <!-- foo.yyyy.mm.dd.* (byDate=true) 
   <regexp>([0-9]{2})[\.-]([0-9]{2})[\.-]([0-9]{4})</regexp>  <!-- foo.mm.dd.yyyy.* (byDate=true) 
   <regexp>[\\/\._ \[\(-]([0-9]+)x([0-9]+)([^\\/]*)$</regexp>  <!-- foo.1x09* or just /1x09* -->
   <regexp>[\\/\._ -]([0-9]+)([0-9][0-9])([\._ -][^\\/]*)$</regexp>  <!-- foo.103*, 103 foo -->
   <regexp>[\/._ -]p(?:ar)?t[_. -]()([ivx]+)([._ -][^\/]*)$</regexp>  <!-- Part I, Pt.VI -->
  </tvshowmatching>
  <moviestacking>
   <!-- <cd/dvd/part/pt/disk/disc/d> <0-N> -->
   <regexp>(.*?)([ _.-]*(?:cd|dvd|p(?:ar)?t|dis[ck]|d)[ _.-]*[0-9]+)(.*?)(\.[^.]+)$</regexp>
   <!-- <cd/dvd/part/pt/disk/disc/d> <a-d> -->
   <regexp>(.*?)([ _.-]*(?:cd|dvd|p(?:ar)?t|dis[ck]|d)[ _.-]*[a-d])(.*?)(\.[^.]+)$</regexp>
   <!-- movienamea-xvid.avi, movienameb-xvid.avi -->
   <regexp>(.*?)([ ._-]*[a-d])(.*?)(\.[^.]+)$</regexp>
  </moviestacking>
 </advancedsettings>



== Original DVD und Bluray abspielen ==

Da es immer wieder rechtlich umstritten ist original DVD oder BluRay unter Linux ANZUSEHEN möchte ich auf die Wiedergabe von DVD und BluRay hier nicht weiter auf das Thema eingehen, sondern nur auf das Internet verweisen wie z.B.: http://vlc-bluray.whoknowsmy.name/


= CLIENTEN einrichten (Laptop) =


== Samba Verzeichnis beim Clienten mounten ==

Als nächstes das freigegebene Verzeichis mit dem gleichen Namen und an die gleiche Stelle im Dateisystem mounten

=== Manuell das per Samba freigegebene Verzeichnis in der Konsole mounten ===

 mount -t cifs -o user=smbguest,guest //IP.ADRESSE.VOM.SERVER/Medien-01 /Medien-01


=== Freigegebenes Verzeichnis automatisch beim Rechnerstart einbinden ===

 //IP.ADRESSE.VOM.SERVER/Medien-01 /Medien-01 cifs user=smbguest,guest


== Kodi auf dem Clienten einrichten ==

Die Verbindung wird zum Server hergestellt

 <advancedsettings> 
  <videodatabase>
   <type>mysql</type>
   <host>IP.ADRESSE.VOM.SERVER</host>
   <port>3306</port>
   <user>kodi</user>
   <pass>PASSWORT</pass>
  </videodatabase> 
  <musicdatabase>
   <type>mysql</type>
   <host>IP.ADRESSE.VOM.SERVER</host>
   <port>3306</port>
   <user>kodi</user>
   <pass>PASSWORT</pass>
  </musicdatabase>
  DIVERSE WEITERE EINTRÄGE
 </advancedsettings>



====================================================================

===================== Raspberry Pi 2 einrichten =======================

====================================================================


== Raspberry Pi 2 Hardware und installation ==


__Hardware:__

*[http://www.amazon.de/gp/product/B00T2U7R7I?psc=1&redirect=true&ref_=oh_aui_detailpage_o02_s01 Raspberry Pi 2]
*[http://www.amazon.de/gp/product/B00V0UU392?psc=1&redirect=true&ref_=oh_aui_detailpage_o02_s01 Leistungsfähiges Netzteil]
*[http://www.amazon.de/gp/product/B00QB6F9I0?psc=1&redirect=true&ref_=oh_aui_detailpage_o01_s00 Gehäuse mit Kühlkörper (optional)]
*[http://www.amazon.de/gp/product/B00MWXUKDK?psc=1&redirect=true&ref_=oh_aui_detailpage_o02_s01 Schnelle SD Karte]
* oder statt der leeren SD Kyarte besser gleich [http://www.amazon.de/gp/product/B00TZRUA40?psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s00 eine SD Karte mit Xbian und einigen vorinstallierten nützlichen Tools...]
*USB Maus und Tastatur zur Installation
*Fernbedienung für den späteren Einsatz



__Installation:__

Es existieren diverse (meist gute) Beschreibungen zur Installation von Xbian wie z.B.:

*[http://www.tutonaut.de/kodi-serie-billig-lautlos-winzig-kodi-auf-dem-raspberry-pi-29.html Der Tutonaut]
*[http://www.xbian.org/ Xbian Homepage]
*[https://books.google.de/books?id=JzOvAgAAQBAJ&pg=PA10&lpg=PA10&dq=xbian+ben%C3%B6tigt+qt&source=bl&ots=QKBCStT-2F&sig=XQq8rBsB5dJmRBdVMg5MPI0-pug&hl=de&sa=X&ved=0ahUKEwjZu8fAidHKAhWH_g4KHdeyALMQ6AEIMTAE#v=onepage&q=xbian%20ben%C3%B6tigt%20qt&f=false Ein nützliches ONLINE-Buch....]


=== Installer für Linux verwenden ===

Ein Installationsprogramm kann auch für Linux direkt von der [http://www.xbian.org/ Xbian Homepage Xbian] heruntergeladen werden. Dieser Installer benötigt jedoch [http://forum.xbian.org/thread-692.html 64-bit Linux UND QT]. Bei meinem Debian System mit KDE funktionierte der Installer auch bei installiertem QT leider nicht.


=== Image laden und übertragen ===


Die Imagedatei direkt von der [http://www.xbian.org/ Xbian Homepage] herunterladen (Hier ist auch eine Hilfe verfügbar)

Die Kommandozeile (Shell) aufrufen

Im ersten Schritt lassen wir uns eine Aufstellung aller Speichermedien anzeigen:

 df -h  ODER 	lsblk

Eine dieser Einträge ist unsere SD Karte (sofern diese erkannt wurde). Man erkennt sie entweder an der Bezeichnung oder am angegebenen Speicherplatz. 

Um das Image auf die SD Karte zu kopieren darf die SD-Karte nicht gemountet sein.

 diskutil umount /dev/sdbx oder umount /dev/sdbx  (wobei sdbx durch den oben ermittelten Eintrag ersetzt werden muss.

Danach sollte die SD Karte bei einem df -h  ODER lsblk nicht mehr sichtbar sein.

Im nächsten Schritt wird das Image bitweise auf die SD Karte kopiert. Dafür wird folgender Befehl verwendet:

 dd of=/dev/sdbx if=/home/Downloads/image.img bs=1M

__ACHTUNG__

__Mit "of=/dev/sdbx" ist das Ausgabemedium gemeint. Hier ist Linux (gewollt) recht schmerzfrei. Wird hier das falsche Laufwerk gewählt sind die Daten wech...... (Ist mir leider mit dem Bootlaufwerk passiert. Habe dazugelernt....)__



=== SD-Karte gleich mit Xbian bestellen ==

Am leichtesten ist es [http://www.amazon.de/gp/product/B00TZRUA40?psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s00 eine SD Karte mit Xbian und einigen vorinstallierten nützlichen Tools] fertig zu bestellen. Der Aufpreis ist nur gering und die Grundinstallation ist vorhanden. Zumindest startet der Raspberry direkt mit KODI.....



== Raspberry Pi 2 und Kodi Grundeinrichtung ==

Auch hier gibt ei einige gute Werke im Internet z.B. [http://blog.helmutkarger.de/raspberry-media-center-teil-7-xbian/ von Helmut Karger].

Grundsätzlich kann sich von einem entfernten Rechner per ssh angemeldet werden:

 ssh xbian@IP.ADRESSE.VON.RASPERRY
 Passwort EINGEBEN (in der Grundeinstellung = raspberry 
 
Es erscheint ein Menü in dem auch die Passworte (Settings usw...) geändert werden können. Hier kann auch eingestellt werden ob diese Menü immer erscheinen soll, wenn eine Anmeldung über den Benutzer xbian erfolgt..... 

Das Menü kann auch nachträglich über "~/.xbian-config-start" aufgerufen werden.


 Wir verlassen mit Exit das Menü
 Mittel "su" melden wir uns als ROOT an....
 Das Passwort wird eingegeben (sollte zuvor über das menü geändert werden.

Nun erscheint: "root@xbian:/home/xbian#"

Mit folgendem Befehl wird nun das Laufwerk vom Debian Server (das Laufwerk mit den zuvor freigegebenen Filmdaten) manuell eingebunden bzw. gemountet:
 
 mount -t cifs -o user=smbguest,guest //192.168.178.8/Medien-01 /Medien-01
 
Hier hänge ich noch fest und habe keine Lösung:

Alle Verzeichnisse und Filme werden angezeigt. Wird jedoch versucht einen Film abzuspielen gibt es eine Fehlermeldung mit einer Zugriffsverletzung (vermutlich Benutzerrechte bei der Freigabe)....

An diesem Problem wird gearbeitet. Sobald das gelöst ist wird die Beschreibung hier aktualisiert.
 
 Mit "exit" wird xbian wieder verlassen.
 



== Kodi auf dem Raspberry mit dem SQL Server auf dem Hauptrechner verbinden ==

 ssh xbian@IP.ADRESSE.VON.RASPERRY
 Passwort EINGEBEN (in der Grundeinstellung = raspberry 
 Menü mit "exit" verlassen
 cd .kodi
 cd userdata
 Ergebnis in der Konsole: xbian@xbian ~/.kodi/userdata $ 

Mit einem Texteditor wie z.B. Nano die Konfigurationsatei öffnen

 nano advancedsettings.xml 
 

 <advancedsettings> 
  <videodatabase>
   <type>mysql</type>
   <host>IP.ADRESSE.VOM.SERVER</host>
   <port>3306</port>
   <user>kodi</user>
   <pass>PASSWORT</pass>
  </videodatabase> 
  <musicdatabase>
   <type>mysql</type>
   <host>IP.ADRESSE.VOM.SERVER</host>
   <port>3306</port>
   <user>kodi</user>
   <pass>PASSWORT</pass>
  </musicdatabase>

Dieses Vorgehen ist identisch wie die Verbindung vom Laptop zum Server..

Beim nächsten Start werden die auf dem Server eingetragenen Filme angezeigt.




== Sicherung der SD Karte  Raspberry Pi ==

__Sicherung der SD Karte:__

*[https://got-tty.org/rasberrypi-xbian-auf-einen-usb-stick-installieren Fertige SD Karte auf einen USB Stick übertragen]