S’héberger soi-même
Faire un site web, c’est bien. Le rendre disponible au public, c’est mieux. Parfois, on peut avoir besoin de fonctionnalités assez avancées, de droits quasi illimités dans l’administration du serveur. Généralement ces fonctionnalités et droits ne sont accessibles que si l’on prend un serveur dédié, ce qui est généralement assez cher.
Il reste donc la solution de s’héberger soi-même. C’est tout à fait possible et vous en avez la preuve sous les yeux. Le pc qui sert la page que vous lisez se trouve à mes pieds.
Je vais ici expliquer toutes les phases, tous les éléments nécessaires, les logiciels à utiliser… Je vais citer mon cas précis, indiquer ce que MOI j’utilise, mais essayer de donner des pistes sur les alternatives possibles. Je travaille principalement sous Linux, mais je donnerai aussi des infos sur le monde Windows que j’ai quitté il y a seulement quelques mois.
Ma configuration
Mon site web est hébergé sur un serveur sous Linux Gentoo. J’ai également un PC sous Windows et un PC portable sous Gentoo. Les trois PC sont connectés ensemble via un modem-routeur qui gère à la fois Ethernet et wifi. Ce modem-routeur se connecte à mon ISP qui me fournit des IP dynamiques sur des plages très variées.
Le but
Le but est de monter un système qui me permette de faire tourner un serveur web, d’avoir tous les droits sur celui-ci, et d’utiliser la connectivité de mon abonnement ADSL pour faire tourner l’ensemble, sans autres frais concernant l’hébergement. Je voudrais aussi pouvoir faire tourner en fait plusieurs sites web différents, et que chacun d’eux soit accessible universellement via un nom de domaine.
Les pièces du puzzle
La première pièce est bien entendu le serveur. J’y ai installé Linux Gentoo comme système d’exploitation. Je l’ai choisi pour plusieurs raisons. Premièrement parce qu’il est un Linux basé sur les sources plutot que sur des binaires. Ce qui permet d’avoir des logiciels optimisés pour mon matériel et en particulier pour mon processeur. Et quand on utilise une petite machine, ancienne, ce n’est pas négligeable. La seconde raison est que lors de l’installation de Gentoo, l’installation est minimale. Il n’installe automatiquement que le strict nécessaire, et rien de superflu. A chacun de choisir ce qu’il veut installer.
La pièce suivante est mon modem-routeur. J’ai pas vraiment eu de choix à faire, mon ISP m’en a fourni un, et je dois utiliser celui là pour la simple raison que j’ai la télé via ce même modem. Rien de particulier, c’est un Philips, il a 4 ports RJ-45 et il prend en charge le Wi-Fi… Il se configure via une interface web accessible uniquement depuis mon réseau local.
Une autre pièce importante, c’est le PC qui me sert à gérer le serveur. En effet, je n’ai ni écran, ni souris, ni clavier branchés sur cet ordinateur là . Je fais tout ce qu’il y a à faire via SSH… Je me sers aussi de ce pc pour accéder à mon site, et écrire les articles que j’y publie. Là , j’ai en fait deux PC. L’un sous Gentoo, sur lequel j’ai posé Gnome, et l’autre sous Vista.
Enuite il y a le nom de domaine. Je l’a acheté depuis quelques années chez Dotster.com pour un prix “normal”. Pas vraiment d’argent à gagner dans le fait de fouiller le net pour trouver le meilleur prix. A moins de vouloir enregistrer des dizaines de domaines, le premier venu sera le bon…
Et enfin la dernière pièce, qui a mis pas mal de temps à apparaître sur le net et qui malgré tout es indispensable, le serveur DNS dynamique. Mon choix s’est porté sur DynDNS.org. A l’époque, j’avais comparé pas mal de services similaires. En termes de qualité, tous sont à peu près équivalents. Ce qui m’a plu chez eux est que leur option tarifaire propose un service “à vie”. J’ai déboursé 25$ il y a 5 ans, et depuis, je n’ai plus payé un centime…
Les étapes
Les deux premières étapes vous feront sortir le portefeuilles. Comptez un peu moins de 50$. Au taux actuel du dollar face à l’euro, ca fait pas grand chose…
Il vous faudra donc d’abord acheter le nom de domaine, et ensuite le service de DNS dynamique. Le service de DNS dynamique vous donnera une série de noms de domaines à utiliser. Ces domaines hébergent leurs “Name Servers”, et généralement sont ns1.example.com, ns2.example.com etc. Vous devrez renseigner ces adresses au vendeur du nom de domaine, afin que celui ci affecte le DNS au domaine que vous avez acheté. Même dans le cas de services automatisés, cela prend généralement quelques jours…
Une fois que votre nom de domaine aura été paramétré, vous pourrez commencer à paramétrer les hostnames dans votre page d’administration chez le provider de DNS dynamiques. Le plus simple pour commencer est de mettre un champs de type A pour DOMAINE.COM et un champs de type CNAME pour chaque sous-domaine (hôte) que vous souhaitez avoir… Par exemple, vous pourriez faire un CNAME de www.domain.com vers domain.com…
J’espère qu’entre-temps, vous avez pris la peine d’installer votre serveur et d’y mettre Apache… Si ce n’est fait, commencez par installer Gentoo en suivant le “howto“, et ensuite suivez cet autre Howto. Ce que vous allez installer est communément surnommé un “LAMP”, pour les initiales de “Linux”, “Apache”, “MySQL” et enfin au choix “Perl”, “PHP” ou “Python”. Cette phase m’a pris un samedi entier, et c’était ma première installation d’un Linux depuis environs 8 ans. Donc on ne peut pas dire que ce soit particulièrement compliqué…
Une fois Apache installé, il faudra le configurer. Je vous conseille de faire une page toute simple sur le site “par défaut”, et ensuite de faire usage des VirtualHosts pour chaque site réel, en particulier le “www”.
Ensuite vient le tour de l’utilitaire de mise à jour de votre IP. Rapelez-vous que votre IP change de temps en temps au gré des déconnexions de votre routeur. Et bien entendu, le service DNS ne peut pas deviner votre nouvelle adresse IP… Vous allez donc devoir installer un petit logiciel qui va de temps en temps aller vérifier quelle est votre adresse IP, et au cas où elle a changé depuis la dernière vérification, le client va aller annoncer cette nouvelle IP à votre service DNS dynamique. Généralement, chaque service vous permettra de télécharger divers clients pour tous les systèmes d’exploitation. Le mien se nomme DDClient, et je ne pourrai pas vous aider si vous en utilisez un autre. Le logiciel doit être assez simple et vous ne devriez pas avoir trop de mal à l’installer de façon résidente sur votre serveur.
Il faut ensuite configurer votre routeur. En effet, celui-ci recevra des requètes de connexion sur le port 80, mais ne saura pas les gérer. Vous devrez donc indiquer de rediriger ces requètes vers votre serveur. Malheureusement, chaque modèle de routeur a ses propres configurations, et il m’est donc impossible de vous indiquer précisément la marche à suivre.
Reste à tester… Faites une petite page vite fait, tapez l’adresse de votre site dans la barre d’adresse de votre navigateur préféré, et voyez le résultat. Rien. Et oui, le monde entier peut savoir que “www.domaine.com” est sur votre serveur, mais vous-même, vous ne le savez pas! Sur le serveur, éditez /etc/hosts. A la fin de ce fichier, ajoutez deux lignes comme celles-cis:
1 2 | 127.0.0.1 domain.com 127.0.0.1 www.domain.com |
Testez à nouveau depuis votre serveur, et ça devrait marcher…
Ensuite, testez depuis un autre ordinateur de votre réseau… Encore une fois, ça ne marche pas… Normal… Votre pc va questionner un serveur DNS qui lui donnera vore adresse IP. Mais vous ne pouvez pas accéder a votre propre réseau via cette adresse, de l’intérieur. Donc… Sur le serveur, tapez “ifconfig” pour connaitre son IP réseau, et sur l’autre ordinateur, éditez le même fichier “hosts”, mais en remplaçant 127.0.0.1 par l’ip donnée par le serveur…
Pour être sûr que tout marche, demandez à un ami de venir voir votre site… S’il voit “quelquechose”, il verra certainement la même chose que vous…
Pour toutes questions, n’hésitez pas à les poser en commentaire, que vos questions et mes réponses soient visibles par tous!
![[del.icio.us]](http://www.thanerd.net/wp-content/plugins/bookmarkify/delicious.png)
![[Digg]](http://www.thanerd.net/wp-content/plugins/bookmarkify/digg.png)
![[Facebook]](http://www.thanerd.net/wp-content/plugins/bookmarkify/facebook.png)
![[Furl]](http://www.thanerd.net/wp-content/plugins/bookmarkify/furl.png)
![[Google]](http://www.thanerd.net/wp-content/plugins/bookmarkify/google.png)
![[MySpace]](http://www.thanerd.net/wp-content/plugins/bookmarkify/myspace.png)
![[Shoutwire]](http://www.thanerd.net/wp-content/plugins/bookmarkify/shoutwire.png)
![[StumbleUpon]](http://www.thanerd.net/wp-content/plugins/bookmarkify/stumbleupon.png)
![[Technorati]](http://www.thanerd.net/wp-content/plugins/bookmarkify/technorati.png)
![[Windows Live]](http://www.thanerd.net/wp-content/plugins/bookmarkify/windowslive.png)
![[Email]](http://www.thanerd.net/wp-content/plugins/bookmarkify/email.png)






Bonjour,
Ton article est intéressant mais j’aimerais avoir quelques précisions.
J’ai mon serveur web (apache avec 2 virtualhosts), mon serveur DNS (puisque j’ai installé Active Directory pour mon réseau perso), et un PC portable mais ce n’est pas important ! Le tout est derrière une FreeBox (=mon routeur).
J’ai mon nom de domaine chez Gandi.
Voilà pour poser le décors.
Mes virtualhosts sont fonctionnels mais je ne sais pas comment faire pour que mes sous-domaines (blog.domaine.com et site.domaine.com) pointent sur mes virtualhosts.
Tout ce qui arrive sur le port 80 de ma box est envoyé à l’IP de mon serveur web (port 80) et j’ai modifié le fichier /etc/hosts de mon serveur comme ça :
blog.domaine.com 192.168.0.1
site.domaine.com 192.168.0.1
(192.168.0.1 étant l’adresse IP de mon serveur web)
Je n’ai pas de compte dyndns ou autre puisque j’ai une IP publique fixe sur ma box (je me trompe ?)
Mes questions sont les suivantes :
Dois-je modifier les DNS de Gandi pour mettre l’adresse de mon serveur DNS (son IP privée ou l’ip publique de ma box à laquelle je dirais de rediriger ce qui arrive sur le port 53) ?
Comment dois-je modifier les zones DNS ? (si il le faut)
Et on me parle de “glue records” aussi … pas moyen de savoir ce que c’est ^^
Je galère depuis un petit moment, alors je serais très heureux que quelqu’un puisse m’expliquer les quelques bidouilles que je dois faire. Il n’y a pas grand chose à compléter, quelques champs à compléter tout au plus mais je ne sais pas comment les remplir. Même si tu n’es pas chez Gandi, et que tu connais la procédure pour OVH ou 1&1 par exemple, donnes la moi, ça me sera quand même utile.
Elie.
Première chose, concernant le pointage des noms d’hôte vers les virtualhosts associés, tu dois éditer la configuration Apache. Ca doit ressembler à quelquechose comme ceci:
2
3
4
5
6
<VirtualHost *:80><br/>
ServerName blog.domaine.com<br/>
DocumentRoot /var/www/blog<br/>
# Suite des configurations ici<br/>
</VirtualHost>
C’est comme ça qu’Apache saura quel site afficher selon le nom d’hôte demandé par le visiteur.
Pour ce qui est de ton DNS, la norme impose obligatoirement d’avoir au minimum 2 serveurs DNS. Le principe est le suivant:
Là où tu as acheté ton nom de domaine, tu dois paramétrer les “DNS Masters”, donc les IP des deux serveurs DNS qui gèrent les entrées de domaine.com. Ensuite, ce que je te conseille, si tu héberge tous les sites sur le même serveur, c’est d’avoir une entrée de type A pour domaine.com, avec l’adresse IP “publique” de ton serveur, et une succession de champs CNAME qui pointent vers domaine.com:
CNAME: blog.domain.com -> domain.com
CNAME: site.domain.com -> domain.com
CNAME: http://www.domain.com -> domain.com
Tu peux même faire un CNAME avec *.domain.com si tu veux…
En fin de compte, je ne pense pas que ton serveur à IP fixe suffise à utiliser ton DNS “publiquement”. Mais la plupart des services qui vendent des noms de domaine peuvent te vendre un service DNS.
Merci pour ta réponse ! Ton aide m’est précieuse parce que je galèrais un peu !
J’ai modifié le paramétrage des DNS comme tu m’as dit ;-) Donc, dans 2 jours normalement, je te contacts pour te dire si ça a marché !
Pour les virtualhosts, j’ai suivi ce tutoriel (la dernière méthode tout en bas de la page)
http://doc.ubuntu-fr.org/tutoriel/virtualhosts_avec_apache2
Et je n’ai pas exactement la même ligne ” NameVirtualHost *:80 ” , moi c’est plutôt comme ça : ” NameVirtualHost 192.168.0.3:80 ” (l’ip est l’ip privée de mon serveur). Ca n’a peut être pas d’importance.
Merci pour ton aide en tout cas.
Elie.
Grâce à toi, mon site est visible sur internet. Cependant, j’ai un petit soucis, je n’arrive pas à voir mon site internet depuis mon réseau local ! Ce qui est ennuyeux quand on veut coder son site web et voir le résultat en ligne directement ! Est ce que tu as une idée ?
Merci pour tout !