Construisez une SVTux-BOX !

        « Bonjour à tous ! Sur cette nouvelle page, vous aller comprendre comment fonctionne la SVTux-BOX (principe, installation, mode d'emploi...). N'hésitez pas à me contacter si vous ne parvenez pas à suivre ce tutoriel détaillé en entier ou si vous avez un problème technique, je vous répondrai avec plaisir. De plus, cette notice, si elle peut paraître complexe au débutant en informatique, n'est ici décrite qu'à titre informatif : en effet, il suffit d'installer mon image de ma carte SD pour que la SVTux-BOX soit 100% opérationnelle ! (c'est l'un des avantages du Raspberry utilisé pour celui qui souhaite déployer rapidement et simplement son système) »

Version : SVTuxBOX v3.0 (09/07/2014)
Télécharger l'image « toute prête » (env. 700Mo) : bientôt dispo !
Temps de démarrage : env. 2min
  • Le principe de la SVTux-BOX :

    En utilisant un ordinateur permettant la création d'un hotspot, il s'agit de créer un réseau local personnel intégrant un « cloud » privé, pouvant être relié à Internet (ou non, en fonction des besoins) et pouvant héberger localement un serveur web (ce qui sera le cas ici).

La SVTux-BOX est donc un ordinateur faisant office de routeur, permettant le visionnage (avec ou sans connexion) de sites Internet sélectionnés ou construit par l'enseignant, et permettant le stockage et l'échange de document (entre l'enseignant et le professeur et entre les élèves ou toute personne se connectant au réseau) à la manière de GoogleDrive ou Dropbox.

    La SVTuxBOX étant basée sur le Raspberry Pi, ses dimensions sont ridicules : 10cm x 6cm x 2,5cm tel que présenté sur la photographie à droite ! De plus, son coût total, assemblé soit-même est d'environ 65€ (peut-être moins en fouillant bien sur le web !).


  • Pistes d'exploitations pédagogiques :
(1) Créer un réseau privé local afin de communiquer !
(2) Toutes les applications classiques dédiées à Owncloud : stockage, partage, synchronisation de dossiers/fichiers, échanges de données de toute sorte !
(3) Toutes les applications classiques dédiées aux serveurs web (Serveur LAMP) : hébergement d'un site internet et d'applications en ligne...
(4) Partage de connexion internet ! (à volonté, en fonction des besoins, comme un simple routeur !)
(5) Travail collaboratif sur un document texte, tableur... (via Owncloud !)
[...]
  • Construire une SVTux-BOX
    • Le matériel nécessaire :
      • Un Raspberry Pi (modèle B)
      • Une carte SD (ici une SHDC 4 Go, classe 10)
      • Un dongle Wi-Pi (modèle adapté au Raspberry)
      • Une alimentation micro-usb (5V - 700mA minimum)
      • ... et quelques compétences informatiques !

Étape n°1 : Installer le système d'exploitation sur la carte SD

    • Commencez par télécharger l'image de Rasbian la plus récente à partir du site officiel de Raspberry puis décompressez ensuite votre archive, vous allez obtenir le fichier : 201x-xx-xx-wheezy-raspbian.img
    • Conntectez votre carte SD dans un lecteur de carte approprié puis formatez la en FAT32.
    • Si vous utilisez Windows, téléchargez l'utilitaire Win32DiskImager, décompressez l'archive et enfin utilisez-le pour gravez l'image de Raspbian sur la carte SD.
    • Si, comme moi, vous utilisez une distribution Gnu/Linux, une simple commande suffit :
      ~# dd bs=1M if=~/Telechargements/201x-xx-xx-wheezy-raspbian.img of=/dev/nom_de_la_carte_sd
       

Étape n°2 : Démarrer le système pour la première fois et le configurer

Premier démarrage :

    • Montez votre Rapsberry (Dongle, alimentation, carte SD) puis reliez-le à votre réseau domestique via un câble éthernet.
    • Branchez-le puis patientez environ 1min.
    • Dès le premier démarrage, votre Raspberry est accessible via SSH, à condition de connaître son adresse IP sur votre réseau domestique !
    • Via votre routeur, vous pouvez identifier très simplement et rapidement l'adresse IP de votre Rapsberry Pi (Cependant, si vous ne savez pas comment faire, je vous conseille de suivre ce tutoriel)
    • La première connexion se fait via un terminal (depuis Gnu/Linux) ou via Putty (depuis Windows), en tapant la commende suivante : ~$ ssh utilisateur@adresse_ip
    • Par défaut sur une installation neuve, l'utilisateur est « pi » et le mot de passe « raspberry » (il sera essentiel de le changer rapidement par la suite !)
    • Vous arrivez alors immédiatement à l'interface « Raspi-config » pour paramétrer votre système.

Optimisation de Raspbian

Voici quelques réglages indispensables pour optimiser un peu la bête :

    • Commencez par mettre la langue française par défaut !
    • Désactivez le serveur graphique (inutile pour un serveur puisque l'administration se fera via ssh)
    • Choisissez « Pas d'Overclock » (=700 MHz)
    • Réglage du GPU à 16 Mo (on gagne des ressources tout en diminuant la T°C du processeur)

Par la suite, la commande ~$ sudo raspi-config vous permettant de réaccéder à ces paramètres.

Rappel : Le Raspberry Pi est construit autour d'un processeur ARM (avec GPU intégré) capable de supporter les hautes températures (jusqu'à 70°C sans problème). Il peut cependant être intéressant de contrôler de temps en temps la température du processeur au cas où via la commande :

~$ sudo /opt/vc/bin/vcgencmd measure_temp

Chez moi, elle oscille entre 48°C et 53°C.

Rappel : il est important de vérifier les mises à jour disponible à ce moment précis. Pour cela, un "sudo apt-get update" et un "sudo apt-get ugrade" suffisent ! (Attention, en fonction du nombre de mises à jour à installer, la procédure peut prendre un certains temps...)


Étape n°3 : Installer le serveur Web

Installation du serveur web

Pour cette seconde version de la SVTuxBOX, après différents essais, je recommande vivement de rester sur un serveur LAMP "classique" (Linux Apache Mysql Php).

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

Et pour optimiser un peu, il est indispensable (à mon avis) de faire la commande suivante : ~$ sudo apt-get install php-apc


Configurez mysql-server-5.5
Nouveau mot de passe du superutilisateur de MySQL : Password-que-vous-voulez
Confirmation du mot de passe du superutilisateur de MySQL : Password-que-vous-voulez

Configurez phpmyadmin
Serveur web à reconfigurer automatiquement : apache2 (vivement conseillé !)
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 : Password-que-vous-voulez 
(Mettez le même mot de passe que celui de la configuration Mysql-server
) Mot de passe de connexion MySQL pour phpmyadmin :
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é, ouvrez votre navigateur web préféré et rentrez dans la barre d'adresse l'ip de votre raspberry (adresse de la forme http://xx.xx.xx.xx)

Vous devriez soit voir une page avec écrit dedans:

It works!
 [...]

Ou alors une page vide listant le dossier /var/www/

Ajoutez maintenant /phpmyadmin derrière votre adresse ip :

http://xx.xx.xx.xx/phpmyadmin

Si vous n'avez pas de message d'erreur, vous avez correctement installé votre serveur web.

Remarque : Si vous avez un site Internet, vous pouvez le placer dans un dossier dans /var/www/ (vous pourrez déjà y accéder via votre navigateur !).

Attention : ne pas éteindre le Rapsberry en débranchant ! Pour éteindre, faire  ~$ sudo halt ou ~$ sudo shutdown -h now 

Maintenant que tout est correctement installé, ouvrez votre navigateur web préféré et rentrez dans la barre d'adresse l'ip de votre raspberry (adresse de la forme http://xx.xx.xx.xx)

Vous devriez soit voir une page avec écrit dedans:

It works!
 [...]

Ou alors une page vide listant le dossier /var/www/

Ajoutez maintenant /phpmyadmin derrière votre adresse ip :

http://xx.xx.xx.xx/phpmyadmin

Si vous n'avez pas de message d'erreur, vous avez correctement installé votre serveur web.

Remarque : Si vous avez un site Internet, vous pouvez le placer dans un dossier dans /var/www/ (vous pourrez déjà y accéder via votre navigateur !).


Étape n°4 : Installer Owncloud

Installation d'Owncloud (version 6.0.1 disponible en janvier 2014)

/!\ Toutes les commandes se font ici via ssh.

    • Téléchargement et installation d'Owncloud :
~$ sudo wget http://download.owncloud.org/community/owncloud-6.0.1.tar.bz2
~$ sudo tar -vxjf owncloud-xxxx.tar.bz2
~$ sudo mv owncloud /var/www
~$ sudo chown -R www-data:www-data /var/www/owncloud

        Ayant une carte SD de 16Go, pour le moment, je vais me contenter d'un stockage sur la carte ;)  Cependant, si vous souhaitez utiliser un disque externe ou une clé usb de grande capacité :

          Ajouter un disque externe : /!\ Formater le disque en EXT3 (phase indispensable pour gérer les droits en écriture correctement).

                    Puis, identifier l'UUID de votre disque : ~$ sudo fdisk -l puis ~$ sudo ls -l /dev/disk/by-uuid/

Créez un « lecteur permanent » dans le dossier “media” : ~$ sudo mkdir -p /media/"mon_disq"

On peut maintenant configurer le fichier /etc/fstab pour y ajouter la ligne qui correspondra au montage de notre disque dur : ~$ sudo nano /etc/fstab

Et ajoutez la ligne suivante à la fin :

UUID=votre_UUID    /storage/mon_disq    ext3    defaults    0    2

Vous pouvez maintenant monter manuellement votre disque en faisant la commande] : ~$ sudo mount /dev/sdb1

(si nécessaire, changez les droits sur ce disque : ~$ sudo chmod -R 755 /media/"nom_de_votre_disq" )

Attendez quelques secondes le temps que le RPi détecte le disque dur et voilà, c'est prêt ! Il ne vous restera plus qu'à indiquer l'adresse de votre disque à la première ouverture de la page d'accueil d'Owncloud.


Configuration d'Owncloud : changer la taille maximale des fichiers « uploader »

Editez le fichier php.ini : ~$ sudo nano /etc/php5/apache2/php.ini
Puis modifier de la manière suivante (ici pour des fichiers de 240Mo max, mais à vous de voir ! Pensez à modifier les temps d'upload ci-dessous en conséquence...):

max_execution_time = 240
max_input_time = 240
memory_limit = 256M
post_max_size = 512M
upload_max_filesize = 512M
max_file_uploads = 20

    • Dès lors, Owncloud est parfaitement opérationnel mais pour l'alléger un peu, j'ai désactivé une grande partie des applications (seul l'appli "Fichier" est maintenue puisque l'objectif principal est de partager des fichiers).
    • Chez moi, un redémarrage fut nécessaire : ~$ sudo reboot

A la première connexion (http://ip/owncloud), il vous sera demandé de créer un idf/mdp pour l'administrateur.

Important : Par défaut, le nom de la base MySQL est root (et le mot de passe est celui que vous avez entré à l'installation).


Sécuriser la connexion : mettre en place le « https », et interdire le « http » !


    Cette étape est à mon sens indispensable, en particulier si vous souhaitez rendre votre serveur accessible de l'extérieur. Au sein de votre réseau personnel, c'est également un plus en terme de sécurité, dans le sens où cela compliquera la vie des pirates en herbe (votre voisin par exemple !) en cas d'intrusion sur votre réseau.
   
Il existe plusieurs méthodes pour utiliser le https avec apache, mais dans le cadre de ce tutoriel, je recommande vivement la méthode ci-dessous. En effet, d'autres méthodes, aboutissent certes au même fonctionnement, mais ne permettent pas une synchro correcte du client OwnCloud (une erreur 1060 est régulière...). Bref, un conseil, écoutez moi sur ce coup là !

~$ sudo mkdir /etc/apache2/ssl

~$ sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -out /etc/apache2/ssl/server.crt -keyout /etc/apache2/ssl/server.key

~$ sudo a2enmod ssl

~$ sudo ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl

~$ sudo nano /etc/apache2/sites-enabled/000-default-ssl

Puis modifier les deux lignes suivantes, relatives à SSL :
SSLCertificateFile    /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

Redémarrer Apache2 : ~$ sudo /etc/init.d/apache2 start

Et enfin, vérifier dans l'interface d'administration d'OwnCloud que le https est bien coché.


Étape n°5 : Installer le Hotspot (hostapd) et le serveur DHCP/DNS (dnsmasq)

Installation de hostapd et dnsmasq

    • Installez les paquets nécessaire :
    ~$ sudo apt-get install hostapd dnsmasq

    • Editer  le fichier /etc/dnsmasq.conf et ajoutez-y à la fin :
address=/#/192.168.42.1
listen-address=192.168.42.1
dhcp-range=192.168.42.10,192.168.42.40,12h

    • Donnez dès maintenant une adresse IP fixe à votre Wi-Pi (wlan0) :
~$ sudo ifconfig wlan0 192.168.42.1

    • Editez le fichier /etc/network/interfaces. Ce dernier contient les lignes suivantes, dont voici quelques explications :
  • auto lo : va démarrer l’interface automatiquement lors de la séquence de boot
  • iface lo inet loopback : définition de l’interface loopback (indispensable)
  • iface eth0 inet dhcp : l’interface eth0 (le port RJ45 du Raspberry) sera configuré en envoyant une requête DHCP sur le réseau. IP dynamique donc ..
  • Le bloc suivant permet de configurer le wifi via le fichier de configuration de wpa_supplicant.

          iface wlan0 inet static

address 192.168.42.1

netmask 255.255.255.0

Et changez les lignes en les commentant (via un #), exemple :

allow-hotplug wlan0

Devient:

#allow-hotplug wlan0

    • Configurez maintenant « Hostapd » pour créer un hotspot « ouvert », c'est à dire sans identification nécessaire (mais vous pouvez biensûr sécuriser l'ensemble par une clé WPA) : éditez /etc/hostapd/hostapd.conf
interface=wlan0
ssid=SVTux
hw_mode=g
channel=6
auth_algs=1
wmm_enabled=0
    • Pour finir,
~$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" 
    • Éditez /etc/sysctl.conf
net.ipv4.ip_forward=1
    • Et :
~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


Etape n°6 : La mise en place du portail captif

L'objectif est ici assez simple : une fois connecté au réseau « ouvert » de notre SVTux-BOX, toutes les requêtes http et https (donc respectivement sur les ports 80 et 443) doivent être redirigées vers une pages d'accueil que vous avez créé.
  1. Pour cela, nous allons commencer par créer une page d'accueil (à vous de la construire !), la nommer « index.html » et la placer dans /var/www/ (cette page d'accueil remplacera donc celle par défaut déjà présente).
  2. Il faut maintenant indiquer à IPTABLES de rediriger toutes les requêtes sur les ports 80 et 443 vers notre serveur (dont l'ip est 192.168.42.1) :

~$ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 443 -j DNAT --to-destination 192.168.42.1:443

~$ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j DNAT --to-destination 192.168.42.1:80

Si vous souhaitez que la redirection se fasse dirctement au démarrage de la SVTux-BOX, intégrez ces deux lignes dans le script de démarrage ;-)


  • Comment éteindre le Raspberry Pi ?

Lorsque comme ici, on utilise le Raspberry 100% via SSH, on n'accède pas à l'interface graphique du système et l'option « éteindre l'ordinateur » n'est pas directement visible. Par conséquent, plutôt que de débrancher brutalement la SVTux-BOX, je vous recommande de taper la commande suivante :

~$ sudo shutdown -h now ou ~$ sudo halt

Vous pouvez ensuite débrancher le Raspberry pi.

Pour redémarrer la SVTux-BOX : ~$ sudo shutdown -r now ou ~$ sudo reboot

/!\ Si vous débrancher brutalement votre SVTux-BOX, il est possible que MySQL plante ! (Il faut que je trouve un moyen simple pour régler le problème...


Attention, vous devez créer un script pour que les commandes suivantes soient appliquées à chaque démarrage :
~$ sudo ifconfig wlan0 192.168.42.1
~$ sudo service hostapd start
~$ sudo service dnsmasq start
~$ sudo iptables -t nat -A POSTROUTING -j MASQUERADE
[...]
Pour cela, le plus simple est la création d'un script à lancer à chaque démarrage : (Pensez à éteindre correctement votre Raspberry !)
~$ sudo nano /etc/init.d/SVTuxBOX
Y écrire (script à améliorer...) :
#!/bin/bash
# La commande ci-dessous donne une IP fixe au dongle Wi-Pi:
sudo ifconfig wlan0 192.168.42.1
# La commande ci-dessous démarre le hotspot (et donc la diffusion du SSID)
# sudo service hostapd start
# La commande ci-dessous démarre le serveur DHCP du Wi-PI:
# sudo service dnsmaq start
# La commande ci-dessous active le partage de la connexion internet si le cable éthernet est branché:
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
# Mise en route de la redirection sur les ports 80 (http) et 443 (https) vers la page d'accueil du serveur:
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 443 -j DNAT --to-destination 192.168.42.1:443
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j DNAT --to-destination 192.168.42.1:80
# Apres cette ligne les commandes executees en fonction du parametre passe en ligne de commande
case "$1" in
start)
# Commandes executees avec le parametre start (celui lors du boot)
sudo service hostapd start
sudo service dnsmasq start
;;
stop)
# Commandes executees avec le parametre stop (celui lors de l'arret du systeme)

;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart|reload"
exit 1
esac
exit 0

/!\ /!\  /!\
N'oubliez pas de rendre exécutable votre script par la commande suivante :
$ sudo chmod 755 /etc/init.d/SVTuxBOX
Pour tester votre script : $
service SVTuxBOX start
Puis d'activer son lancement au boot :
$ sudo update-rc.d SVTuxBOX defaults

A partir de là, votre Hotspot fonctionne déjà et permet de partager une connexion Internet ! Il ne vous reste plus qu'à personnaliser votre /var/www/index.html (par exemple en faisant un lien vers votre Owncloud !)
L'installation du client OwnCloud sur les machines connectées (Ordinateurs, tablette, smartphone...) permet de connecter et synchroniser vos appareils à la manière d'une Dropbox ou d'un GoogleDrive !


Le client ownCloud :

    Désormais, votre espace Cloud est accesible uniquement via https dans votre navigateur ! Il peut être intéressant d'installer un client de synchronisation. Pour cela, rien de plus simple : rendez-vous sur le site officiel d'ownCloud, puis suivez la procédure d'installation !

Pour en savoir plus sur le Raspberry Pi...

Comments