Voici un tutoriel expliquant de A à Z comment installer votre propre serveur WEB accessible depuis internet afin d'héberger vous-même votre site/blog.

La première étape consiste naturellement à trouver sur quelle machine vous allez installer votre serveur! Sachez qu'une grosse puissance n'est pas nécessaire, au contraire. Beaucoup d'amateurs réalisent des serveurs avec du vieux matériel, par exemple du Pentium II...
Néanmoins l'inconvénient de ces machines est qu'elles consomment beaucoup d'électricité, donc elles sont idéales pour faire des essais mais si vous envisagez de les faire fonctionner 24h/24 il faudra investir dans du matériel plus économique. Je pense par exemple à un nettop, et on peut pousser le vice jusqu'a une carte mini-ITX comme les Alix1.d à base d'AMD Geode (ce que j'utilise) ou pourquoi pas du pico-ITX avec la Beagle Board (en ARM).
Actuellement la version stable est la 5.0, appelée Lenny. Mais la prochaine, Squeeze, est déjà bien avancée et vous pouvez quasiment l'utiliser sans risques. Néanmoins il y a parfois des bugs à l'installation (c'est encore en testing) et dans mon cas il fut impossible de l'installer sur l'Alix1.d, le lecteur CD (en USB) étant mal reconnu. Je me suis donc rabattu sur Lenny.
Procédez donc à l'installation du système minimal, en configurant le partitionnement comme vous le sentez (avec de la swap quand même).
Si vous passez par un routeur comme par exemple une freebox, votre machine n'accédera pas à internet directement. Cela pose problèmes pour réaliser un serveur. La solution consiste soit à désactiver le mode routeur, et dans ce cas vous récupérez l'IP publique sur votre machine, ou alors vous la placez en DMZ.
Pour cela tapez ifconfig sur votre machine pour avoir l'adresse MAC de votre carte réseau, puis dans votre routeur indiquez à cette adresse qu'elle doit toujours avoir la même IP. Puis définissez cette IP en DMZ. Voici par exemple ce que j'ai fait sur ma freebox:

Et voici les branchements réseau que j'utilise chez moi:

La machine "support" est celle que j'utilise pour paramétrer le serveur (via SSH) ou simplement pour rechercher de la doc et faire les tests.
Lorsque ma carte réseau est détecté par la freebox (son adresse MAC est spécifiée en bas), on lui attribue l'adresse 192.168.0.16 et comme par hasard, au dessus, j'ai indiqué que cette IP doit être en DMZ :)
Un véritable serveur s'administre à distance, sans besoin d'avoir un écran ou clavier connecté. Nous pouvons utiliser SSH pour cela.
Mais pour éviter que les attaques et agressions soient "trop simples" nous pouvons changer le port SSH, qui est 22 par défaut:
Puis au début vous trouverez une ligne "Port 22" il suffit de remplacer cette valeur par une que vous choisissez, par exemple 3444 (en espérant qu'il ne soit pas déjà pris). Relancez SSH en tapant:
Pour vous connecter en SSH à distance, sur votre machine "SUPPORT" entrez la commande "ssh" suivie de l'utilisateur@adresseip puis de -p PORT. Dans notre cas la commande est:
Il se peut que cela ne fonctionne pas à cause du firewall. Mais nous verrons plus loin comment le configurer.
La référence est Apache mais il existe une alternative plus légère et plus simple à utiliser: lighttpd.
Au passage installez aussi les paquets php5:
La librairie GD permet de traiter des images, créer des miniatures notamment. Activez le support du cgi dans lighttpd puis relancez-le:
Si quelqu'un entre votre adresse IP publique dans son navigateur, il doit arriver sur une page générée par lighttpd. Dans le cas contraire il aura une page d'erreur.
Si vous entrez l'ip publique dans la navigateur de votre machine "SUPPORT", cela ne fonctionnera pas il faudra entrer l'ip locale (192.168.0.16). Mais si un de vos amis sur Jabber entre votre ip publique il devrait voir votre serveur. Si cela ne fonctionne pas, pas de panique nous allons paramétrer le firewall
Vos pages web devront être mises dans /var/www ou alors dans votre répertoire personnel puis public_html (voir cette page). Le propriétaire des fichiers doit être "www-data", ce qui se fait de la façon suivante:
Puis les permissions en 750:
Vous pouvez maintenant afficher vos propres pages grâce à lighttpd.
Sur debian squeeze et Ubuntu il est possible d'utiliser ufw qui est une interface à iptables. Mais sur lenny ufw n'est pas présent nous utiliserons donc le bon vieux iptables.
iptables fonctionne sous forme de commandes à entrer dans le bash et elles sont "oubliées" à chaque redémarrage. Il faut donc créer un script pour les relancer à chaque fois. Créons un fichier "iptables":
Puis recopiez les lignes suivantes:
Bien sûr adaptez ce script selon votre configuration, vérifiez que votre interface réseau s'appelle bien "eth0" et que vous avez bien mis le port "3444" pour OpenSSH. Rendez le script exécutable:
Puis lancez-le pour tester:
Vérifiez que vous pouvez vous connecter en SSH et accéder à votre serveur WEB. Si c'est bon, vous pouvez ajouter ce script aux services à lancer au démarrage:
Et voilà, votre parefeu est maintenant configuré!
Actuellement le seul moyen d'accéder à votre machine à distance, c'est de taper son adresse IP ce qui n'est pas très pratique surtout si elle est dynamique. Le site DynDNS vous permet de souscrire gratuitement et rapidement à un nom de domaine. Choisissez-en un. Sur notre serveur nous allons ensuite utiliser le logiciel ddclient qui se connectera régulièrement à dyndns pour lui indiquer votre nouvelle adresse ip, et ce dernier pourra ensuite rediriger correctement votre nom de domaine.
Répondez aux quelques questions posées. Si vous ignorez certaines réponses, ce n'est pas grave car nous allons affiner et corriger le fichier de configuration.
Et faites-le ressembler à ça:
Ensuite nous allons demander à ddclient de fonctionner en tant que daemon, qui se lancera au démarrage:
Et modifiez run_daemon="false" par "run_daemon="true"
Lancez-le ensuite:
Désormais si un de vos contacts Jabber entre l'adresse que vous avez créé, il sera redirigé vers votre serveur!
Mais sur votre ordinateur SUPPORT cela ne marchera pas. Pour y remédier il y a une astuce:
Et en dessous les paramètres se référant à 127.0.0.1 ajoutez:
En modifiant bien entendu l'ip que j'ai mis par celle de votre serveur sur le réseau local. Désormais, dans la machine SUPPORT en entrant votre URL vous serez correctement redirigé sur votre serveur.
Vous pouvez installer mysql-server si vous voulez disposer d'une base de données pour faire fonctionner des CMS ou des moteurs de blog comme dotclear ou wordpress. Mais attention une BDD consomme pas mal de ressources. Des CMS comme pluxml ne demandent pas de base de données.
On pourra aussi ajouter un serveur FTP pour charger vos pages web à distance, ou un serveur NFS en local. Cela fera peut-être l'objet d'un nouvel article.
8 commentaires
Bon boulot!
Bon, déjà, il serait difficile d'utiliser une beagleboard en tant que serveur car elle n'intègre pas de carte réseau. On peut surement en ajouter une, mais de base non.
Ensuit, pluxml, dotclear et wordpress ne sont pas des CMS mais des moteurs de blogs. Pour donner l'exemple de vrai CMS: Drupal, ou PlumeCMS ou Joomla!. Un CMS gère le contenu d'un site web alors qu'un moteur de blog ne gère que celui... d'un blog.
@Etenil : Merci, c'est rectifié
Franchement je ne suis pas super convaincu par le firewall ...
Tu laisses tout sortir !
Et puis la dernière ligne ne sert à rien puisque la politique par défaut est déjà à DROP.
Si tu as une configuration différente à proposer, je suis prenneur.
Ce n'est pas pour dénigrer ! Au contraire, je trouve tout l'article et le blog en général très intéressant (je suis maintenant le flux RSS). Mais évidement je ne réagis que sur les points qui me paraissent incomplets donc ça fait un peu le mec qui ne fait que des critiques.
Je ne sais pas trop comment partager ces fichiers. Ça te vas si je met ça sur mon serveur et que je donne le lien ? Tu en fera ensuite ce que tu veux.
Le mien est la : http://static.guillaumeg.eu/rat/opt/firewall/firewall-6.3
Mais il n'est pas super non plus.
Je t'en rajoute un autre demain. Il est bien plus complet et permet vraiment d'aller loin. Ce que je trouve important pour un serveur en DMZ.
Merci.
Entre temps j'ai fait un tour sur ton blog, j'ai voulu mettre un commentaire sur l'article où tu présente ta configuration de parefeu, mais je n'ai pas vraiment compris comment fonctionne l'ajout sur drupal :s
Ouais, c'est de ma faute, c'est un peu mal configuré.
En même temps, drupal veut toujours envoyer des mails de partout alors que mon pare-feu les bloque(s?) donc forcément, ça marche pas terrible.
Hésite pas à m'envoyer un mail si tu vois des trucs louches dans mon pare-feu (ou juste pour faire un petit coucou :p)
Sinon, le firewall que je trouve vraiment bien fait vient d'Adrien Pujol. Le voici : http://static.guillaumeg.eu/firewall.sh
J'ai réussi à mettre un commentaire sur mon drupal. Il faut l'écrire puis faire "aperçu". Ensuite, on voit un bel aperçu et on peut faire "envoyer".
Ça devrait marcher avec toi aussi.