Un serveur pour XBMC, avec Ubuntu, MySQL, Samba et TVHeadend

99160211 176c47c3c9 Z

C’est quoi, le besoin ?

J’ai beaucoup (trop ?) de films de vacances, de photos et de chansons de mon pépé rangés un peu partout sur des disques durs qui traînent, des clés USB que je perds et des vieux CD Verbatim gravés et rayés.

J’ai également beaucoup (trop ?) de vieux trucs qui rouillent au fond d’un placard ou sur mon bureau et qui ne demande qu’à servir et à se rendre utile. J’ai, entre autres, deux Raspberri Pi, des clés USB TNT, une demi-douzaine de disques durs, etc.

L’idée est donc de créer un serveur sur lequel tous mes clients XBMC viendront se connecter pour récupérer la liste des médias disponibles (Vidéos, Photos, Musique) et activer la télévision sur les mêmes clients.

Tant qu’on y est, le serveur me servira également pour stocker quelques backups de données depuis mes (trops ?) nombreux PCs.

Ce qu’on va installer :

  • Ubuntu : parce que ça change un peu de Debian et que, normalement, c’est un peu plus à jour et donc plus cool, notamment pour la config des clés USB. J’ai choppé la 14.04 LTS Server, qui est forcement en 64bits
  • Samba : pour partager les fichiers entre mes différents XBMC. On aurait pu coller un serveur NFS, mais il est toujours pratique d’avoir accès depuis des machines Windows aux données…
  • MySQL : pour créer une belle base de données communes à tous les XBMC de la maison. Pratique, notamment pour commencer Big Buck Danny sur la télé du salon et finir le show dans sa chambre…
  • TVHeadEnd : pour diffuser la télé sur tous les XBMC. Comme on est des malades (et que j’ai plusieurs clés USB TNT), on pourra même diffuser la même chaîne en même temps sur différentes instances de XBMC.
  • EPG : histoire d’avoir les infos du programme en cours, programmer un enregistrement, etc.
  • Et pleins d’autres petits trucs qui rendent la vie plus belle avec XBMC 🙂

Le matériel

Voici le matos que j’ai sous la main. Libre à vous d’acheter tout pareil chez Amazon ou e-Bay ou d’adapter en fonction de ce qui traîne sur votre bureau :

  • Serveur HP Proliant N54L : Le serveur en lui-même. J’avais payé ça une misère à l’époque sur Amazon, ca doit encore se trouver en occasion, mais n’importe quel PC avec un peu de RAM et quelques gHz fera l’affaire aussi bien…
  • Des disques durs : J’en ai 5, un SSD pour le système (tant qu’à faire, soyons fou…) de 64 Go et 4 gros de 2To. 2 seront affectés aux films de vacances, un aux photos et à la musique et un à mes backups.
  • Des clés USB TNT : J’en ai 2, des merdes à 5€ sur e-bay. Les deux sont basées sur le chip RTL2832u, essayez de chopper des clés qui ont ce chip, ça vous évitera bien des emmerdes.

Installation d’Ubuntu

Commençons par télécharger Ubuntu dans sa dernière version, la 14.04 LTS en mode serveur. On a pas besoin de plus et c’est par ici que ça se passe.

Une fois télécharger, utilisez Unetbootin pour créer une clée USB bootable. Je vous laisse regarder sur le site officiel comment ça fonctionne, c’est tellement simple que je ne vais pas m’étendre sur le sujet. En gros, branchez votre clée USB, sélectionnez votre image ISO que vous venez de télécharger et y’a plus qu’à valider.

Mettez ensuite votre clé USB dans votre serveur, bootez dessus et que la magie commence ! Il est devenu tellement facile d’installer une distibution Linux que je vous fait grâce de l’installation.

Configuration du réseau

Par habitude, je fais mes installations en mode déconnecté. J’en profite pour régler le réseau avec une IP fixe dès le départ.

Choix du partitionnement

Là dessus, je ne m’embête pas, je prends l’option « Assisté – Disque Entier », je choisis le disque voulu et c’est tout 🙂

Choix des paquets

Dans la liste proposée, je ne prends que la ligne SSH à l’exclusion de toutes les autres. Ça permet de n’installer que ce qui est vraiment nécessaire et de toute façon, apt-get permet de gérer ce qui pourrait éventuellement manquer par la suite.

Une fois installé, rebranchez votre serveur au réseau, sortez votre Putty, Kitty ou MtPutty ou tout autre outil vous permettant de vous connecter en SSH et commençons les choses sérieuses.

Sources.list

Commençons par mettre un fichier sources.list qui va bien. Editez le fichier d’origine :

sudo nano /etc/apt/sources.list

Effacez tout (eh ouais, carrément !) et ajoutez y les dépôts suivants :

deb http://fr.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
deb http://fr.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
#deb http://fr.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb http://extras.ubuntu.com/ubuntu trusty main

#TVHEADEND
deb http://apt.tvheadend.org/stable trusty main

Une fois sur deux, vous aurez une erreur GPG avec les paquets Extra. Il suffit de taper les deux commandes suivantes pour récupérer et installer la bonne clée GPG :

gpg --keyserver keyserver.ubuntu.com --recv 3E5C1192
gpg --export --armor  3E5C1192 | sudo apt-key add -

Tant qu’on y est, on se fait la même pour la clée des dépôts de TVHeadEnd :

wget http://apt.tvheadend.org/repo.gpg.key -O - | sudo apt-key add -

Il ne reste plus qu’à mettre le système à jour en lançant les classiques :

sudo apt-get update
sudo apt-get upgrade

Enfin, si comme moi, il vous manque quelques bouts du terminal en français (notamment parce que vous avez fait une installation déconnectée…), lancez la commande magique suivante :

sudo apt-get -y install `check-language-support -l fr`

Et voila un beau système, bien propre, bien français et bien à jour.

Installation des disques de données

Comme j’ai déjà quelques données sur les disques, je ne les monte qu’après avoir mon système correctement installé, histoire d’éviter les drames lors de l’installation du système.

J’ai donc rajouté mes disques et il me faut maintenant les formater et les monter automatiquement au démarrage du serveur.

Formater les disques durs

Je pars du principe que vos disques sont des disques de récupération et qu’éventuellement, il y a dessus moults vieux trucs et moults partitions inusitées.

Pour commencer, on va lister l’ensemble de nos disques :

sudo fdisk -l

Vous allez donc avoir un gros paté (oui, paté, parce que c’est indigeste, comme information…) d’information. Repérez les lignes qui commencent par « Disk » et notez le chemin du ou des des disques voulus.

Essayez de bien identifier chaque disque et surtout, repérez le disque sur lequel vous avez installé votre système, ca serait con de le formater maintenant 🙂

Par exemple, j’ai ça, comme ligne :

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes

L’info importante, c’est /dev/sdc ; Une fois cette info récupérée, on lance cfdisk, histoire de faire le ménage dans les éventuelles partitions présentes sur le disque afin de n’en avoir plus qu’une :

sudo cfdisk /dev/sdc

cfdisk

Supprimez toutes les partitions sans scrupules en vous déplaçant sur chaque partition présente à l’écran avec les flèches de votre clavier, créez une seule partition unique (qui sera donc sdc1, dans mon cas) et finissez en utilisant le « bouton » Ecrire.

!!! CA VA BIEN EVIDEMMENT SUPPRIMER TOUTES LES DONNÉES DU DISQUE !!!

Il vous reste ensuite à formater cette partition unique dans le format de fichier que vous préférez. Perso, j’ai mis du ext4. On évitera le FAT, qui ne sait pas gérer les gros films de vacances supérieur à 4 Go…

sudo mkfs.ext4 /dev/sdc1

N’oubliez pas le numéro de la partition après le nom du disque dur, sinon, ca ne fonctionne pas 🙂

Faites de même pour tous vos disques durs.

Trouver les UUID

Sans rentrer dans la théorie, les UUID, c’est le bien, et vous en aurez besoin pour monter proprement tous vos disques au démarrage.

Donc, une fois tous vos disques branchés, utilisez la commande suivante pour trouver les noms udev :

sudo blkid

uuid

Vous aurez la liste de vos disques, avec leurs labels et donc, leurs fameux UUID. Mettez les de coté, on va en avoir besoin pour les monter.

Petite digression : vous aurez remarqué que mes disques ont des labels trop classe ;
Vous pouvez faire pareil avec la commande suivante :

sudo e2label /dev/sda1 NomDuDisque

Montez les disques

Commençons par créer les répertoires où l’on va monter nos disques. J’en ai 4, j’ai donc créer 4 répertoires Disque1, Disque2, Disque3, Disque4 dans /media :

sudo mkdir -p /media/Disque1
sudo mkdir -p /media/Disque2
sudo mkdir -p /media/Disque3
sudo mkdir -p /media/Disque4

Ouvrez maintenant le fichier fstab

sudo nano /etc/fstab

et rajoutez pour chaque disque à rajouter l’UUID, le point de montage (/media/Disque1 par exemple), le format de fichier (ext4, si vous avez fait comme moi) et mettons les autres options par défaut pour le moment.

Votre fstab doit ressembler à ça:

#Root
UUID=eb5d3d1c-45e7-xxxx-xxxx-0858eb9a9752 / ext4 errors=remount-ro 0 1
#SWAP
UUID=58cc56a6-9e31-xxxx-xxxx-866a1f5d2d1f none swap sw 0 0

# Disque 1
UUID=f1dc973d-0994-xxxx-xxxx-85c6b256d03f /media/Disque1 ext4 defaults 0 0
#Disque 2
UUID=95844dc7-862e-xxxx-xxxx-230e7c938c2d /media/Disque2 ext4 defaults 0 0
#Disque 3
UUID=75a295d5-8b35-xxxx-xxxx-3c9fb91e10af /media/Disque3 ext4 defaults 0 0
#Disque 4
UUID=a224289a-cb9c-xxxx-xxxx-e3b608d4a08f /media/Disque4 ext4 defaults 0 0

Il ne reste plus qu’à tester le tout, en montant tous les disques avec la commande mount :

sudo mount -a

Vous devriez pouvoir naviguer dans les dossiers /media/Disque1, /media/Disque2, etc.

Installation de Samba

Maintenant que les disques sont montés, il serait cool de pouvoir y accéder depuis un PC Windows, un Mac, un autre Linux et surtout, depuis nos futurs XBMC.

On va donc installer Samba et configurer les partages. Dans ma configuration, 1 disque = 1 partage. Je vais donc avoir in fine 4 partages Samba, un pour chaque disque.

Commençons par installer Samba :

sudo apt-get install samba

Facile, non ? 🙂

Configurons maintenant Samba. Je trouve que le fichier par défaut est un vrai merdier. Je l’ouvre donc et je supprime tout ce qu’il contient pour partir sur une base propre :

sudo nano /etc/samba/smb.conf

A grand coup de CTRL+K, je supprime tout et on recommence. La partie GLOBAL, d’abord :

[global]
# Vous pouvez mettre ce que vous voulez, comme nom de workgroup. Essayez d'avoir le même que sur votre PC Windows
workgroup = WORKGROUP
server string = %h server (Samba sur Ubuntu 14.04)
netbios name = SERVEUR
dns proxy = no

#On utilise user, libre à vous de vous faire **** avec un autre type de secu
security = user
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = no
map to guest = bad user

#On autorise uniquement les connexions via une IP du sous-réseau 192.168.1.xxx
hosts allow = 127.0.0.1 192.168.1.0/24

#### LOGS ###
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d

#### Auth. ####
 server role = standalone server

Sauvegarder avec CTRL+X.

Rien d’extraordinaire dans cette configuration. Pensez à indiquer le bon masque de réseau dans hosts allow et comme on met la sécurité sur user, il faudra créer un utilisateur Samba et un mot de passe pour se connecter. On va l’ajouter tout de suite :

sudo smbpasswd -a <votre_user>

Tapez un mot de passe quand on vous le demande. C’est ce mot de passe qu’il faudra utiliser pour connecter vos clients au serveur Samba

Attention, l’utilisateur doit exister ! Vous pouvez utiliser votre compte unix principal ou au besoin créer un compte spécifique. Le mieux est alors de lui créer un bash vide :

sudo useradd -s /bin/false -d /dev/null <nom_voulu>

On rajoute maintenant à smb.conf de quoi lui faire comprendre où sont nos disques à partager :

[Disque 1]
 path = /media/Disque1
 comment = Disque 1
 browseable = yes
 read only = no
 create mask = 0775
 directory mask = 0775
 guest ok = yes
 public = yes

[Disque 2]
 path = /media/Disque2
 comment = Disque 2
 browseable = yes
 read only = no
 create mask = 0775
 directory mask = 0775
 guest ok = yes
 public = yes

[Disque 3]
 path = /media/Disque3
 comment = Disque 3
 browseable = yes
 read only = no
 create mask = 0775
 directory mask = 0775
 guest ok = yes
 public = yes

[Disque 4]
 path = /media/Disque4
 comment = Disque 4
 browseable = yes
 read only = no
 create mask = 0775
 directory mask = 0775
 guest ok = yes
 public = yes

Là encore, rien de bien surprenant, rien que du standard… Ce qui entre crochet détermine le nom qui sera visible sur le réseau. Pour le reste, ce sont des options histoire de ne pas être trop emmerdé par les droits d’accès aux fichiers.

Redémarrons maintenant Samba :

sudo service smbd restart

Testez tout ça avec un client Windows et vérifiez que vous pouvez bien naviguer dans les dossiers, en créer, etc.

Si vous aviez des données sur vos disques, tentez éventuellement un petit chown sur tous les fichiers pour ne pas être emmerdé par les droits :

sudo chown -R mon_user:mon_user /media/Disque1

Normalement, tout doit fonctionner, passons à la suite…

Installation de MySQL

Passons à MySQL ; on en aura besoin pour que XBMC stocke de manière centralisée toutes les informations relatives à vos contenus.

Là encore, de manière assez classique, on peut lancer un magnifique :

sudo apt-get install mysql-server mysql-common

Indiquez un mot de passe SuperAdministrateur pour MySQL quand on vous le demandera.

Une fois installée, pour la beauté du geste, lancez un  mysql_secure_installation :

sudo  mysql_secure_installation

Répondez aux questions : Gardez le mot de passe Root déjà défini et acceptez les autres propositions.

Utilisateur XBMC

XBMC est un grand garçon, il fera ses bases tout seul, mais il faut quand même lui créer un compte MySQL pour éviter d’abuser du compte root :

sudo mysql -u root -p

Tapez votre mot de passe MySQL

A la ligne de commande, indiquez maintenant la commande suivante :

mysql > CREATE USER 'xbmc'@'%' IDENTIFIED BY 'xbmc';
mysql > GRANT ALL ON *.* TO 'xbmc';
mysql > exit;

J’ai choisi d’appeler l’utilisateur xbmc, avec un mot de passe très compliqué : xbmc. Libre à vous d’adapter 🙂

Enfin, éditez my.cnf

sudo nano /etc/mysql/my.cnf

et commentez la ligne bind-adress en ajoutant un # devant

#bind-adress 127.0.0.1

Configurer XBMC

Téléchargez la version 13.1 de XBMC, alias Gotham et installez le.

Pour la première instance de XBMC, je vais partir du postulat que vous êtes sous Windows. On verra pour les Raspberry Pi dans un second temps 🙂

Avant toute chose, créez sur un de vos partages un répertoire qui stockera toutes les images de XBMC, comme les affiches de films, etc.

J’ai choisi de créer un répertoire XBMC_DATA sur le disque n°1 :

sudo mkdir -p /media/Disque1/XBMC_DATA

Sous Windows donc, rendez vous dans le répertoire UserData de XBMC. A priori, sous Windows, c’est dans votre répertoire utilisateur, sous l’arborescence <Vous>\AppData\Roaming\XBMC\userdata\. Au besoin, affichez les fichiers cachés.

Dans ce répertoire, créez un fichier vide, appelez le advancedsettings.xml et copiez y le contenu suivant :

<advancedsettings>

<videodatabase>
<type>mysql</type>
<host>192.168.1.2</host>
<port>3306</port>
<user>xbmc</user>
<pass>xbmc</pass>
</videodatabase>

<musicdatabase>
<type>mysql</type>
<host>192.168.1.2</host>
<port>3306</port>
<user>xbmc</user>
<pass>xbmc</pass>
</musicdatabase>

<pathsubstitution>
<substitute>
<from>special://masterprofile/Thumbnails/</from>
<to>smb://192.168.1.2/media/Disque1/XBMC_DATA</to>
</substitute>
</pathsubstitution>

</advancedsettings>

Editez éventuellement le nom d’utilisateur et le mot de passe MySQL en fonction de ce que vous avez défini lors de la création de l’utilisateur MySQL pour XBMC.

Editez également la ligne <to> …. </to> pour que cela corresponde à votre configuration.
Conservez le smb://, indiquez l’IP de votre serveur et le chemin d’accès au répertoire créé au point précédent.

Enregistrez le fichier et lancez XBMC. Ajoutez des sources en utilisant bien les partages SMB et vérifiez que votre base de donnée se remplit bien.

Vous pouvez copier / coller ce fichier sur une autre machine avec la même version de XBMC, vous devriez retrouver dans votre médiathèque les data insérées sur l’autre XBMC.

Installation des clés USB TNT

Branchez le, normalement, c’est bon 🙂

Installation de TVHeadEnd

Vous avez normalement ajouter les dépôts qui vont bien au tout début du tuto.

On a donc plus qu’à lancer la commande magique :

sudo apt-get install tvheadend

Vous verrez, il y a une chiée de dépendances 🙂

Pendant l’installation, vous devrez préciser un login et un mot de passe pour vous connecter par la suite sur l’interface de gestion de TVHeadEnd.

Configuration de TVHeadEnd

coming soon

Installation de SickBeard, Sabnzb+ et CouchPatato

coming soon

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Rechercher