Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre...

48
Auto Hébergement et Raspberry Pi. #Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Transcript of Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre...

Page 1: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Auto Hébergement

et

Raspberry Pi.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 2: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Table des matièresÉtat du lard..................................................................................................................... 4Glossaire de la documentation.......................................................................................5Rendre les services accessibles de l'Internet..................................................................6

Les ports.....................................................................................................................6Le système.....................................................................................................................8

Préparation du Raspberry...........................................................................................8Système d'exploitation...........................................................................................8Réseau..................................................................................................................10

Le fichier /etc/hostname...................................................................................10Le fichier /etc/hosts..........................................................................................10

Le stockage..............................................................................................................11Connexion SSH et sécurité.......................................................................................15

Changer le port d'écoute depuis Internet.............................................................15Désactiver le compte Root...................................................................................15Gérer la connexion SSH par clé............................................................................16Bannir les intrus : Fail2Ban...................................................................................18

Un nom de domaine ?...................................................................................................19Registrar...................................................................................................................19Gestion sur le web....................................................................................................19Gestion dynamique..................................................................................................22Création des champs nécessaires............................................................................24Gestion en local........................................................................................................25

WebServices.................................................................................................................26Installation d'un serveur web : Lighttpd...................................................................26Gestion du service....................................................................................................27Envie d'un site ?.......................................................................................................28

Installation de GetSimple CMS..............................................................................28Installation de PluXML..........................................................................................31

Courrier électronique....................................................................................................32Envoyer des messages électroniques.......................................................................32

Configuration du système pour la messagerie.....................................................32Création des utilisateurs...................................................................................33Création des Alias.............................................................................................33

Installation et paramétrage de Postfix..................................................................34Installation et paramétrage de Dovecot...............................................................40

Consulter les courriers électroniques.......................................................................42Configuration d'un logiciel de messagerie............................................................42

Configuration de Thunderbird...........................................................................42Configuration d'Evolution.................................................................................42Configuration d'Outlook....................................................................................42

Installation et paramétrage d'HastyMail2.............................................................43Installation et paramétrage de SquirrelMail..........................................................44

Antispam - Antivirus.................................................................................................44Contacts & tâches........................................................................................................45

Installer et configurer Baikal Server.........................................................................45Configuration de Thunderbird...................................................................................47

Paramétrage du calendrier...................................................................................47Paramétrage des contacts....................................................................................48

Configuration d'Evolution.........................................................................................48Paramétrage du calendrier...................................................................................48

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 3: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Paramétrage des contacts....................................................................................50Configuration d'Android............................................................................................50

Paramétrage du calendrier...................................................................................51Paramétrage des contacts....................................................................................51

Sauvegarde.................................................................................................................. 53Automatisation.........................................................................................................53Tester une remontée.................................................................................................53

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 4: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

État du lardL'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à l'avancée de l'auto-hébergement ». N'étant ni codeur dans l'âme (encore que pour de petits services personnels), ni développeur web je ne me voyais pas proposé un outil bugué ou incomplet à la communauté, d’où ce petit livre.

Les écrits et exemples que vous trouverez au travers de ces quelques pages ne seront pas exempts d'erreurs ou pourront aussi être complétés par des personnes plus avisées que moi sur certains sujets.

L'auto-hébergement est un fait d'actualité dans les sphères geek aujourd'hui, de par la liberté que cela apportemais aussi à cause des différentes affaires telles que Prism ou encore l'article 20 de la Loi de Programmation Militaire qui ont fait l'actualité ces derniers temps.

Toutes ces lois et textes mis en place ne poussent que vers une seule chose : chiffrer et toujours chiffrer plus. J'essaierais dans ces quelques lignes d'apporter mes connaissances en la matière et ainsi permettre à chacun de disposer de son propre serveur, autonome et « sécurisé ».

Ceci dit, l'auto hébergement n'est pas une chose super fun quand tout tombe en rade, et ça arrive bien plus souvent qu'on ne le pense. Ici je vais tenter de relater les aventures et configurations que j'ai été amené à produire pour mon mini serveur à la maison, un Raspberry Pi 256Mo.

De plus, l'auto-hébergement n'est pas si « gratuit » que cela, en effet une connexion internet est nécessaire, une machine, une seconde pour de la redondance si jamais on le souhaite ainsi que de la sauvegarde. Même si toutes ces variables semblent « gratuites » car vous disposez de machines en spare, une connexion internet partagée légalement avec le voisin ou encore un lecteur de bandes pour archiver vos données ; Le coût en temps est monstrueux et pousse même à parfois s'arracher les cheveux jusqu'à ce qu'une nuit vous vous réveilliez en percutant ce qui bloque depuis 3 jours.

Et oui c'était ce foutu smtpd_recipient_restrictions dans Postfix auquel vous aviez mis une condition avant l'autre (Ca n'arrivera pas ici, je me suis assez cassé les dents dessus !;) ).

Qui dit Raspberry Pi dit carte SD, écritures régulières, crash, lenteur etc. L'installation sur ce type de machine est chronophage, il faut du temps et il faut vouloir y passer du temps.

Ceci dit (une fois de plus !) il existe des distributions déjà toutes prêtes à l'emploi qui ont été pensée et développées par des personnes souhaitant partager leurs connaissances et techniques pour apporter au plus grand nombre l'hébergement facile, je pense particulièrement au projet Yunohost (http://yunohost.org) mais aussi à bien d'autres, Google pourra le trouver facilement pour vous.

Pour finir, cette documentation a été faite sur base de connaissances personnelles acquises tant bien que mal sur la plupart du temps (libre ! :)). En aucuns cas je ne peux me proclamer comme étant omniscient et il se pourrait donc qu'un à un moment donné cette doc soit obsolète ou non à jour ou encore truffée d'erreur.

Cette documentation se veut être la plus claire possible et la plus vulgarisante, je l'ai clairement orientée avecdes points de vue et échange de ma part de façon à guider le débutant et ne pas le perdre en cours de route. Jecomprends tout à fait que les confirmés passent leur chemin et ne prennent pas le temps de s'attarder ici. La doc est plus longue que ce que j'avais initialement prévu de par les avis que je laisse avant ou après chaque manipulation.

Cela ne sera que ma modique contribution à un sujet qui me tient à cœur, ne m'en tenez pas rigueur et apportez les modifications que vous souhaitez à cette documentation, que chacun puisse en profiter.

En vous souhaitant une bonne lecture.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 5: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Glossaire de la documentationTout au long de la doc, j'essayerais d'être « uniforme ». J'entends par là que j'essayerais tant bien que mal de conserver le même langage et les mêmes expressions avec par exemple

• http://ndd.tld → Représente l'adresse de votre serveur sous la forme FQDN (ex : http://google.fr)

• http://10.10.10.251 → Représente l'adresse de votre serveur via son IP

• rpi → Représente RaspberryPi en abrégé, mais vous l'aurez remarqué

Dans certains fichiers de configuration j'utiliserai des nom et / ou logins génériques. Ceux ci seront tout à faitutilisable mais ne seront pas obligatoires et pourront bien évidemment être changés selon les goûts.

Afin d'éviter des erreurs de copier / coller ou autres, les principaux fichiers de configurations nécessaire au bon fonctionnement seront fournis dans l'archive qui contient ce document mis à part les fichiers demandant des modifications mineures.

Ceci dit ces fichiers seront tout de même détaillés (tant bien que mal parfois) autant que possible afin de comprendre leurs contenus et leurs fonctions.

Le contenu indiqué de couleur orange et encadré indiquera au cours de la documentation que nous nous trouvons dans un terminal en mode administration du serveur. Dans ce contenu je surligne en gras des informations qui ne sont pas forcément à conserver, qui peuvent être adaptées comme des identifiants ou encore des noms de groupe.

Je vous inviterais d'ailleurs à ne pas forcément copier / coller les lignes de commande afin d'éviter d'éventuelles erreurs dues au retour à la ligne forcé par LibreOffice et qui n'est pas forcément le cas dans le terminal ou vous travaillerez.

Le contenu indiqué de couleur rouge et encadré représentera une sorte de synthèse ou rappel concernant la partie active de la documentation.

Toutes les manipulations et paramétrages sont faits avec l'utilisateur root. J'aborderai au cours de la doc une partie sécurité quant à la connexion via SSH et nous verrons aussi comment gérer la connexion par clé afin de supprimer le couple login / mot de passe et aussi pour renforcer la sécurité.

En avant !

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 6: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Rendre les services accessibles de l'InternetUne partie « masquée » de l'auto-hébergement est de rendre les services accessibles depuis Internet. Ici une sérieuse barrière se pose devant nous, la box de l'opérateur. Pas de soucis ils ont (dans la plupart des cas) pensé aux gentils bonhommes qui utilisent leur propre serveur à la maison et permettent donc de rediriger le trafic entrant vers une ou plusieurs machines sur notre réseau.

Il faut bien entendu savoir que les opérateurs (même en 2013 et 2014) qui fournissent une adresse IP publique fixe avec un reverse configurable sont rares :

• OVH

• Free

• […]

Rattrapez moi si j'en oublie.

Je suis personnellement chez SFR et tout se passe bien malgré le fait que je ne dispose pas d'adresse IP publique fixe. Le tout moyennant quelques bidouillages plus ou moins honteux mais on fait avec les moyens du bord (moyens qui seront abordés dans cette documentation plus tard).

Les portsLes ports sont ce que l'on peut ramener aux portes d'une maison pour une image que tout le monde pourra s'imaginer. En effet comme pour une maison, chaque ouverture sert à quelque chose. La porte d'entrée s'ouvre pour le facteur qui vient vous livrer votre Raspberry, la porte du garage s'ouvre pour la voiture etc.

Nous aurons bien compris que la porte d'entrée, la porte du garage et la fenêtre des wc reçoivent des flux. Ces flux peuvent être du web, du mail, du ftp, du ssh etc. Voici un petit récapitulatif non exhaustif des ports :

• 80/443 → http / https

• 25 / 465 → smtp / smtps

• 22 → ssh

• 143 / 993 → imap / imaps

• 20 / 21 → FTP

Il est donc important de saisir le but des ports. En effet, derrière chaque port accessible se trouve un service qui écoute et attend des requêtes.

Le serveur dispose de ports mais la box aussi, et c'est à la box que le trafic entrant à destination du serveur s'adressera en premier.

La box étant par défaut « sécurisée » ne laissera pas entrer le trafic dont elle ne connaît pas l'origine ni la destination et ne saura de toute façon pas vers quelle machine rediriger ce trafic.

Pour rendre l'installation accessible il sera donc nécessaire d'ouvrir presque tous les ports cités précédemment à savoir ssh, smtp, smtps, imaps, http et https etc. à destination du serveur.

Je ne détaillerais pas ici comment ouvrir ou rediriger un port sur une box opérateur, de multitudes de documentations sont disponibles sur Internet pour cela.

Il faudra cependant penser lorsque vous ferez la redirection des ports à déterminer quelle sera l'adresse IP locale (192.168.1.x ou toute autre adresse) de votre serveur afin que le trafic soit correctement acheminé et vous y tenir tout au long de la documentation.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 7: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Le systèmeSur le Raspberry Pi, une installation du système est faisable sur un disque dur USB mais je n'aborderais pas cette technique dans ces pages, ne l'ayant pas mise en place chez moi je ne sais pas de quoi il en retourne et cela ne m'intéresse pas. Si la carte SD du Pi flambe, je balance l'image système que j'ai faite au préalable dans une autre SD et tout repart (10€ de spare on a connu pire). Une carte SD n'est pas faite à proprement parler pour encaisser des écritures en continu. Or tout OS Linux garde trace de manière régulière de ce qu'il se passe dans le système et écrit donc les logs.

J'ai choisir de brancher un disque dur usb du rpi. J'ai ainsi monté /var de manière automatique sur le disque mécanique, afin de réduire les écritures sur la SD et apporter un peu de souffle à la machine en terme d'espace de stockage.

Si votre installation ne se fait pas sur un raspberry pi vous pouvez tout de même suivre cette documentation, les installations et configurations sont identiques. Cependant vous pouvez déjà passer à la partie webservices.

Préparation du RaspberryUne fois de plus, si vous faites votre installation sur autre chose qu'un raspberry ou une autre machine n'utilisant pas de cartes SD, passez au prochain chapitre :). Je ne détaillerai pas ici la méthode pour préparer la carte SD sous Windows, ne disposant pas de ce type de système actuellement, je ne peux l'expliquer. Cependant ce lien : http://computers.tutsplus.com/articles/how-to-flash-an-sd-card-for-raspberry-pi--mac-53600

Ou encore une recherche avec « write raspberry pi image sd card windows » sur notre ami Google devrait aider à trouver la solution.

Système d'exploitationIl faut donc télécharger l'image du système ici : http://downloads.raspberrypi.org/raspbian_latest

Une fois l'image téléchargée on la dézippe, on écrit le contenu du .img obtenu sur la carte SD.

unzip 2013-05-25-wheezy-raspbian.zipdd bs=4M if=2013-05-25-wheezy-raspbian.zip of=/dev/mmcblk0sync

Notre carte SD est donc prête à être insérée dans le rpi, on peut donc lancer la bête.

Si comme moi vous ne disposez pas d'écran à brancher sur la bête, vous pouvez lancer un scan du réseau pour récupérer l'adresse ip attribuée par le serveur dhcp.

nmap 192.168.1.*

Si 192.168.1.0 est l'adresse de votre réseau

Nmap scan report for raspberrypi (192.168.1.179)Host is up (0.0026s latency).Not shown : 999 closed portsPORT STATE SERVICE22/tcp open ssh

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 8: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

On peut donc se connecter en SSH (login : pi – mdp : raspberry) sur la machine et commencer l'administration. Celle-ci est assez intuitive et se fait relativement simplement, on accède au menu de paramétrage en tapant :

sudo raspi-config

De multiples paramètres sont accessibles via le menu qui s'affiche. On peut commencer par

1 Expand Filesystem

qui va nous permettre d'exploiter la taille totale de la carte SD.

On pourra ensuite paramétrer la langue du pi

4 Internationalisation OptionsChange Locale

Puis on choisit fr_FR.UTF8 UTF-8 et on valide tout en confirmant fr comme langue par défaut.

On configure ensuite le « split » mémoire, à savoir la quantité de ram que l'on va allouer au gpu.

8 Advanced Options

A3 Memory Split

Sur mon pi 256M j'ai choisi de n'allouer que 16M de ram au GPU, soit le maximum pour le système.

On peut ensuite sortir du menu et redémarrer le pi :

Finish

reboot

RéseauNous aborderons ici la configuration de fichiers réseau tels que /etc/hostname et /etc/hosts. Ces deux fichiers sont importants et sont nécessaires au bon fonctionnement du serveur.

Le fichier /etc/hostname

Ce fichier intègre le FQDN (Fully Qualified Domain Name) de notre machine. On y retrouve donc par exemple

mail.ndd.tld

Le fichier /etc/hosts

Ce fichier sert de « résolveur » DNS. A savoir que le système d'exploitation viendra se renseigner dans ce fichier afin d'obtenir l'adresse ip d'un hôte sur le réseau à partir de son nom avant d'aller demander l'information à un serveur DNS tiers.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 9: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Plusieurs services peuvent s'appuyer sur ce fichier et le système même vient interroger la configuration pour récupérer des adresses ip. Ci dessous le contenu d'un fichier /etc/hosts d'une machine située derrière une box

127.0.0.1 localhost10.10.10.251 mail.ndd.tld sv127.0.1.1 mail.ndd.tld

Le fichier interfaces

Il est pertinent de fixer une adresse ip fixe à la machine qui va héberger nos services. Sous Debian ça se fait dans /etc/network/interfaces

auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 10.10.10.251netmask 255.255.255.0gateway 10.10.10.1dns-nameservers 10.10.10.1 194.2.0.20network 10.10.10.0broadcast 10.10.10.255

Bien entendu la configuration mise en gras est à appliquer selon votre configuration. L'adresse IP choisie ici correspond à mon plan d'adressage sur mon réseau @ home.

Il est fort probable que votre plan d'adressage soit du type 192.168.1.x ou 192.168.0.x. La configuration de l'interface serait donc plutôt du type

auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.1.251netmask 255.255.255.0gateway 192.168.1.1dns-nameservers 192.168.1.1 194.2.0.20network 192.168.1.0broadcast 192.168.1.255

Il est aussi important de déterminer un nom d'hôte à votre goût et qui vous parle. Ce nom n'est aucunement indicatif quant à la configuration de vos services mais peut être quelque chose comme

mail.ndd.tld

Comme le service le plus « important » est l'hébergement des mails, j'ai personnellement choisi de le nommer mail.ndd.tld

Pour modifier le hostname du pi, il faut éditer le fichier /etc/hostname dans lequel on indiquera le nom sous la forme FQDN (Fully Qualified Domain Name)

mail.ndd.tld

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 10: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Le stockageComme mentionné dans la page servant d'introduction au départ, l'espace de stockage qui accueillera les données sera monté sur un autre disque. Nous bénéficierons ainsi d'un stockage mécanique plus performant et plus « sécurisé » dans le temps que la carte SD. Toutefois si vous souhaitez conserver le service sur la carte SD, vous pouvez passer à la partie Nom de domaine.

Après avoir branché le disque dur, préparez vous à créer une nouvelle partition puis un nouveau système de fichier et enfin à automatiser le montage du disque et /var sur celui-ci pour qu'à chaque démarrage l'espace de stockage soit monté.

On commence par identifier le disque dur sur lequel on veut travailler

fdisk -l

Va nous permettre d'afficher les disques connectés au système. Chez moi le résultat ressemble à ceci

Disk /dev/mmcblk0: 16.6 GB, 16642998272 bytes 4 heads, 16 sectors/track, 507904 cylinders, total 32505856 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000c7b31

Device Boot Start End Blocks Id System /dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA) /dev/mmcblk0p2 122880 32505855 16191488 83 Linux

Disk /dev/sda: 160.0 GB, 160041885696 bytes 81 heads, 63 sectors/track, 61254 cylinders, total 312581808 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000bcb59

Device Boot Start End Blocks Id System /dev/sda1 2048 312581807 156289880 83 Linux

Le disque dur est /dev/sda, c'est sur ce disque que nous allons créer la partition

fdisk /dev/sda

fdisk est l'utilitaire qui va créer la partition

Un prompt va s'afficher et demander une saisie :

• m → Affiche l'aide

• n → Crée une nouvelle partition

• […]

Ici un second prompt attend une réponse :

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 11: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

• p → Crée une partition primaire

• 1 → Saisir un numéro de partition (Le plus souvent par défaut)

• Start Cylinder → Entrée

• Last Cylinder → Entrée

• w → Ecrit les changements sur le disque

La partition est maintenant créée. Il faut encore créer le système de fichier.

Pour créer le système de fichier, il nous faut la lettre du disque et le numéro de la partition précédemment créée. Ici sûrement /dev/sda1

Création du système de fichier

mkfs.ext4 /dev/sda1

On peut maintenant créer un répertoire dans /mnt pour monter le système de fichier

mkdir /mnt/storage

De nos jours il n'est plus forcément nécessaire de saisir le type de système de fichiers que l'on monte, le système d'exploitation peut détecter le type dont il s'agit et ainsi s'adapter.

mount /dev/sda1 /mnt/storageOu

mount -t ext4 /dev/sda1 /mnt/storage

Il suffit ensuite d'afficher l'espace disque pour se rendre compte que le disque est bien là

df -h

Sys. fich. Taille Util. Dispo Uti% Monté sur rootfs 16G 2,0G 13G 14% / /dev/root 16G 2,0G 13G 14% / devtmpfs 108M 0 108M 0% /dev tmpfs 24M 252K 23M 2% /run tmpfs 5,0M 0 5,0M 0% /run/lock tmpfs 47M 0 47M 0% /run/shm /dev/mmcblk0p1 56M 19M 38M 33% /boot /dev/sda1 147G 13G 127G 9% /mnt/storage

A ce stade, la partition ne sera pas automatiquement montée au prochain redémarrage. Pour ce faire il faut renseigner le fichier /etc/fstab avec l'UUID de la partition et aussi le point de montage.

UUID.. J'ai encore entendu il y a peu de temps que ça ne servait pas et qu'on pouvait continuer à utiliser l'identifiant de la partition de type sdx, ce qui n'est pas fondamentalement faux, mais il vaut clairement mieux utiliser l'UUID. En effet, l'UUID est un identifiant unique permettant d'identifier une partition. (Des informations ici https://help.ubuntu.com/community/UsingUUID).

Il est donc préférable et recommandé d'utiliser ces UUID plutôt que /dev/sdX car en cas de changement de

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 12: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

disque dur ou par hasard inversion de ports sur la carte mère, le système serait susceptible de ne plus retrouver ses petits au redémarrage.

Il est donc nécessaire d'identifier la partition

ls -l /dev/disk/by-uuid

Ici cette commande me renvoie

lrwxrwxrwx 1 root root 10 nov. 27 23:17 f4b67733-3194-45fa-bd21-e304c9559978 -> ../../sda1

Le code en gras est l'uuid de ma partition

Il faut ensuite aller éditer le fichier /etc/fstab pour y ajouter nos informations à la dernière ligne

UUID="f4b67733-3194-45fa-bd21-e304c9559978" /mnt/storage ext4 defaults,noatime 0 1

Maintenant la partition sera montée automatiquement à chaque démarrage. Il est possible de s'en assurer en tapant la commande mount qui si tout se passe bien ne doit rien renvoyer à l'écran.

Et pour s'en assurer définitivement, un petit reboot puis df -h une fois relogué.

Il nous reste (c'est fini ensuite pour cette partie) à créer des liens depuis /var/

• www

• log

• sqlite

• apt_cache

Pour y arriver, il faudra déplacer les répertoires souhaités en temps voulu. Toutefois si au cours de la documentation j'oublie de le spécifier, je vais tenter d'expliquer la manipulation ici.

Historiquement les données du serveur web sont stockées dans /var/www/ mais nous souhaitons les déplacersur le disque dur prévu à cet effet.

On commence donc par déplacer le répertoire

mv /var/www/ /mnt/storage/

Puis on va créer le lien depuis le nouvel emplacement vers l'ancien afin de « feinter » au système que les données n'ont pas bougées d'endroit.

Pour cela on utilise la commande ln -s avec en premier la source du lien et ensuite la destination vers laquelle on souhaite faire pointer le lien, ici

ln -s /mnt/storage/www/ /var/

On peut donc faire des tests en créant un fichier dans /var/www/ puis en listant le répertoire sur le disque dur/mnt/storage/www/

touch /var/www/totols -l /mnt/storage/www/

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 13: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

-rw-r--r-- 1 root root 0 déc. 2 23:44 toto

Le fichier est bien sur le disque dur, le lien symbolique fonctionne. Il suffit maintenant de répéter l'opération pour log et sqlite si l'on souhaite y stocker nos base de données sQlite (Baikal + CMS.)

La configuration du système est terminée. Le serveur peut maintenant commencer à accueillir nos services.Pour cette partie de la documentation, d'autres sources concernant le paramétrage du Raspberry sontdisponibles sur Internet si j'avais oublié quelques configurations.

Connexion SSH et sécuritéIl est possible de se connecter en SSH en local comme depuis l'Internet sur notre serveur.

SSH présente des avantages qui ne sont plus à présenter pour l'administration d'un serveur.

Dans la documentation qui suit concernant SSH, nous allons voir plusieurs méthodes qui serontcompatibles ou non entre elles. En effet, le port d'écoute public par exemple n'impactera aucunementl'authentification, qu'elle soit par clé ou couple login / mot de passe.

Toutefois le fait de forcer l'authentification par clé désactivera tout autre moyen de connexion et rendrainutile la configuration d'un groupe spécial ainsi que d'un utilisateur spécial. A chacun d'adapter cetteconfiguration selon ses propres besoins, ici rien n'est forcé ni obligatoire ;).

A noter tout de même que si seule l'authentification par clé est configurée, vous devrez vous munir de votreclé privée sur tous les postes depuis lesquels vous souhaiterez vous connecter.

Changer le port d'écoute depuis InternetHistoriquement le démon SSH tourne sur le port 22, on « camoufle » généralement ce port en en utilisant un tout autre pour éviter les tentatives de connexion sur ce service. Il existe deux sons de cloche concernant cette habitude, ceux qui partent du principe que la sécurité est assurée même sur le port 22 et les autres. Je fais personnellement partie du second groupe, je préfère ajouter cette « barrière », ça ne coûte rien et ça peut freiner les petits malins.

Cette fonction de redirection de port est assurée par la box ou routeur qui est en front de votre connexion Internet. Le démon en local écoutera toujours sur le même port mais c'est la box qui lorsqu'elle recevra une requête sur le port par exemple 54321 qui redirigera sur le port 22 de la machine.

A savoir donc si vous souhaitez employer cette technique, ici rien d'obligatoire.

La configuration abordée ici est un premier pas (à mon sens) pour éviter de se faire scanner enpermanence et aussi pour palier aux connexions intempestives. Le choix de changer le port public deconnexion dépend de chacun, ici pas d'obligations une fois de plus.

Désactiver le compte RootPar défaut tous les utilisateurs du système sont autorisés à se connecter en SSH. Cela ne pose pas de problème en soit excepté si le compte que vous utilisez se voit compromis, qui plus est si ce compte est root.

Pour palier à ce problème plusieurs options sont envisageables. La première est de désactiver le compte root dans la configuration du serveur SSH. On pourra ensuite créer un groupe spécial et y ajouter un nouvel utilisateur avec lequel on ne fera que se connecter à distance sur le système pour ensuite passer Root.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 14: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Pour désactiver la connexion de root

nano /etc/ssh/sshd_configPermitRootLogin no

Ne pas appliquer la configuration tout de suite sous risque de se couper la main.

Nous allons maintenant créer un groupe « spécial SSH » pour y ajouter le compte « spécial SSH » qui sera un compte qui ne servira qu'à se connecter au système et avec lequel nous élèverons les droits à root.

Le groupe et l'utilisateur indiqués dans les lignes suivantes sont à adapter selon votre choix

groupadd sshpowerusersuseradd -m -s /bin/bash mysshusergpasswd -a mysshuser sshpowerusers

Puis à la fin du fichier /etc/ssh/sshd_config on vient indiquer la ligne suivante pour autoriser la connexion du groupe sshpowerusers

AllowGroups sshpowerusers

Avant de se déconnecter et de se reconnecter en SSH avec le nouvel utilisateur, il convient de modifier son mot de passe

passwd mysshuser

Puis on redémarre le serveur ssh et on se déconnecte

/etc/init.d/ssh restartexit

Si vous vous déconnectez vous ne pourrez pas vous reconnecter en root. Dorénavant la connexion se fera avec l'utilisateur mysshuser. Cet environnement nous servira à nous authentifier avec l'utilisateur root une fois la connexion établie.

La configuration abordée ici pourra servir à se connecter à distance depuis un poste qui ne disposera pasde la clé privée que nous allons créer dans la suite de la configuration SSH. Toutefois la connexion par cléest à privilégier par rapport à la méthode de groupe. A chacun d'y trouver son usage.

Gérer la connexion SSH par cléLa connexion par clé présente plusieurs avantages, en effet nous pourrons nous connecter au serveur sans avoir à rentrer à chaque fois le couple login / mot de passe mais il est aussi possible de forcer chaque utilisateur à se connecter via cette méthode et ainsi désactiver la connexion par login afin de renforcer la sécurité du système.

Dans cette partie je n'aborderais que la configuration d'un client Linux, plus tard viendra sûrement cet aspect de la configuration dans un environnement Microsoft. Comme nous avons configuré un utilisateur dans la partie précédente, j'ai pris le parti de continuer la documentation avec cet utilisateur pour nous connecter par clé et ensuite nous authentifier avec le compte root.

On commence par créer une clé sur le système client depuis lequel nous nous connecterons au serveur. Laisser les champs par défaut lors de la création.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 15: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

ssh-keygen -t dsaEnter file in which to save the key (/root/.ssh/id_dsa):Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_dsa. Your public key has been saved in /root/.ssh/id_dsa.pub. The key fingerprint is: 00:3f:e9:21:26:5e:df:55:91:06:1f:cf:7e:93:62:c9 root@manulaptop The key's randomart image is: +--[ DSA 1024]----+ | . ..+o | | o . oo+ | | . + * ... o | | . + + = . ... .| | . o S E.o.| | . ...| | | | | | | +-----------------+

Aperçu du processus de création de clé

Nous allons maintenant copier la clé publique sur le serveur afin de pouvoir nous y connecter. L'adresse IP du serveur est à modifier ici aussi en fonction de la configuration.

ssh-copy-id -i .ssh/id_dsa.pub [email protected]

Ici le mot de passe root sera demandé à la première connexion puis vous serez invité à vous connecter au serveur pour essayer la connexion sans mot de passe.

Jusqu'ici, la connexion par login / mot de passe fonctionne toujours. Il est possible de désactiver cette fonction afin de n'autoriser que l'authentification par clé (Non obligatoire).

nano /etc/ssh/sshd_config

Puis on décommente et on passe la ligne suivante à No qui indique que l'on refuse les connexions par mot de passe

#PasswordAuthentication yes à

PasswordAuthentication no

Puis on redémarre le serveur SSH

/etc/init.d/ssh restart

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 16: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

On peut maintenant essayer de se connecter avec n'importe quel compte, la connexion sera refusée.

Permission denied (publickey).

La configuration abordée dans les lignes précédentes est la plus restrictive pour les connexionsextérieures. En effet il nous faudra disposer de la clé privée afin de nous connecter. Toute altération de laclé nous sera ainsi signalée par le système afin de par exemple prévenir d'une attaque de type Man In theMiddle.

Bannir les intrus : Fail2BanFail2ban est un puissant analyseur de logs. L'outil passe son temps à analyser les logs qu'on lui soumet dans la configuration et peut ainsi détecter si un nombre important de connexions a lieu sur un service et peut ainsibannir l'adresse IP distante pour un certain temps.

J'avais configuré il y a longtemps Fail2ban sur mon Pi en m'appuyant sur la documentation de Maylug http://www.maylug.org/wiki/doku.php?id=documentation:fail2ban

Je vous invite à suivre cette doc qui est facile d'accès plutôt que la reproduire ici :).

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 17: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Un nom de domaine ?Un nom de domaine sera clairement utile pour joindre les différents services, qui plus est si vous ne disposezpas comme moi d'adresse ip publique fixe. Le nom de domaine peut être personnalisé à souhait surtout que maintenant il est possible d'utiliser des caractères spéciaux et bientôt des .bzh (dédicace:)), des .paris etc.

RegistrarPlusieurs fournisseurs peuvent vous fournir un nom de domaine avec plus ou moins de services : protection contre le vol, masquage de vos informations etc.

Mon nom de domaine est enregistré chez OVH historiquement le fournisseur chez lequel j'avais tous mes services hébergés. (3 noms de domaines + 2 serveurs dédiés fut une époque = avant le rapatriement de mes services @ home:)).

OVH fournit un service de DNS dynamique, ce qui veut dire que si vous ne disposez pas d'adresse IP fixe vous pourrez mettre vos enregistrements à jour dynamiquement et de manière automatisée sans avoir donc à vous poser la question si votre box à changée d'adresse ou autres soucis liés à cette problématique.

Vous pouvez néanmoins obtenir votre nom de domaine chez Online.net ou encore 1and1. D'autres registrars sont disponibles sur Internet mais ce n'est pas l'objet de la documentation ici. Dans les parties dédiées au DNS qui suivent je parlerais exclusivement de la configuration via le manager OVH. Si votre nom de domaine n'est pas enregistré chez ce fournisseur, vous pourrez passer à la suite de la documentation après avoir bien sur fait des recherches sur les DNS dynamiques chez les autres registrars.

Gestion sur le webOVH met à disposition de ses services un manager qui sert à configurer la totalité des services. Ainsi en mode graphique il est facilement possible de configurer sa propre zone DNS depuis l'interface web.

Pour se connecter sur l'interface de configuration, c'est ici : https://www.ovh.com/managerv3/

L'interface ressemble normalement (elle peut changer) à la capture d'écran suivante

Pour configurer la zone, il faut sélectionner le service soit dans l’ascenseur situé en haut de la page ou alors dans la colonne de gauche du manager puis suivre les captures d'écran suivantes

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 18: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

On trouvera sur la capture d'écran suivante l'interface nécessaire à la configuration de notre zone et à l'éditiondes nombreux champs nécessaires

Il peut être nécessaire de « faire le ménage » dans la configuration DNS fournie par OVH. Dans la capture d'écran précédente on peut voir qu'il existe une fonction pour Réinitialiser le Domaine. La « procédure » pour faire cette réinitialisation est détaillée dans la capture suivante

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 19: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Après quelques secondes, la zone est réinitialisée, on va pouvoir commencer la configuration. Les champs crées sont fictifs et sont la à titre indicatif excepté pour les champs NS qui sont absolument à conserver dans notre cas. On peut donc supprimer les champs CNAME et MX pour partir d'une configuration vierge.

Le champs A ne peut être supprimé et pour cause, nous allons le modifier pour le « transformer » en champs DynHost afin de pouvoir le mettre à jour régulièrement. Dans le manager, cliquer sur le bouton de modification du champs de type A (Le bouton se trouve en face de l'enregistrement).

Dans le menu qui s'affiche, activer les fonctions et remplir les champs comme indiqué dans la capture d'écranqui suite. L'adresse 1.2.3.4 est volontairement indiquée, nous verrons ainsi plus facilement l'impact sur la configuration lors de la mise à jour dynamique via le script détaillé plus loin dans cette documentation. (Ne pas oublier de valider:)).

Sur l'écran suivant, nous allons configurer l'identifiant et le mot de passe nécessaire à la mise à jour de notre enregistrement. Bien entendu l'identifiant choisi dans cette procédure n'est là qu'à titre indicatif, vous pourrezen choisir un tout autre sans soucis. Évitez tout de même les caractères spéciaux. L'identifiant sera donc du

type ndd.tld-identifiantchoisi.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 20: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

L'écran suivant confirme la création de l'identifiant. En nous rendant à nouveau dans le détail de la zone DNS, on peut voir que le champs de type A est maintenant modifié en champs de type DynHost et l'enregistrement est 1.2.3.4. La configuration de la zone DNS est maintenant « presque » terminée. Il nous reste à gérer la mise à jour dynamique du champs.

Gestion dynamiqueLa gestion dynamique est autonome. Moyennant quelques configurations, la solution une fois en place ne consomme presque pas de ressources et les mises à jour se font de manière totalement transparentes.

Pour commencer quelques explications. OVH met à disposition des clients de nom de domaine une connexion à leur infrastructure afin de permettre les mises à jour « automatiques ». C'est cette fonction que nous allons aborder ici.

La documentation technique est disponible ici : http://guides.ovh.com/DynDns ou encore là : http://www.funtaff.com/software/addns.pl/ pour la configuration du script que nous allons utiliser.

La configuration se fait en plusieurs étapes : création des fichiers de configuration pus automatisation du tout.

On commence par créer le fichier de configuration principal dans /etc/ et on y copie / colle le contenu suivant(Bien faire attention aux guillemets quand nécessaire).

nano /etc/addns.conf

[webcheck] { server_host = www.ovh.com update_host = ndd.tld detect_method = "webcheck" ip_detect_host = "checkip.dyndns.org" ip_detect_port = 80 username = "ndd.tld-identifiant" password = "mot_de_passe_ovh" }

Les champs marqués en gras sont à adapter à votre configuration

Puis copier / coller le script addns.pl contenu dans le dossier de cette documentation. Si celui-ci est altéré ouabsent, il est possible d'obtenir la dernière version du script à cette adresse http://www.funtaff.com/software/addns.pl/addns-1.2a.tar.gz

Il faut ensuite rendre le script exécutable

chmod +x /etc/addns.pl

Le script a besoin d'un fichier log ou stocker les différents échanges, on va donc le créer

touch /var/log/addns.log

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 21: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Il faudra ensuite se rendre dans le répertoire /etc/ puis exécuter le script

cd /etc/./addns.pl

La mise à jour doit normalement se faire. Vous devrez voir la capture d'écran suivante dans votre terminal ainsi que le champs mis à jour après avoir rafraîchit la page du manager OVH.

La partie mise à jour automatique est terminée, le restant de notre configuration se basera surl’enregistrement DynHost pour la totalité de nos services (mail : champs MX, et des alias de typeCNAME).

Création des champs nécessairesDifférents champs seront nécessaires pour la suite de la documentation. Les champs MX serviront à la configuration mail et les alias CNAME serviront à rediriger les requêtes d'une manière plus « parlante ».

Il sera par exemple envisageable de diriger les requêtes à destination du webmail vers l'url https://webmail.ndd.tld ou encore les requêtes à destination d'un blog vers http://blog.ndd.tld.

Cette configuration se fera au niveau du DNS de la même manière que pour la création du champs DynHost.

Dans le manager OVH, il faudra commencer par créer un enregistrement de type CNAME avec comme valeur mail.ndd.tld comme indiqué dans la capture d'écran suivante

Une fois l'enregistrement crée, on va pouvoir créer le champs MX nécessaire au routage des courriers électroniques.

De la même manière dans le manager, sélectionner le Type MX puis remplir les champs comme indiqué ci-dessous

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 22: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Une fois l'opération validée, on se retrouve donc avec les champs dans l'ordre

.ndd.tld NS ns100.ovh.net

.ndd.tld NS dns100.ovh.net

mail.ndd.tld MX 5 ndd.tld

.ndd.tld DynHOST @PUBLIQUEBOX

mail.ndd.tld CNAME ndd.tld

Le reste de la configuration sera semblable à la création du champs mail.ndd.tld. En effet comme la totalité de l'installation que nous allons faire repose sur une seul adresse IP, les futurs champs crées seront de type CNAME.

Par exemple dans ma configuration, mon site est accessible « sur le champs » type A mais l'ensemble des services annexes comme cloud, webmail ou autre sont de « simples » CNAME.

Gestion en localLe DNS en local fonctionne de la même manière que sur l'Internet. Un poste client émet une requête vers un serveur de nom afin d'obtenir l'adresse IP en fonction du nom.

La plus basique des box peut faire office de serveur DNS. Les champs à renseigner seront identiques à ceux indiqués dans le manager de votre registrar à l'exception des champs MX.

On pourra donc retrouver par exemple dans la configuration DNS de la box

→ mail.ndd.tld 192.168.0.x

→ blog.ndd.tld 192.168.0.x

→ …

Ceci dit, si vous ne disposez que d'un seul ordinateur à la maison, il est possible d'outrepasser cette fonction de la box et d'inscrire directement « en dur » ces renseignements dans le fichier hosts. (Technique fonctionnelle mais relativement déconseillée de par le manque de souplesse de la solution).

Sous Windows de mémoire le fichier en question se trouve dans C:\Windows\System32\drivers\etc et sous Linux le fichier à renseigner est /etc/hosts.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 23: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

La configuration du Nom de Domaine est désormais terminée, l'installation se doit d'être autonome, laconfiguration du DynHost est là pour ça. La suite de cette partie sur le DNS peut varier en fonction devotre fournisseur d'accès et donc de la box ou routeur fourni par ce dernier.

De multiples documentations sont disponibles sur Internet. Vu la multitude de box disponibles sur lemarché, il serait trop long de détailler les configurations de chacune d'elles.

Cette dernière partie est très générale et reprend les principes du DNS local afin que pour l'usage d'un pcnomade par exemple, vous n'ayez pas à reconfigurer votre client mail selon que vous soyez ou non audomicile.

WebServices

Installation d'un serveur web : LighttpdBasé sur une Debian, nous allons utiliser aptitude pour mettre à jour le système et installer le « coeur » de l'installation notre serveur web.

aptitude updateaptitude upgradeaptitude install lighttpd

Lighttpd est désormais opérationnel, il faut maintenant installer php5 afin que le serveur web apprenne à interpréter ce langage

aptitude install php5-cgi

Il faut maintenant activer php5 dans la configuration de Lighttpd (avec votre éditeur de texte favori éditez le fichier /etc/php5/cgi/php.ini puis on y décommente à la ligne 765 cgi.fix_pathinfo=1.

Toujours avec votre éditeur de texte favori, éditez le fichier /etc/lighttpd/lighttpd.conf pour y ajouter le mod_fastcgi dans server.modules

server.modules = (« mod_access »,« mod_alias »,« mod_compress »,« mod_redirect »,« mod_rewrite »,« mod_fastcgi »,« mod_accesslog »,

)

Il est possible d'activer ces modules via la commande lighty-enable-mod mais je trouve (avis perso) préférable de les gérer dans le fichier de configuration, d'un seul coup d'oeil on peut ainsi voir quels sont les modules activés avec par exemple cette commande

cat /etc/lighttpd/lighttpd.conf | grep mod

Qui nous renvoie toutes les lignes de ce fichier contenant mod

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 24: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Afin d'activer PHP dans la configuration du serveur web, il est nécessaire de préciser à celui-ci ou se trouve le répertoire d'exécution de PHP. Ajouter les lignes suivantes dans /etc/lighttpd/lighttpd.conf

fastcgi.server = ( ".php" => (("bin-path" => "/usr/bin/php5-cgi","socket" => "/tmp/php.socket")))

Répertoire d'exécution de PHP

On redémarre ensuite Lighttpd

/etc/init.d/lighttpd restart

Redémarrage de Lighttpd

Tant que nous y sommes on pourra activer SSL (Secure Socket Layer) pour des transactions sécurisées, intéressant notamment lorsqu'on se connectera au webmail pour ne pas que les identifiants passent en clair sur le réseau.

mkdir /etc/lighttpd/certscd /etc/lighttpd/certsopenssl req -new -x509 -keyout lighttpd.pem -out lighttpd.pem -days 3650 -nodes

Une suite de question est ensuite demandée avec dans l'ordre des réponses

FRBretagne ? =)maville[][]/!\ common name : [email protected]

Le CommonName est très important car il va déterminer la « crédibilité » du certificat aux yeux du navigateur web. Ainsi si le certificat porte le nom monsuperhost.ndd.fr et que le service que l'on souhaite couplé a SSL porte le nom monsupertruc.ndd.fr, les noms ne matcheront pas et des applications pourront vous envoyer voir plus loin si vous y êtes.

Ceci étant dit, un wildcard (certificat *.ndd.tld) permet de résoudre le problème.

Gestion du serviceGetSimple repose sur XML et PHP. Un large panel de serveurs web permet de le faire tourner. Dans le cadre de cette documentation je vais détailler l'installation des tous les webservices sur Lighttpd qui est un serveur web minimaliste par on emprunte sur le système mais hyper puissant par son usage.

Lighttpd stocke toute sa configuration dans un seul et même fichier que l'on « amménagera » au cours de cette documentation selon les besoins et les services que nous mettrons en place.

Cela dit, il est possible de « spliter » la configuration par sous domaine / service en jouant avec des include dans le fichier de configuration principal de Lighttpd.

Pour démarrer, redémarrer ou arrêter le service Lighttpd

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 25: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

/etc/init.d/lighttpd start/etc/init.d/lighttpd restart/etc/init.d/lighttpd stop

Il est aussi possible de lancer toutes ces actions avec la fonction service

service lighttpd startservice lighttpd restartservice lighttpd reloadservice lighttpd force-reloadservice lighttpd stop

Envie d'un site ?Il existe aujourd'hui de multiples moteurs de blogs / sites dynamiques plus ou moins légers et plus ou moins accessibles.

Sur ma configuration j'ai pour ma part choisi d'adopter GetSimpleCMS (http://get-simple.info) qui est ultra léger et va à l'essentiel, Keep It Stupide Simple puis de basculer sur PluXML. Ces deux CMS fonctionnent sans base de données.

Wordpress peut aussi être envisagé mais son système reposant sur MySQL n'en fait pas un bon candidat pourl'installation sur un rpi (A tester sur la version 512).

Installation de GetSimple CMSPour commencer l'installation, il faut se procurer la source de l'installation ici : http://get-simple.info/dreamhost-pickup/GetSimpleCMS_3.2.3.zip

A l'heure de l'écriture de cette doc la version à jour est la 3.2.3. On se place dans /tmp puis on va télécharger l'archive

cd /tmp/wget http://get-simple.info/dreamhost-pickup/GetSimpleCMS_3.2.3.zip

Téléchargement de l'archive de GetSimpleCMS

Ensuite on va décompresser l'archive précédemment téléchargée et la placer dans l'arborescence du serveur web. L'archive étant à l'heure actuelle au format zip, il faut au préalable installer unzip.

aptitude install unzipunzip GetSimpleCMS_3.2.3.zipmv GetSimpleCMS-3.2.3/ /var/www/blog

Extraction et déplacement du répertoire dans l’arborescence du serveur web

Pour continuer l'installation, il faut se rendre sur l'adresse du Raspberry /blog/ du type

http://ndd.tld/blogGetSimpleCMS n'est initialement pas prévu pour fonctionne « out of the box » avec Lighttpd mais plutôt avec Apache2. En effet vous devrez arriver sur une page de la sorte

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 26: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Il convient donc d'apporter les modifications et installations nécessaires au bon fonctionnement de GetSimple.

On commence donc par modifier rendre l'utilisateur du serveur web (www-data) propriétaire du répertoire accueillant le CMS et on va modifier les droits sur les répertoires /data et /backups en faisant

chown -R www-data:www-data /var/www/blog/chmod -R 755 /var/www/blog/data/chmod -R 755 /var/www/blog/backups/

En actualisant la page, le message d'erreur présent en haut disparaît.

Il s'agit maintenant d'installer les fonctionnalités manquantes sur le serveur, à commencer par le cURL Module, puis GD Library. On finira ensuite par redémarrer Lighttpd pour qu'il prenne en charge les nouveaux modules PHP installés.

aptitude install php5-curlaptitude install php5-gd/etc/init.d/lighttpd restart

Installation des modules PHP manquants et redémarrage de Lighttpd

Il faut maintenant rafraichir à nouveau la page d'installation et les Warnings devraient normalement disparaître. Il est possible qu'un Warning concernant les GD Library subsiste. Il faut alors forcer le redémarrage de Lighttpd avec la commande

service lighttpd force-reload

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 27: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Voici un aperçu de la page que vous devriez maintenant obtenir

Puis il suffit de cliquer sur Continue with Setup.

A l'écran suivant, quelques informations sont demandées comme le nom du site, le nom d'utilisateur (administrateur du site) et une adresse mail. Cette adresse mail sera de suite utilisée pour envoyer un courrierélectronique contenant les identifiants de connexion à l'interface d'administration.

Pour terminer l'installation, cliquer sur Install Now !

L'installation de GetSimpleCMS est maintenant terminée, pour vous loguer sur l'interface d'administration il faut se rendre sur http:// ndd.tld /blog/admin et se connecter à l'aide des identifiants contenus dans le mail envoyé par l'installeur.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 28: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Installation de PluXMLSi GetSimple ne suffit pas ou si vous préférez un autre CMS léger, PluXML est un excellent outil. Pour démarrer l'installation, comme précédemment il faut télécharger l'archive sur le site de l'éditeur puis l'extraireà la racine du serveur web.

cd /tmp/wget http://telechargements.pluxml.org/download.phpunzip pluxml-latest.zipmv pluxml/ /var/www/blog

Téléchargement, extraction et déplacement dans l'arborescence du serveur web

Comme durant l'installation précédente, on rend l'utilisateur du serveur web (www-data) propriétaire du répertoire accueillant le CMS.

chown -R www-data:www-data /var/www/blog/

Pour démarrer l'installation, se rendre sur http://10.10.10.251/blog, vous serez alors redirigé vers la page install.php qui demande elle aussi des informations et vous indique s'il manque des fonctionnalités ou des droits pour le bon fonctionnement du serveur web (Normalement non).

Pour continuer, il reste à cliquer sur Installer.

L'installation est alors terminée, il est possible de se connecter à l'interface d'administration via le lien disponible en bas de la page.

A la connexion à la page d’administration vous trouverez un message d'erreur de ce type

Il faut donc supprimer le fichier dans l'arborescence du blog par cette commande

rm /var/www/blog/install.php

Un rafraîchissement de la page d'administration fera disparaître le message d'erreur.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 29: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Courrier électroniqueLe courrier électronique est une des raisons principales qui m'a poussée à m'auto-héberger. Par principes, je trouvais de plus en plus désolant d'entendre parler de publicité ciblée dans les mails mais aussi en sachant que plusieurs de mes échanges sont d'ordres vraiment personnels, ils ne concernent aucunement ces grandes entreprises qui nous veulent du bien.

Ceci dit cette dernière raison n'est pas forcément valable car quand on sait un peu comment fonctionne la messagerie électronique dite non connectée comme on la connait aujourd'hui, nos échanges peuvent être lus sur n'importe quel relais smtp. C'est pourquoi envisager de crypter les mails est une très très bonne idée.

Au delà de ces aspects techniques, il s'agit ensuite d'un souci éthique. Mes échanges me concernent point. Il faut clairement savoir que lorsqu'on ne paye pas le service, il y a de fortes chances que vous soyez le produit.

Ici on ne parle pas de payer tel ou tel service financièrement mais de le payer par la connaissance et le savoir afin de l'approprier et de pouvoir l'installer, le configurer et le maintenir dans le temps. C'est aussi une forme de paiement.

Envoyer des messages électroniquesLe courrier électronique repose sur plusieurs « briques » à savoir

• L'envoi de courriers

• La réception des courriers sur le serveur

• La livraison des courriers à l'utilisateur

Je trouve cette page (http://fr.wikipedia.org/wiki/Serveur_de_messagerie_%C3%A9lectronique) assez bien faite pour expliquer le fonctionnement et le déroulement d'une communication par courrier électronique.

Pour démarrer, il faut installer Postfix (http://fr.wikipedia.org/wiki/Postfix) qui est un serveur de messagerie électronique libre disponible dans les dépôts Debian.

Configuration du système pour la messagerieDans cette documentation, j'utiliserai avec Postfix des utilisateurs système, c'est à dire des utilisateurs capables d'interagir directement avec le système plutôt que d'utiliser des utilisateurs virtuels.

Bien entendu, ces utilisateurs pouvant interagir avec le système d'exploitation, nous les restreindrons au niveau de la connexion ssh ainsi que le shell. Ainsi cet utilisateur ne pourra se connecter en ssh ni dans un shell quelconque.

On commence par créer les utilisateurs. Ces utilisateurs seront donc les adresses mail directement utilisées. Ilest possible de créer des alias pour ces boites mail en éditant le fichier /etc/aliases. (Chapitre suivant)

Création des utilisateurs

Plutôt que d'utiliser l'utilisateur pi, on va créer un utilisateur à notre nom, puis modifier le mot de passe de l'utilisateur root.

On créer notre utilisateur sans shell

useradd -m -d /home/manu/ -s /sbin/nologin manu

manu en gras est à remplacer par votre adresse/nom d'utilisateur souhaité.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 30: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

On crée maintenant le mot de passe de notre utilisateur, ce mot de passe sera celui utilisé pour se connecter à la messagerie via le webmail (chapitre à venir) ou encore via Thunderbird, Icedove etc.

passwd manu

On modifie maintenant le mot de passe de l'utilisateur root pour ne pas laisser les paramètres par défaut laissés par l'installeur du Raspberry Pi.

passwd root

Pour finir ce paramétrage, on déconnecte et on supprime l'utilisateur pi ainsi que le contenu de son répertoirepersonnel

skill -KILL -u piuserdel -r pi

Création des Alias

J'ai par exemple dans mon fichier

# See man 5 aliases for format postmaster: root, manu contact: manu toto: manu

Ainsi, lorsque l'on envoi un mail à [email protected], ce mail sera déposé dans la boite de root et aussi dans celle de [email protected]. Cette technique permet d'avoir plusieurs intitulés de boites mail sans avoir à recréer d'utilisateurs sur le système mais cela permet aussi de ne pas paramétrer notre logiciel (MUA) avec une nouvelle adresse.

Une fois ce fichier édité à vos besoins, il faut le recharger avec cette commande

newaliases

La création des alias pourra être revue par la suite une fois que vous aurez déterminé les besoins.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 31: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Installation et paramétrage de PostfixOn installe par la suite Postfix, puis une fois l'installation terminée on reconfigure Postfix

aptitude install postfix

Installation de Postfix

dpkg-reconfigure postfix

Reconfiguration

Une suite de questions apparaît à l'écran et c'est ici que nous allons configurer le logiciel qui permettre d'envoyer et de recevoir nos courriers électroniques.

Configuration type du serveur de messagerie : Site InternetNom de courrier : ndd.tldDestinataire des courriels de root et post : <facultatif>Autres destinations pour lesquelles :ndd.tld, mail.ndd.tld, localhostFaut il forcer les mises à jour : nonRéseaux internes : <Par défaut>Taille maximale des boîtes aux lettres : 0Caractère d'extension des adresses locales : +Protocoles internet à utiliser : ipv4

Comme dit précédemment, il y a de fortes chances que votre fournisseur d'accès à Internet ne vous fournisse pas d'adresse IP fixe, ce qui n'est pas compatible avec l'usage d'un serveur mail. En effet votre adresse mail sera souvent considérée comme spam par de nombreux serveurs sur l'Internet.

Pour palier à ce souci, il est possible de faire transiter nos mails par un relais SMTP de votre opérateur internet, garantissant la source des courriers auprès des serveurs hébergeant les adresses de vos destinataires. Ceci va à « l'encontre » de l'auto hébergement dans le sens ou l'opérateur pourra alors voir les courriers qui passeront sur leur serveur.

Nous aborderons donc par la suite le chiffrement des courriers pour garantir que personne mis à part l'expéditeur et le destinataire ne pourra lire votre courrier.

La configuration est abordée dans la page suivante

→ La configuration de ce relais SMTP est à ajouter dans le fichier /etc/postfix/main.cf dont voici un extrait. Ce fichier fonctionne et est actuellement en « production » sur mon Raspberry à cette date : (12/2013). Ce fichier est disponible dans l'archive jointe.

# See /usr/share/postfix/main.cf.dist for a commented, more complete version

# Debian specific: Specifying a file name will cause the first# line of that file to be used as the name. The Debian default# is /etc/mailname.#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)biff = no

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 32: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

# appending .domain is the MUA's job.append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings#delay_warning_time = 4h

readme_directory = no

# TLS parameterssmtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pemsmtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.keysmtpd_use_tls=yessmtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scachesmtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for# information on enabling SSL in the smtp client.

myhostname = mail.ndd.tldalias_maps = hash:/etc/aliasesalias_database = hash:/etc/aliasesmyorigin = /etc/mailnamemydestination = ndd.tld, mail.ndd.tld, localhostrelayhost = smtp.sfr.frmynetworks = 192.168.1.0/24 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = allinet_protocols = ipv4

smtpd_sasl_auth_enable = yessmtpd_sasl_authenticated_header = yessmtpd_sasl_local_domain = $myhostnamesmtpd_tls_auth_only = yessmtpd_sasl_type = dovecotsmtpd_sasl_path = private/auth

home_mailbox = Maildir/

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_pipelining, reject_invalid_hostname, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_destination, reject_unknown_recipient_domain, reject_rbl_client zen.spamhaus.org, reject_non_fqdn_recipient

Le fichier /etc/postfix/main.cf – Ce fichier est bien entendu à adapter à vos besoins.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 33: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Il convient de détailler ce fichier de configuration. Je vais le faire dans l'ordre des directives de configuration

• smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)

◦ Texte affiché au début de la connexion au serveur.

• biff = no

◦ Service de notification aux utilisateurs locaux. Ici le service est désactivé.

• append_dot_mydomain = no

◦ Ajoute ou non une chaine de caractère $mydomain aux adresses n'ayant pas d'informations @. Ici la fonction est désactivée.

• readme_directory = no

◦ Emplacement des fichiers README de Postfix.

• smtpd_tls_cert_file =/etc/ssl/certs/ssl-cert/snakeoil.pem

◦ Indique le fichier contenant le certificat RSA du serveur Postfix

• smtpd_tls_key_file =/etc/ssl/ssl-cert-snakeoil.key

◦ Indique le fichier contenant la clé privée RSA du serveur Postfix

• smtpd_use_tls=yes

◦ Indique l'utilisation possible de STARTTLS mais ne l'oblige pas.

• smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

◦ Indique le fichier contenant le cache des sessions TLS du serveur de Postfix

• smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

◦ Indique le fichier contenant le cache optionnel des sessions TLS du client de Postfix

• myhostname = sv-mail.ndd.tld

◦ Le nom de la machine Internet utilisé par le serveur Postfix

• alias_maps = hash:/etc/aliases

• alias_database = hash:/etc/aliases

◦ Indique le fichier contenant les alias (Mentionnés au préalable dans la documentation).

• myorigin = /etc/mailname

◦ Indique le domaine par défaut

• mydestination = ndd.tld, sv-mail.ndd.tld, localhost.ndd.tld, localhost

◦ Indique les domaines à router par le serveur de messagerie

• relayhost = smtp.sfr.fr

◦ Indique le serveur par lequel relayer les messages sortant sur l'Internet

• mynetworks = 192.168.1.0/24 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

◦ Indique les réseaux clients ayant des privilèges plus élevés que les autres clients

• maibox_size_limit = 0

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 34: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

◦ Indique la taille maximale des boites de messagerie par utilisateur

• recipient_delimiter = +

◦ Indique le séparateur situé entre les noms d'utilisateur et l'extension de l'adresse

• inet_interfaces = all

◦ Indique les interfaces réseau par lesquelles le service de messagerie doit recevoir les courriers électroniques

• inet_protocols = ipv4

◦ Indique le protocole Internet que Postfix utilisera

• smtpd_sasl_auth_enable = yes

◦ Active l'authentification SASL dans Postfix

• smtpd_sasl_authenticated_header = yes

◦ Reporte le nom d'utilisateur SASL authentifié dans l'en-tête de message Received du serveur

• smtpd_sasl_local_domain = $myhostname

◦ Nom de royaume d'authentification SASL local

• smtpd_tls_auth_only = yes

◦ Indique ici que si le chiffrement TLS est activé mais optionnel, le serveur ne doit pas accepter deconnexions si celle-ci n'est pas chiffrée

• smtpd_sasl_type = dovecot

◦ Indique quel plugin SASL Postfix doit utiliser pour l'authentification

• smtpd_sasl_path = private/auth

◦ Indique le nom du fichier de configuration spécifique à l'authentification SASL

• home_mailbox = Maildir/

◦ Indique le chemin ou seront sotckées les boites mail

• smtpd_recipient_restrictions =

◦ Indique les restrictions d'accès appliquées par le serveur de messagerie

permit_mynetworks,

• Indique aux restrictions qu'on autorise nos réseaux

permit_sasl_authenticated,

• Autorise la requête lorsque le client est authentifié avec succès via le protocole AUTH

reject_unauth_pipelining,

• Rejette la requête d'un client envoyant des commandes SMTP de manière incorrecte au travers de la même fenêtre TCP

reject_invalid_hostname,

• Rejette les requêtes lorsque la syntaxe du nom de machine passé avec HELO ou EHLO est invalide

reject_non_fqdn_sender,

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 35: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

• Rejette la requête lorsque l'adresse MAIL FROM n'est pas sous la forme pleinement qualifiée requise par la RFC

reject_unknown_sender_domain,

• Rejette la requête lorsque Postfix n'est pas la destination finale de l'adresse d'expédition et que l'adresse MAIL FROM n'a pas d'enregistrement DNS A ou MX correspondant, ou lorsque cet enregistrement MX est malformé comme un nom MX de longueur nulle

reject_unauth_destination,

reject_unknown_recipient_domain,

• Rejette la requête lorsque l'adresse RCPT TO ne correspond à aucun enregistrement DNS de type A ou MX et Postfix n'est pas la destination finale de l'adresse de destination

reject_rbl_client zen.spamhaus.org,

• Indique de rejeter ou non le courrier électronique si la résolution inverse de l'adresse réseau est présente dans la liste zen.spamhaus.org

reject_non_fqdn_recipient

• Rejette la requête lorsque l'adresse RCPT TO n'est pas de forme pleinement qualifiée

La configuration de Postfix n'est pas terminée. En effet il reste un fichier de configuration à éditer : le fichier/etc/postfix/master.cf

# (yes) (yes) (yes) (never) (100)# ==========================================================================smtp inet n - n - - smtpdsubmission inet n - n - - smtpd -o smtpd_tls_security_level=encrypt -o smtpd_client_restrictions=permit_sasl_authenticated,rejectsmtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_client_restrictions=permit_sasl_authenticated,rejectpickup fifo n - - 60 1 pickupcleanup unix n - - - 0 cleanupqmgr fifo n - n 300 1 qmgrtlsmgr unix - - - 1000? 1 tlsmgrrewrite unix - - - - - trivial-rewritebounce unix - - - - 0 bouncedefer unix - - - - 0 bouncetrace unix - - - - 0 bounceverify unix - - - - 1 verifyflush unix n - - 1000? 0 flushproxymap unix - - n - - proxymapproxywrite unix - - n - 1 proxymapsmtp unix - - - - - smtprelay unix - - - - - smtpshowq unix n - - - - showq

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 36: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

error unix - - - - - errorretry unix - - - - - errordiscard unix - - - - - discardlocal unix - n n - - localvirtual unix - n n - - virtuallmtp unix - - - - - lmtpanvil unix - - - - 1 anvilscache unix - - - - 1 scache

maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}

uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipientscalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}

Ici pas de détails précis concernant la configuration (Pas encore). A part que c'est dans ce fichier que nous activons la connexion sécurisée en décommentant les lignes suivantes

smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject

Il faut maintenant redémarrer Postfix pour qu'il prenne en compte les nouveaux fichiers de configuration

/etc/init.d/postfix restart

Redémarrage de Postfix

Installation et paramétrage de DovecotNous installons maintenant Dovecot (http://fr.wikipedia.org/wiki/Dovecot) qui est un serveur Pop et Imap permettant la livraison des courriers électronique.

aptitude install dovecot dovecot-imapd

Installation de dovecot

Il est possible de rencontrer un message durant l'installation de la sorte

[....] Restarting IMAP/POP3 mail server: dovecotError: socket() failed: Address family not supported by protocolError: service(imap-login): listen(::, 143) failed: Address family not supported by protocolError: socket() failed: Address family not supported by protocol

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 37: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Error: service(imap-login): listen(::, 993) failed: Address family not supported by protocolFatal: Failed to start listeners failed!invoke-rc.d: initscript dovecot, action "restart" failed.dpkg: erreur de traitement de dovecot-imapd (--configure) : le sous-processus script post-installation installé a retourné une erreur de sortie d'état 1Des erreurs ont été rencontrées pendant l'exécution : dovecot-imapdE: Sub-process /usr/bin/dpkg returned an error code (1)

Pour corriger cette erreur il faut modifier les « adresses d'écoute » de Dovecot ou bien désactiver ipv6, dans/etc/dovecot/dovecot.conf on ajoute ceci

listen = *

Voici le restant du fichier /etc/dovecot/dovecot.conf

namespace inbox { inbox = yes location = prefix =}passdb { driver = pam}plugin { sieve = ~/.dovecot.sieve sieve_dir = ~/sieve}postmaster_address = [email protected] = imap service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix }}ssl_cert = </etc/ssl/certs/dovecot.pemssl_key = </etc/ssl/private/dovecot.pemuserdb { driver = passwd}protocol lmtp { mail_plugins = " sieve"}protocol lda { mail_plugins = " sieve"}

listen = *

dict {

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 38: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

#quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext}

!include conf.d/*.conf!include_try /usr/share/dovecot/protocols.d/*.protocol!include_try local.conf

Il est ensuite nécessaire de redémarrer Dovecot pour qu'il prenne en charge les nouveaux fichiers de configuration

/etc/init.d/dovecot restart

Redémarrage de Dovecot

Consulter les courriers électroniquesIl est parfois impossible de se connecter à distance au travers d'un client de messagerie (MUA). En effet la connexion Internet derrière laquelle on se trouve peut être restreinte et bloquer le trafic sur les ports sollicitéspar le logiciel (25, 143, 465 ou encore 993).

Cependant les ports 80 et / ou 443 (HTTP / HTTPS) sont rarement bloqués et il est donc possible d'aller se connecter sur un service de type webmail pour consulter les messages électroniques.

Ayant rencontré des soucis d'affichage avec le webmail Squirelmail avec Lighttpd – Je ne suis pas encore certain que ces soucis viennent de la combinaison mentionnée – nous allons aborder l'installation de deux webmails : Hastymail2 et SquirrelMail.

Hastymail2 présente moins de fonctionnalités (chiffrage avec PGP entre autres) que le second mais a le mérite de fonctionner rapidement et correctement avec Lighttpd.

Configuration d'un logiciel de messagerieComme indiqué dans la pseudo introduction précédente, il n'est pas toujours possible de consulter ses mails au travers d'un logiciel de messagerie mais il est toutefois possible de le faire dans une majorité des cas.

Ci dessous nous allons détailler la configuration de différents logiciels de messagerie comme par exemple Thunderbird, Evolution ou encore Outlook.

Configuration de Thunderbird

Configuration d'Evolution

Configuration d'Outlook

Installation et paramétrage d'HastyMail2Pour démarrer l'installation on commence par se placer dans /tmp puis on va télécharger l'archive d'HastyMail2 puis la renommer et l'extraire pour enfin la déplacer à la racine de notre serveur web.

cd /tmp/wget http://sourceforge.net/project/platformdownload.php?group_id=66202

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 39: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

mv platformdownload.php\?group_id\=66202 hastymail.tar.gztar zxvf hastymail.tar.gzmv hastymail2_1_1/ /var/www/webmail/

Le webmail a besoin de configuration pour fonctionner correctement qui sont stockés dans /etc/hastymail2/. Il faut donc créer le répertoire

mkdir /etc/hastymail2

Création du répertoire accueillant les fichiers de configuration

On crée ensuite le fichier de configuration qui existe déjà et sur lequel nous allons nous appuyer

mv /var/www/webmail/hastymail2.conf.example /etc/hastymail2/hastymail2.conf

Déplacement du fichier de configuration par défaut

Il faut ensuite créer les répertoires qui accueilleront les fichiers de configuration et d'utilisation du webmail

mkdir /var/hastymail2mkdir /var/hastymail2/attachmentsmkdir /var/hastymail2/user_settingsmkdir /var/hastymail2/serializer_cachechown www-data /var/hastymail2/*

Il faut ensuite aller modifier le fichier de configuration précédemment crée pour « coller » à notre installation. Celui-ci est très bien commenté, il suffit de le suivre et l'adapter à nos besoins.

Par la suite, il faut générer le fichier hastymail.rc en se rendant sur ce site http://www.hastymail.org/web_install_config.php qui va nous demander le fichier de configuration et nous générer le fichier hastymail.rc. Ce fichier sera à installer dans le répertoire /etc/hastymail2/

Pour finir l'installation et pouvoir accéder au webmail depuis l'Internet, il faut faire « connaître » le répertoire/var/www/webmail au serveur web (/etc/lighttpd/lighttpd.conf)

Voici les lignes à insérer dans le fichier de configuration de Lighttpd

alias.url += ("/webmail/" => "/var/www/webmail/" )

Antispam - Antivirus

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 40: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Contacts & tâchesIl est possible de se passer des services de Google ou encore Apple en stockant nos contacts et calendriers surnotre serveur. Le stockage de ces services s'appuie sur des standards du web qui sont Caldav (http://fr.wikipedia.org/wiki/CalDAV) pour le calendrier et Carddav (http://fr.wikipedia.org/wiki/CardDAV) pour les contacts.

De multiples alternatives existent pour y arriver, j'ai personnellement choisi baikal serveur qui est un projet jeune que j'ai découvert au cours de recherches sur le sujet sur l'Internet (http://baikal-server.com/).

Les accès que nous ferons au service se feront au travers d'une connexion HTTPS qui « sécurisera » les échanges de login et de mot de passe.

Installer et configurer Baikal Server Pour commencer l'installation, il faut installer un gestionnaire de bases de données (sqlite) et une extension àphp (php5-sqlite).

aptitude install sqlite3 php5-sqlite

Il faut ensuite activer l'extension sqlite.so dans /etc/php5/cgi/php.ini en ajoutant la ligne suivante à la fin du fichier de configuration

extension=sqlite.so

Il faut ensuite redémarrer Lighttpd pour qu'il charge l'extension

service lighttpd force-reload

Pour continuer l'installation, on va se placer dans /tmp/ puis télécharger l'archive, la décompresser et placer le répertoire dans l'arborescence du serveur web

cd /tmp/wget http://baikal-server.com/get/baikal-flat-0.2.6.zipunzip baikal-flat-0.2.6.zipmv baikal-flat/ /var/www/calandtacts

Téléchargement, extraction et déplacement du répertoire dans l'arborescence

Pour continuer l'installation, il faut créer le fichier dans le répertoire /var/www/calandtacts/Specific/ENABLE_INSTALL qui est un contrôle pour pouvoir lancer l'installation

touch /var/www/calandtacts/Specific/ENABLE_INSTALLIl faut aussi rendre www-data propriétaire du répertoire

chown -R www-data:www-data /var/www/calandtactsIl faut maintenant se rendre sur http:// ndd.tld /calandtac ts et remplir les champs nécessaires. Ne surtout pas cocher la case « Web interface auto-lock » sous peine de devoir se connecter au système avant chaque utilisation de l'interface web. (A moins que vous ne le souhaitiez bien entendu).

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 41: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Il suffit ensuite de cliquer sur Save Changes en conservant les paramètres par défaut comme sur la capture suivante

Après avoir validé, l'installation est terminée et on peut accéder à l'interface d'administration de Baikal afin de créer notre premier utilisateur. Il faut cliquer sur Users dans le bandeau supérieur puis sur Add User (Comme indiqué dans la capture d'écran suivante).

Sur l'écran suivant, il suffit de remplir les champs et cliquer sur Save changes.

A l'écran suivant un encart nous annonce que l'utilisateur a bien été ajouté.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 42: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Création d'un utilisateur et confirmation

Maintenant que notre utilisateur est crée, il faut lui donner accès à ses ressources à savoir son calendrier et ses contacts. Il est possible de le faire au travers de plusieurs logiciels comme un client de messagerie type Thunderbird ou Evolution mais aussi depuis un smartphone Android.

Configuration de ThunderbirdLe logiciel de messagerie Thunderbird ne prend pas en charge nativement les formats Caldav et Carddav. Il est donc nécessaire d'installer des modules complémentaires pour pouvoir bénéficier du calendrier ainsi que des contacts. Ces modules complémentaires sont Sogo et Lightning et sont téléchargeables sur Internet.

Paramétrage du calendrierL'accès au calendrier se fait grâce à l'extension Lightning téléchargeable ici https://addons.mozilla.org/fr/thunderbird/addon/lightning/?src=userprofile

L'extension s'installe directement depuis Thunderbird en se rendant dans Outils → Modules Complémentaires puis Installer un module depuis un fichier.

Il faut ensuite naviguer dans l'arborescence pour aller sélectionner l'extension et l'installer (Patienter les quelques secondes nécessaires) puis relancer Thunderbird.

Pour continuer la configuration, il faut ajouter un nouveau calendrier sur Internet avec cette url

https:// ndd.tld /cal.php/calendars/ manu /default/

Évidemment, il faut changer le nom d'utilisateur mis en italique ci-dessus par celui créer précédemment dansl'interface d'administration de Baikal.

Il ne faut pas oublier ensuite de cocher la case du calendrier afin de l'activer.

La synchronisation se fait par défaut toutes les 30 minutes avec le serveur.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 43: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Paramétrage des contactsLes contacts sont synchronisables via l'extension Sogo Connector disponible en téléchargement ici http://www.sogo.nu/files/downloads/extensions/sogo-connector-24.0.2.xpi

L'installation se passe de la même manière que pour l'extension précédente à savoir depuis un fichier.

A la fin de l'installation, il faut une fois de plus redémarrer le client de messagerie.

Pour ajouter un carnet d'adresse dans Thunderbird, il faut se rendre dans Outils → Carnets d'adresses puis Fichier → Nouveau → Carnet d'adresse distant.

Il faut ensuite indiquer le nom que l'on souhaite au carnet d'adresse puis lui passer l'url suivante

https:// ndd.tld /card.php/addressbooks/ manu /default/

Bien entendu il faut ici aussi changer le nom d'utilisateur mis en italique par celui créer précédemment dans l'interface d'administration de Baikal.

Configuration d'EvolutionLe logiciel de messagerie Evolution intègre lui nativement tous les outils nécessaires pour se connecter à notre installation.

Paramétrage du calendrierPour ajouter le calendrier, il faut cliquer sur le bouton Agenda

qui va ouvrir l'interface du calendrier puis Fichier → Nouveau → Agenda.

Une fenêtre avec plusieurs champs s'ouvre alors, il faut la remplir commeindiqué dans la capture d'écran suivante (Penser à bien modifier le nomd'utilisateur dans l'URL comme précédemment crée).

Ajout d'un calendrier

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 44: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Le nouvel agenda est désormais accessible dans l'onglet Agenda. Pour assurer le bon fonctionnement, il est souvent nécessaire de relancer Evolution.

Si vous avez le privilège de rouler sur un système d'exploitation Linux – Ce qui est quasi certain si vous configurez Evolution ;-) - embarquant Gnome 3.x, l'agenda configuré par défaut dans Evolution sera celui dusystème et il est ainsi possible de consulter l'agenda directement depuis la top bar en cliquant sur la date.

Aperçu du calendrier ici sous Gnome 3.8

Paramétrage des contacts Pour configurer l'accès au carnet d'adresse dans Evolution il faut se rendre dans l'onglet Contacts

Puis faire Fichier → Nouveau → Carnet d'adresses et remplir les champs dans la fenêtre suivante comme indiqué dans la capture d'écran suivante (Penser à bien modifier le nom d'utilisateur dans l'URL comme précédemment crée – encadré en rouge ici).

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 45: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Configuration du carnet d'adresses - Evolution

La configuration d'Evolution et / ou Thunderbird est maintenant terminée et pleinement fonctionnelle (normalement). Dans le même logiciel il vous est maintenant possible de consulter vos mails, envoyer ces mails aux contacts stockés sur votre serveur, ajouter de nouveaux contacts ainsi que des événement ou tâchesdans le calendrier.

Configuration d'AndroidAndroid n'intègre pas en natif les outils pour se connecter à un serveur Carddav ou Caldav. Il est donc nécessaire d'utiliser des applications tierces disponibles soit sur Google Play, soit via un fournisseur d'application tiers comme F-Droid.

Paramétrage du calendrierPour accéder à un calendrier en ligne depuis Android, il est possible de passer par plusieurs applications disponibles sur Google Play. J'ai choisi CalDAV-Sync qui est une application payante – elle vaut le coup d'être supportée – disponible ici https://play.google.com/store/apps/details?id=org.dmfs.caldav.lib

Il est toutefois possible de passer par une application à l'heure actuelle en bêta qui semble fonctionner avec Baikal d'après un commentaire disponible mais je n'ai pas réussi à configurer l'accès à mon serveur. A revoir rapidement. Cette application est Caldav Sync Free Beta disponible ici https://play.google.com/store/apps/details?id=org.gege.caldavsyncadapter

Paramétrage des contacts Pour synchroniser les contacts avec Android, il faut installer Carddav Sync Free Beta disponible ici https://play.google.com/store/apps/details?id=org.dmfs.carddav.sync&hl=fr .

Après l'installation il est possible de créer un nouveau type de comptes dans les paramètres. Pour créer votre nouveau compte, il faut se rendre dans Paramètres Systèmes puis Ajouter un compte et sélectionner CardDAV puis suivre la procédure indiquée dans les captures d'écran suivantes. Au besoin j'annoterais celles-ci si nécessaire.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 46: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

Les deux premières captures d'écran sont « communes » à votre configuration. La dernière configuration quant à elle est spécifique à votre installation.

→ Pour le nom du serveur : https:// ndd.tld /card.php/addressbooks/ manu /default/

→ Nom d'utilisateur et mot de passe : Indiquer ici les identifiants crées précédemment.

→ Bien évidemment une fois de plus, ne pas oublier de remplacer manu par votre compte utilisateur précédemment crée dans Baikal.

Pour consulter les contacts désormais configurés, il suffit de se rendre dans les Contacts Android puis afficher les Paramètres et Contacts à afficher.

Comme indiqué dans la capture d'écran suivante, il suffit de sélectionner le carnet d'adresses qu'on vient de créer.

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 47: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

SauvegardeLa sauvegarde est un aspect important de l'installation. En effet un accident peut arriver du jour au lendemainsans prévenir : carte SD mourante, disque dur défaillant etc.

Dans cette partie de la documentation nous allons dans une première partie effectuer une image système de lacarte SD avec tous les services installés puis dans un second temps configurer une sauvegarde régulière des fichiers comme les mails, données de site etc.

Sauvegarde du systèmeArrivé à ce stade de la documentation, notre serveur héberge un service de courrier électronique, un serveur web avec un site, un gestionnaire de contacts et d'agenda, un gestionnaire de nom de domaine dynamique et tout autre service que vous souhaitez.

Il serait contraignant d'avoir en cas d'incident à tout reconfigurer.

En débranchant la carte SD et en la glissant dans un lecteur de carte connecté à un autre système, il est possible de créer une image complète du système d'exploitation et ainsi – en gardant l'image bien au chaud – pouvoir la remonter sur une autre SD en une ligne de commande en temps voulu.

Sauvegardes régulièresSur mon raspberry, j'effectue une sauvegarde quotidienne via un petit script et une tâche cron. Le script a unerotation de 4 jours. Ainsi en partant de J=0, à J+4 le système supprime le dossier en date de J-4 et en crée un nouveau avec la différence des fichiers de la veille.

J'ai pris le parti de couper les services Postfix / Dovecot durant la sauvegarde afin d'éviter (c'est peut être impossible je ne sais pas) tout soucis de « corruption » durant la sauvegarde. Par exemple l'arrivée d'un mail ou autre.

Pour mon usage j'utilise un nas pour sauvegarder mais une clé USB peut tout à fait faire l'affaire. Il faudra alors modifier la variable DISTANT_DIR.

Le script est entièrement commenté et se déroule de la manière suivante :

• Arrêt des services Dovecot / Postfix

Voici le contenu du script

#!/bin/bash DISTANT_DIR=/mnt/nas_backup/sv-mail SOURCE_DIR=/mnt/cle_usb/ [email protected]

# Stopping Dovecot service dovecot stop

# Stopping Postfix service postfix stop

# Rsync keep links ands data between today and yesterday rsync -aP --delete --safe-links --link-dest=$DISTANT_DIR/$(date +"%m%d%Y" --date '1 days ago') $SOURCE_DIR $DISTANT_DIR/$(date +"%m%d%Y")/|tee -a /var/log/backup/$(date +"%m%d%Y").txt

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r

Page 48: Auto Hébergement et Raspberry Pi. - lacavernedemanu.fr · État du lard L'écriture de ce « livre » m'est venue un jour ou je me demandais « comment pourrais je contribuer à

# Delete 3 days older backup rm -Rf $DISTANT_DIR/$(date +"%m%d%Y" --date '4 days ago')

# Compress log file gzip /var/log/backup/$(date +"%m%d%Y").txt

# Send log file to mail echo "Rapport en piece jointe" | mutt -s "Rapport de sauvegarde Raspberry" -a /var/log/backup/$(date +"%m%d%Y").txt.gz -- [email protected]

# Restart Dovecot & Postfix service dovecot start service postfix start

Tester une remontée

#Autohebergement Emmanuel Le Nohaïc http://lacavernedemanu.f r