Remerciements

Je tiens à remercier David Gimelle et Julp pour leur aide et la relecture de cet article.

Avertissement

En aucun cas cet article propose une façon de faire idéale. Vous ne pourrez en aucun cas mettre en cause developpez.com ou l'auteur de cet article en cas de piratage ou de problème sur votre serveur ou vos autres machines. Mettre en place ce qui suit est de votre propre responsabilité.

Par ailleurs, en effectuant l'opération décrite ci-après, vous devenez hébergeur. Vous acceptez donc de supporter les risques et les responsabilités associés. Entre autres choses, héberger chez soi un site Web ouvre une porte aux pirates qui pourraient endommager votre site ou serveur Web mais également les autres machines présentes sur votre réseau local.

I. Principe

L'opération que vous voulez faire ne présente réellement de difficulté que par rapport à votre routeur ADSL et votre connexion Internet : en effet, votre routeur ADSL protège des accès externes les machines de votre domicile. L'une des étapes importantes va donc consister à ouvrir dans votre routeur une porte vers votre PC.

Ensuite, il faut que vos amis et familles sachent comment se connecter à votre site : quelle URL utiliser ? Cette question fait partie des enjeux importants de la préparation. Globalement, la configuration à mettre en place doit répondre à ceci :

Principe de la configuration
Principe de la configuration

L'opération se déroule donc en plusieurs étapes :

  1. Préparation
  2. Installer le serveur Web
  3. Configurer le serveur pour l'accès depuis l'extérieur
  4. Configurer le routeur ADSL (ou autre)
  5. Tester

II. Notations

Pour simplifier ce qui suit, nous utiliserons les notations suivantes :

Notation Description
<IP PC> adresse IP de votre PC
<www.monsite.com> nom (ou adresse IP) que vous allez utiliser dans les URL pour accéder à votre site. Voir plus bas les implications de l'utilisation de l'adresse IP dans le cas d'une adresse dynamique.
<port site Web> il s'agit d'un nombre compris entre 1 et 65535. C'est le port par lequel votre site Web est accessible. Le cas le plus fréquent est d'utiliser 80. Dans ce cas, les URL de votre site seront du style http://www.monsite.com/chemin. Si ce port n'est pas 80 (764 par exemple), les URL seront du style http://www.monsite.com:764/chemin.

III. Préparation

Avant de se lancer dans les installations et les configurations requises, il est nécessaire de répondre à un certain nombre de questions préalables qui conditionnent les modalités d'accès à votre site.

III-A. Votre PC dispose-t-il d'une adresse IP fixe ou non ?

La porte que nous allons ouvrir dans votre routeur va consister en fait à renvoyer sur votre PC toutes les connexions entrantes. Pour cela, votre routeur doit connaître l'adresse IP de votre PC. Si cette adresse est dynamique, il se peut que dans certains cas (par exemple en fonction de l'ordre de démarrage de vos différentes machines) votre PC n'obtienne pas toujours la même adresse.

Si vous disposez de plusieurs machines chez vous, il est vivement recommandé que vous configuriez une adresse IP fixe sur votre PC.

Sous Windows, Pour savoir si votre PC dispose d'une adresse IP dynamique, procédez ainsi :

  1. Cliquez sur le menu Démarrer et cliquez sur Exécuter...
  2. Dans la fenêtre qui s'ouvre, tapez "cmd" (sans les guillemets) et appuyez sur Entrée
  3. Tapez la commande "ipconfig /all" (sans les guillemets) et appuyez sur Entrée
  4. Si vous voyez afficher quelque chose comme "Bail obtenu le", c'est que votre PC a une adresse IP dynamique

Pour configurer une adresse IP statique, vous devez modifier les propriétés de connexion de votre PC. Si vous voulez utiliser la même adresse IP que celle obtenue dynamiquement, n'oubliez pas de configurer votre routeur pour qu'il ne distribue pas cette adresse.

III-B. Votre connexion ADSL dispose-t-elle d'une adresse IP fixe ou non ?

Cette question est différente de la précédente : autant dans la première question, vous avez des possibilités de paramétrage, autant ici, il s'agit de savoir comment votre accès à Internet est identifié de l'extérieur. Pour savoir si votre connexion dispose d'une adresse IP fixe ou non, il faut vous renseigner auprès de votre fournisseur d'accès. Cette information est certainement disponible dans l'interface d'administration de votre connexion ou routeur ADSL.

Cette question conditionne les possibilités qui vous sont offertes pour choisir un nom pour votre site (voir question suivante).

III-C. Quel nom voulez-vous utiliser pour accéder à votre site ?

La question est ici : quelle URL taper dans un navigateur pour accéder à mon site ? Cela peut être http://<adresse IP de ma connexion ADSL>/, http://www.monsiteamoi.com/, etc.

Vous ne pouvez utiliser des URL en http://<adresse IP de ma connexion ADSL>/ que si votre adresse IP ADSL est fixe. Si c'est votre cas et que de telles adresses vous conviennent, ne vous posez pas plus de question et passez à l'étape suivante. En revanche, si votre adresse ADSL est dynamique, vous n'avez pas d'autre choix que de passer par un nom. En effet, si l'adresse IP change, cela veut dire que les URL de votre site changent. Les personnes connaissant votre site par votre ancienne adresse ne pourront alors plus y accéder. Seul un nom permet de conserver une indépendance vis-à-vis de l'adresse IP.

Sinon, si vous désirez un nom, vous avez deux possibilités en fonction de la réponse à la question III-B :

  • Si votre connexion a une adresse IP fixe, vous pouvez potentiellement utiliser n'importe quel nom. Vous pouvez donc acheter un domaine Internet puis le configurer pour qu'il pointe sur l'adresse IP de votre connexion ADSL. Vous devez toutefois acheter votre domaine auprès d'un registrar vous permettant de faire une configuration DNS avancée. Vous pouvez également appliquer les possibilités offertes pour le cas des adresses IP dynamiques (point suivant).
  • Si votre connexion a une adresse IP dynamique, vous avez deux possibilités :
    • Solution simple : vous passez par un utilitaire du style DynDNS ou No-IP. Vous devez alors installer un programme sur votre PC qui ira mettre à jour automatiquement les serveurs de DynDNS ou No-IP avec l'adresse IP de votre connexion Internet. Les services de ces sites sont gratuits si vous choisissez d'utiliser un de leurs sous-domaines comme adresse de votre site (par exemple, toto.dyndns.org, titi.dyndns.org, tata.no-ip.com). A noter que Free propose un service équivalent en .free.fr pour les accès dégroupés. Avec la version gratuite de ces services, vous ne pourrez donc pas utiliser votre propre nom de domaine (www.monsiteamoi.com), ce que vous pourrez toutefois faire en passant par des services payants (ce que propose No-IP par exemple). Si cette solution ne vous satisfait pas, contactez votre fournisseur d'accès pour savoir comment obtenir une adresse IP fixe.
    • Solution plus compliquée : vous avez déjà acheté un domaine et vous ne voulez pas passer par les services payants de DynDNS ou No-IP. Dans ce cas, vous devez tenter de mettre en place une configuration DNS avancée auprès du registrar en utilisant éventuellement un service gratuit du type DynDNS ou No-IP. Cette solution demande des connaissances pointues en configuration DNS et n'a aucune garantie de succès.

Lorsque votre choix est arrêté, créez votre compte chez DynDNS, No-IP ou équivalents, achetez votre domaine ou achetez les services qui vont bien et qui répondront à votre besoin. Procédez ensuite à l'installation et la configuration de ces services. Avant de passer à la suite des opérations, vous devez vous être assuré que cette configuration de nom fonctionne bien et pointe vers l'adresse IP de votre connexion. Pour le vérifier, ouvrez un interpréteur de commande (pour Windows, c'est menu Démarrer, puis Exécuter... puis cmd) et tapez la commande suivante :

 
Sélectionnez
ping <le nom que vous avez choisi pour votre site>

Cette commande doit afficher l'adresse IP De votre connexion Internet. Si ce n'est pas le cas, il y a un problème que vous devez résoudre avant de passer à la suite. Testez cette commande chez différentes personnes pour vous assurer qu'elles pourront accéder à votre site.

III-D. Choix du port

Choisissez un port pour l'accès à votre site. Si vous n'avez pas d'idée de ce que c'est ou si vous ne voulez pas que ce port figure dans les URL de votre site, choisissez 80.

IV. Installation du serveur Web

Pour cette partie, vous êtes libre de choisir le serveur Web qui vous va le mieux. Sous Windows, si vous ne disposez pas d'IIS, le plus simple reste d'installer une solution toute prête de type AMP (Apache + MySQL + PHP) telle que EasyPHP ou Wamp, par exemple.

V. Configurer le serveur Web pour l'accès depuis l'extérieur

Une fois installé, vous devez configurer le serveur Web.

Première étape : faire en sorte qu'on puisse accéder au serveur Web depuis une autre machine. Généralement, quand on installe une solution de type EasyPHP, le serveur Apache (le serveur Web) n'est accessible que depuis la machine sur laquelle il est installé. Ce n'est pas suffisant : il faut rendre le serveur accessible depuis une autre machine. Pour cela :

  1. Si vous utilisez IIS :
    1. Ouvrez la console d'administration d'IIS
    2. Allez dans les propriétés du site (très certainement "site par défaut")
    3. Dans l'onglet Site Web, choisissez "Toutes disponibles" dans la liste Adresse IP
    4. Indiquez <port site Web> dans le champ Port TCP
    5. Cliquez sur OK
    6. Redémarrez IIS et testez qu'il fonctionne bien
  2. Si vous avez installé une solution à base du serveur Apache :
    1. Editez le fichier de configuration d'Apache (généralement appelé httpd.conf)
    2. Dans ce fichier, localisez la ligne qui commence par "Listen ..."
    3. Modifiez cette ligne pour supprimer l'éventuelle adresse IP qui s'y trouve et indiquer votre <port site Web>. Exemple :
       
      Sélectionnez
      Listen 127.0.0.1:80 => Listen <port site Web>
      

      Pour les utilisateurs de Linux, si <port site Web> est inférieur à 1024, il est conseillé d'indiquer ici un autre numéro de port supérieur à 1024 et d'indiquer ce numéro lors de la configuration du routeur. Ceci permet d'éviter d'avoir à démarrer Apache avec l'utilisateur root.

    4. Localisez la ligne qui commence par "Port ..."
    5. Indiquez alors <port site Web> :
       
      Sélectionnez
      Port <port site Web>
      
    6. Cherchez les lignes qui commencent par "Allow from ...". Si vous en trouver et que la ligne contient 127.0.0.1 ou <IP PC>, ajoutez un # au début de la ligne :
       
      Sélectionnez
      #    Allow from 127.0.0.1
      
      Regardez alors les quelques lignes se trouvant immédiatement au-dessus et au-dessous : si vous trouvez une ligne "Order ..." et/ou "Deny from all", mettez également un # devant. Exemple complet :
       
      Sélectionnez
      #    Order Deny,Allow
      #    Deny from all
      #    Allow from 127.0.0.1
      
    7. Sauvegardez le fichier
    8. Redémarrez Apache et vérifiez qu'il fonctionne bien

Ensuite, on configure le nom du serveur :

  1. Si vous utilisez IIS :
    1. Ouvrez la console d'administration d'IIS
    2. Allez dans les propriétés du site par défaut
    3. Dans l'onglet Site Web, cliquez sur le bouton Avancé... figurant à côté du champ Adresse IP
    4. Sélectionnez la première ligne "Par défaut" et cliquez sur le bouton Editer...
    5. Dans le champ Valeur de l'en-tête Host, indiquez le nom (ou l'adresse IP) qui sera utilisé pour accéder à votre site et qui figurera dans les URL
    6. Cliquez sur OK pour valider votre modification
    7. Redémarrez IIS et testez
  2. Si vous avez installé une solution à base du serveur Apache :
    1. Editez de nouveau le fichier de configuration d'Apache (généralement appelé httpd.conf)
    2. Dans ce fichier, localisez la ligne qui commence par "ServerName ..."
    3. Modifiez cette ligne pour indiquer le nom (ou l'adresse IP) qui sera utilisé pour accéder à votre site et qui figurera dans les URL. Par exemple :
       
      Sélectionnez
      ServerName www.monsite.com
      
    4. Sauvegardez le fichier
    5. Redémarrez Apache et vérifiez qu'il fonctionne bien

VI. Configurer le routeur ADSL

Pour accéder à votre site Web, les visiteurs passeront par votre routeur ADSL. Il faut donc configurer ce dernier pour qu'il renvoie les requêtes HTTP vers votre site Web. Pour cela, ouvrez la console d'administration de votre routeur ADSL et allez dans la section de configuration avancée / renvoi des ports. Configurez alors le routeur pour qu'il renvoie tout le trafic TCP (UDP est inutile) arrivant sur le port <port site Web> sur <IP PC> (= le PC sur lequel vous avez installé votre serveur Web) et sur le port que vous avez indiqué à la directive Listen d'Apache ou le champ Port de la console d'IIS. Validez la configuration et redémarrez votre routeur.

VII. Tester

Moment critique : testez l'accès depuis l'extérieur !! Testez d'abord l'accès depuis chez vous : ouvrez un navigateur Web et tapez l'URL http://www.monsite.com:<port site Web>/ (si <port site Web> = 80, pas la peine de l'indiquer : http://www.monsite.com/). Si tout fonctionne correctement, allez chez une connaissance qui a un accès au Web (ou demandez-lui) et testez avec la même URL. Si vous avez un problème, consultez .

VIII. Troubleshooting

En cas de problème avec cette procédure, vous pouvez poster un message sur le forum Serveurs en détaillant autant que possible le problème rencontré et l'étape à laquelle vous êtes rendu.

VIII-A. Ca marche depuis l'extérieur mais pas en interne

Il se peut que l'accès à votre site fonctionne correctement depuis l'extérieur mais pas depuis votre réseau interne (par exemple, vous tombez sur la page d'administration de votre routeur ou bien il ne se passe rien du tout). Techniquement, il y a de fortes chances qu'il y ait un problème de routage. C'est assez délicat à régler. Le contournement le plus simple consiste à modifier le fichier etc/hosts de chaque machine du réseau local (sous Linux, il s'agit du fichier /etc/hosts ; sous Windows, il s'agit du fichier C:\WINDOWS\system32\drivers\etc\hosts) pour faire correspondre directement le nom de votre site avec l'adresse IP locale du serveur :

 
Sélectionnez
<IP PC>        <www.monsite.com>

Exemple :

 
Sélectionnez
192.168.0.2        www.monsite.com