Exécutez votre propre serveur pour le plaisir (et zéro profit)

Il semble qu’il y ait un service pour tout, mais parfois vous apprenez simplement plus en le faisant vous-même. Si vous n’avez pas apprécié les plaisirs quelque peu anachroniques de gérer votre propre serveur et d’héberger votre propre site Web, eh bien, aujourd’hui, vous avez de la chance !

Oui, nous allons prendre un vieil ordinateur quelconque et le transformer en un serveur Web pour héberger tous vos projets à la maison. Vous pouvez tout aussi bien utiliser un Raspberry Pi – même un Zero W fonctionnerait – ou vraiment tout ce qui fonctionnera sous Linux, mais sachez que toutes les plates-formes informatiques ne sont pas créées de la même manière, comme nous le verrons bientôt.

Oui, nous allons lancer le nôtre dans cette série d’articles. Il y a beaucoup de pièces mobiles, nous allons donc devoir couvrir beaucoup de matériel. Ne vous inquiétez pas, ce n’est pas incroyablement compliqué. Et vous ne le faites pas avoir faire les choses comme on dit. Il y a de la flexibilité à chaque tournant et vous êtes encouragé à tracer votre propre chemin. Cela fait partie du plaisir !

Remarque : Pour gagner de la place, nous allons ignorer certains des détails les plus élémentaires, tels que l’installation de Linux, et nous concentrer sur ceux qui ont le plus d’impact sur le projet. Cet article donne un aperçu de haut niveau de ce qu’il faut pour héberger le site Web de votre projet à la maison. Il passe intentionnellement sous silence les détails les plus profonds et formule certaines hypothèses nécessaires.

Nous savons tous ce qu’est un site Web. Vous en regardez un. Comment tu construire un site Web? Vous avez probablement une idée. Certains HTML sont présentés au monde par une sorte de logiciel de serveur Web. Mais comment le serveur Web sait-il quels fichiers HTML afficher ? Et comment les gens passent-ils d’un nom qu’ils peuvent taper dans leur navigateur à votre serveur Web ? Comment les adresses IP sont-elles impliquées, et est-ce quelque chose qui peut être fait en utilisant votre connexion Internet à domicile ?

Parlons d’abord d’un serveur Web. C’est juste un ordinateur qui a un logiciel pour servir des sites Web. Le logiciel serveur le plus courant s’appelle Apache, et il est compatible avec à peu près n’importe quel type de site Web que vous souhaitez exécuter. Il gère la tâche d’association des demandes de site Web avec la collection de fichiers qui composent un site Web.

Un serveur Web typique monté en rack avec l’aimable autorisation de Wikipedia CC BY 2.5

Pour exécuter Apache, nous avons besoin d’un ordinateur et d’un système d’exploitation. Nous allons prendre un vieil ordinateur portable et y installer Linux Mint. Linux Mint est un descendant d’Ubuntu, donc la plupart des tutoriels Ubuntu fonctionneront bien avec lui.

Pour le matériel, nous utilisons un ordinateur portable de l’ère Vista avec un processeur AMD Turion double cœur 64 bits, 2 Go de mémoire et un ancien disque dur de 120 Go. Oui, nous devrions vraiment dépenser quelques dollars et passer au SSD. Mais ce n’est qu’un projet organisé pour le plaisir, et il n’est pas nécessaire de dépenser de l’argent pour une simple expérience. Bien sûr, vous n’êtes pas obligé d’utiliser un vieil ordinateur portable. Un ordinateur de bureau fonctionnerait bien, ou un petit facteur de forme, vraiment n’importe quoi.

Si vous êtes comme moi et que vous voulez que le serveur soit rangé sur une étagère, gardez à l’esprit que vous aurez besoin d’un moniteur et d’un clavier pour le diagnostiquer en cas de problème. Un ordinateur portable a l’avantage d’avoir un écran et un clavier intégrés ! Cela peut être très pratique lorsqu’il est hors ligne et que vous ne pouvez pas comprendre pourquoi.

Remarque importante concernant l’ordinateur que vous choisissez : il doit avoir un système d’exploitation pris en charge. Dans le monde x86, cela signifie un processeur 64 bits. La plupart des distributions Linux modernes ne prennent pas bien en charge les processeurs 32 bits, voire pas du tout. Sans système d’exploitation pris en charge, votre projet manquera de logiciel actuel. Cela limitera les fonctionnalités, mais aussi la sécurité. Vous n’exécuteriez pas Windows XP sur Internet, alors ne vous contentez pas d’anciennes versions de Linux.

Première étape : se connecter à Internet

Un serveur mérite une connexion filaire lorsque cela est possible, mais le sans fil convient aussi tant qu’il est fiable. Notre ancien ordinateur portable n’a pas d’adaptateur Wi-Fi, il est donc câblé à notre modem/routeur/téléphone fourni par notre FAI. Nous vous recommandons également de configurer l’ordinateur portable pour une adresse IP statique afin que son adresse IP sur votre réseau ne change jamais. Vous pouvez le faire dans le routeur ou dans la configuration Ethernet sous Linux.

Configuration du serveur

Les évents sont sur la gauche, et il est donc ouvert sur le côté droit à côté du routeur fourni par le FAI

Le prochain sur notre liste est l’installation de certains outils de base pour Linux tels que l’éditeur de texte nano pour la ligne de commande et le logiciel serveur SSH (Secure Shell). SSH vous permettra de vous connecter au serveur à partir d’un autre ordinateur, et une fois que SSH est installé, vous pouvez ranger l’ordinateur portable sur l’étagère à côté de votre routeur et l’oublier. Ne laissez pas l’ordinateur portable fermé, car il a besoin d’une ventilation, alors laissez au moins l’écran partiellement ouvert. Pour économiser de l’espace, placez l’ordinateur portable sur le côté avec les orifices d’aération vers le haut.

Pour vous connecter au serveur, vous aurez besoin d’un programme de terminal. La plupart des systèmes d’exploitation sont livrés avec un programme SSH Terminal tel que Windows Terminal ou le Terminal sous Mac OS. J’utilise MobaXterm sous Windows depuis de nombreuses années et je le trouve beaucoup plus pratique. Certaines personnes préfèrent les programmes terminaux SSH rudimentaires tels que PuTTY. Utilisez ce qui fonctionne pour vous et connectez-vous à votre serveur en vous connectant en SSH à son adresse IP.

Ensuite, vous devrez installer le logiciel du serveur Web Apache. Il existe de nombreux tutoriels en ligne pour faire cela, mais attention : Beaucoup d’entre eux vous demanderont de faire l’installation de base d’Apache, MariaDB et PHP, puis d’héberger vos fichiers dans /var/www/html en tant qu’utilisateur racine. Ne faites pas cela! Vous devez créer ce qu’on appelle un hôte virtuel Apache et un nouvel utilisateur système auquel l’associer.

Maître de votre domaine

Enfin, vous avez besoin d’un nom de domaine et d’un moyen de l’associer à votre serveur Linux. Il existe un grand nombre de bureaux d’enregistrement de domaine parmi lesquels choisir, et vous pouvez obtenir un nom de domaine .com pour moins de 10 USD/an. Les registraires courants approuvés par les geeks sont Cloudflare ou Namecheap. Ce ne sont pas des avenants, juste un coup de pouce dans la bonne direction si vous ne l’avez jamais fait auparavant. (N’hésitez pas à laisser vos avis dans les commentaires.)

Pour associer ce domaine à votre serveur, vous avez besoin des services d’un fournisseur DNS (Domain Name System). Le DNS est ce qui mappe votre nom de domaine à une adresse IP via ce qu’on appelle un enregistrement d’adresse (A).

C’est une adresse IP dynamique que vous avez là, monsieur

De nombreux bureaux d’enregistrement de domaine fournissent des services DNS gratuits, mais ils ne sont pas optimisés pour l’hébergement à domicile. Pourquoi pas? Si votre serveur se trouvait quelque part dans un centre de données, une adresse IP permanente lui serait attribuée. Mais parce que vous l’hébergez chez vous, l’adresse IP publique de votre connexion réseau changera de temps en temps et votre site Web sera déconnecté jusqu’à ce que l’adresse IP soit mise à jour dans le monde entier. Vous avez besoin d’un fournisseur DNS capable de détecter le changement, puis de mettre à jour l’enregistrement A de votre domaine en conséquence.

Il existe de nombreux fournisseurs de tels services et il est même possible de créer le vôtre. Mais pour plus de simplicité, nous allons recommander d’exécuter DNS sur Cloudflare. Cloudflare fournit gratuitement un réseau de diffusion de contenu (CDN) qui ajoute une couche entre The World et votre serveur. C’est pratique car l’adresse IP de Cloudflare ne change jamais. Lorsque votre serveur obtient une nouvelle adresse IP, il peut la communiquer à Cloudflare et il acheminera tout le trafic en conséquence sans avoir à mettre à jour le DNS dans le monde entier. C’est un énorme avantage. Ils mettent également votre site Web en cache dans leur CDN afin que lorsque votre site Web arrive en première page de Hackaday, il puisse survivre à l’assaut du trafic !

Cacher votre adresse IP publique au monde est une autre raison d’utiliser Cloudflare. Les seules adresses IP exposées au monde appartiendront à Cloudflare, et elles transmettront les requêtes Web à votre serveur tout en empêchant les méchants d’entrer. Cela donne une autre couche de protection à votre serveur domestique et à votre réseau domestique en général. Et la meilleure partie est que c’est complètement gratuit.

Leur excellente documentation décrit comment configurer un DNS dynamique avec leur service.

Du navigateur Web au serveur Web et inversement

Une fois que vous avez configuré DNS et votre serveur Web, vous devez indiquer à votre routeur domestique d’accepter le trafic sur les ports 80 et 443 (les ports pour le trafic http et https) et de les acheminer vers votre ordinateur portable Linux. Certains routeurs vous permettront de configurer une DMZ qui exposera directement l’ensemble du serveur à Internet, mais cela n’est ni recommandé ni obligatoire. Vous voudrez également configurer le pare-feu sur votre serveur pour accepter le trafic sur les ports 80 et 443. Et puisque nous avons 443 ouvert, chiffrons notre trafic HTTP, d’accord ?

Qu’il y ait un avantage technique ou non est discutable, mais votre site Web aura besoin d’un certificat SSL. Si rien d’autre, cela rendra votre site Web plus acceptable pour les navigateurs modernes qui affichent des avertissements s’il n’y a pas de certificat SSL présent. Dans le passé, vous auriez besoin d’une adresse IP statique et de dépenser une bonne somme d’argent pour le certificat SSL. Aucune de ces choses n’est le cas maintenant. Le certificat SSL peut être fourni par Let’s Encrypt, un fournisseur de certificat SSL/TLS gratuit qui utilise un logiciel appelé Certbot pour obtenir le certificat et même configurer Apache pour vous. Nappe!

Que pouvez-vous faire d’autre avec votre nouveau serveur domestique ? Les possibilités sont presque infinies! Même si vous disposez d’une connexion Internet rapide, vous pouvez utiliser votre nouveau serveur pour accélérer encore plus les choses. L’exécution locale de votre propre serveur DNS de résolution signifie que vous pouvez mettre en cache les recherches DNS sur votre propre réseau, ce qui accélère la résolution DNS. Cela peut donner une sensation plus vive à votre expérience de navigation sur le Web. Vous pouvez également utiliser le logiciel Pi-Hole pour bloquer tous les annonceurs afin que vos appareils n’aient pas besoin d’un bloqueur de publicités séparé.

Un serveur domestique constitue également un excellent point de collecte de données pour vos projets IOT et vous offre un terrain de jeu pour l’expérimentation. De nombreux pirates utilisent des serveurs construits à domicile, et certains d’entre eux sont même allés jusqu’à faire fonctionner leur serveur uniquement à l’énergie solaire, comme https://solar.lowtechmagazine.com/

Nous avons décrit toutes les pièces mobiles dont vous avez besoin. Vous devez savoir cependant que, tout comme il existe d’innombrables façons de construire tout autre projet, il existe un grand nombre d’itinéraires alternatifs que vous pouvez emprunter.

Au lieu du serveur Web Apache, vous pouvez utiliser NGINX (prononcé ‘engine ex’). Au lieu d’un DNS dynamique, vous pouvez commander une connexion Internet de classe affaires avec des adresses IP statiques. Au lieu de Linux, vous pouvez utiliser BSD, Windows, MacOS ou tout autre nombre de systèmes d’exploitation. Au lieu d’un ordinateur portable, vous pouvez utiliser un ancien ordinateur de bureau, un Raspberry Pi de n’importe quelle saveur, un serveur de montage en rack excédentaire de votre vide-grenier Internet local, ou même un ESP8266 avec un simple script de serveur Web dessus.

Quoi que vous fassiez, assurez-vous de vous amuser avec le projet, et si vous n’avez jamais fait une telle chose, nous vous recommandons de commencer par la voie la plus simple et de progresser vers les méthodes les plus ésotériques.

Il en reste beaucoup, beaucoup, de nombreux questions à répondre : Quel logiciel dois-je utiliser pour créer mon site de projet ? Jusqu’où dois-je aller dans le terrier du lapin pour documenter le projet ? Quelles garnitures est-ce que je veux sur ma pizza quelque chose à manger en piratant ? Restez à l’écoute pour le prochain épisode, bientôt disponible dans un Hackaday près de chez vous !