207.241.226.217
Le Poisson Libre #


Avoir son petit bout de Web en quelques minutes

Bonjour tout le monde ! Aujourd'hui un article que je veux faire depuis un long moment.

Vous avez toujours eu envie d'avoir votre propre site web ? Vous ne comprenez pas quand on essaie de vous expliquer comment ça fonctionne ? Ou vous avez appris le HTML et CSS mais vous ne savez pas quoi faire ensuite pour avoir un "vrai" site ? Et ben, cet article va tout éclaircir (sinon demandez un remboursement ^^).

Moi même j'ai mis énormément de temps à faire la liaison entre le HTML et un vrai site accessible à tous, il me manquait une étape. Alors j'ai entendu parler d'hébergeur, de serveur, d'apache (pas les indiens)... C'était très flou. Mais depuis les JDLL (les Journées du Logiciel Libre) j'ai compris, et ça ne tient à rien du tout, j'ai enfin trouvé l'information qui me manquait. Seulement pour une fois ce n'est pas le web qui m'a aidé, on trouve peu d'articles traitant clairement le sujet. C'est la raison de l'existence de celui-ci !

Cet article requiert que vous soyez sous Linux, voir Mac, désolé les Windowsiens (passez sous Linux !).

Tout d'abord oubliez le concept Serveur/Client, on est sur Internet les gens. N'importe quel PC est un serveur et n'importe quel PC est un client, on peut même être les deux à fois. C'est ça la magie d'Internet. L'ordinateur avec lequel vous lisez cet article peut héberger une page web accessible à tous en quelques minutes.

Justement, comment les gens y accèderont ?

Les adresses IP

C'est simple, à l'aide de l'adresse IP de votre box. C'est une suite de chiffres unique (genre 234.678.535.890) qui permet de l'identifier sur le réseau. Pour connaitre la vôtre allez ici. Lorsque votre ordinateur servira de serveur, il suffira d'entrer cette IP dans la barre d'url du navigateur pour accéder à votre site !

Ensuite, il faut savoir que votre ordinateur a une adresse sur le réseau local de votre box. Pour la connaitre, faîtes ip a dans un terminal. Elle se présente très souvent sous la forme 192.168.X.X, elle servira plus tard.

Préparation

Maintenant il faut vous faire un petit site rapide pour le test. Créer un nouveau dossier et un document à l'intérieur nommé index.html. Écrivez un truc dedans, genre "Hello World" pour changer.

La commande magique

On avance bien ! Ouvrez un terminal désormais et naviguez jusque dans le dossier fraichement créé. Là on lance une commande :

python -m SimpleHTTPServer

Et là vous venez de créer un serveur web ! Ne fermez surtout pas ce terminal. Maintenant, tapez l'adresse de votre ordinateur sur le réseau local (la fameuse 192.168...) suivi de :8000 dans la barre d'url de votre navigateur. Et là magie, votre "Hello World" ou je ne sais quoi apparait ! Vous pouvez tester sur un autre ordinateur ou sur votre smartphone (s'il est connecté à votre box), votre PC est désormais un serveur sur votre réseau local !

Mais c'est quoi :8000 ?

C'est le numéro de port. En fait, chaque service d'internet a un port par lequel il passe. Notre petite commande utilise le 8000, mais en vrai le web passe plutôt par le 80. Chaque protocole a son port, c'est quelque chose que l'on peut voir quand on configure un client mail. L’envoi de mail chiffré passe par le 465, la réception par le 993. Beaucoup de jeux vidéo ont aussi des ports dédiés pour le multi-joueur. Du coup, comme notre page est accessible via le 8000 au lieu du 80, il faut le préciser au navigateur.

Vous pouvez déjà vous amuser à créer un petit site que seule votre famille peut voir, pour partager des images par exemple. Pour cela il suffit d'ajouter des fichiers .html et .css dans le dossier. Si vous ne connaissez pas les langages, Internet regorge de tutos !

Les choses sérieuses

C'est déjà super cool, je trouve, d'avoir un site sur son réseau local mais je suppose que vous aimeriez bien le mettre sur le réseau des réseaux :-) Bon, je ne vous le cache pas, c'est la partie la plus complexe. Déjà parce qu'elle est un peu technique et ensuite parce qu'il va falloir toucher à la box et l'interface varie suivant le FAI :-/

En fait, les box ont pour sécurité de rien laisser entrer ou sortir du réseau local. Il va falloir lui dire :
"Si quelqu'un tape l'adresse de cette box sur son navigateur, et ben il faut renvoyer la requête sur cet ordi là qui contient le site"

Il nous faut donc aller dans l'interface de votre box pour mettre en place cela.
Mais comment on configure la box ? Elle n'a pas d'écran !

Avec son IP bien sur ! Et ouais, la box elle-même se trouve sur le réseau local. Comme c'est un peu elle qui en est à l'origine, elle possède le numéro 1 ! Son IP va commencer comme la votre, sauf que le dernier numéro sera un 1 ! Genre 192.168.X.1. (EDIT : en fait pas toujours, voir le commentaire de CodeurImpulsif)

Tapez donc cette adresse dans la barre d'url de votre navigateur. C'est là que tout varie, suivant votre fournisseur d'accès l'interface est différente.

Bon la première étape est de se logger en admin. Pour toutes se sera admin en nom d'utilisateur, le mot de passe quand à lui peut être la clé wifi, entière ou en partie, ou noté sur la box.

Une fois dans l'administration de la box, cherchez l'onglet "NAT". C'est le protocole utilisé par la box pour "cacher" derrière une même IP tous les ordinateurs connectés.

Là il va falloir créer une nouvelle règle. C'est à dire que pour une certaine requête qui arrive sur un certain port, la box doit la rediriger vers l'ordinateur en question. Faîte donc "ajouter une rèlge NAT" ou "+", je vous l'ai dis ça dépend. À ce moment vous aurez des cases à remplir.

Il faut donner un nom à la règle, ce que vous voulez, genre "Serveur Web". Il faut mettre le protocole, ici TCP (c'est le protocole utilisé par le web). Le port d'entrée de la box à ouvrir, ici le 8000. Puis mettre l'adresse IP de la machine qui possède le site, en 192.168... Ensuite, le port d'entrée cette machine, toujours le 8000. Ça doit donner ça :

L'ordre peut varier. Et pour terminer on active cette règle.

Voilà !

C'est tout bon, maintenant tapez l'adresse de votre box (celle-là) suivie de :8000. Et votre site apparait ! N'importe qui en tapant cette adresse peu y accéder désormais, vous pouvez tester avec votre téléphone sur le réseau mobile pour vous en convaincre ;-)

Petit tip, peut être l'avez vous remarqué dans le terminal où est actif la commande, vous pouvez voir en direct l'accès à votre site avec les IP des gens qui le visitent.

Aller plus loin

J'espère que ça fonctionne pour vous. Et que ça aura pu vous aider à comprendre certaines choses : la notion IP, de port... Vous avez fait un premier pas dans l'univers de l'hébergement !

SimpleHTTPServer est un script python qui m'a été présenté aux JDLL dans un atelier. Je le trouve vraiment pratique, car il permet de créer rapidement un serveur web sans se préoccuper de la configuration de celui-ci, il suffit d'un dossier et de fichiers HTML/CSS. Pour moi on devrait mettre plus souvent en avant cela dans les tutos de ces langages. Très souvent après lecture complète on n'a aucune idée de comment créer un site accessible, c'est bien dommage. Rien que montrer que l'on peut créer un site sur son réseau local serait cool.

Alors bien sûr, vous êtes loin du vrai serveur web. Dès que vous stoppez la commande dans le terminal, le site n'est plus accessible. De plus, ici seul le HTML, le CSS et le Javascript peuvent être utilisés, oubliez le PHP. Si vous voulez aller plus loin, il faut utiliser un logiciel plus complet. Apache2 est le plus connu, on peut noter aussi nginx ou lighttpd. Eux s’exécutent en tâche de fond dès lors que l'ordinateur est allumé, pas besoin de terminal ouvert ^^. Seulement leur configuration est plus complexe, peut être qu'un jour j'y consacrerait un article, on verra.

Enfin, je voulais juste ajouter une petite précision qui ne sert à rien mais qui est importante. Les adresses IP que je vous ai présentés ici sont à 12 chiffres max, regroupés par paquets de 3. C'est la version 4 du protocole Internet. Aujourd'hui, on a de plus de personnes et d'appareils connectés, ce qui fait que l'on tend vers l'épuisement de ces adresses. On lui préfère désormais la version 6, qui forme des adresses de 32 caractères avec des chiffres et lettres, seulement en pratique les opérateurs ne jouent pas le jeu et ne proposent pour la plupart pas d'option pour s'héberger derrière une IPv6. Mais sachez que ça existe et que l'on y arrivera bien un jour !

Voilà, c'est tout pour aujourd'hui. J'ai essayé de réaliser l'article le plus clair possible. Car c'est quelque chose qui me tient à coeur pour montrer que s'héberger soit même c'est simple et que l'on peut le faire avec n'importe quel PC. N'hésitez pas à me donner votre avis dans les commentaires, ou à poser des questions si vous n'avez pas compris quelque chose.

Bientôt d'autres articles sur l'auto-hébergement, d'ici là tâchez de libérer le monde !

publié le 18/08/2015 à 17h28 dans Libre

Lugr

Je mets un pouce à cet article ! Il est clair, détaillé et précis. Merci ! *-*

publié le 18/08/2015 à 18h21

CodeurImpulsif

Super sympa comme article de présentation ! Cependant une petite remarque: l'adresse d'une box n'est pas toujours la premiére, par exemple chez Free c'est la dernière avant le broadcast, c'est à dire 192.168.0.254

publié le 18/08/2015 à 18h53

-Fred-

Bonjour, Petite remarque en passant, l'adresse IPv4 donnée en exemple au début n'est pas valide ( 234.678.535.890 ). Sinon, autres précisions, IPv4 est codé sur 32 bits, soit 4 blocs de 8 bits. Le codage avec des caractères décimaux que l'on voit habituellement n'est là que pour les petits humains que nous sommes, chaque bloc de 8 bits pouvant alors prendre une valeur décimale comprise entre 0 et 255. IPv6, c'est 128 bits, soit 8 blocs de 16 bits. On peut aussi le représenter en décimal comme IPv4 mais c'est nettement plus compliqué à lire. Pour que ça reste lisible, chaque bloc de 16 bits est donc représenté par 4 caractères en hexadécimal (chaque caractère hexadécimal est codé sur 4 bits). Les opérateurs prennent effectivement du temps pour passer en IPv6. Certains comme FREE ou OVH le proposent déjà à leurs abonnés. Remarque importante, même si IPv6 n'est pas utilisé en masse, il y aura tout de même de plus en plus d'équipements reliés à internet. Le risque, c'est qu'au lieu d'utiliser IPv6, on continue à faire de plus en plus usage du NAT en IPv4. Avec un NAT chez soit dans sa box, on peut encore s'auto-héberger (quelques réglages à prévoir dans la box mais c'est tout). Si un jour les FAI décident de mettre en place du NAT directement chez eux par contre, on pourra tous oublier l'auto-hébergement car nous n'auront plus d'IP publique. Donc, entre autre pour cette raison, oui il faut passer massivement à l'IPv6.

publié le 19/08/2015 à 13h00

Le Poisson Libre

@lugr merci ! J'ai essayé de faire de mon mieux ^^ @CodeurImpulsif merci pour cette précision, je vais faire apparaître ça dans l'article ;-) @-Fred- merci pour cette clarification. Je comprend mieux comment fonctionnent les IP maintenant, c'etait très pertinent !

publié le 19/08/2015 à 21h12

Gilles

Pour en rajouter sur @CodeurImpulsif, tu devrais lister les IP des box FR ;) Livebox : 192.168.1.1 Et en préambule tu devrais dire quelle est ta box et dire aussi qu'il faut Python d'installer, quoique sous Linux c'est souvent (toujours ?) le cas :) Enfin, un petit ajout sur un nom de domaine ? Genre dtdns.com ou no-ip.com :) sachant que la Livebox, par exemple, gère les mises à jour de ces noms de domaine.

publié le 20/08/2015 à 09h54

Le Poisson Libre

@Gilles ouais, en fait je ne voulais pas trop citer de FAI, rester neutre. J'ai hésité à faire une liste des IPs de box possibles mais je ne l'ai pas fait parce que ça peut rendre rapidement obsolète mon article, c'est un truc qui change au grès des nouvelles versions. Et petite anecdote, j'ai écrit cet article sans toucher une box ^^ Je suis en plein déménagement, et je n'ai pas encore pris de FAI. Du coup, j'ai dû tout faire de mémoire, c'était pas toujours simple... Pour Python, c'est quelque chose que l'on m'a remonté aussi sur Diaspora*. Je pars en effet du principe que Python est préinstallé sur une majorité de Linux et sur Mac. Comme SimpleHTTPServer est livré avec Python 2.7 la plupart du temps, je ne veux pas perdre dès le début un visiteur en disant "vérifiez que Python est bien installé, qu'il possède à lib SimpleHTTPServer...", mon but ici c'est de rester accessible ;-) Enfin pour les noms de domaine patience ! Comme ça nécessite de comprendre le DNS, rapidement le routage, etc. Ce sera pour un prochain article (merci pour no-ip.com, connaissais pas !).

publié le 20/08/2015 à 12h48





RSS Suivre les RSS