Photo by C Dustin on Unsplash

Comme sur un petit nuage

Ou « Comment j’ai  profité du confinement pour auto héberger quelques services sur mon Olimex Lime 2 en attendant de recevoir mon Helios64 et un accès à de la fibre via un fournisseur d’accès internet respectant la neutralité du net« . Oui cette intro est trop longue. #Amixem

Photo by C Dustin on Unsplash

Auto-hébergement avec Yunohost

Je ne suis pas un héros (air connu)

Mettons les choses au clair : je ne travaille pas dans le domaine de l’informatique, et je ne suis pas adminsys. Je suis technophile et un peu (beaucoup ?) geek. C’est tout ! Je pars donc de très loin ! Je profite d’avoir du temps devant moi pour m’amuser et apprendre. Ne soyez pas effrayé par ce qui va suivre. Personnellement quand je lis des tutoriaux qui partent un peu trop loin, je « saute » le passage technico-technique et j’essaye d’aller jusqu’à la fin pour au moins tenter d’assimiler la substantifique moelle qui se cache derrière ce « charabia ». Enfin,il y aura certainement des bêtises, et des « Mais-on-peut-faire-beaucoup-plus-simplement ! » . Néanmoins, j’ai fait comme ça, et ça fonctionne !

  • Je vais utiliser Yunohost, une distribution orientée auto-hébergement basée sur GNU+Linux Debian (voir ci après) . Ce qui suit est grandement inspiré de leur guide d’installation.
  • Mon serveur sera un A20-OLinuXino-Lime2 (voir ci après)
  • Mon ordinateur principal tourne sous Linux Mint 19.3 Tricia

Pourquoi faire tout ça ?

  1. Parce que c’est rigolo
  2. Parce qu’on peut le faire
  3. Parce que c’est comme ça qu’Internet est censé fonctionner

1 – Avoir du hardware

Pour installer son petit serveur à la maison, il vous faut une machine qui sera dédié à ça. Vu qu’en ce moment on est limité niveau shopping, vous pouvez recycler un vieil ordinateur dont vous ne vous servez plus : vous savez ? L’antédiluvien ordinosaure « qui rame » que l’on laisse dans un coin. Je vais personnellement utiliser un A20-OLinuXino-LIME2 . Oui, ce petit machin est un petit ordinateur qui peut faire tourner un serveur. Vous avez certainement déjà entendu parler des Raspberry Pi ? C’est en gros la même chose mais Open Hardware en prime !

Un Lime 2

Dans mon cas, j’ai aussi un câble RJ45 (câble Ethernet) pour relier le serveur au modem/routeur ainsi qu’une carte microSD pour le stockage et le système d’exploitation.

2 – Télécharger l’image

Ca se passe ici !
Remarquez le petit bouton « Checksum » pour chaque configuration. On va en reparler ci dessous …

3 – Vérifier le Checksum

Lorsque c’est possible, il faut toujours vérifier la somme de contrôle. Cette vérification permet (entre autre) de certifier qu’il n’y a pas de différence entre ce qui a été envoyé, et ce que vous avez reçu. Il existe plusieurs façon de faire cette vérification. Pour ma part, j’ai utilisé le logiciel GtkHash (je l’ai récupéré via le gestionnaire de logiciel de LinuxMint). L’interface est très simple, il suffit de sélectionner le fichier que l’on souhaite contrôler, et de copier coller la somme de contrôle du fichier Checksum dans GtkHash. Après avoir cliqué sur Hacher : si un petit pictogramme « OK » s’affiche a coté de la ligne SHA256 , c’est que tout est bon. Dans le cas contraire, on recommence le téléchargement du fichier (et on refait la manip…)

4 – Flasher l’image

Il faut ensuite flasher l’image. Dans mon cas c’est sur une carte microSD mais selon votre matériel ça peut être sur une clef USB ou un CD. Il existe là aussi plusieurs méthodes : j’ai utilisé l’outil de création de clef USB de Linux Mint. Très simple : on choisit le fichier que l’on veut flasher, et le périphérique sur lequel on veut flasher. Thermostat 7 pendant 6 minutes : c’est cuit !

Attention, ne vous faites pas avoir : si l’on vérifiait le .zip lors de l’étape précédente, il faut ici flasher le .img contenu dans le .zip ! (et non pas le .zip lui même)

Petit bonus : A une époque j’utilisais le logiciel balenaEtcher , disponible sur toutes les plateformes.

5 – Mise en route et retrouver son IP locale.

Une fois que c’est fait, on insert la petit carte SD dans notre Olimex Lime 2 et on le démarre. Et on attends quelques minutes… Si on a un écran branché dessus, on va voir que ça s’agite là dedans. Ne touchez à rien jusqu’à ce que vous obtenez un écran comme celui ci. Vous remarquerez alors l’adresse IP locale de votre serveur. N’ayant pas d’écran supplémentaire, j’ai choisis une autre méthode : me connecter en SSH.

Pour cela, il faut trouver son IP , on peut suivre la méthode en ligne de commande que nous propose l’aide de Yunohost :

Trouver son IP

Si vous installez YunoHost sur un VPS, votre fournisseur devrait vous avoir communiqué l’adresse IP de votre serveur.

Si vous installez un serveur à la maison (par ex. sur Raspberry Pi ou OLinuXino), il vous faut trouver l’IP qui a été attribuée à votre carte après que vous l’ayez connectée à votre box internet / routeur. Il y a plusieurs façons de faire cela :

  • ouvrez un terminal et tapez sudo arp-scan --local pour lister les IP des machines sur le réseau local ;
  • si la commande arp-scan vous affiche beaucoup de machines, vous pouvez vérifier lesquelles sont ouvertes au ssh avec nmap -p 22 192.168.1.0/24 pour faire du tri (adaptez la plage IP selon votre réseau local)
  • utilisez l’interface de votre box internet pour lister les machines connectées, ou regarder les logs ;
  • branchez un écran sur votre serveur, loggez-vous et tapez hostname --all-ip-address.

Personnellement, via l’interface de mon modem-routeur (ou « machin-box » si vous préférez) j’ai attribué une IP locale fixe à mon petit Lime 2. Par conséquent je connais l’IP locale de ma boite à coucou. Notez bien cette adresse on s’en sert tout de suite après !

6 – Se connecter en SSH

D’après l’aide de YunoHost :

SSH est un acronyme pour Secure Shell, et désigne un protocole qui permet de contrôler à distance une machine via la ligne de commande (CLI). C’est aussi une commande disponible de base dans les terminaux de Linux et Mac OS / OSX. Sous Windows, il vous faudra utiliser le logiciel MobaXterm (après l’avoir lancé, cliquer sur Session puis SSH).

A l’époque où j’utilisais Windows 7, j’utilisais le logiciel Putty pour me connecter en SSH à mon serveur. (J’imagine que MobaXterm fonctionne tout aussi bien)

Sur Linux, c’est très simple, il suffit d’ouvrir un terminal et d’utiliser la commande suivante :

ssh root@111.222.333.444

(Remplacez 111.222.333.444 par l’adresse IP locale de votre serveur ! Notez que ça marche aussi bien en IPv4 qu’en IPv6). Si tout va bien : le terminal devrait vous demander un mot de passe :

root@111.222.333.444's password:

Par défaut, le mot de passe est yunohost

Et normalement vous obtiendrez ceci :

======================================================================

Congratulations on setting up your YunoHost server !

To finish the installation, you should run the postinstallation.
You can find documentation about it on :
https://yunohost.org/postinstall

You can run it from the command line interface with :
$ yunohost tools postinstall

Or from a browser by accessing one of your local IP :
111.222.333.444’s
2001:db8::ff00:42:8329

======================================================================

Remarquez que ce message vous affiche l’IPv4 (111.222.333.444) et l’IPv6 (2001:db8::ff00:42:8329) de votre serveur. Je vous conseil de les noter soigneusement ça peut toujours servir. (Ici, j’ai remplacez mes adresses IP par des adresses « bidons »)

7 – Changer le mot de passe root !

C’est une étape TRÈS IMPORTANTE ! Le compte Root permet d’avoir la main sur tout le système, il faut donc le protéger avec un mot de passe robuste (voir même une phrase de passe) et ne surtout pas laisser le mot de passe par défaut. Pour le changer, c’est très simple, on tape la commande passwd . On vous demandera alors un nouveau mot de passe. Remarquez que rien ne s’affiche quand vous tapez votre mot de passe, même pas des petites étoiles. C’est tout à fait normal et c’est une mesure de sécurité supplémentaire. Je vous invite grandement à sécuriser ce mot de passe dans un gestionnaire de mot de passe. J’en ai déjà parlé sur ce blog, je ne m’éterniserai pas sur ce point.

root@lime2:~# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

8 – Configuration de la zone DNS et redirection des ports

Bon, là : c’est le plus gros morceau. Il faut s’accrocher mais c’est vraiment important de comprendre ce qui va suivre. Ça vous permettra au passage de comprendre ce qu’est vraiment le réseau Internet, et de comprendre son fonctionnement.

Néanmoins, tout ce qui concerne le DNS ne vous sera utile que si vous utilisez votre propre nom de domaine. Ce n’est cependant pas obligatoire comme l’explique la documentation de Yunohost .

Extrait :

  • YunoHost propose un service de DNS dynamique fournissant des noms de domaine de type mondomaine.nohost.me, mondomaine.noho.st ou mondomaine.ynh.fr. Si vous ne possédez pas de nom de domaine et/ou que vous souhaitez profiter de ce service, choisissez un domaine se terminant en .nohost.me, .noho.st ou .ynh.fr. S’il n’est pas déjà utilisé, le domaine sera automatiquement rattaché à votre serveur YunoHost, et vous n’aurez pas d’étape de configuration supplémentaire.
  • Si en revanche vous maîtrisez la notion de DNS, vous pouvez utiliser votre propre nom de domaine. Dans ce cas, référez-vous à la page yunohost.org/dns pour plus d’informations.
  • Si vous n’avez pas de nom de domaine et que vous n’en voulez pas en mondomaine.nohost.me, mondomaine.noho.st ou mondomaine.ynh.fr, vous pouvez utilisez un domaine local. Plus d’infos sur comment accéder à son serveur depuis le réseau local.

Le DNS

De base, lorsque deux machines (ou plus) veulent communiquer entres elles, elles utilisent des numéros. Un peu comme des numéros de téléphone. Schématisons :

Lorsque Alice veut appeler Bob, elle compose son numéro de téléphone pour effectuer la liaison. Si elle veut appeler Cthuhlu, elle compose un autre numéro.

Dans cette métaphore, Alice doit se rappeler de tous les numéros. C’est vrai que c’est compliqué à retenir mais c’est très pratique pour les machines. Heureusement on a inventé les noms de domaines. (Attention : vous entendrez partout que « Les noms de domaines ont été créé pour faciliter la vie des humains » Ce n’est pas tout à fait vrai ! En effet, il y a d’autres raisons : pour plus d’informations à ce sujet je vous conseil cette excellente conférence par Stéphane Bortzmeyer.) Les noms de domaines permettent d’attribuer un nom à un numéro. Un peu comme un annuaire : devant chaque nom, il y a un numéro associé.

Continuons de schématiser :

Toute l’idée de la manipulation est d’expliquer à la boite jaune intermédiaire, quels sont les numéros d’Alice, Bob, et de Cthulhu. (Cette boite jaune schématise ce qu’on appelle un DNS.)

Dans mon cas, j’ai acheté un nom de domaine à pas trop cher chez OVH (ce n’est pas un placement de produit, vous pouvez allez chez qui vous voulez je m’en moque !) ; et je vais faire les changements nécessaires ! Malheureusement, l’interface n’est jamais la même d’un registar à l’autre : je n’ai donc pas fait de screenshots. Vous retrouverez la configuration à adopter sur la page d’aide de YunoHost. Dans un premier temps, vous pouvez ne vous occuper que des lignes en gras.

Concrètement j’ai fait quoi ? Et bien j’ai expliqué à OVH que lorsque quelqu’un tape l’adresse de mon site web https://www.exempledesite.truc ca redirige vers mon Lime2. Enfin pas tout à fait, c’est ce qu’on va voir après…

Maintenant, la redirection des ports.

(Je sais que normalement avec IPv6 on peut se passer de ce qui va suivre. Hélas, Internet fonctionne encore beaucoup avec le protocole IPv4. On va donc parer à toutes les situations.)

Vu le schéma ci dessus, on pourrait penser que c’est fini mais c’est pas si simple. En effet, ce que j’ai renseigné à OVH c’est pas l’adresse du Lime2 mais l’adresse du modem-routeur (ou machin-box) ! En faisant une analogie, c’est comme si j’envoyais des colis dans un immeuble. J’ai fourni l’adresse de l’immeuble à la poste, et le gardien va ensuite dispatcher les colis aux différents locataires.

La redirection des ports, va permettre à mon modem-routeur de savoir vers quel appareil rediriger les demandes.

Encore une fois, ça dépend du modèle de votre modem routeur (pas de screenshots donc). Voici tout de même les paramètres à changer.

Voilà, on est prêt !

9 – Procédure de post installation

Maintenant, nous pouvons procéder à la procédure de post installation. Plusieurs méthodes sont décrites ici. Je vais utiliser celle qui me semble la plus simple pour les néophytes comme moi.

Dans votre navigateur préféré (chez moi c’est Firefox), on tape l’adresse locale de notre serveur. (Rappel : si vous souhaitez utiliser le protocole IPv6, l’adresse doit être contenu entre des crochets de ce style : [2001:blablabla:42] )

C’est alors qu’une terrible page s’ouvre devant vos yeux ébahit, une porte démoniaque affichant des étendues sauvages en évolution prête à aspirer toute votre âme vers des abysses sidéraux tachés d’horreurs mystiques :

Je sais, ca fait peur, mais ne vous inquiétez pas !

Comme explique l’aide en ligne de YunoHost :

Lors de la première visite, vous rencontrerez très probablement un avertissement de sécurité lié au certificat utilisé. Pour le moment, votre serveur utilise un certificat auto-signé. Vous pourrez plus tard ajouter un certificat automatiquement reconnus par les navigateurs comme décrit dans la page sur les Certificats. En attendant, ajoutez une exception de sécurité pour accepter le certificat actuel.

Petite remarque : si vous croisez cette page dans d’autres circonstance : méfiez vous ! Là c’est la première fois, c’est donc exceptionnel que l’on accepte ; et tant qu’on aura pas gérer les certificats (voir ci après), vous aurez ce message.

On aura ensuite une succession d’écran :

Pour ma part, j’ai déjà un nom de domaine (on l’a vu précédemment, j’ai fait les redirections nécessaires.)

Comme expliqué dans le cadre jaune , utilisez un mot de passe ROBUSTE, voir une phrase de passe. C’est encore mieux. J’en ai déja parlé un peu ici. Je compte écrire d’autres articles à ce sujet très prochainement. Une fois que l’on clique sur Go! on laisse mouliner. Et si tout va bien, on devrait arriver sur une page de connexion à l’interface administrateur. Il suffit de rentrer son mot de passe. Remarquez le bandeau d’information qui demande de créer un utilisateur. On s’en occupe tout de suite !

10 – Première mise en route

Et voilà ! On a réussi on est arrivé sur la page d’administration de YunoHost !

On va d’abord créer un utilisateur

Utilisateur > Nouvel utilisateur

On entre toutes les informations nécessaires ; puis on valide. Vous verrez alors dans un bandeau un texte sur fond vert vous informant que l’utilisateur a été créé.

Et puis on va mettre à jour le système , il suffit de retourner dans le menu et de cliquer sur : Mettre à jour le système

Ça prend un peu de temps… Mais une fois que c’est fait : on va s’occuper des certificats. A ce sujet, tout est expliqué sur la documentation de Yunohost. Je pense que ça se passe de commentaires mais c’est important de le faire !

On arrive à la fin ! Alors voilà, on s’est connecté depuis notre réseau local. Mais est ce qu’on arrive à se connecter depuis l’extérieur ? Pour tester ça, c’est trés simple. Vous vous rappelez du nom de domaine que l’on a acheté plus tôt ? Ben il suffit de le taper dans la barre d’adresse, et si tout marche bien… Vous devriez tomber sur la page d’accueil de votre serveur YunoHost. Elle est pas belle la vie ? 😀

On peut tenter de se connecter. Vous vous souvenez tout à l’heure, on a créé un utilisateur ? C’est le moment de rentrer ses identifiants !

Tadam ! On est content ! C’est un peu vide c’est vrai. Il faudra qu’on remplisse ça avec des applications. Mais je ferai ça dans un prochain article.

Bonus

J’ai eu pas mal de soucis pour accéder à mon YunoHost en tapant mon nom de domaine dans la barre d’adresse. La raison c’était que j’avais mal paramétrer la zone DNS chez OVH. Pour éviter ce probléme et être sur d’avoir tout bien rentrer comme il faut, voici une petite astuce.

Depuis l’interface Admin YunoHost :

Utilisateur > "Votre nom de domaine"

Arrivé sur cette page, vous pouvez cliquer sur « Configuration DNS » , vous obtiendrez alors une page contenant la configuration recommandé. Il se trouve qu’OVH permet d’éditer sous forme de texte la configuration DNS. Il vous suffit alors de copier coller la configuration depuis YunoHost chez votre registar. Ainsi, vous êtes sur de n’avoir rien oublié, et de ne pas avoir commis une maladresse (faute de frappe, oubli d’une virgule etc…)

Bonus Bis :

Pour aller plus loin, je peux vous conseiller d’aller lire l’article de Tinerion. Il parle lui aussi de l’auto hébergement de son blog dans un de ses articles.

Ou « Comment j’ai  profité du confinement pour auto héberger quelques services sur mon Olimex Lime 2 en attendant de recevoir mon Helios64 et un accès à de la fibre via un fournisseur d’accès internet respectant la neutralité du net« . Oui cette intro est trop longue. #Amixem Auto-hébergement avec Yunohost Je ne suis pas un héros…

6 Comments

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *