L'auto-hébergement sur Raspberry Pi
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
L’auto-hébergement sur Raspberry Pi Vincent Vous en avez marre de vous sentir sous l’emprise des multiples services et du monopole du géant d’Internet qu’est Google ? Vous souhaitez maîtriser de très près les contenus que vous mettez en ligne ? Alors devenez votre propre hébergeur en vous auto-hébergeant avec un Raspberry Pi ! Grâce à ce tutoriel, vous découvrirez qu’est-ce que l’auto-hébergement, vous apprendrez à maîtriser votre Raspberry Pi, à installer la distribution GNU/Linux Raspbian, un serveur http et tous les autres outils nécessaires pour vous libérer de vos doutes quant à la maîtrise de vos données mises en ligne. 1 Qu’est-ce donc, l’auto-hébergement ? Très bonne question. L’auto-hébergement est une pratique consistant à se fournir à soi-même des services Internet que l’on utilise. L’auto-hébergement s’oppose en fait à l’utilisation de services chez un prestataire, consistant à héberger ces services sur son propre serveur. Concrètement, ces différents services fournis en auto-hébergement peuvent être un serveur web, un serveur de mes- sagerie électronique ou instantanée, etc. Cette pratique est aujourd’hui assez répandue dans les entreprises mais séduit également de plus en plus de particuliers comme vous et moi. Si l’auto-hébergement séduit aujourd’hui, c’est parce qu’il présente plusieurs intérêts à ses pra- tiquants : – il permet la maîtrise et la responsabilité totales de ses contenus et de ses données. – il représente également une participation à la construction d’Internet dans le cas d’une mise en ligne. – il contribue à la décentralisation des services sur Internet, décentralisation qui à grande échelle permettrait d’éviter la formation de monopoles comme on en voit sur Internet au- jourd’hui, tel Google pour ne citer que lui. – il est aussi une belle source d’amusement, de bricole et d’apprentissage pour les techno- philes et autres passionnés d’informatique. Cependant, pratiquer l’auto-hébergement impose quelques contraintes : – bien entendu, cela demande d’avoir un accès à Internet. – il nécessite de disposer d’un ordinateur allumé 24h/24 pour fournir les services hébergés. – il nécessite l’achat d’un nom de domaine pour pouvoir ouvrir ses services à Internet (on peut néanmoins en trouver des gratuits). – il demande de consacrer un peu de son temps pour maintenir le bon fonctionnement du ou des serveurs et de leurs services, ce qui pour un passionné n’est pas la plus grosse des contraintes. On peut voir que comme tout chose en ce bas monde, l’auto-hébergement se partage entre ses avantages et ses inconvénients, mais nous pouvons voir aussi que certaines contraintes peuvent être adoucies. En effet prenons tout d’abord la première contrainte : la plupart des foyers aujour- d’hui sont équipés d’une connexion Internet, cela ne devrait pas vous poser de problèmes. Ensuite, pour ce qui est de l’allumage permanent d’un ordinateur, sachez qu’il existe plusieurs matériels principalement utilisés pour l’auto-hébergement : – les vieux ordinateurs mis à contribution en tant que recyclage de la machine. 1
– les mini-pc réputés pour avoir une basse consommation d’énergie et pour être peu bruyants. – les nano-ordinateurs, tel le Raspberry Pi, également très peu consommateurs et silencieux. Après avoir découvert son concept dans cette première partie, j’espère vous avoir familiarisé un tant soit peu avec l’auto-hébergement. Dans la partie suivante, nous allons nous concentrer sur le matériel que nous utiliserons pour nous lancer dans l’auto-hébergement : le Raspberry Pi. 2 Présentation du Raspberry Pi Attaquons-nous maintenant à la partie matérielle de ce tutoriel, et découvrons ensemble sur quel support nous allons commencer notre aventure dans l’auto-hébergement : le Raspberry Pi. 2.1 Description et historique du Raspberry Pi Le Raspberry Pi appartient à la famille des nano-ordinateurs, dont la taille est comparable à celle d’une carte de crédit. C’est David Braben, un créateur de jeux vidéos britannique, qui en 2006 créa le Raspberry Pi. Celui-ci était à l’origine destiné à encourager l’apprentissage de la pro- grammation chez les jeunes à moindre coût. En effet, les deux premiers modèles de la carte ont été commercialisés pour la première fois à des prix de lancement de 25 et 35 $ US, c’est-à-dire à ce jour environ 20 et 28 . F IGURE 1 – Logo de la fondation Raspberry Pi Les premiers prototypes du Raspberry Pi sont construits en 2006. Les premiers exemplaires sont mis en vente à partir de février 2012, avec le Raspberry Pi modèle B. En février 2013 viendra le modèle A, moins cher et moins performant. Depuis les premiers modèles A et B, d’autres ont fait leur apparition : le A+, le B+ et dernièrement le Raspberry Pi 2, appelé également 2 B. 2.2 Spécifications matérielles Comme nous l’avons vu précédemment, le Raspberry Pi se décline en plusieurs modèles aux spécifications différentes. Leur point commun est leur architecture ARM, relativement plus simple que d’autres familles de processeurs et moins consommatrice en énergie. Pour aller plus vite, je vous ai concocté un petit tableau comparatif des différents modèles : 2
F IGURE 2 – Tableau comparatif des différents modèles 2.3 Revenons en à nos moutons. . . Dans notre cas de figure et dans le cadre du tutoriel, nous allons utiliser un Raspberry Pi mo- dèle B (le B+ et le 2 B peuvent également convenir), car nous aurons besoin d’un port Ethernet, ce que les modèles A et A+ ne proposent pas. Mais, me direz-vous, pourquoi utiliser un Raspberry Pi pour ce tutoriel, et pas un vieil ordina- teur ou un mini-pc ? Laissez-moi vous lister les avantages de ce petit bijou de technologie. Tout d’abord, comme il a été dit plus haut, le Raspberry Pi est un nano-ordinateur, ce qui lui permet de prendre peu de place, d’être totalement silencieux, de peu chauffer et de peu consom- mer. Ces quatre avantages sont de gros arguments dans le cas d’un auto-hébergement chez un particulier. Qui voudrait laisser constamment allumé une grosse tour d’ordinateur équipée de ven- tilateurs bruyants, ou encore un mini-pc tellement concentré qu’il ne tiendra pas sous le moindre petit excès de chaleur ? Bien sûr, toutes les tours ne sont pas bruyantes, et tous les mini-pc ne chauffent pas comme des fours, mais cette exagération me permet de vous illustrer mon propos. On peut également parler d’un autre avantage sur l’aspect idéologique de la chose : le Rasp- berry Pi est open-source, ainsi les schémas et les plans du circuit imprimé ont été rendu publics par son créateur. Cela fait un petit plus pour nos amis libristes. Cependant, ce type de matériel a un désavantage : il n’est pas très puissant. Avec son proces- seur cadencé à 700 Mhz (on peut néanmoins l’overclocker jusqu’à 1Ghz) et ses 512 Mo de mé- moire vive, le Raspberry Pi nous permettra d’auto-héberger quelques services peu gourmands en ressources. Cela convient pour un auto-hébergement particulier, plus axé sur l’amusement et la bricole, mais ne conviendra pas pour une entreprise souhaitant un auto-hébergement de haute qualité et de haute stabilité pour garder ses données les plus secrètes. On peut noter cependant que depuis février 2015, le Raspberry Pi 2 B vous met à disposition 1 Go de mémoire vive ainsi qu’un processeur cadencé à 900 Mhz, ce qui commence à faire une 3
bonne configuration pour ce type de matériel. 3 Liste du matériel requis Voici pour finir la liste exhaustive du matériel minimum requis pour nous lancer dans l’auto- hébergement : – Bien évidemment, un Raspberry Pi modèle B, B+ ou 2 B. – Une alimentation pour brancher notre Raspberry Pi. – Une carte Micro SD et son adaptateur SD. – Un câble Ethernet. F IGURE 4 – (Très mauvaise) Photo des différents éléments à rassembler pour commencer notre aventure ! Certains éléments n’étant pas indispensables peuvent être un plus pour votre Raspberry Pi, comme une coque de protection, un dongle Wi-fi en cas de nécessité, etc. Vous pourrez trouver tout ceci sur les sites des fournisseurs de Raspberry Pi, et aussi sur cer- taines plate-formes de vente spécialisées en informatique et multimédia. Bien, je pense avoir fait le tour de la question concernant le Raspberry Pi et le matériel néces- saire pour continuer ce tutoriel. Passons alors à la partie suivante : la préparation de la carte Micro SD. 5
4 Raspbian, la distribution GNU/Linux à la sauce framboise Tout ordinateur qui se respecte (et tout ordinateur conçu pour fonctionner) a besoin d’un lo- giciel très très important : le système d’exploitation. Ce système d’exploitation est en fait un en- semble de programmes ayant la lourde tâche de réguler et diriger l’utilisation des capacités de l’ordinateur, comme le stockage de mémoire, la communication vers des réseaux ou des périphé- riques, etc. 4.1 GNU/Linux Le Raspberry Pi a été conçu pour fonctionner avec le système d’exploitation GNU/Linux. GNU/Linux est un système d’exploitation libre, qui a une structure particulière mais importante à saisir. Pour faire simple, nous retrouvons à l’origine les programmes du projet GNU, créés par Richard M. Stallman et son équipe en 1983 qui souhaitaient écrire un système d’exploitation totalement libre inspiré de UNIX. Près du but, Stallman et son équipe prennent du temps pour réaliser le noyau, qui constitue le cœur du système. C’est là qu’entre en jeu le noyau Linux, créé par Linus Torvalds en 1991. Depuis, c’est sur ce savoureux mélange que sont créées les distributions GNU/Linux, telles Debian, Slackware, Ubuntu, etc. 4.2 Raspbian, un souci de FPU Pour ce tutoriel, nous nous intéresserons plus particulièrement à une distribution créée spé- cialement pour le Raspberry Pi, basée sur la distribution Debian : Raspbian. Le mot « Raspbian » est en fait un mot-valise, provenant de la fusion des mots « Raspberry Pi » et « Debian ». Il s’agit d’une Debian optimisée pour les architectures ARMv6, tel le processeur du Raspberry Pi (ARM11). Pour comprendre pourquoi cette distribution a été conçue, plongeons-nous dans le contexte des architectures ARM. ARM est une architecture matérielle : son rôle est de décrire l’agencement des composants électroniques et leur interaction. On peut citer parmi les architectures les plus répandues l’Intel x86, l’ARM, l’ancien PowerPC de Macintosh, etc. Les architectures ARM sont beaucoup utilisées sur des SoC, intégrant sur une seule puce des éléments tels le micro-processeur et le processeur graphique. Aujourd’hui, on retrouve principalement trois versions de l’architecture ARM : l’ARMv5, l’ARMv6 et l’ARMv7. Ces trois versions différentes sont utilisées respectivement sur des vielles puces d’en- trée de gamme comme l’ARM9, sur des puces de moyenne gamme comme l’ARM11 (dont est doté le Raspberry Pi) et sur des puces plus actuelles, comme les Snapdragon. Les architectures ARM peuvent proposer en option la possibilité d’intégrer une FPU, élément permettant d’effectuer des calculs sur les nombres flottants. On retrouvera ses FPU parfois sur des ARMv6 et sur la majorité des ARMv7. Le Raspberry Pi embarque un système sur puce Broadcom, intégrant un ARM11 (ARMv6) com- prenant une FPU. Or, avant l’arrivée de Raspbian, les versions ARM de Debian ne supportaient pas les puces ARMv6. Ainsi, les puces ARMv6 devaient se contenter d’une Debian ARMv5, ne suppor- tant pas la FPU, exécutant de façon logicielle se que la puce aurait pu faire de façon matérielle. Cette pratique entraînait une importante perte de performances. Puis vint la libération : en 2012, la distribution Raspbian voit le jour. Elle est optimisée pour les ARMv6 avec FPU, la rendant beaucoup plus rapide que la version Debian ARM de base. 4.3 Autres distributions pour le Raspberry Pi Il existe cependant d’autres distributions pouvant être installées sur le Raspberry Pi. On peut citer parmi elles Pidora, une version optimisée de Fedora pour Raspberry Pi, OpenElec et RaspBMC, 6
F IGURE 5 – Le logo désignant un appareil disposant de l’architecture ARM. F IGURE 6 – FPU Intel 80287 (Konstantin Lanzet) 7
conçues pour fonctionner avec le media center XBMC, ou encore Arch Linux avec sa version ARM. Nous utiliserons tout de même Raspbian dans ce tutoriel. Étant basée sur Debian, réputée très stable et très utilisée pour des serveurs, elle est idéale pour les débutants et m’a ainsi semblé la plus indiquée pour nous. 5 Préparer le système, installer et configurer Raspbian Cette partie va nous amener à construire la base de notre projet. Nous allons installer Raspbian, la distribution GNU/Linux sur laquelle nous installerons nos différents services tels que le serveur http, le serveur ftp, etc. Cette partie du tutoriel se composera donc principalement d’une série d’opérations et de commandes à effectuer, dont je vous expliquerai le sens au fur et à mesure. 5.1 Installation de Raspbian Nous commençons donc par installer Raspbian sur notre carte Micro SD. L’installation d’une distribution sur un Raspberry Pi ne s’effectue pas de la même façon que sur un ordinateur. Nous n’aurons pas besoin de faire un live-cd de la distribution et n’aurons pas d’installateur graphique. En effet, l’installation consiste à écrire l’image de la distribution sur la carte Micro SD, et simple- ment de booter dessus avec le Raspberry Pi. Une fois cela fait, notre Raspbian n’a plus qu’à être configurée ! Tout d’abord, nous aurons besoin de récupérer l’image .img de la distribution. Pour cela, rendez- vous sur http://www.raspberrypi.org/downloads/ et téléchargez la dernière version de Rasp- bian. Nous allons maintenant écrire cette image sur notre carte Micro SD. Il existe deux méthodes selon le système d’exploitation sur lequel vous allez effectuer l’écriture. Votre carte Micro SD doit être formatée avec le système de fichiers FAT32 pour effectuer l’écri- ture de l’image. 5.1.1 Sous Windows L’outil d’écriture d’image que nous allons utiliser sur un système Windows s’appelle Win32 Disk Imager. – Insérez votre carte SD dans le port approprié sur votre ordinateur. – Téléchargez le logiciel sur http://sourceforge.net/projects/win32diskimager/ et décompressez l’archive .zip. – Lancez l’exécutable Win32DiskImager. Sélectionnez l’image de Raspbian dans le premier champ, et la lettre de la carte SD dans le second. Veillez à sélectionner la bonne lettre (type G :, F :) représentant la carte SD. Si vous vous trompez, l’opération effacera tout le contenu de votre disque. Pour vérifier quelle lettre a été assignée à votre carte SD, allez dans le Poste de travail. – Lancer l’écriture avec le bouton « Write » et laissez l’opération se terminer. – Une fois l’écriture terminée, vous pouvez éjecter votre carte SD et passer à la suite de l’ins- tallation. 5.1.2 Sous GNU/Linux et Mac OS X L’outil d’écriture d’image est le même concernant les systèmes d’exploitation Mac OS X et ba- sés sur GNU/Linux. Cet outil s’appelle dd et s’effectue en ligne de commande. – Commençons par lister les différentes partitions et différents périphériques actuellement montés sur notre système avec la commande df -h. 8
– Insérez votre carte SD dans le port approprié sur votre ordinateur et relancez la commande df -h pour afficher votre périphérique. Dans mon cas, la carte SD s’appelle /dev/mmcblk0p1. Ce nom représente la partition montée de la carte SD. Or, nous souhaitons installer Rasp- bian sur la totalité de la carte, aussi faut-il enlever l’identifiant de la partition, qui ici est p1. Nous devons donc seulement garder /dev/mmcblk0. Il se peut que le nom de la carte soit /dev/sdc1 ou /dev/sdd1, etc. Dans ce cas, vous aurez besoin d’enlever le 1 et de conserver /dev/sdc ou /dev/sdd. Pour la cohérence du tutoriel, je me baserai sur /dev/mmcblk0. – Nous allons maintenant démonter la carte SD, pour éviter que des fichiers ne soient lus ou écrits sur la carte pendant l’écriture de l’image. Pour cela, effectuez la commande umount /dev/mmcblk0. – Placez-vous dans le dossier où se situe l’image de Raspbian que vous avez téléchargé précé- demment et ouvrez-y un terminal. Pour écrire l’image sur la carte, effectuez la commande dd bs=4M if=2014-12-24-wheezy-raspbian.img of=/dev/mmcblk0. Ici, vous donnez trois paramètres à la commande : bs=4M indique à l’outil de laisser 4 Mo de libre au début de la carte, if=2014-12-24-wheezy-raspbian.img of=/dev/mmcblk0 indique le chemin où se trouve l’image de Raspbian, et of=/dev/mmcblk0 indique l’emplacement où écrire l’image. Veillez à bien renseigner les chemins correspondants pour ces deux derniers para- mètres. N’essayez pas d’interrompre le processus d’écriture même si vous ne voyez rien dans votre console témoignant de son activité. L’outil ne rend seulement qu’un compte-rendu de l’opération à la fin de l’écriture. Celle-ci peut durer plusieurs minutes, soyez patient ! – Une fois que l’outil a terminé l’écriture, vous pouvez éjecter la carte SD et passer à la suite de l’installation. 5.1.3 Suite de l’installation Maintenant que l’image a été écrite sur la carte Micro SD, vous n’avez plus qu’à insérer votre carte SD dans le port approprié sur le Raspberry Pi, et allumer la bête pour terminer l’installation. Pour cela, branchez-le Raspberry Pi à votre modem avec le câble Ethernet, et branchez le câble d’alimentation. L’installation est terminée ! 5.2 Configuration de Raspbian Nous passons à un gros morceau de notre tutoriel : la configuration de Raspbian. Par celle-ci, nous allons faire en sorte d’optimiser au mieux la distribution pour accueillir un serveur web. 5.2.1 Connexion au Raspberry Pi via SSH La première étape de la configuration consiste à rentrer dans le système d’exploitation à dis- tance grâce à SSH. SSH est un protocole réseau qui a pour particularité d’être sécurisé grâce au chiffrement : en effet, une connexion SSH impose un échange de clés de chiffrement, ce qui garan- tit la sécurité de la communication. C’est par ce protocole que nous allons pouvoir nous connec- ter au Raspberry Pi à distance. Comme nous l’avons vu à la fin de l’installation de Raspbian, votre Raspberry Pi devrait être à ce stade allumé et raccordé à votre modem par un câble Ethernet. Pour nous connecter au Raspberry Pi via SSH, nous allons avoir besoin de connaître l’adresse IP qui a été donnée à celui-ci. Pour cela, entrez dans la page d’administration de votre modem, en tapant l’adresse IP de votre modem dans la barre d’url de votre navigateur favori. Généralement, cette adresse est 192.168.0.1. Selon votre modem, vous devriez pouvoir accéder à un menu listant tous les matériels raccor- dés au réseau émis par le modem. Dans la liste devrait apparaître notre chère framboise ! Retenez bien son adresse IP pour la suite du tutoriel. 9
Pour utiliser le protocole SSH, deux choix s’offrent à nous : utiliser un client graphique ou la ligne de commande. Je vous recommande d’utiliser la ligne de commande si vous êtes sur un sys- tème GNU/Linux ou Mac OSX, et le logiciel PuTTY si vous utilisez Windows. Connexion SSH en ligne de commande Si vous souhaitez utiliser PuTTY pour vous connecter via SSH, passez directement au point suivant. Si vous souhaitez passer par votre terminal favori, ouvrez-le et effectuez simplement la com- mande suivante : ssh pi@ipdevotrerasp Dans cette commande, pi correspond au nom d’utilisateur avec lequel on souhaite se connec- ter au Raspberry Pi. En effet, Raspbian créé deux utilisateurs par défaut : pi et root. Il vous suffit de remplacer la chaîne ipdevotrerasp par l’adresse IP que vous deviez retenir quelques lignes plus haut, et la connexion SSH est en route ! Mais ce n’est pas fini : en arrivant devant la porte de votre Raspberry Pi, un mot de passe vous est demandé. Par défaut, celui-ci est raspberry. Nous verrons plus loin comment le modifier. Connexion SSH avec PuTTY Pour les amoureux de Windows et les réticents face à la ligne de commande, voici un moyen de se connecter en SSH grâce à un logiciel doté d’une interface gra- phique : PuTTY. Pour l’utiliser, il va falloir le télécharger ! Vous pouvez le faire sur http://www. chiark.greenend.org.uk/~sgtatham/putty/download.html. Une fois que vous avez installé le logiciel, lancez-le : vous arrivez sur l’interface de PuTTY. Cette interface se compose : – d’une entrée « Host Name » : c’est ici que l’on rentre l’adresse du serveur ou l’adresse IP à laquelle on souhaite se connecter. – d’une entrée « Port » : ici on indique quel port on souhaite utiliser pour la connexion. – d’un choix de différents protocoles réseau : on coche le protocole voulu. Dans notre cas, il vous faut compléter ces champs avec les valeurs suivantes : – l’entrée Host Name recueille l’adresse IP de votre Raspberry Pi que vous avez retenue quelques lignes plus haut. – l’entrée Port aura la valeur 22 : c’est le port généralement utilisé pour SSH. – Enfin, le protocole à choisir est bien évidemment SSH. Lancez la session. Vous voilà à la porte de votre Raspberry Pi ! Celui-ci vous demande de mon- trer patte blanche en renseignant le nom d’utilisateur et le mot de passe de connexion : ceux-ci sont pi et raspberry. Nous verrons ultérieurement comment modifier le mot de passe. 5.2.2 Configuration préliminaire et raspi-config Nous arrivons maintenant à la configuration pure et dure de Raspbian. Commençons par dé- finir un mot de passe à l’utilisateur root : sudo passwd root Entrons dans une session super-utilisateur avec la commande su : su Pour des raisons de sécurité, nous prendrons l’habitude de nous connecter via SSH avec un utilisateur lambda comme peut l’être l’utilisateur pi, puis nous nous identifierons comme admi- nistrateur. Pour effectuer la configuration préliminaire de Raspbian, celle-ci embarque un petit 10
F IGURE 7 – Interface de PuTTY 11
outil très pratique, qui par le biais d’une interface semi-graphique nous permettra de configurer deux-trois petites choses au niveau de taille de mémoire allouée à la puce graphique, au niveau des locales, etc. Lançons donc cet outil : raspi-config Voici le menu sur lequel vous devriez tomber : img interface raspi-config Expand Filesystem Ce menu propose d’étendre la partition racine / sur toute la capacité de la carte SD. Le choix d’effectuer cette opération ne dépend que de vous, sachez juste qu’à ce stade, Raspbian utilise seulement environ 3 Go pour la partition système. Sur une carte SD de 8 Go, il peut être intéressant d’étendre cette partition pour bénéficier du maximum de capacité. Change User password Le second menu permet de changer le mot de passe de l’utilisateur pi. Pour le moment nous n’avons pas besoin de faire cela, car pour des raisons de sécurité que je vous détaillerai plus tard, nous allons supprimer l’utilisateur pi et le remplacer par un autre au nom de votre choix. Enable Boot to Desktop/Scratch Permet de changer les préférences de boot du Raspberry Pi. Pas d’utilité pour nous. Internationalisation Options Permet de régler l’heure, la date, le clavier et les fichiers de locales de Raspbian. Sélectionnez les informations vous correspondant. Enable Camera Utile pour activer le module caméra que peut accueillir un Raspberry Pi. Il va sans dire qu’il ne nous sera d’aucune utilité ici. Add to Rastrack Rastrack est une carte interactive recensant les localisations des différents Ras- perry Pi enregistrés à travers le monde. Vous pouvez toujours le faire si cela vous amuse ! Overclock Ce menu vous propose d’overclocker le processeur du Raspberry Pi. Plusieurs niveaux sont proposés. Personnellement, je n’ai pas eu besoin de cette fonctionnalité pour faire tourner mon serveur auto-hébergé. Là aussi, c’est à vous de voir. Advanced Options Ici, encore une liste de menu dont je ne ferai pas le tour. Un seul nous in- téresse particulièrement : Memory Split. Ce menu vous permet de renseigner la quantité de mé- moire que vous souhaitez rendre disponible pour le processeur graphique du Raspberry Pi. Dans le cas d’un serveur web dénué d’interface graphique, nous allons renseigner la valeur minimale possible : 4 Mo. Pour terminer la configuration préliminaire, sortez de l’outil raspi-config. Passons à la suite de la configuration ! 5.2.3 Configuration du réseau Nous allons désormais nous atteler à la configuration du réseau pour permettre au Raspberry Pi d’avoir accès à Internet. Deux cas de figure sont envisageables : dans le premier cas, votre Rasp- berry Pi restera à l’avenir connecté à votre modem de façon filaire, c’est à dire par le biais d’un câble Ethernet. Deuxième possibilité : vous envisagez de connecter votre Rasp en utilisant un dongle Wi-fi. Nous allons aborder les deux façons de procéder dans cette partie. 12
Connexion filaire Prenons ici le cas d’une connexion filaire au modem. Éditez le fichier /etc/network/interfaces : nano /etc/network/interfaces Voici les quelques lignes qui vont venir former ce fichier : auto lo iface lo inet loopback iface eth0 inet static address 192.168.xx.xx netmask 255.255.255.0 network 192.168.xx.xx broadcast 192.168.1.255 gateway 192.168.xx.xx Ces lignes définissent les paramètres réseaux de votre accès Internet. On voit tout d’abord l’in- terface réseau renseignée, ici eth0. Cette interface réseau correspond à l’interface ethernet, ce qui est notre cas. Ensuite viennent plusieurs adresses IP : – address : cette ligne renseigne l’adresse IP que nous allons donner au Raspberry Pi. Cette précision nous permet de lui assigner une IP fixe de façon à ce que nous la connaissions toujours. Il faut que cette adresse IP soit comprise dans la plage d’IP que votre modem vous met à disposition. Par exemple, on peut mettre 192.168.0.42. – netmask : cette ligne correspond au masque de sous-réseau. Cette valeur ne sera pas modi- fiée. – network : cette ligne contient l’adresse IP de votre modem. Généralement, celle-ci est 192.168.0.1. – broadcast : c’est l’adresse de diffusion. Elle ne sera pas modifiée. – gateway : cette adresse désigne la passerelle qui relie notre réseau local à Internet. Dans notre cas, c’est le modem qui fait office de passerelle. L’adresse à renseigner ici sera donc celle du modem. Remplacez donc le contenu du fichier par ces quelques lignes que vous aurez bien évidem- ment complété avec vos informations. Le réseau est maintenant configuré. Vous n’avez plus qu’à redémarrer le Raspberry Pi pour prendre en compte le changement d’adresse IP de ce dernier : reboot Connexion Wi-Fi Prenons le cas d’une connexion Wi-Fi au modem par le biais d’un dongle Wi-fi. Vous verrez que je ne traite ici que le cas d’une connexion Wi-Fi protégée par une clé WPA, et que je ne prendrai pas en compte le cas d’une connexion protégée par une clé WEP. En effet, il n’est pas recommandé d’utiliser une clé WEP pour des raisons de sécurité : WEP n’est aujourd’hui pas sécurisé et est déprécié. Pour configurer notre accès à Internet, nous allons utiliser le programme wpa_supplicant. Commençons donc par l’installer : apt-get update apt-get install wpasupplicant Une fois cela fait, nous allons restreindre les permissions du fichier /etc/network/interfaces pour empêcher que n’importe qui aille toucher à son contenu. En effet, il contiendra la clé WPA- PSK du réseau que nous aurons au préalable « hashé », c’est-à-dire crypté. chmod 0600 /etc/network/interfaces 13
Passons au hashage de la clé WPA-PSK, appelée également « clé pré-partagée ». Pour cela, vous aurez besoin de connaître le SSID de votre réseau (le nom de votre réseau comme vous pouvez le lire dans votre gestionnaire de connexions) et votre clé WPA-PSK. wpa_passphrase Cette commande devrait vous renvoyer trois lignes, avec dans la dernière une chaîne de ca- ractères incompréhensible. C’est celle-ci qui nous intéresse pour la suite de la configuration du réseau. Mémorisez-la ! Éditez le fichier /etc/network/interfaces : nano /etc/network/interfaces Remplacez le contenu du fichier par ces quelques lignes que nous allons tout de suite analyser : auto wlan0 iface wlan0 inet dhcp wpa-ssid wpa-psk Comme vous pouvez le voir, rien de bien compliqué ici : on appelle l’interface réseau wlan0 correspondant au Wi-Fi, puis il vous suffit de compléter les deux dernières lignes avec le SSID et la clé hashée que vous deviez mémoriser précedemment. Une fois que vous avez sauvegardé ce fichier, finissez la configuration du réseau avec cette commande : ifup wlan0 La configuration est terminée ! Vous n’avez plus qu’à redémarrer votre Raspberry Pi pour prendre en compte les modifications : reboot 5.2.4 Optimisation de Raspbian pour un serveur Nous voici arrivés à la dernière partie de notre longue configuration : l’optimisation de Rasp- bian pour qu’elle puisse commencer son rôle de serveur sans tous les paquets et services superflus, par exemple tout ce qui est lié à l’affichage graphique, le son, etc. Suppression de modules, services et autres éléments inutiles Notre première étape dans ce grand ménage de printemps consiste à ne laisser que deux terminaux. En effet, la distribution Raspbian, comme beaucoup de distributions GNU/Linux, nous propose par défaut six terminaux, nommés de tty1 à tty6. Nous allons donc supprimer les quatre derniers, de façon à en laisser un pour la session actuelle, et un terminal de secours. Pour cela, éditez le fichier /etc/inittab : nano /etc/inittab Cherchez les lignes correspondant aux six consoles disponibles et commentez les quatre der- nières en les « diésant » comme ceci : 1:2345:respawn:/sbin/getty --noclear 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 #3:23:respawn:/sbin/getty 38400 tty3 #4:23:respawn:/sbin/getty 38400 tty4 #5:23:respawn:/sbin/getty 38400 tty5 #6:23:respawn:/sbin/getty 38400 tty6 14
Continuons notre oeuvre en désactivant le module de son, qui ne servira pas non plus. Éditez le fichier suivant et commentez la seule ligne présente snd-bcm2835 : nano /etc/modules En ce qui concerne les services inutiles, ils sont au nombre de trois : triggerhappy, plymouth et plymouth-log. Quels sont leurs rôles pour que nous voulions les désactiver ? – triggerhappy est un service qui gère les évènements déclenchés par raccourcis clavier (par exemple la touche pour augmenter le son), ou depuis d’autres supports externes comme des joysticks, etc. – plymouth et plymouth-log sont le service qui affichent un joli écran de démarrage quand celui-ci est activé. Comme vous pouvez le voir, ces trois services sont inutiles pour notre futur serveur. Pour les désactiver, il nous faut effectuer deux commandes par nom de service. La première consiste à stopper le service pour l’empêcher de s’activer automatiquement à chaque démarrage : /etc/init.d/ stop Il vous suffit donc de répéter trois fois cette commande en remplaçant chaque fois la chaîne par triggerhappy, plymouth et plymouth-log. La seconde commande consiste à enregistrer les modifications effectuées avec la commande précédente : update-rc.d -f remove Là aussi, effectuez cette commande pour chaque service. Gestion des utilisateurs Comme nous l’avons plus haut dans la première partie de la configu- ration de Raspbian, nous allons effectuer quelques modifications sur les utilisateurs, et cela pour une question de sécurité. En effet, l’utilisateur par défaut est pi. Cela est vrai pour toute Raspbian nouvellement installée, cela constitue donc une vulnérabilité car si quelqu’un de mal intentionné tente de rentrer dans un système Raspbian, il essayera en premier lieu de se connecter avec cet uti- lisateur. Le supprimer et le remplacer par un utilisateur dont le nom a été choisi par vous rendra la tâche plus difficile au pirate, qui devra deviner le nom d’utilisateur à utiliser pour se connecter. Pour créer un nouvel utilisateur, voici la commande que nous allons utiliser : useradd -m -d /home/ -s /bin/bash Que signifie-t-elle ? Tout d’abord, on créé un utilisateur avec la commande useradd. Ensuite, le premier paramètre de cette commande, -m, indique que nous allons créer un dossier personnel pour l’utilisateur. Le paramètre -d suivi d’un chemin de répertoire indique où se trouve le dos- sier personnel que nous décidons d’assigner à cet utilisateur. Le paramètre -s, lui aussi suivi d’un chemin, indique quelle interface shell utiliser. L’interface shell est une couche logicielle permet- tant la liaison homme-machine en fournissant une interface utilisateur. Ici, nous allons utiliser le bon vieux bash, mais vous pouvez très bien utiliser d’autres shells, comme sh, zsh, etc. Enfin, on termine notre commande en indiquant le nom de l’utilisateur que nous allons créer. Lancez donc cette commande en remplaçant la chaîne par le nom d’utilisateur que vous aurez choisi. Vous pouvez vérifier que votre utilisateur a bien été créé : id Définissez ensuite un mot de passe pour cet utilisateur : 15
passwd Pour supprimer l’utilisateur pi, nous allons devoir nous déconnecter de notre session avec l’utilisateur pi, nous indentifier avec le nouvel utilisateur créé, ouvrir une session super-utilisateur et lancer la commande correspondante. Pour vous déconnecter d’une session, faites la combinai- son de touche ||Ctrl+d||, nous allons donc lancer cette combinaison deux fois : une pour sortir de la session super-utilisateur, et une deuxième pour sortir de la session pi. Reconnectez vous : ssh @ su À ce stade, supprimons l’utilisateur pi et le groupe pi : userdel pi groupdel pi Suppression des paquets inutiles Nous voici arrivés à la dernière étape de la configuration de Raspbian, qui consiste à supprimer les paquets inutiles pour notre futur serveur. Rien de plus simple, il vous suffit de désinstaller tous les paquets de la liste ci-dessous, comprenant des pa- quets liés à l’environnement graphique : apt-get update aptitude purge xserver-xorg xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-synaptics xserver-xorg-video-fbdev xserver-common xpdf xinit x11-common x11-utils x11-xkb-utils xarchiver screen pcmanfm penguinspuzzle lxde-common lxappearance lxde-icon-theme lxinput lxmenu-data lxpanel lxpolkit lxrandr lxsession lxsession-edit lxshortcut lxtask lxterminal leafpad dillo galculator gnome-icon-theme gnome-themes-standard gnome-themes-standard-data gpicview hicolor-icon-theme Vous pouvez également vérifier s’il reste des paquets inutiles à supprimer en installant le pro- gramme deborphan : apt-get install deborphan deborphan Après avoir lancé le logiciel avec la commande deborphan, recupérez la liste sortie et procéder comme pour la première liste de paquets avec aptitude purge. Vous voilà avec une Raspbian entièrement configurée pour accueillir votre serveur, nettoyée de tous les éléments superflus. Dans la suite du tutoriel, nous allons nous intéresser individuellement aux différents logiciels qui pourront agrémenter notre Raspberry Pi : le serveur web, le serveur FTP et les logiciels de sécurité. Commençons dès le point suivant avec l’installation de Lighttpd, un serveur web léger, rapide et simple à configurer ! 6 Lighttpd, un serveur web léger, rapide et simple d’utilisation Nous passons à une partie plus simple, mais pas moins importante. À vrai dire, c’est une par- tie cruciale pour nous car elle nous amènera à l’installation d’un serveur web, qui pourra nous permettre de publier nos différents sites web sur Internet. 16
6.1 Qu’est-ce qu’un serveur web ? C’est la première question que vous vous êtes peut-être posé si vous êtes un parfait débutant. J’en doute fort si vous lisez ce tutoriel, mais une petite piqûre de rappel théorique ne peut que nous faire du bien. En fait, je vous induis en erreur depuis le début de ce tutoriel. En fait le terme « serveur web » est très souvent employé à tort pour désigner ce qui en réalité s’appelle le serveur HTTP. Le serveur web désigne la machine qui va accueillir le serveur HTTP et qui va stocker les sites web. Le serveur HTTP quant à lui, est le logiciel qui va permettre de servir ces sites web grâce au protocole HTTP, protocole dont le rôle est de créer une communication entre l’ordinateur client et l’ordinateur serveur. Pourquoi la confusion est-elle faite entre ces deux termes ? Tout simplement parce que le pro- tocole HTTP a été spécialement conçu pour le Web. Pour résumer notre cas, si on devait s’exprimer correctement, notre serveur web est le Raspberry Pi, et notre serveur HTTP sera. . . Vous le décou- vrirez dans la partie ci-dessous ! 6.2 Le choix de Lighttpd Pour ce tutoriel, compte tenu du fait que nous hébergerons notre serveur HTTP sur un Rasp- berry Pi, qui n’est pas une machine ultra-puissante, je vous conseille d’utiliser un serveur léger et rapide. Le célèbre Apache sera donc un peu trop imposant pour notre configuration. C’est pour cela que nous allons nous pencher sur Lighttpd (prononcé « Lighty »). Les avantages de Lighttpd sont les suivants : il est léger, rapide, et très simple à configurer. Nous allons découvrir tout cela dans les parties suivantes qui nous conduiront à l’installation et la configuration de notre serveur HTTP. 6.3 Installation et configuration de Lighttpd Lançons nous dans l’installation et la configuration du serveur HTTP. Celles-ci sont relative- ment simples en suivant le tutoriel à la lettre. 6.3.1 Installation Connectez-vous à votre Raspberry Pi via SSH, ouvrez une session super-utilisateur avec la commande su, et installez le paquet relatif à Lighttpd : apt-get install lighttpd Nous allons en profiter pour installer de quoi permettre au serveur HTTP d’interpréter des pages utilisant le langage PHP : apt-get install php5-cgi Pour activer PHP sur le serveur HTTP, lancez les deux commandes suivantes : lighty-enable-mod fastcgi lighty-enable-mod fastcgi-php Puis redémarrez le serveur pour que les modifications soient prises en compte : service lighttpd restart L’installation est déjà terminée. 17
6.3.2 Configuration et optimisation Les fichiers de configuration de Lighttpd sont au nombre de trois, et se situent dans le réper- toire /etc/lighttpd : – lighttpd.conf : c’est le fichier de configuration principal, où on renseignera les modules à activer, les domaines et les sous-domaines utilisés, les contenus à mettre en cache, etc. Toutes les instructions principales à charger pour le fonctionnement de Lighttpd. – conf-available : ce répertoire contient les fichiers de configuration des modules installés sur notre Raspbian et que nous aurons la possibilité d’activer sur le serveur HTTP. – conf-enabled : ce répertoire contient les fichiers de configuration des modules activés dans le fichier de configuration principal de Lighttpd. Renseigner les informations principales du site Penchons-nous sur le fichier de configuration principal /etc/lighttpd/lighttpd.conf. Ouvrez-le avec votre éditeur de texte favori et analy- sons son contenu : server.modules = ( "mod_access", "mod_alias", "mod_compress", "mod_redirect", # "mod_rewrite", ) server.document-root = "/var/www" server.upload-dirs = ( "/var/cache/lighttpd/uploads" ) server.errorlog = "/var/log/lighttpd/error.log" server.pid-file = "/var/run/lighttpd.pid" server.username = "www-data" server.groupname = "www-data" server.port = 80 index-file.names = ( "index.php", "index.html", "index.lighttpd.html" ) url.access-deny = ( "~", ".inc" ) static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" ) compress.cache-dir = "/var/cache/lighttpd/compress/" compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" ) # default listening port for IPv6 falls back to the IPv4 port ## Use ipv6 if available #include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port include_shell "/usr/share/lighttpd/create-mime.assign.pl" include_shell "/usr/share/lighttpd/include-conf-enabled.pl" Les sept premières lignes de ce fichier de configuration listent les modules activés sur le serveur HTTP. Le # qu’on remarque devant la ligne concernant le module mod_rewrite indique que la ligne est commentée, et donc que le module n’est pas activé. 18
Les sept lignes suivantes concernent la configuration de base du serveur HTTP, que vous pou- vez modifier à votre convenance. Voyons celles qui nous intéressent particulièrement dans notre cas : – server.document-root : la valeur de cette ligne renseigne le répertoire où se trouve les pages de votre ou vos sites web. Ici, le répertoire par défaut et qui est souvent utilisé pour cela est /var/www. Personnellement, organiser mes répertoires comme ceci : je place mes pages dans un dossier dans mon répertoire personnel (par exemple /home//monsite, et je créé un lien symbolique de ce dossier que je place dans le répertoire /var/www. À vous de choisir pour la valeur de cette ligne, donc. – server.port : la valeur de cette ligne correspond au port d’écoute du serveur. Ici, c’est le port 80, généralement associé au protocole HTTP. Ensuite vient la ligne index-file.names qui définit les fichiers d’index que le serveur affi- chera en priorité dans un dossier. Là, comme pour les lignes restantes, on ne modifie rien. À chaque fois que vous modifiez le fichier de configuration principale, il vous faudra redémar- rer le serveur HTTP pour prendre en compte les changements effectués : service lighttpd restart Ajouter des hôtes virtuels Si vous souhaitez ajouter un nom de domaine à votre site web, il va vous falloir ajouter des hôtes virtuels. Les hôtes virtuels permettent d’associer un répertoire à un nom de domaine ou un sous-domaine facilement. Voici le modèle de déclaration de nom de do- maine à ajouter dans le fichier de configuration /etc/lighttpd/lighttpd.conf : $HTTP["host"] == " { server.document-root = "" accesslog.filename = "" } Il vous suffit de renseigner les informations placées entre chevrons pour ajouter un nom de domaine. Voici un exemple : $HTTP["host"] == "monsite.fr { server.document-root = "/var/www/monsite" accesslog.filename = "/var/log/lighttpd/monsite.log" } N’oubliez pas de redémarrer le serveur. Mise en cache des fichiers statiques Pour optimiser l’expérience utilisateur, nous allons confi- gurer la mise en cache de certains fichiers statiques. Quand vous chargez une page web, certains contenus ne changent pas pendant plusieurs jours, voire plusieurs semaines. Par exemple, les images et les fichiers de feuilles de styles .css. Pour éviter de les charger pour rien à chaque vi- site du site, nous allons placer ces types de fichiers dits « statiques » dans le cache du navigateur du visiteur. Cela diminuera le temps de chargement de la page visitée. Tout d’abord, ajoutez le module mod_expire dans la liste de début de fichier pour l’activer : server.modules = ( "mod_access", "mod_alias", "mod_compress", "mod_redirect", 19
"mod_expire", # "mod_rewrite", ) Puis ajoutez les quelques lignes suivantes dans votre fichier de configuration : $HTTP["url"] =~ "\.(jpg|gif|png|css|js)$" { expire.url = ( "" => "access 15 days" ) } Comme vous pouvez le voir, ces lignes prévoient la mise en cache des fichiers .jpg, .gif, .png, .css et .js pour une durée de 15 jours. Ainsi, si vous visitez plusieurs fois le site, les fichiers corres- pondant à ces extensions ne seront pas rechargés pendant 15 jours. N’oubliez pas de redémarrer le serveur. Configurer un accès HTTPS pour votre site – Vous voilà possesseur d’un serveur HTTP complètement fonctionnel est entièrement confi- guré ! 7 PureFTPd, envoyez du contenu sur votre serveur grâce à FTP Après avoir installé notre serveur web, passons à notre serveur FTP. 7.1 Le protocole FTP Avant de commencer l’installation de notre serveur FTP, laissez-moi vous expliquer ce qu’est le protocole FTP et à quoi sert-il. Comme vous avez pu le voir grâce à notre chère balise html , le sigle FTP signifie File Transfer Protocol, littéralement Protocole de transfert de fi- chiers. Ce sigle nous a déjà tout dit ! Le protocole FTP sert donc à l’échange de fichiers sur Inter- net. Il peut être utilisé aussi bien pour télécharger des fichiers depuis un serveur vers un ordina- teur client (download) que pour envoyer des fichiers depuis un ordinateur client vers un serveur (upload). Plus concrètement, dans le cas d’un serveur web le protocole FTP est utilisé pour envoyer les contenus constituant les sites web (pages .html, fichiers .css, etc.). Pour utiliser le protocole FTP, nous avons besoin de deux programmes : – Le client FTP : c’est le programme qui permet d’envoyer ou de télécharger des fichiers sur le serveur. Il existe des clients FTP dotés d’une interface graphique, comme FileZilla, ou en ligne de commande (ftp, lftp, ncftp, etc.). Personnellement, cela fait quelques années que j’utilise une extension pour le navigateur web Mozilla Firefox, appelée FireFTP qui est très sympa à utiliser. – Le serveur FTP : ce programme contient les fichiers envoyés et téléchargés, et gère les utili- sateurs. C’est ce programme que nous allons héberger. 7.2 Quel serveur FTP choisir ? Quand j’ai commencé l’auto-hébergement, il m’a fallu choisir entre une multitude de serveurs FTP différents, et j’étais un peu perdu. PureAdmin, ProFTPd, VsFTPd, PureFTPd. . . Mon choix s’est tourné vers un serveur sans interface graphique, conçu pour être le plus épuré et le plus simple possible, en cohérence avec le principe KISS m’étant si cher : j’ai nommé PureFTPd. Découvrons tout de suite comment procéder à son installation ! 20
7.3 Installation de PureFTPd Nous allons commencer par installer le paquet relatif à PureFTPd : sudo apt-get install pure-ftpd Maintenant que le paquet est correctement installé, nous allons devoir configurer tout ça. Nous allons commencer par créer le groupe d’utilisateur ftpgroup ainsi que l’utilisateur ftpuser auquel seront mappés les utilisateurs virtuels du serveur FTP. Création du groupe d’utilisateur ftpgroup : sudo groupadd ftpgroup Création de l’utilisateur ftpuser, avec pour répertoire racine /dev/null et comme invite de commande /usr/sbin/nologin, ce qui lui interdit l’accès à un terminal : sudo useradd -g ftpgroup -d /dev/null -s /usr/sbin/nologin ftpuser Ajoutons maintenant un utilisateur virtuel à notre serveur. Voilà comment se présente la com- mande : sudo pure-pw useradd -u -g -d Décortiquons cette commande. On déclare en premier le nom de l’utilisateur virtuel que nous allons créer, par exemple azerty. L’UID et le GID correspondent respectivement à l’identifiant de l’utilisateur réel ftpuser et l’identifiant du groupe ftpgroup. Enfin, le répertoire racine est le dossier dans lequel l’utilisateur sera chrooté durant la session FTP, c’est-à-dire qu’il ne pourra pas remonter plus haut que ce dossier dans l’arborescence du serveur. Créons par exemple le dossier /var/www/azerty pour cela : sudo mkdir /var/www/azerty Et enfin, notre commande complétée : sudo pure-pw useradd azerty -u ftpuser -g ftpgroup -d /var/www/azerty Je vous laisse adapter le nom d’utilisateur et le chemin du dossier racine en fonction de votre cas. Désormais, il nous faut générer le fichier des utilisateurs virtuels avec cette commande : sudo pure-pw mkdb La re-génération du fichier des utilisateurs virtuels sera nécessaire chaque fois que vous ajou- terez un utilisateur virtuel ou que vous changerez le mot de passe de l’un d’eux. Au passage, voici la commande pour changer le mot de passe d’un utilisateur virtuel : sudo pure-pw passwd Redémarrons le serveur FTP pour qu’il prenne en compte les modifications et les ajouts : sudo /etc/init.d/pure-ftpd restart Puis vérifions que notre utilisateur virtuel a bien été créé : 21
Vous pouvez aussi lire