vide en ligne depuis 02.10.1998

Monitorer son RPI avec Munin

munin

Munin est un logiciel de supervision basé sur RRDTools permettant de centraliser la gestion des graphes de données. Il permet de générer des graphiques complexes pour surveiller des machines et les processus.

Munin est constitué d'un serveur principal appelé Munin-master, récupérant les informations à intervalles réguliers et de plusieurs noeuds appelés Munin-node.

Munin est capable d'envoyer des notifications par mail lorsqu'une donnée d'un des plugins dépasse une limite définie par l'administrateur.

La communication entre le serveur maître et les machines noeuds utilise, par défaut le protocole TCP/4949.

Installation de Munin-master

Le serveur maître doit disposer d'un serveur Web configuré avec le répertoire root par défaut : /var/www.

Munin est présent dans les dépôts, il suffit donc de saisir la commande suivante :

$ sudo apt-get install munin munin-node munin-plugins-extra
$ sudo a2disconf munin

Il faut maintenant créer le lien symbolique :

$ sudo ln -s /var/cache/munin/www /var/www/munin

La configuration de Munin sur les machines noeuds est centralisée dans le fichier /etc/munin/munin-node.conf. Il faut éditer ce fichier pour y configurer l'adresse IP de votre serveur maître : Attention à la syntaxe !

allow ^127\.0\.0\.1$
allow ^192\.168\.1\.37$

Relancer le service Munin-node pour faire prendre en compte la nouvelle configuration :

$ sudo /etc/init.d/munin-node restart

La périodicité des mises à jour des graphes est déterminée par le programme munin-cron qui (par défaut) se lance toutes les 5 minutes.
A l'installation, le fichier /etc/cron.d/munin a été créé. En éditant ce dernier, vous pourrez modifier la périodicité des mises à jour des graphes.

Les statistiques sont disponibles à l'adresse suivante :

http://serveurdesupervision/munin

Pour accéder aux stats à partir du NET ou d'une autre machine du réseau, modifiez le fichier de configuration d'Apache :

$ sudo nano /etc/apache2/sites-available/default

et ajoutez une entrée Directory

Directory /var/cache/munin/www
     AllowOverride None
     Order allow,deny
     Allow from all
/Directory

N'oubliez pas de relancer Apache !

$ sudo /etc/init.d/apache2 restart

Si besoin, changer aussi les droits sur les répertoires de munin :

$ sudo chown -R munin:munin /var/cache/munin/www
$ sudo chown -R munin:munin /var/cache/munin/www/localdomain

Si munin envoi plusieurs emails dont l'objet est "Cron job warn about "not a reference at"
et le contenu "not a reference at /usr/share/perl5/Munin/Master/Utils.pm line 908"
en root, tapez :

$ sudo rm -f /var/lib/munin/{datafile,datafile.storable,htmlconf.storable}



Monitorer Apache avec Munin

apache

Certains plugins d'Apache requièrent l'activation des modules mod_info et mod_status dans le serveur web. Pour vérifier les plugins installés, vérifier la présence de leurs liens symboliques ( .conf et .load ) dans /etc/apache2/mods-enabled/

$ ls /etc/apache2/mods-enabled/

S'ils n'y sont pas, les activer, ils vont récupérer les données qui serviront pour les graphiques.

$ sudo a2enmod status
$ sudo a2enmod info

Puis activer les plugins dans munin-node :

$ sudo ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses
$ sudo ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes
$ sudo ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume

Editez le fichier de configuration /etc/munin/plugin-conf.d/munin-node puis ajoutez les lignes suivantes en fin de fichier :

[apache_*]
user root

et on relance

$ /etc/init.d/munin-node restart

Editez le fichier de configuration /etc/apache2/apache2.conf puis décommentez ou ajoutez les lignes suivantes en fin de fichier :

#< Location /server-status>
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .your_domain.com
#< /Location>

ExtendedStatus On

On vérifie si la syntaxe est correcte :

$ apache2 -t

Si pas d'erreurs, on relance Apache pour prendre en compte les modifications

$ /etc/init.d/apache2 reload

Si vous avez des erreurs ou si vos graphiques ne se peuplent pas, installer la librairie Perl suivante !

$ apt-get install libwww-perl



Ajouter un plugin à Munin

plugin

Pour ajouter un plugin à Munin, rien de plus facile...

Les plugins se trouvent dans /usr/share/munin/plugins/. Ils ne sont pas tous actifs par défaut. Pour qu'un plug-in soit actif, un lien symbolique vers /etc/munin/plugins/ doit être créé.

Nous allons donc travailler aujourd'hui sur un plugin pour le Raspberry PI qui va nous faire de jolis stats sur la température et la vitesse d'horloge de notre merveilleuse petite machine.

Tout d'abord, il nous faut un script et par chance celui-ci est disponible ici !

Copier le dans le dossier ou ce trouvent les plug-in /usr/share/munin/plugins/ puis faite :

$ cd /usr/share/munin/plugins
$ sudo chmod +x pisense_
$ cd /etc/munin/plugins
$ sudo ln -s /usr/share/munin/plugins/pisense_ /etc/munin/plugins/pisense_temp
$ sudo ln -s /usr/share/munin/plugins/pisense_ /etc/munin/plugins/pisense_clock
$ sudo ln -s /usr/share/munin/plugins/pisense_ /etc/munin/plugins/pisense_volt

et on modifie le fichier de conf

$ sudo nano ../plugin-conf.d/munin-node

Insérer à la fin du fichier :

[pisense_*]
user root

Pour prendre en compte les modifs :

$ sudo munin-node-configure --suggest --shell

Puis enfin, redémarrez le munin-node

$ sudo /etc/init.d/munin-node restart

Après quelques minutes, vous devriez voir vos jolis graphiques s'afficher dans votre butineur WEB à l'adresse suivante : xx.xx.XX.XX/munin/index.html.



Notification par email avec Munin

Lorsque certains capteurs de votre monitoring atteignent un seuil critique, Munin a la possibilité de vous le notifier par mail.

Pour cela vous aurez besoin que sendmail soit installé et fonctionnel.
Vérifions cela grâce à la commande suivante :

$ echo 'Petit test de sendmail pour Munin' | mail -s 'test sendmail' monmailamoi@fai.com

Editons le fichier /etc/munin/munin.conf sur le serveur :

#email notifications settings
contacts blogdegeek
contact.nom_utilisateur_mail.command mail -s "Munin alert ${var:host}" monmailamoi@fai.com
contact.blogdegeek.always_send warning critical

Les seuils pour les notifications sont définis par warning et critical.

[temp]
	address blogdegeek.fr
	temp.warning 60
	use_node_name yes

Ce qui veut dire que lorsque la température du CPU aura dépassé les 60°, Munin nous envera une notification par email.

On redémarre munin pour prendre en compte les modif :

$root@teleinfo:~# su - munin --shell=/bin/bash
$munin@teleinfo:~$ /usr/share/munin/munin-update



Monitorer votre switch ou votre routeur via le protocol SNMP

Il suffit d'installer un munin-node sur une machine ayant accès à votre snmp.. (voir sur le serveur munin lui même)
Un petit coup de "munin-node-configure -snmp -snmpversion -snmpcommunity "
Puis on rajoute un hôte virtuel dans la config de munin et ça roule...

Il est également intéressant de pouvoir superviser plusieurs machines qui sont derrières un routeur.
Pour se faire, nous allons effectuer du NAT sur le routeur afin de rediriger les différents ports extérieurs vers le port du munin-client sur la box du réseau local.

Il suffit donc de modifier le fichier de config de Munin et d'en préciser les ports :

# nano /etc/munin/munin.conf

[sous-domaine1.mondomaine.fr]
address 89.124.43.58
port 12345
use_node_name yes

[sous-domaine2.mondomaine.fr]
address 89.124.43.58
port 13254
use_node_name yes

Trop façile...



Monitorer MySQL avec Munin

Les plugins mysql sont normalement activé à l'installation, pour le vérifier, vous pouvez taper :

# munin-node-configure

Cette commande vous donnera une liste des mods en précisant s'ils sont installés et s'ils peuvent fonctionner.

Si vous avez l'erreur ci-dessous pour les plugins mysql

Erreur Missing dependency Cache::Cache

Vous pouvez corriger ce problème et réactiver manuellement les plugins en installant ce paquet :

# apt-get install libcache-cache-perl

Une fois installé, vérifier que votre problème est bien corrigé avec " munin-node-configure ". Vous pouvez ensuite réactiver les plugins mysql en créant les liens symboliques

# ln -s /usr/share/munin/plugins/mysql_* /etc/munin/plugins/

Rechargez la configuration de munin pour que la nouvelle config soit pris en compte

# /etc/init.d/munin-node restart





Installation et configuration de Raspbian "wheezy" sur Raspberry PI

raspbian

Tout d’abord, il nous faut télécharger le fichier image de Raspbian pour processeur de type ARM sur le serveur de Raspberrypi et le décompresser dans le dossier de votre choix sur votre PC sous Linux.

Les utilisateurs de Linux utiliseront l’outil dd et les utilisateurs de Windows utiliseront Win32DiskImager. Le logiciel sous Windows ne sera pas abordé ici.

Installation du système

Insérez la carte mémoire dans le lecteur du PC et recherchez le nom système de la carte SD à l’aide de cette commande

$ sudo fdisk -l

Disque /dev/sdc : 7969 MB, 7969177600 bytes
4 heads, 32 sectors/track, 121600 cylinders
Units = cylinders of 128 * 512 = 65536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identifiant de disque : 0x00000000

Périphérique Amorce Début Fin Blocs Id Système
/dev/sdc1 243 2012159 1005958+ 6 FAT32

Dans notre exemple la carte SD porte le nom /dev/sdc (/dev/sdc1 représente l’unique partition).
Nous allons maintenant démonter le disque /dev/sdc

$ sudo umount /dev/sdc

Nous copions l’image sur la carte mémoire avec la commande dd.
ATTENTION : Toute les données sur la carte SD seront supprimées.

$ dd if=/home/bidule/Desktop/2012-08-16-wheezy-raspbian.img of=/dev/sdc

3808593+1 enregistrements lus
3808593+1 enregistrements écrits
1950000000 octets (2,0 GB) copiés, 5208,4 s, 374 kB/s

Démontez la carte SD proprement et insérez la dans le port SD du Raspberry PI puis mettez le sous tension pour lancer le démarrage du système.

Si vous n'êtes pas trop à l'aise avec la ligne de commande, il est possible d'utilser Etcher, logiciel basé sur le framework Electron qui vous protègera contre l'écriture accidentelle sur vos disques durs et garantira que chaque octet de données a été écrit correctement sur la carte SD.

etcher

Configuration du système

Pour connaître l'adresse IP attribuée à votre machine sans être dessus, vous pouvez scanner votre réseau à la recherche d'une nouvelle adresse IP grâce à la commande suivante :

$ nmap -sP 192.168.0.0/24

Connecter vous en SSH grâce à la commande suivante :

$ ssh pi@192.168.0.xx

ou xx est le numéro de la machine sur votre réseau...

Un écran de connexion apparaît, le compte utilisateur et le mot de passe par défaut sont ( attention le clavier est en qwerty )

Login : pi
Password : raspberry

Une fois la session ouverte, saisissez

$ sudo raspi-config

pour exécuter le script de configuration du système.

Prenons l’option expand_rootfs qui va étendre cette partition car elle ne fait que 2 Go par défaut, puis ensuite, ces quelques options peuvent être intéressantes à modifier :

  • expand_rootfs : vous permettra d'utiliser tout l'espace de votre carte SD.
  • configure_keyboard : vous permet de mettre le clavier en français.
  • change_pass : modifier le mot de passe de l'utilisateur "pi" (par défaut : raspberry).
  • change_locale : changer la langue du système.
  • change_timezone : changer l'heure locale.
  • ssh : activer le SSH (nous servira certainement).
  • boot_behavior : vous permet d'atterrir directement sur le bureau, pas sur une console.
  • Update : permet de faire la mise à jour de ce menu via internet.





Installation et configuration de Raspbian "wheezy" sur Raspberry PI v2

raspbian

Le Raspberry Pi 2, d'apres son concepteur, Eben Upton, est 6 fois plus performant que les Pi 1 Model B en multithread, et 3 fois plus en monothread.
Ce nouveau modèle adopte un nouveau jeu d'instructions, et il passe au multi-coeurs.
Une nouvelle puce Broadcom BCM2836 comportant quatre coeurs ARMv7 Cortex-A7 à 900 MHz, développée spécifiquement pour lui remplace la BCM2835 qui n'à qu'un seul coeur ARMv6 à 700 MHz.
La quantité de mémoire vive LPDDR2 est quant à elle doublée et passe à 1 Go. On retrouve en revanche strictement le même GPU double coeur VideoCore IV, " le seul GPU ouvert pour puce ARM ".

Cette seconde génération maintient la compatibilité avec le soft mais aussi avec le matériel dont elle reprend la disposition et la connectique du Pi 1 Model B+.

Dans cet article, nous allons donc remplacer un serveur WEB, un RPI model B de première génération (256Mo de RAM) par le tout nouveau Raspberry Pi 2 qui semble des plus prometteur...

Comme je suis une grosse feignasse, nous allons nous référer à différents articles déjà postés sur ce site et qui devraient, au delta prêt, être communs à tous les RPI's.

La première étape consiste donc à installer l'OS et vous trouverez toutes les explications utiles sur cette page.

Pour libérer de la place sur la carte SD, vous pouvez supprimer quelques paquets inutiles comme les jeux par exemple, ils n'ont rien à faire sur un serveur.

$ sudo apt-get --purge remove wolfram-engine minecraft-pi sonic-pi scratch
$ sudo apt-get autoremove

Comme il s'agit d'un serveur web ouvert sur le monde, on va le baptiser en lui donnant une adresse IP statique. Cela se configure simplement en utilisant cette page.

Il est aussi fortement recommandé de modifier le port SSH par défaut ! Cela ce configure très simplement comme démontré ici.

Après le redémarrage, vous vous connecterez par ssh en utilisant cette commande :

$ ssh pi@192.168.1.xx -p1234

Nous allons à présent installer logwatch ce qui nous évitera de se palucher régulièrement le contenu de /var/log.

et pour sécuriser les accès à notre précieux, on installe fail2ban en s'aidant de cette procédure.

Etant donnée que l'utilisateur " pi " est connu comme le loup blanc et qu'un certain nombre d'attaques auront lieu avec ce compte, supprimons le !

Mettez un mot de passe "compliqué" à root

$ sudo passwd root

Connectez vous sous ce compte et tapez cette commande :

# deluser --remove-all-files pi

Si la connexion au compte root n’est pas permise, ce qui est le cas par défaut de Debian Jessie, il faudra modifier le fichier de configuration /etc/ssh/sshd_config comme cela :

PermitRootLogin yes

On en profitera pour modifier le port SSH grâce à cette procédure.

Rendez-vous maintenant sur cette page afin d'installer le serveur LAMP.

et dans la foulée, installons Munin, histoire d'avoir quelques statistiques sur les nouvelles performances de notre serveur.

Vous pouvez installer des plugins à Munin, comme par exemple :
- le plugin pour Apache.
- le plugin pour mySQL.
- le plugin pour suivre les attaques DDOS.
- le plugin pour suivre la tempétature du RPI.

Il ne nous reste plus qu'à installer Piwik, ce qui va nous permettre de nous débarrasser de Google Analytics...

En effet, ce n'est un secret pour personne, Google récupère et utilise à son profit tout ce que vous faites sur leur réseau.
Ainsi, toutes les statistiques de votre site web sont pompées par Google Analytics qui alimente les bases de données de Google avec les informations de vos visiteurs.
Le scandale autour de PRISM et de la NSA, m'ont décidé à installer Piwik, une solution libre qui remplacera avantageusement l'usine à gaz qu'est Google Analytics.

Votre nouveau serveur est prêt à recevoir ses premiers visiteurs...



Installation et configuration de Raspbmc sur Raspberry PI

raspbmc

Vous disposez d'un Rasberry PI et vous rêvez de posséder un Média center digne de ce nom ?

Et bien, rien de plus facile avec Raspbmc, une distribution Linux basée sur Debian et pré-configuré et optimisé pour RPI.

Il existe au moment ou j'écris ces lignes, 3 distro très stables pour le RPI qui sont optimisées en Média Center, il s'agit de :
  • Openelec : Je n'aborderais pas cette distro car ce système est "fermé" ! Très bien pour ceux qui ne veulent pas mettre les mains dans le cambouis...
  • XBian : Une version un peu plus "lite" et qui fonctionne parfaitement.
  • Raspbmc : Pour moi, la meilleur, et c'est celle dont nous allons justement parler dans cet article, ça tombe bien !
Afin d'avoir une expérience utilisateur acceptable, il va vous falloir investir dans une carte mémoire SDHC Class 10 8Go !

Télécharger Raspbmc et décompresser l'ensemble des fichiers à la racine de la carte SD puis lancer l'exécutable. Le logiciel devrait se lancer automatiquement, Vous devriez ensuite avoir la fenêtre suivante à l'écran :

raspbmc installe


Vous avez également la possibilité de configurer directement les paramètres réseau de Raspbmc en cochant la case " Manually configure Networking ". (IP, Subnet, Gateway, DNS)

Une fois l'installation de la carte SD terminé, connecter la au Raspberry-pi et démarrer celui-ci. L'installation va maintenant se terminer sur le RPI. Il suffit maintenant d'attendre pour arriver à l'écran d'accueil d'XBMC. S'en est terminé pour la partie installation !

Modifier les paramètres réseau : Programmes | Raspbmc settings | Network configuration si ce n'est pas déjà fait.

Il se peut que le clavier soit en QWERTY. Pour mettre votre clavier en AZERTY connecter vous en SSH sur votre RPI et taper la commande suivante :

$ sudo dpkg-reconfigure keyboard-configuration

ou pour modifier directement le fichier en ligne de commande taper :

$ sudo nano /etc/default/keyboard

Puis rechercher la ligne suivante :

XKBLAYOUT=gb

Et la modifier par celle-ci :

XKBLAYOUT=fr

Pour éviter des problèmes de chauffe, je vous conseille d'intégrer des dissipateurs à votre Raspberry-Pi. Ils sont très simples à mettre en place !



Configurer une IP static sur le RPI

ipstatic

Connectez vous en local sur votre raspberry ou par ssh.

Tapez dans le terminal :

$ sudo nano /etc/network/interfaces

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

adapter les valeurs selon votre besoin

Enregistrez puis modifiez le fichier de résolution DNS suivant :

$ sudo nano /etc/resolv.conf

Remplacez son contenu par : ( DNS du FAI Free )

nameserver 212.27.54.252
nameserver 212.27.53.252

Enregistrez puis redémarrez le réseau

$ sudo /etc/init.d/networking restart



Configurer le watchdog du Raspberry PI

watchdog

Le watchdog permet de surveiller le circuit BCM2708 du rapsberry Pi.

Pour activer celui-ci, on procède de la manière suivante :

Chargement du module

$ sudo modprobe bcm2708_wdog

Edition du module...

$ sudo nano /etc/modules

...et ajout de la ligne suivante en fin de fichier :

bcm2708_wdog

Définition du démon du watchdog (installation et configuration au démarrage du raspberry Pi ) :

$ sudo apt-get install watchdog chkconfig
$ sudo chkconfig watchdog on
$ sudo /etc/init.d/watchdog start

Configuration du fichier de config du watchdog :

$ sudo nano /etc/watchdog.conf

Décommenter la ligne

# watchdog-device = /dev/watchdog

Voila le watchdog est démarré et scrute toute les 10 secondes.
Si la commande /dev/watchdog ne reçoit pas de signal au bout de 10 sec, le raspberry pi redémarre.

Enfin de tester votre chien de garde en plantant le système avec un Forkbomb taper la commande ci dessous

#:(){:|:&};:

Note importante : le redémarrage du rapsberry pi est violent et peut dans certain cas peut corrompre les fichiers de démarrage.



Mise à jour firmware

firmware

La procédure de mise à jour du RPI ne prend pas en compte la mise à jour du firmware !
Pour y remédier, procédez comme suit :

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update
$ sudo apt-get install git-core
$ sudo rpi-update

les fois suivantes, faites juste :

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo rpi-update



Installer un serveur web LAMP sur RPI

lamp

Connectez-vous sur votre raspberry et faite les mises à jours du système.

$ sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade

Installation des différents paquets

$ sudo apt-get install apache2 php5 mysql-server phpmyadmin

Pendant l'installation de mysql-server, on nous demande quelques informations :

Nouveau mot de passe du super utilisateur de MySQL : VotreMotDePasse
Confirmation du mot de passe du supe rutilisateur de MySQL : VotreMotDePasse

Configuration de phpmyadmin

Serveur web à reconfigurer automatiquement : apache2
Faut-il configurer la base de données de phpmyadmin avec dbconfig-common ? : Oui
Mot de passe de l'administrateur de la base de données : VotreMotDePasse
Mettez le même mot de passe que celui de la configuration Mysql-server
Mot de passe de connexion MySQL pour phpmyadmin :

Nota : Laissez vide pour un mot de passe généré aléatoirement, ou tapez votre propre mot de passe.

Maintenant que tout est correctement installé, nous allons vérifier que tout fonctionne en ouvrant notre navigateur web préféré et rentrant dans la barre d'adresse l'ip de votre raspberry.

Vous devriez voir une page avec écrit dedans

It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.

A la fin du fichier /etc/apache2/apache2.conf, il faut ajouter à la fin suivante :

ServerName 127.0.1.1

ceci évite d'avoir le message : Apache could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for servername

A toute fin utile, si vous rencontrez des problémes de configurations avec Apache, vous devez tester le fichier de configuration /etc/apache2/apache2.conf grâce à la commande suivante :

$ sudo apachectl configtest

si tous ce passe bien, vous aurez un beau

Syntax OK

L'interface de gestion " phpmyadmin " de votre serveur se trouve à cette adresse : http://IPduRaspberry/phpmyadmin



Sauvegarde intégral de la carte SD du RPI

Commencez par insérer la carte SD dans le lecteur du PC Linux sur lequel on veut faire la sauvegarde.

Identifiez le périphérique correspondant à la carte SD à sauvegarder sur son système, il suffit de saisir la commande suivante et de regarder le device qui correspond à sa carte SD:

$ sudo fdisk -l


J'ai donc deux disques détectés sur ma machine
le device /dev/sda (disque de 250 Go) qui est mon disque dur système sur mon PC portable.
le device /dev/sdb (disque de 8 Go) qui est ma carte SD que je souhaite sauvegarder.

On lance la sauvegarde avec la commande suivante

$ sudo umount /dev/sdb
$ sudo dd if=/dev/sdb | gzip -9 > ./backupRPI.img.gz

Pour restaurer cette sauvegarde sur une autre carte SD IDENTIQUE !! (même marque, même model), il suffit d'insérer une carte SD dans le lecteur du PC, d'identifier le périphérique comme précédement (/dev/sdb dans mon cas), puis, saisir la ligne de commande
Attention ! la carte SD sera effacée !

$ sudo umount /dev/sdb
$ gunzip ./backupRPI.img.gz | sudo dd of=/dev/sdb



Une seedbox dans le raspberry PI !

Transformer le Raspberry pi en seedbox est très simple, nous n'aurons besoin que d'un client torrent disponible via une interface web sécurisée, d'un gros disque dur externe et d'un peut de courage pour mettre les mains dans le cambouis...

Premièrement, nous allons lancer la mise à jour du système parce que ça ne fait jamais de mal...

$ sudo apt-get update

On installe le paquet qui nous sera indispensable pour accéder au disque externe formaté en NTFS.

$ sudo apt-get install ntfs-3g

Il est temps de connecter un disque dur balèze de 2To par exemple sur un port USB du raspberry PI.

On va maintenant créer un "lecteur permanent" dans le dossier "media" sur lequel pointera le client 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

On attend quelques secondes, le temps que le rpi détecte le disque puis on affiche la liste des périphériques.

$ sudo blkid

Retenez le champ UUID pour le périphérique ayant le label qui correspond à votre disque dur.


Maintenant que nous connaissons l'identifiant unique de notre disque dur, nous allons spécifier au rpi de lier à chaque démarrage cette id au dossier que l'on a créé précédemment (/media/disque2To).

On édite le fichier /etc/fstab.

$ sudo nano /etc/fstab

et on ajoute la ligne

UUID=273313CB08303FE5 /media/disque2To ntfs-3g defaults 0 2 nofail

Le paramètre nofail évite d'avoir des problèmes lorsque vous démarrez le serveur sans que le disque externe ne soit connecté !

évidemment, l'UUID doit être modifié en fonction de votre UUID à vous.


On sauvegarde et on reboot

$ sudo reboot

Vérifiez que votre disque dur est monté et qu'il soit disponible via le dossier /media/disque2To.

$ cd /media/disque2To && ls

Il se peut que le disque dur ne soit pas monté. Dans ce cas, vérifiez que votre disque dur est bien connecté au port USB du raspberry, démarré et alimenté (en externe) lors du démarrage.
Vérifiez aussi que le disque dur soit bien formaté au format NTFS et que l'UUID entrée dans le /etc/fstab corresponde bien à l'UUID de votre disque dur.

Le plus dur est fait et comme vous avez super bien bossé, vous pouvez vous faire un p'tit café...

Vous êtes encore là ? parfait, nous allons donc installer maintenant le client torrent !

J'aurai pu choisir Transmission qui est un excellent client torrent, simple, léger et facilement configurable mais je préfère Deluge qui a les mêmes qualités et qui en plus est sécurisé.
Deluge va utiliser 2 dossiers sur votre disque dur externe, un dossier pour stocker les fichiers en cours de téléchargements, et un dossier pour stocker les fichiers finaux, on va donc créer ces deux dossiers.

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

Enfin, on donne les droits 770 sur les deux dossiers

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

L'installation de Deluge et du GUI sont d'une facilité éléphantesque car tous deux sont disponibles dans les dépôts.

$ sudo apt-get install deluged deluge-webui

Pour éviter tout problèmes de sécurité, il nous faut créer un utilisateur.

$ sudo adduser deluge

Normalement, le répertoire de configuration de Deluge se trouve dans le /home de l'utilisateur l'ayant installé. Nous allons déplacer ce dossier vers le /home de notre nouvel utilisateur.

$ sudo cp -R ~/.config /home/deluge

On change ensuite d'utilisateur pour lancer le daemon

$ su deluge
$ deluged

Deluge tourne maintenant sur votre serveur. Vous pouvez vous connectez à l'interface...

A partir d'un PC de votre réseau, rendez-vous à l'adresse de votre serveur, le port par défaut est 8112.
Par exemple : http://192.168.1.24:8112
Un mot de passe vous est alors demandé, celui par défaut est " deluge ". Je vous conseille vivement de le changer.


Selectionnez la ligne ou figure l'adresse IP de votre PC et cliquez sur le bouton " Connect ".


Ouvrez les paramétres et configurez le chemin des dossiers de téléchargements créés plus haut.


Pour aller plus loin, je vous conseil de lire cet excellent post Installation et configuration de Deluge



Modification du port SSH

Il est très fortement recommandé de modifier le numéro de port SSH de votre RPI si celui-ci est vu de l'extérieur !
Cela vous évitera les éternels attaques de robots de toutes sortes...
La procédure est des plus simple et ne demande que quelques minutes ! Alors pourquoi ne pas l'appliquer ?

Connectez vous en local sur votre raspberry ou par ssh.

Tapez dans le terminal :

$ sudo nano /etc/ssh/sshd_config

Remplacez le port 22 par le port de votre choix, par exemple : 5689 puis sauvegardez

Rechargez la configuration SSH à l'aide de la commande :

$ sudo /etc/init.d/ssh reload

A partir de cette instant, pour vous connecter en SSH sur votre RPI vous devrez impérativement spécifier le numéro de port 5689 dans la commande comme ci-dessous :

$ ssh pi@192.168…. -p 5689

Afin d'améliorer un peu plus la sécu, nous allons changer les clés SSH puis créer un nouveau jeu de clés qui seront uniques.

Suppression des anciennes clés :

$ sudo rm /etc/ssh/ssh_host_*

Création d'un nouveau jeu de clés :

$ sudo dpkg-reconfigure openssh-server

Creating SSH2 RSA key; this may take some time ...
Creating SSH2 DSA key; this may take some time ...
Creating SSH2 ECDSA key; this may take some time ...
[ ok ] Restarting OpenBSD Secure Shell server: sshd.

Sur les clients, supprimer les clés SSH périmées :

$ ssh-keygen -R ip.du.RPI

par exemple :

$ sudo ssh-keygen -R 192.168.1.50

Déconnecter vous après vos modifications !



Allonger la durée de vie de ses cartes SD

La durée de vie d'une carte SD dépend du nombre d'écritures effectuez sur celle-ci.
Le Raspberry Pi qui ne fonctionne que sur carte SD, écrit pas mal de logs dessus toute la journée.
Il existe quelques softs pour créer un disque RAM dont Ramlogs, qui peut être utilisé sur tous les systèmes Linux et particulièrement sur les systèmes ayant un disque SSD.
Les fichiers logs de notre RPI y seront stockés et mis à jour et ce n'est qu'à l'arrêt du systeme qu'ils seront écrits sur la SD ce qui limitera grandement les accès en écritures et qui prolongera d'autant plus la durée de vie de notre précieux.

- Ca a l'air super ton truc, mais comment ca s'installe ?
- Ben c'est comme d'habitude mon gars, faut mettre les mains dans le cambouis mais tu verras, rien de bien compliqué...

Allez, on suit le guide

Commençons comme d'habitude à mettre le système à jours

$ sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade

Puis installons les deux paquets suivants

$ sudo apt-get install rsync
$ sudo apt-get install lsof

Allons chercher la dernière version de Ramlogs

$ wget http://www.tremende.com/ramlog/download/ramlog_x.x.x_all.deb

Puis on lance l'installation

$ sudo dpkg -i ramlog_x.x.x_all.deb

On modifie ensuite le fichier suivant

$ sudo nano /etc/init.d/ramlog

Pour y ajouter les 2 lignes suivantes dans la section #BEGIN INIT INFO

# X-Start-Before: rsyslog
# X-Stop-After: rsyslog

Important : n'oubliez pas de mettre les #

Enfin, éditez le fichier suivant

$ sudo nano /etc/init.d/rsyslog

et ajoutez ramlog aux 2 lignes suivantes pour le lancer au démarrage et l'arrêter lors du démontage

# Required-Start: $remote_fs $time ramlog
# Required-Stop: umountnfs $time ramlog

Entrer ensuite la commande suivante pour activer le script au lancement

$ sudo insserv

Et rebootez le Raspberry

Allez faire un tour ici pour vérifier que tout se passe bien

$ sudo cat /var/log/ramlog

Si vous y voyez des erreurs, il s'agit certainement que d'autres programmes écrivent dans les logs avant que Ramlogs n'ai démarré.
Cela peut être le cas pour Cups et Samba ! Pour corriger ça, il faut indiquer dans les fichiers de confs de ces programmes que ramlog doit être lancé avant qu'ils ne commencent à écrire dans les logs.

Pour Cups, éditez le fichier suivant

$ sudo nano /etc/init.d/cups

Ajoutez ramlog à la fin de ces 2 lignes

# Required-Start: $syslog $remote_fs ramlog
# Required-Stop: $syslog $remote_fs ramlog

Même punition pour Samba

$ sudo nano /etc/init.d/samba

Et ajoutez ramlog à la fin des 2 lignes suivantes

# Required-Start: $network $local_fs $remote_fs ramlog
# Required-Stop: $network $local_fs $remote_fs ramlog

Refaites un petit insserv et redémarrez

$ sudo insserv

Il va de soit que vous devez faire cette manip pour tous les programmes qui empêcheraient le démarrage de Ramlogs.



Liste des processus qui utilisent la swap

Sur un RPI model B équipé de 256 Mo de RAM, il est fréquent d'arriver à saturation et le système se met alors à swapper faisant dégringoler les performances du serveur.
Il est donc intéressant de connaître quels processus utilisent la swap pour éventuellement faire un peut de tuning...

Avec la commande free, on se concentre sur la dernière ligne, intitulée Swap :

# free

             total       used       free     shared    buffers     cached
Mem:        234676     214456      20220          0      18372     105732
-/+ buffers/cache:      90352     144324
Swap:       102396      51324      51072

Ceci permet d'avoir une première idée de l'utilisation du swap.
Pour avoir la liste des processus qui utilisent la swap, triés par taille croissante, on peut utiliser la commande suivante :

# for file in /proc/*/status ; do awk '/Tgid|VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | grep kB | sort -k 3 -n

Cette commande nous donne le nom du process, son PID et la taille mémoire en swap.

.../...
awk 5749 0 kB
awk 5750 0 kB
bash 5429 0 kB
bash 5664 0 kB
grep 5665 0 kB
sort 5666 0 kB
sshd 5421 0 kB
sshd 5428 0 kB
watchdog 3195 0 kB
ifplugd 1598 64 kB
ifplugd 1574 72 kB
init 1 76 kB
logger 2879 76 kB
cron 2090 88 kB
gam_server 2400 96 kB
mysqld_safe 2470 96 kB
thd 3073 104 kB
dbus-daemon 2138 120 kB
udevd 158 120 kB
getty 3220 124 kB
getty 3221 124 kB
getty 3222 124 kB
getty 3223 124 kB
getty 3224 124 kB
getty 3225 124 kB
bluetoothd 2182 140 kB
rsyslogd 1939 168 kB
polkitd 2922 200 kB
ntpd 2966 244 kB
modem-manager 2936 308 kB
sshd 3013 328 kB
NetworkManager 2908 752 kB
console-kit-dae 3307 764 kB
fail2ban-server 2384 1648 kB
apache2 17200 2524 kB
apache2 21653 2604 kB
apache2 18193 2612 kB
apache2 24022 2616 kB
munin-node 1983 2640 kB
apache2 6335 2804 kB
apache2 5074 3080 kB
apache2 23488 3112 kB
apache2 2500 3112 kB
apache2 10985 3168 kB
apache2 1127 3256 kB
apache2 2041 4000 kB
mysqld 2878 36252 kB
.../...



Répéteur Wi-Fi sur Raspberry PI

Avec un minimum de matériel nous allons configurer un répéteur Wi-Fi sur une base de Raspberry PI model 3 puisque celui dispose d'une interface Wi-Fi onboard.

Nous aurons donc besoin :
- un Raspberry model 3
- une carte microSD d'au moins 2 Go
- une alimentation de 1A pour le PI
- un dongle Wi-Fi

La première étape conciste à installer la version lite de Raspbian sur le Raspberry pi. Vous trouverez la derniere version ici.

Une fois l’installation de Raspbian effectuée, la première chose à faire va être de brancher notre Raspberry pi à notre box internet en utilisant un câble Ethernet.
Je vous laisse le choix des armes pour prendre le contrôle de votre raspberry, soit directement avec un clavier/écran, soit par SSH.

Comme je suis une grosse feignasse, nous allons installer une interface web qui nous permettra de configurer et de contrôler notre répéteur, RaspAP disponible gracieusement sur Github.

$ wget -q https://git.io/voEUQ -O /tmp/raspap && bash /tmp/raspap

Une fois la commande lancée, vous n’avez plus qu’à répondre aux quelques questions qui vous seront posées, et l’installation de tous les composants va se faire toute seule.
Pendant l'installation, je vous conseil de lire le readme en fin de page sur Github.

Lorsque l’installation est terminée, le Raspberry pi redémarre, connectez vous à l'aide de votre butineur favori sur son adresse IP qui doit être : 10.141.3.1.

Vous devriez avoir un écran semblable à celui-ci :


A ce stade, vous disposez d'un hotspot Wi-Fi opérationnel que nous allons transformer en répéteur afin de prolonger la portée de notre réseau Wi-Fi domestique.

Dans le frontal RaspAP, commencez par modifier les paramètres comme montré ci-dessous.









A l'étape suivante, nous allons être obligé de mettre les mains dans le cambouis mais rien de bien méchant rassurez-vous...

On commence par modifier le fichier de configuration du DHCP

$ sudo nano /etc/dhcpcd.conf

#DHCP configured for wlan1

interface wlan0
static ip_address=10.3.141.1/24
static domain_name_servers=1.1.1.1 8.8.8.8

interface eth0
static ip_address=192.168.1.54/24
static routers=255.255.255.254
static domain_name_servers=192.168.1.1 8.8.8.8

puis c'est au tour du fichier wpa_supplicant.conf d'être modifié.

$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

puis on crée un nouveau fichier.

$ sudo nano /etc/wpa_supplicant/wpa_supplicant-wlan1.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="Freebox-ABCDE"
psk="LeMotDePasse"
}

et on continu avec le fichier config.php ou on va modifier 2 lignes.

$ sudo nano /var/www/html/includes/config.php

define('RASPI_WIFI_CLIENT_INTERFACE', 'wlan1');
define('RASPI_WPA_SUPPLICANT_CONFIG', '/etc/wpa_supplicant/wpa_supplicant-wlan1.conf');

on enchaîne avec le fichier hostapd.conf ou on va vérifier le contenu.

$ sudo nano /etc/hostapd/hostapd.conf

driver=nl80211
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
beacon_int=100
auth_algs=1
wpa_key_mgmt=WPA-PSK
ssid=LeSSIDdeAP
channel=1
hw_mode=g
wpa_passphrase=VotreMotDePasse
interface=wlan0
wpa=1
wpa_pairwise=TKIP
country_code=AF

courage, ça se termine. On continu avec le fichier dnsmasq.conf ou on va là encore vérifier le contenu.

$ sudo nano /etc/dnsmasq.conf

interface=wlan0
dhcp-range=10.3.141.50,10.3.141.255,255.255.255.0,15d


nous allons maintenant figer le nom des interfaces réseaux pour éviter leur changement de nom après un redémarrage.
Consultez cette page, paragraphe 2.2 très intéressante sur le pourquoi...

créer le fichier 10-network.rules et copier/coller les 2 lignes suivantes

$ sudo nano /etc/udev/rules.d/10-network.rules

SUBSYSTEM=="net", ATTRS{address}=="xx:xx:xx:xx:xx:xx", NAME="wlan0"
SUBSYSTEM=="net", ATTRS{address}=="yy:yy:yy:yy:yy:yy", NAME="wlan1"

remplacer les 'xx' et les 'yy' par les adresses MAC des cartes ! (la saisie doit OBLIGATOIREMENT être en MAJUSCULES !)

un dernier effort avec le fichier rc.local ou on va ajouter 3 lignes.

$ sudo nano /etc/rc.local

echo 1 > /proc/sys/net/ipv4/ip_forward #RASPAP
iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE
iptables -A FORWARD -i wlan1 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT

allez, cette fois c'est vraiment fini avec le fichier sysctl.conf ou on va ajouter quelques lignes à la fin du fichier afin de désactiver l'IPv6.

$ sudo nano /etc/sysctl.conf

# désactivation de ipv6 pour toutes les interfaces
net.ipv6.conf.all.disable_ipv6 = 1
# désactivation de l’auto configuration pour toutes les interfaces
net.ipv6.conf.all.autoconf = 0
# désactivation de ipv6 pour les nouvelles interfaces (ex:si ajout de carte réseau)
net.ipv6.conf.default.disable_ipv6 = 1
# désactivation de l’auto configuration pour les nouvelles interfaces
net.ipv6.conf.default.autoconf = 0

puis on lance la commande suivante afin de modifier dynamiquement les paramètres du système d'exploitation.

$ sysctl -p

Rebooter la machine et allez boire un café, vous l'avez bien mérité...

Vous n'avez plus qu'à vous connecter sur votre AP