PROJET AUTOBLOG


Idleman

source: Idleman

⇐ retour index

Raspberry PI ~ 19 : Optimisation, trucs & Astuces

dimanche 21 avril 2013 à 16:05

Ce post est le dix-neuvième d’une liste de tutoriels sur le raspberry PI, cliquez ici pour accéder au sommaire ! :D

Amis de l’électronique, passez votre chemin, nous ne parlerons cette fois ci que de pure informatique, et pas de haut niveau en plus Tire la langue, cela dit ça peux intéresser plus d’un idlenaute donc je vous conseille de gratter un peu cet article quitte à vous taper une lecture en diagonale de ce véritable « pavé du dimanche ».

Je me suis rendu compte que j’ai oublié de préciser pleins de trucs et astuces “génériques” applicables au raspberry parce que ça me paraissait évident, mais au fil des commentaires et des mails qui m’ont été adressés je me suis dit que ça valait peut être la peine de faire un ptit billet pour éclaircir quelques points Sourire

(et puis ça me laisse un peu de temps pour bidouiller d’autres prototypes).

Les points abordés :

  1. Accéder à la console du RPI sans écran/clavier branché à celui ci
  2. Déporter le bureau virtuel du raspberry PI sur votre ordinateur (toujours sans écran)
  3. Optimiser le serveur http en remplaçant Apache2 par lighttpd
  4. Transformer le raspberry PI en seedbox (serveur multimédia avec client torrent intégré, le tout accessible sur le réseau et stocké sur un disque dur externe si il vous plait)
  5. Quelques manip pour personnaliser un peu la tronche du raspberry PI (nom, message d’arrivée etc…)

Accéder à la console du raspberry PI sans écran

Depuis le début des tuto, vous aurez peut être constaté que j’utilise uniquement le mode console et non le bureau graphique, en effet je n’ai pas d’écran pour le raspberry et j’y accède depuis mon ordinateur portable ce qui me permet de trimballer le RPI et d’y accéder depuis n’importe quel PC sans trainer un écran 19 pouces, un clavier, et une souris derrière moi Rire.

Ceci est possible grâce à la communication SSH, pour faire court et grossier : votre raspberry pi comprend un serveur nommé : SSH, auquel vous pouvez vous connecter depuis un client SSH depuis n’importe quel PC, une fois connecté, vous aurez accès au terminal comme si vous étiez sur le rapsberry PI

image

Pour vous connecter a cette console, il vous suffit de télécharger et d’installer le programme gratuit Putty, puis de rentrer l’ip locale de votre raspberry PI et cliquer sur “Open”

image

Pour obtenir l’ip réseaux du raspberry PI, vous pouvez regarder sur le panel de votre box (les pc qui y sont connecté), ou brancher temporairement un écran au raspberry pi et taper la commande ifconfig, l’ip suis le libellé “inet addr”

image

Notez que cette IP peux changer (bien que votre box essaye généralement de conserver des ip “favorites” par machines), vous pouvez donc la fixer une bonne fois pour toute avec la manip suivante qui permet de passer d’une ip dite “dynamique” à une ip “statique” :

 

Tapez dans la console :

sudo nano /etc/network/interfaces

Et remplacez

iface eth0 inet dhcp

par

iface eth0 inet static
    address 192.168.1.x
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

Il vous faudra remplacer le libellé de “adress” par votre ip réseaux actuelle ainsi que

netmask : Vous pouvez le trouver dans la valeur “Mask” du ifconfig

broadcast : Vous pouvez le trouver dans la valeur “Bcast” du ifconfig

gateway : C’est l’ip de votre routeur/box, vous pouvez la trouver dans le panel admin de votre box sous le libellé (serveur DHCP le plus souvent)

Enregistrez et redémarrez, votre ip sera fixe et toujours accessible depuis Putty.

Attention !! Notez bien que lorsque vous fixez cette ip, elle ne peux plus s’adapter dynamiquement à un autre réseau, aussi si vous trimballez votre rpi autre part, pensez à remettre l’ip en dynamique.

Déporter le bureau virtuel du raspberry PI sur votre ordinateur (toujours sans écran)

Si vous n’aimez pas trop la ligne de commande ou que vous souhaitez faire une manip sur le bureau virtuel du raspberry pi sans avoir d’écran, vous pouvez installer un serveur dit “VNC” qui permet de déporter l’affichage du raspberry Pi, sur un autre pc, vous avez donc un écran dans un autre ^^ :

image

Il existe de nombreux serveurs VNC disponibles, mais le moins contraignant à installer est tightvncserver.

Pour l’installer, tapez la ligne de commande

sudo apt-get install tightvncserver

Il vous faudra alors lancer le serveur avec la commande

tightvncserver

Et ce à chaque fois que vous voudrez l’utiliser, vous pouvez bien entendu vous débrouiller pour lancer cette commande au démarrage via un service ou un cron ou autre…

Au premier lancement il vas vous demander un mot de passe pour se connecter au bureau distant, si vous n’êtes pas trop dingue, vous mettrez le même que celui de votre compte raspberry PI Sourire

Lorsqu’il demande si vous voulez de la lecture seule, répondez n (non)

Would you like to enter a view-only password (y/n)?

Le serveur est lancé et configuré :

image

 

Notez que le serveur est lancé par défaut sur le port “2” qu’il faudra retenir, ainsi que l’adresse ip de votre raspberry (cf partie connexion à la ligne de commande)

Il vous faut maintenant un client de connexion VNC sur la machine ou vous souhaitez déporter l’affichage du raspberry PI, realVNC est gratuit, simple, performant et dispo pour linux, mac , et windows: http://www.realvnc.com/download/viewer/

installez et lancez realVnc puis entrez l’adresse ip réseau de votre rapsberry PI, suivis de votre port (par défaut 2) les deux séparés par “:”

image

Et cliquez sur “connect”

nb : de mémoire, un warning vas vous avertir que la connexion n’est pas sécurisée, cliquez sur le bouton continue (à moins que ça vous froisse que ca ne soit pas sécurisé évidemment Tire la langue, chez vous ça ne change pas grand chose, mais évitez de vous connecter depuis un lieu public ou du boulot)

le client vous demande alors le mot de passe que vous avez donné au serveur VNC lors de son installation :

image

Vous arrivez ensuite sur votre bureau distant et pouvez interagir avec comme vous le souhaitez Sourire

 

Optimiser le serveur http en remplaçant apache par lighthttpd

On a vu dans le tuto ~ 04 : Configurer en serveur comment mettre en place un serveur dit “http” pouvant héberger des sites web sur le rapsberry PI.

Nous avions choisis le serveur Apache qui et le plus populaire, mais aussi le plus vieux et le plus lourd de ce qui se fait en ce moment.

Apache fait beaucoup d’entrées fichiers ce qui peut à long terme abimer la carte SD de votre raspberry PI, il est donc plus intéressant de se tourner vers des serveurs plus léger comme Nginx ou lighttpd

Les deux sont très rapides, légers et peu gourmands en ressources, et n’en déplaisent aux fanatiques de l’un ou de l’autre : ils sont relativement équivalent.

Parce qu’il faut faire un choix, et parce qu’il s’est avéré moins chiant à installer, j’ai choisis lighttpd * les pro-nginx vous pouvez huer *.

lighttpd à surtout un gros avantage pour moi : il est beaucoup plus simple de le relier à PHP que nginx (c’est du vécu, j’ai fait 4/5 tutos sur nginx, aucun n’était d’accord avec l’autre, et certains parlaient même d’installer lighttpd en premier puis de le désinstaller afin d’avoir les prérequis pour nginx… bref)

Donc si vous avez apache, commencez par le désinstaller correctement sinon il fera interférence avec lighttpd par la suite. Attention cependant apache peut être très chiant a désinstaller, le mieux reste encore de repartir d’un raspian vierge si vous le pouvez, sinon je vous laisse vous amuser comme je l’ai fait à tester tout plein de manip pour vous débarasser de l’outrecuidant correctement.

Installez ensuite lighttpd

sudo apt-get install lighttpd

Puis les pré-requis pour avoir php5 er le relier a lighhtpd

sudo apt-get install php5-common php5-cgi php5
sudo lighty-enable-mod fastcgi-php

Redémarrez le serveur http

sudo service lighttpd force-reload

A ce moment la si vous avez des erreurs types “port 80 busy” un truc du style, c’est que vous avez mal désinstallé apache et qu’il tourne encore, ou qu’un autre serveur http est déjà en place.

Et enfin réattribuez les bons droits sur les bons dossiers pour que lighttpd puisse faire son boulot

sudo chown www-data:www-data /var/www
sudo usermod -a -G www-data pi

Si tout s’est bien passé vous devriez pouvoir vous connecter via un navigateur à l’ip de votre rapsberry PI et voir la page d’accueil par défaut de lighttpd

image

 

Pour ce qui est de la base de données, je vous conseille également de désinstaller MySQL (si vous n’avez installé aucune appli qui tourne avec évidemment) et de le remplacer par SQLite qui est un peu moins gourmand et épargnera votre raspberry PI également :

sudo apt-get install sqlite3
sudo apt-get install libsqlite3-0 libsqlite3-dev
sudo apt-get install php5-sqlite

Utiliser le raspberry PI comme une seedbox

Une seedbox est un serveur dédié au téléchargement illégal de fichiers vidéos/audio/multimédia etc…

Il est très simple de transformer le raspberry pi en seedbox afin de pouvoir faire les choses suivantes :

Prêt à manger du beurre par les trous de nez? Envoyons le Pathé !

Premièrement on update parce que ça ne fait jamais de mal avant une installation :

sudo apt-get update

puis on installe un paquet qui nous sera indispensable par la suite :

sudo apt-get install ntfs-3g

Puis, on trouve un disque dur assez balèze (genre 2To) et on le branche au port USB du raspberry PI. La rapidité de transmission est un plus, mais ce qu’il vous faut c’est surtout :

on vas créer une sorte de “lecteur permanent” dans le dossier “media” sur lequel on pointera notre client de torrents.

sudo mkdir -p /media/disque2To

On configure les droits pour que le client torrent puisse écrire dans ce lecteur

sudo chmod -R 777 /media/disque2To

Attendez quelques secondes le temps que le rpi détecte le disque dur puis tapez

sudo blkid

Une liste de périphériques s’affichent, retenez le champs UUID pour le périphérique ayant le LABEL qui correspond à votre disque dur (mon disque dur 2To s’appelle IdleBox)

image

Maintenant qu’on connais l’identifiant unique de notre disque dur, on vas spécifier au rpi de lier à chaques démarrage cette id au dossier qu’on à créé spécialement pour lui (/media/disque2To).

On édite pour ça le fichier /etc/fstab

sudo nano /etc/fstab

et on y ajoute la ligne

UUID=F21843B31843759F       /media/disque2To ntfs-3g   defaults       0       2

Evidemment l’UUID doit être modifié en fonction de votre UUID à vous.

image

Puis on sauvegarde et on reboot

sudo reboot

A ce stade la normalement le contenu de votre disque dur est monté et est disponible via le dossier /media/disque2To, vous pouvez vérifier qu’il contient bien votre fichier test.txt avec la commande.

cd /media/disque2To && ls

image

(oui moi j’ai un peu plus de bordel qu’un simple fichier test.txt mais le principe reste la Tire la langue)

Cette phase est très délicate, le système ou le disque dur font souvent la sourde oreille, vérifiez donc bien que vous avez vos fichiers dans /media/disque2To sans quoi la suite du tuto ne fonctionnera pas.

En cas d’erreur vérifiez bien :

Si l’erreur persiste, essayez de trouver l’erreur au démarrage du rapsberry PI, généralement il vous indique d’ou viens la couille avec un gros “FAILED” rouge.

Bien !! Le plus dur est fait !! Rire

Maintenant on vas faire en sorte que le disque dur (accessible depuis le dossier /media/disque2To si vous avez bien suivis) soit également disponible en partage, c’est à dire que les autres PC de votre réseau local puissent y accéder !

Pour cela, il vous faudra installer un serveur de partage sur votre rapsberry PI, le plus connus (et le seul que je connais d’ailleurs) est samba !

On installe donc samba (et avec le sourire siouplé !)

sudo apt-get install samba

Il est possible qu’il soit déjà installé, chez moi il l’était mais c’est peut être parce que j’avais fait la manip précédemment, dans tous les cas la commande ne vous fera pas de mal Sourire.

maintenant que samba est installé il vas falloir partager le dossier /media/disque2To sur le réseau.

Pour ça, on commence par editer le fichier de configuration de samba :

sudo nano /etc/samba/smb.conf

Cherchez la ligne

# security = user

et placez en dessous :

security = share

image

De cette manière vous ouvrez un peu votre serveur de partage aux utilisateurs autres que les utilisateurs interne du rpi

Puis cherchez le bloc [print$] …

Et placez en dessous le bloc :

[disque2To]
comment = Disque multimedia
path = /media/disque2To
browseable = yes
guest ok = yes
writeable = yes
public = yes
create mask = 0777
directory mask = 0777

image

Enfin redémarrez samba

sudo service samba restart

Et remettez un ptit coup de permission sur votre dossier partagé pour être sûr.

chmod 777 –R /media/disque2To

Vous devriez maintenant voir le partage depuis vos autres PC, par exemple depuis mon windows Seven :

image

Vérifiez bien que vous avez la permission d’entrer et d’écrire dans le disque.

nb : Il est possible que ce sale bataw de windows vous demande un login/mot de passe alors que nous avons tout fait pour justement ne rien avoir à mettre.

il vous faudra alors taper:

login : WORKGROUP\votre login windows

mdp : votre mot de passe windows

Cochez la case ‘se souvenir’ histoire de ne plus être emmerdé par la suite.

Bien !! Maintenant que nous avons un disque dur monté et partagé sur le réseau !! Il vas falloir le remplir avec vos films de vacances légalement téléchargés via un logiciel de torrent !

Le must pour moi en matière de logiciel de torrent c’est transmission : léger, simple, ergonomique, dispose d’une jolie interface web et facilement configurable

sudo apt-get install transmission-daemon

Transmission vas utiliser deux dossier sur votre disque dur, un dossier pour stocker les fichiers temporaires de téléchargements, et un dossier pour stocker les fichiers finaux, on vas donc créer ces deux dossiers

sudo mkdir /media/disque2To/downloaded /media/disque2To/pending

downloaded : dossier qui contiendra vos films de vacances terminés
pending : dossier qui contiendra vos films de vacances en cours de téléchargement

On place ensuite l’utilisateur “pi” dans le groupe de transmission

sudo usermod -a -G debian-transmission pi

Et on place les deux dossiers précédemment créé dans ce groupe aussi (c’est la fête du slip pour gérer les permissions)

chgrp debian-transmission /media/disque2To/downloaded /media/disque2To/pending

Enfin (et c’est la dernière manip concernant les permissions) on donne un droit 770 sur les deux dossiers

chmod -R 770 /media/disque2To/downloaded /media/disque2To/pending

On édite le fichier de configuration de transmission pour lui filer nos deux dossiers et régler quelques autres configs rigolotes :

sudo nano /etc/transmission-daemon/settings.json

Trouvez les lignes qui correspondent à ça :

« download-dir »: » /un/chemin/pourri » ,
« incomplete-dir »: » /un/autre/chemin/pourri » ,
« incomplete-dir-enabled »: false,
« rpc-password »: « un mot de passe crypté super long type {EBIBEIUBSIBSIBSIUB… »,
« rpc-username »: »transmission »,
« rpc-whitelist « : « 127.0.0.1″,

et remplissez les avec les bonnes valeurs

« download-dir »: » /media/disque2To/downloaded » ,
« incomplete-dir »: » /media/disque2To/pending » ,
« incomplete-dir-enabled »: true,
« rpc-password »: « mon mot de passe »,
« rpc-username »: »mon pseudo »,
« rpc-whitelist « : « 127.0.0.1,*.*.*.* »,

Evidemment les lignes ne sont pas toutes collées les unes sous les autres, il vous faudra les chercher Sourire (je vous avais pas dit que je vous vendrais du bonheur ?)

nb : Notez que j’ai placé la clause *.*.*.* dans rpc-whitelist, celle ci indique que toutes les adresses ip ont le droit de se connecter à votre seedbox (si elles connaissent le user/mot de passe bien entendu), ceci vous permet de vous connecter de partout dans le monde à votre seedbox (il faudra penser à débloquer le port 9091 de votre routeur/box si vous souhaitez y acceder de l’extérieur quand même mais bon…) si vous voulez que transmission n’accepte que les ip réseau locale, vous pouvez mettre 192.168.*.* à la place.

Enregistrez le bouzin et relancez le service

sudo service transmission-daemon reload

Votre Seedbox est fin prête !!

Pour télécharger de nouveaux films de vacances via des fichiers torrents vous n’avez plus qu’a vous connecter via un navigateur à votre seedbox à l’adresse :

http://ip.du.raspberry.pi:9091

ip.du.raspberry.pi : L’ip réseau de votre raspberry PI (ou son ip WEb si vous y accédez depuis un autre endroit que votre réseau locale)

9091: port par défaut de transmission (vous pouvez le modifier dans le setting.json, moi j’ai mis 666 pour le fun Tire la langue)

A la connexion transmission vous demandera les login et mot de passe entré dans le settings.json:

image

Et paf vous atterrissez sur votre client torrent :

Vos fichiers une fois téléchargés apparaitront dans le dossier downloaded de votre disque dur, lui même disponible en partagé depuis tout votre réseau locale.

test

Merci à Tom Canac qui à généreusement partagé ses pistes avec moi afin que nous arrivions à quelque chose de concret sur ce point Sourire

 

[Bonus] Personnaliser un peu le raspberry PI

 

Changer le nom du raspberry PI

Par défaut le rpi s’appelle raspberrypi ce qui est laid nous en conviendront on à donc cette ligne qui précède toutes nos commande:

pi@raspberrypi: ~#

Pour changer ce nom il faut éditer les fichiers /etc/hostname et /etc/hosts, dans ces deux fichiers, remplacez le nom raspberrypi par le nom que vous souhaitez, puis sauvegardez, fermez et redémarrez le raspberry PI, j’ai appelé le mien pib0x ‘(je sais… mais j’avais pas d’idées, ne me jugez pas T_T)

image

Mettre un message d’accueil

Lors de l’ouverture d’une console sur votre rpi, vous avez un message par défaut de toute beauté qui s’affiche :

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

Type ‘startx’ to launch a graphical session

On vas changer ça par quelque chose d’un peu plus yorkmouth !!

Pour cela il faut éditer le fichier /etc/motd et remplacer le message par ce que vous souhaitez puis sauvegarder et rebooter (encore et toujours)!! Personnellement je vous conseille un message en ascii ça claque toujours

image

Pas besoin de vous prendre la tête des jours à faire l’ascii vous même, des services existent pour ça, suivez le guide

Je repasserais certainement sur ce tuto pour ajouter de petites astuces de temps en temps, aussi pensez à venir lorgner quand vous avez une minute Sourire

Bien à vous mes bichons baltais!

Idle