Introduction

J’ai refondu ce blog il y a quelques mois et les contenus de la précédente version sous PluXML n’ont pas migré. L’occasion pour moi de les reprendre.

Pour commencer, un sujet qui date autant qu’il est d’actualité aujourd’hui, à savoir l’auto-hébergement, avec en tâche de fond un contrôle plus grand de ses données.

Réponses à quelques questions de base

Pourquoi ?

Plusieurs raisons m’ont amené à m’auto-héberger :

  • Avoir un vrai contrôle des données ayant de l’importance pour moi. Cela commence par la connaissance du lieu où ces données sont stockées (mais pas que).
  • Répondre au défi technique que cela représente.
  • Faire vraiment de l’internet.

Le déclencheur de tout ça a été le visionnage de la conférence de Benjamin Bayart, Internet libre ou minitel 2.0.

Qui ?

Par définition, l’auto-hébergement ne concerne que soit même. Par extension dans mon cas, il concerne aussi au moins partiellement mes proches en fonction de leurs besoins (mon foyer quoi, mais pas au delà).

Par contre, je n’héberge pas de services ou de contenus autres pour le comptes de tiers. J’ai eu à le faire ponctuellement mais c’était une erreur car on retombe vite dans quelque chose qui n’est pas de l’auto-hébergement mais de l’hébergement classique. Dans le cas auquel j’ai été confronté, cela m’a bouffé du temps inutilement, l’utilisateur en question n’arrivant pas à comprendre qu’il abusait du service que je lui proposais. Le service était proposé gratuitement et avec le recul, je pense que ça n’a pas aidé.

Quand ?

Je m’auto-héberge depuis 2007.

Quoi ?

Outre ce blog, j’héberge mon mail, un cloud perso et une instance mastodon. J’ai aussi mis en place l’infra de sauvegarde qui allait bien ainsi que les outils de supervision adéquates (centralisation des logs avec Graylog, supervision des équipements avec Zabbix, parefeu avec Pfsense). Ça, c’est la vue à l’instant présent. Ces différents outils et usages ne sont pas venus du jour au lendemain mais de manière relativement progressive.

Chez moi.

Comment ?

À noter que je suis derrière une ligne ADSL et que je ne dispose pas de débits importants. Ça changera peut-être prochainement mais pour l’heure, je fais avec et ça marche.

J’ai commencé par un petit NAS Synology et j’ai fait évoluer mon infra au fil du temps. Ces dernières années, on va dire que son développement a été organique. J’ai tout repris il y a quelques semaines afin de rationaliser tout ça (re-implémenter certains services, arrêter ceux qui n’avait plus lieu d’être, etc…).

Aujourd’hui, mon service est porté par deux machines bureautiques reconditionnées pour l’occasion. Ces machines font tourner un hyperviseur (Proxmox Virtual Environment) et un serveur de sauvegarde (Proxmox Backup Server). Je dispose par ailleurs de machines de rechange au cas où.

Considérations générales

Le point global après 15 ans d’auto-hébergement

15 ans, ça commence à compter. Sur cette période, j’ai déménagé plusieurs fois et j’ai changé d’opérateur (peu souvent cela dit). J’ai aussi rencontrés divers aléas causant la perte de mon accès internet. En vrac, les problèmes de ligne téléphonique dans mon domicile (où il m’a fallu chercher) ou bien encore les problèmes côté opérateur (pour lesquels je ne pouvais pas faire autre chose qu’attendre).

la perte d’accès n’est pas problématique lorsqu’elle n’est que temporaire. Pour le contenu web, le service est juste indisponible de l’extérieur le temps de la coupure mais j’y ai toujours accès en interne. Pour le mail, les serveurs qui cherchent à atteindre mon serveur SMTP retentent l’envoi pendant quelques jours (en espaçant progressivement les délais entre deux tentatives). Dans le pire des cas, je n’ai eu sur cette période que 2 jours maximum de coupure d’accès et cela n’est pas arrivé souvent.

Le fournisseur d’accès à internet (FAI)

Le rôle d’un FAI est de vous connecter à internet. Cela dit, tous ne le font pas de la même manière. Typiquement, les gros opérateurs vendent un accès à des clients qui vont avoir un usage asymétrique et très limité (limité dans le sens où cet usage ne sera pas varié quoi). Beaucoup de réception de données et peu d’envoi. Ces mêmes clients se fichent bien que leur adresse IP publique ne soit pas fixe (ils n’exposent pas de services accessibles de l’extérieur). Du coup, les gros opérateurs, à tord ou à raison, ont tendance à bloquer certains usage, notamment le mail. Il n’est donc pas rare que le SMTP soit filtré pour lutter contre le spam. Impossible alors d’avoir son propre serveur de mail. Un particulier qui envoi du mail, c’est inhabituel et c’est souvent une machine compromise qui fait n’importe quoi à l’insu de son propriétaire.

L’auto-hébergement est une pratique qui implique théoriquement d’envoyer plus de données donc on sort un peut du modèle classique même si dans l’absolu, c’est comme ça qu’il faudrait faire. En fait, tout dépend de ce que l’on met à disposition et dans la pratique on s’adapte (mon serveur Peertube n’est pas auto-hébergé par exemple). De même, et si l’on met de côté les services dynDNS et autres, une adresse IP fixe, c’est quand même bien pratique. Le gros opérateurs associent généralement adresse IP fixe et service à destination des professionnels. De ce fait, la facturation n’est pas la même pour un service qui ne coûte rien en fait (je dis ça mais je ne suis pas allé voir récemment :p ).

Je ne l’ai pas indiqué du coup mais je suis chez OVH pour l’accès à internet.

La cas particulier du mail

J’ai constaté qu’il pouvait être parfois complexe de faire du mail aujourd’hui. Si un gros décide de ne pas me causer, il m’ignore. Typiquement par exemple, pour parler à Gmail il est préférable d’avoir une adresse IP de bonne réputation et de bien paramétrer ses enregistrements DNS (champs TXT avec google-site-verification de renseigné, champs TXT avec un SPF indiquant les adresses IP autorisées à envoyer du mail sur le domaine). Dans le cas contraire, il ne transmet pas vos messages à destination de ses utilisateurs. Ce ne serait pas un problème si ce fournisseur de mail ne concentrait pas autant d’utilisateurs et il faut donc en tenir compte.

À noter qu’en cas de problème d’échange de mail avec une boîte chez l’un des fournisseurs habituels, vous devez vérifier de votre côté avant d’oser suggérer que le problème pourrait éventuellement se trouver de l’autre côté.

J’ai aussi eu la désagréable expérience de voir un compte (avec un mot de passe faible) abusé pour de l’envoi massif de spam. Le problème a été résolu rapidement de mon côté et la règle fail2ban mise en place dans la foulée. Pour autant, mon adresse IP publique s’est retrouvée blacklistée un peu partout en l’espace de quelques heures. C’est le genre de chose un peu fastidieuse à corriger, d’autant qu’il faut avoir conscience que l’on est bloqué en envoi. La bonne nouvelle est qu’il est possible de tester la réputation de son adresse IP sur divers sites, ce qui permet de savoir vers qui se retourner si cela nous arrive. À noter que chaque prestataire dans ce milieu a ses propres procédures de suppression d’adresses IP de ses listes et que les délais de retour à la normale sont variables d’un prestataire à un autre.

Un dernier truc amusant avec le mail, c’est que ça casse un peu les habitudes au moment où vous devez donner votre adresse. Ce que j’écris là n’est pas spécifique à l’auto-hébergement mais ça en fait partie. Habituellement, la tête d’une adresse mail c’est plutôt ça identifiantarallonge123@gmail.com si je continue sur le même fournisseur. Vous dites yahoo.fr, orange.fr, hotmail.com, etc… , tout le monde vous comprend. Maintenant, quand je dis truccourt@sujets-libres.fr, on me demande parfois de répéter. Ça me laisse dire que le choix du nom de domaine n’est pas si anodin que ça :p .

Les attaques permanentes

Héberger des services ouverts publiquement (notamment du web) vous expose aussi aux tentatives d’attaques ou d’intrusions permanentes. La méthode employée est plus ou mois bourrin et il faut s’en protéger. À noter que pour répondre à ça, il faut aussi être en mesure de le détecter.

À une époque où je n’étais pas outillé de manière suffisante et où toute mon infra tournait sous Virtualbox en headless, j’ai constaté à plusieurs reprises de gros pic d’activité (300 process apache en simultané notamment) faisant complètement tomber mon serveur et l’ensemble des services de la machine physique. Ce n’est que plusieurs mois plus tard que j’ai compris qu’il s’agissait d’attaques en brute force sur mon blog Wordpress. J’ai d’ailleurs retrouvé à cette occasion un petit reverse shell déposé sur le blog, preuve qu’il était bien compromis. Bref, j’ai pris quelques bonnes résolutions ce jour là, à commencer d’en terminer avec Wordpress.

En surveillant plus finement ce qui se passe, notamment sur les machines exposées sur internet, j’ai pris la mesure de la chose. Les tentatives d’accès sont permanentes et il y a de tout. Et encore, je ne vois que ce qui se passe sur les protocoles qui me servent. Clairement, en cette fin 2022 sur le web, Wordpress, Phpmyadmin ou bien encore les fichiers de sauvegarde restent des cibles de choix. Très clairement, fail2ban protège assez bien de l’essentiel des attaques.

Comment gérer ça ?

Pour faire simple, j’observe tout ce que je peux, j’automatise, je cloisonne, j’expose le minimum de choses, je sauvegarde et je tiens l’ensemble de mes logiciels à jour. Le développement organique d’un SI, c’est marrant mais une fois que c’est le bordel, on ne retrouve pas ses petits. Je cherche donc à rationaliser mon approche et si possible à simplifier ce que je fais (pas toujours évident ça). Je ne met une application en production que si je sais comment je vais la gérer ensuite. Je ne veux pas non plus conserver quelque chose de bloqué dans une vieille version ou pire, oublier un truc dans un coin. Parfois, je préfère donc couper une application si elle ne me semble pas gérable proprement et/ou si elle n’apporte finalement pas tant que ça de service.

Tout ça demande du temps mine de rien même si ça s’optimise :D . Je peux aussi dire que j’ai beaucoup appris en faisant des erreurs.

Faut-il s’auto-héberger comme je peux le faire ?

Autant annoncer la couleur directement, je pense que dans la majorité des cas cela n’est pas souhaitable. Quelques cas où vous devriez passer votre chemin :

  • Vous n’en avez rien à faire de l’endroit et des conditions dans lesquelles sont stockées vos données (personnelles notamment). Vous, vous n’avez rien à cacher, c’est ça ?
  • Vous n’avez pas les compétences pour maintenir une telle infra à jour (le cas échéant, vous n’êtes pas intéressé pour acquérir ces compétences). Cette raison est parfaitement légitime.
  • Vous avez d’autres choses à faire de votre temps libre. Là aussi, impossible de tout faire bien, il faut toujours faire des choix et renoncer à certaines choses.
  • Vous ne voulez pas avoir la charge de la sécurité au sens large de vos données et préférez donc les confier à un prestataire. Rien à dire là dessus si ce n’est que vous percevez déjà la valeur de vos données.
  • Vous considérez que du matériel tournant 24/7 représente un gâchis d’énergie comparativement aux optimisations réalisées par des professionnels dans un datacenter à l’état de l’art. Vous avez probablement raison même si finalement ça se discute.
  • Vous devinez que ce n’est peut-être pas rentable financièrement. L’investissement peut être contenu en passant par des machines reconditionnées. Le coût de fonctionnement lui sera directement lié à vos choix techniques.

Cette liste n’est pas exhaustive, bien entendu et chaque argument s’apprécie en fonction de votre cas personnel. J’ai personnellement commencé sur une très petite machine parce que j’étais intimement convaincu de l’intérêt de la démarche (et je le suis toujours) et parce que je voulais monter en compétences techniques. J’ai appris sur le tas au prix d’une veille techno permanente et sans compter les heures passées à gérer tout cela.

Avant de passer à de l’auto-hébergement, je conseillerais tout d’abord à ceux que ça intéresse de bien mesurer ce que cela implique. Les avantages peuvent sembler minimes face aux inconvénients et encore une fois, c’est à mon sens vraiment une question de point de vue. Après, il faut se lancer mais vraiment progressivement et en cherchant à comprendre comment ça marche et ce qui se passe. Il est probablement pertinent de commencer avec un seul service sur une petite machine ou un NAS, juste pour voir…

Et le logiciel libre dans tout ça ?

Jusqu’à présent, je ne l’ai pas évoqué mais je m’auto-héberge uniquement avec du logiciel libre. Je ne vais pas tous les lister mais j’en suis là. Attention quand même, le logiciel libre n’est pas une fin en soit mais un moyen pour reprendre un peu le contrôle sur ses données. Ainsi, si on pose ses données chez un hébergeur utilisant uniquement du logiciel libre de la cave au grenier, on est pas plus avancé tant que l’on ne contrôle pas la machine qui héberge nos données (droits administrateur et contrôle physique).

D’ailleurs, l’auto-hébergement est-il nécessairement associé aux logiciels libres ? Ces deux mondes sont très proches et les objectifs visés aussi. Je ne connais d’ailleurs personne qui s’auto-héberge avec du Windows server par exemple (alors que techniquement, c’est pourtant possible)…

Et l’écologie dans tout ça ?

Héberger une ou plusieurs machines chez soit signifie les laisser allumées en permanence. Cela engendre inévitablement un coût de fonctionnement et, il faut s’en douter, un coût écologique.

Il est possible de calculer grossièrement l’énergie consommée par une installation. À l’usage dans mon cas, le CPU de mon hyperviseur Proxmox VE est rarement sollicité au delà de 5% de ses possibilités (c’est le composant qui consomme généralement le plus en pleine charge si l’on met de côté le GPU). J’estime, et c’est à mesurer, que le consommation moyenne de cette machine tourne autour de 50W. Si je part sur une consommation identique pour ma seconde machine, j’arrive à environ 100W. Annuellement, cela donne :

100 Watts * 24 heures * 365 jours = 876 kWh

À titre indicatif, si je prends le dernier tarif réglementé EDF (0,1740€ par kWh), le coût annuel de fonctionnement de mon installation est d’environ 150€. C’est juste un ordre de grandeur. Il faudrait réaliser une réelle mesure sur mon infra pour affiner cela. Dans un contexte de réduction des consommations d’énergie, ça peut poser effectivement des questions.

Toutefois, le fonctionnement c’est une chose mais on oublie pourtant que la fabrication des appareils eux-mêmes engendre de la pollution et une consommation importante d’énergie. J’ai lu que la dépense d’énergie à la fabrication d’un bien électronique était comparable à 10 ans d’exploitation de ce bien ensuite. Je vois ça comme un ordre de grandeur. Pour aller plus loin recherchez des informations sur l’énergie grise dans le cycle de vie des produits. Ça fait réfléchir. J’ai donc fait le choix de n’utiliser autant que possible que du matériel reconditionné (éventuellement mis à jour) pour m’auto-héberger. L’idée est de faire durer ce matériel le plus longtemps possible. Ainsi, je prolonge la durée de vie d’équipements qui pour certains auraient dû être tout simplement jetés.

J’évite aussi d’utiliser du matériel sur-dimensionné (typiquement, il n’y aura pas de gros serveur professionnel chez moi). Je me fixe pour objectif de ne pas consommer plus de ressources que celles que j’utilise actuellement. Vu comme ça, certaines applications sont tout simplement trop gourmandes pour que je puisse les utiliser correctement. Dernier exemple en date : Gitlab. Ça s’installe, le problème n’est pas là, mais une fois en place, il lui faut la moitié des ressources de l’hyperviseur pour fonctionner à peu près normalement. En auto-hébergé avec une seul utilisateur, on va oublier hein…

Conclusion

Au fil du temps, ce qui relevait d’un intérêt personnel est devenu mon métier, et ça c’est cool. J’ai vraiment la sensation d’apporter ma petite brique à l’édifice et de participer à la construction d’un internet décentralisé. Dernier élément mis en place, une instance Mastodon. Je ferai probablement un article là dessus plus tard…

Autre intérêt, l’auto-hébergement amène à toucher à toutes les couches du modèle OSI. Si l’on souhaite monter en compétences, c’est une excellente approche à envisager. Le suivi quotidien que cela implique est aussi un bon moyen pour se maintenir à jour et suivre les évolutions permanentes dans le domaine de l’informatique en général.