Mon auto-hébergement : pourquoi, quand, comment ?

Rédigé par Fenix - - Aucun commentaire

Ça faisait un petit moment que j'avais envie de réaliser une petite série d'articles pour présenter ma petite infrastructure d'auto-hébergement (et puis, il faut bien meubler ce pauvre petit blog !). L'idée est de brosser un petit peu tous les étages (du matériel aux services hébergés), en essayant de détailler quelques points de réflexion, l'historique de certains choix, et d'en tirer quelques retours d'expériences (pour celles et ceux qui en auraient l'usage).

Dans ce premier article, il s'agira surtout d'une rétrospective sur mon parcours et sur les différents environnements que j'ai côtoyé/mis en place. Puis suivra, je pense, une série d'articles portant chacun sur un aspect particulier de mon infrastructure d'aujourd'hui (stockage, réseau, supervision, etc...).

Je suis né dans les câbles

 

Soyons honnêtes dès le départ : je suis un geek. J'aime la technique, j'aime la bidouille, donc j'aime installer un peu tout et n'importe quoi pour étudier comment ça marche, et ce que je peux en faire (ou pas).

J'ai passé la majorité de mon enfance là-dedans, du coté Apple d'ailleurs (des Quadra aux G5), et pour moi les ordinateurs sont avant tout une vraie passion et une source d'épanouissement sans fin (à l'époque je joue un peu, bien sûr, mais ce n'est pas mon intérêt premier : IDE et SCSI sont mes amis, et je préfère mettre à jour mes tours, les nettoyer, les customiser jusqu'à les planter complètement). C'est moi qui installe le premier MacOSX à la maison, qui déballe et recette les machines "Pro" que mon père achète (en découvrant au passage que ses stagiaires successives de BTS/DUT en Arts graphiques n'ont aucune connaissance en système, en USB, en FireWire !! (ce qui, à l'époque sur Mac, était quand même un vrai standard pour la plupart des périphériques, notamment photo/vidéo) (et ce constat nous a toujours sidéré tous les deux)), qui gère les applications (dont la suite Adobe), qui m'occupe des modems puis de la première box ADSL qui arrive à la maison... et caetera, et caetera.
Et sans compter les innombrables soirées/journées passées au bureau de mon père, au milieu des copieurs, des scanners, des "bon à tirer" et autres épreuves de plaquettes publicitaires... (et je passe sur l'époque, encore plus lointaine, de ses ateliers d'impression, avec ses grosses machines offset, les odeurs de solvants...).

Plus récemment, et pour revenir au sujet initial, quand je remonte ~10 ans en arrière je n'ai pas encore de sensibilité "logiciels libres" très prononcée, et même si je sais déjà qu'il va falloir se méfier des Google et autres Facebook, j'utilise allègrement mon compte Gmail (et encore quelques années plus tôt, j'avais un Skyblog et je passais mes soirées sur MSN, c'est vous dire...). A ce moment-là, ma démarche n'est pas nécessairement construite, il n'y a pas encore de réflexion particulière : je m'amuse.


Au commencement étaient Windows et l'USB (2006-2011)

 

Donc, à mes "vrais" débuts en solo (que je situerai à la louche vers -12/-13 ans avant aujourd'hui), je récupère simplement du matériel : des vieilles tours, des disques durs, etc. Et puis, parce que ça commence à prendre de la place pour rien, j'essaye de leur trouver une utilité :

  • je commence à entasser films, séries, photos et tout le tremblement sur une pelletée de disques durs, que je branche en USB ;
  • je crée mes premiers vrais partages réseaux (sous Windows, à l'époque), pour que Mme et moi puissions consulter cette médiathèque naissante sur nos postes respectifs ;
  • et "j'héberge" mes premiers services, à savoir un serveur Minecraft et un EasyPHP (pour pouvoir bricoler un peu de Web).

PIRE, à une certaine époque (~2010) je travaille également la certification 70-640 de Microsoft, AKA "Active Directory" : ni une, ni deux, je restructure toute mon "infra" personnelle autour d'un Windows Server 2008R2. Pourquoi ? Mais parce que c'est propre, pardi !

  • j'ai un "domaine" chez moi, donc je gère de façon centralisée mes comptes utilisateurs (Mme, moi et les invités) ;
  • je m'amuse avec les GPO ("Group Policy Objects"), pour m'auto-former et gérer quelques configurations de mes postes clients (du Windows XP, puis du Vista) ;
  • j'ai un "bureau à distance" tout propre, donc je peux gérer tous mes services en quelques clics ;
  • je gère mes partages réseaux et mon serveur d'impression (parce que mon imprimante USB est partagée par le serveur) sans prise de tête ;
  • et je peux même créer des machines virtuelles avec VirtualBox !

Et côté hardware, ça ressemble à une tour assez basique, une carte-mère de récupération avec un Celeron et quelques 2Go de RAM, et une dizaine de disques USB derrière (avec des cartes PCI en plus, bien entendu). Et là, ça commence à être compliqué :

  • déjà, niveau câblage ;
  • ensuite, chaque disque a son utilité, mais rapidement ils débordent les uns sur les autres, donc mon rangement "parfait" de médiathèque se retrouve caduc ;
  • et il faut également gérer les sauvegardes de tout ça (oui, déjà à l'époque j'étais un stressé du backup), et ça me demande beaucoup d'autres disques et de configurations.

Côté système, j'ai rapidement des problèmes aussi : le fait d'avoir une version "Server" m'empêche d'installer certains logiciels gratuits (des outils de sauvegarde ou des anti-virus, entre autres), je tente des RAID logiciels avec Windows et j'ai de mauvaises surprises, les diagnostics en cas de problème (imprimante qui n'est plus visible sur le réseau, par ex) sont affreux parce que les logs sous Windows relèvent de la mauvaise blague, et j'en passe...

Après 1 an 1/2 de bons et loyaux services (il faut rendre à Jules ce qui est à César), je décide de tenter une nouvelle aventure, loin de Windows Server.


Mon premier "hyperviseur" (2011-2012)

 

Comme je commence à vraiment m'intéresser à Linux (je passe aussi la certification RHCSA de Red Hat à l'époque), je me dis que "hey, mais oui !" (en gros). Je reprends donc à zéro mes réflexions, fais du ménage dans mes innombrables disques USB, et me voilà en train d'installer une CentOS 5.

J'utilise à fond mes nouvelles compétences de sysadmin, je fais du LVM bien comme il faut, je gère mes partages Samba et mon pool d'impression, et c'est joie et bonheur. J'ai encore pas mal de disques USB en face arrière, mais bon.
Par contre, un vrai besoin se fait sentir : celui d'avoir des machines virtuelles pour m'amuser, ou segmenter quelques environnements (dont Web). KVM ça semble intéressant, mais finalement je choisis.... VirtualBox à nouveau (si-si). Mais attention : "headless", puisque je n'ai pas d'interface graphique sur le serveur !

Je me retrouve donc avec ma tour, bien fournie en disques internes et externes, avec 2 ou 3Go de RAM et un VirtualBox tout en CLI (qui fonctionne comme un charme, même si la-dite CLI est un peu lourde), et je suis plutôt satisfait. Je pousse même le vice jusqu'à greffer une GUI Web (phpVirtualBox, ou un truc comme ça, je ne sais plus), pour pouvoir me la raconter auprès de mes collègues (qui sont plutôt sur de l'ESX, mais qui doivent du coup maintenir d'autres machines à côté pour leurs NAS).

La contrepartie de cette nouvelle plateforme, c'est que je n'ai plus de gestion centralisée de mon "parc" d'utilisateurs. Je tente un peu, avec du LDAP, mais je fais vite demi-tour : Windows reste pro-Windows, et je n'ai pas envie d'y investir plus de temps pour si peu de postes utilisateurs (et une VM Windows Server 2008 a bien existé aussi ici, mais au final elle se sentait trop à l'étroit côté RAM).


"L'avenir est dans le Cloud" & "Hyperviseur V2" (2013-2015)

 

Au bout d'une petite année 1/2 (à peu près), je me lasse de cette infra : CentOS n'est pas vraiment mon Linux préféré, VirtualBox commence à montrer ses limites, et puis je suis depuis quelques temps un nouveau produit que je trouve vraiment très intéressant : Proxmox. J'ai déjà monté quelques installations de test et joué un peu avec, je trouve ça très prometteur (voir mon article sur le sujet). Je décide de basculer toute mon installation sous Debian 7 + Proxmox 3 (qui vient de sortir, nous sommes début 2013 (environ)). Je découvre la joie des conteneurs OpenVZ, qui allègent grandement la charge sur mon serveur.

Ma petite installation maison étant relativement fonctionnelle, plusieurs problématiques persistent toutefois :

  • tout d'abord, quand j'étais en environnement "full Windows" (client comme serveur), j'utilisais abusivement la fonctionnalité de "données disponibles hors connexion" (qui permet de conserver une copie, dans un cache local, des partages réseaux souhaités pour pouvoir travailler en déplacement, la re-synchronisation se faisant quand le montage réseau redevient disponible) ;
  • et pour mes sauvegardes, je commence à me sentir un peu à l'étroit et à me dire qu'en cas d'incendie ou de cambriolage, je perds tout (mine de rien).

Concernant le premier point, je continue dans un premier temps à tourner sur Windows côté client, car je ne peux pas me passer de cette fonctionnalité (la partition Linux de mon portable reste donc relativement dormante, je n'arrive pas à basculer complètement dessus). Je fais quelques tentatives avec des clients de synchronisation, mais ça n'est jamais aussi simple et performant que cette excellente fonctionnalité de Windows. Toutefois, je rencontre régulièrement des problèmes de conflits ou de corruptions de fichiers à la resynchronisation, sûrement parce que je n'utilise pas NTFS côté serveur et que cette fonctionnalité doit s'appuyer dessus.

Et pour le deuxième, je découvre qu'OVH s'apprête à sortir une nouvelle offre de serveurs dédiés pas cher : les Kimsufi. Le jour du lancement, mes collègues et moi spamons la page de F5 vigoureux pour être parmi les premiers servis : en quelques minutes, me voilà l'heureux propriétaire d'un petit CPU anémique et d'un disque dur de 500Go "dans le Cloud" (AKA "pas chez moi"). Même si ce n'est pas la première fois que j'ai accès à des serveurs "à l'extérieur", c'est bien le premier que je vais pouvoir casser à loisir : LE MIEN A MOI.

J'ai donc à présent un serveur me permettant de faire du KVM + des conteneurs, un serveur distant vers lequel je commence à faire pas mal de rsync, et je travaille encore et toujours sur ma pile mdadm + LVM afin de consolider mon espace de stockage et d'éliminer toujours plus de disques externes.

Et là, je découvre un beau matin dans mes flux RSS un nouvel outil, libre, qui pourrait me permettre de résoudre ma problématique n°1 évoquée quelques lignes plus haut : ownCloud. Sorti il y a quelques temps déjà, cet outil m'intéresse pour, bien entendu, la synchronisation de fichiers : j'installe une instance de test, mais les clients de synchronisation sont très jeunes, et j'ai beaucoup de problèmes (au-delà de quelques centaines de fichiers, ça rame, ça plante, ça corrompt...). Je garde ça dans un coin.

En parallèle de tout ça, je continue à m'auto-former et je travaille aussi sur la partie "réseau" de mon infra personnelle : du VPN, du PFSense dans des boîtiers Arkoon que je recycle, etc... Professionnellement, je découvre des infrastructures conséquentes, avec du matériel assez onéreux (du NetApp, de l'EMC, du HP...) et des technologies très intéressantes (Fibre Channel, iSCSI, AIX, HPC...), mais surtout je rencontre beaucoup d'experts et des contextes assez exigeants (dans le bancaire, l'hospitalier, en astreinte dans des bunkers...). Ces années sont riches d'enseignements en terme de contraintes de production, de design d'infrastructures, de plans de migrations. Et je découvre au passage "l'Histoire" de l'informatique, la "vraie" (pas celle des startups), celle des IBM, Bull, Sun, Microsoft... qui ont façonné une bonne partie de ce qu'on trouve aujourd'hui dans nos datacenters (même si cette Histoire n'est pas toujours très glorieuse).


Montée en puissance (2015-2016)

 

Tout ça, c'est bien beau, mais je me sens à l'étroit chez moi : j'ai ~8Go de RAM sur mon serveur, 2Go sur mon Kimsufi... Et je suis gourmand en services.

Après une migration vers Debian 8 et Proxmox 4 (et donc d'OpenVZ vers LXC), je m'amuse à monter un petit cluster pour augmenter mon pool de ressources : je récupère deux autres machines, avec quelques Go de RAM, et j'assemble le tout. Comme l'essentiel de mon stockage se trouve sur mon serveur principal, je présente des partages NFS à mes autres hôtes Proxmox. Je tente un peu d'iSCI, aussi, mais c'est beaucoup de configuration pour pas grand chose (dans mon cas). Pour exploiter au maximum tous mes hôtes, les disques inutilisés (ou juste pour l'OS) me servent à monter un petit GlusterFS, qui héberge également quelques VM. Et je me mets petit à petit à ZFS, le meilleur système de fichiers de tous les temps (fanboy spotted).

Côté "Cloud", mon Kimsufi me fait des misères depuis longtemps : le disque dur a été changé plusieurs fois (avec réinstallation complète à chaque fois, donc), mes sauvegardes, bien que fonctionnelles, ne durent du coup jamais très longtemps (et mon ADSL met plusieurs semaines à les rétablir), et puis ça reste un CPU low-cost, je n'en fais pas grand chose.

Je décide donc de migrer vers un SoYouStart, gamme intermédiaire d'OVH, qui me permet d'avoir un RAID1 (pour éviter de tout réinstaller à chaque panne) et un Xeon largement assez véloce. Et là, je m'interroge à nouveau sur la pertinence de mon hébergement à domicile : avec cette nouvelle machine, j'ai de la place côté disque, assez de puissance côté CPU/RAM, du débit, et puis ça peut me permettre d'éteindre mes serveurs à domicile quand je n'en ai pas besoin (et donc d'alléger la facture d'électricité). Je bascule mon naissant ownCloud dessus, et je tente pendant quelques mois.

Mais, à nouveau, je ne suis pas comblé :

  • côté synchronisation de fichiers, même si les clients ownCloud s'améliorent, mon ADSL galère énormément, et chaque modification en local (chez moi) sature mon upload, puis mon download pour redescendre sur mes autres postes. Je tente quelques alternatives/bidouilles, mais ça reste assez moyen. Par contre, de l'extérieur c'est royal, bien entendu !
  • et puis mes serveurs, au final ils tournent toujours : j'ai des VM de test, et puis surtout j'ai le NAS ! Impossible de me passer de mes films et séries, et arrêter/redémarrer le cluster à chaque fois pour regarder une vidéo d'1h30, ça devient vite pénible. Et je n'ai pas forcément envie de remonter un NAS à côté.


Re-rationnalisation (2016-2018)

 

Entre les serveurs à la maison et ceux chez OVH, ça commence à coûter cher, cette histoire. Surtout que, finalement, je n'utilise réellement que quelques services sur tous ceux que je déploie.

Et puis maintenir tout ça, ça prend énormément de temps : entre le stockage (LVM/ZFS/GlusterFS), les équipements réseaux, les Debian, les Proxmox, les services... J'y passe mes soirées. Au départ, ça m'amusait : avec les années, ça me sort par les yeux. D'autant que, mon parcours professionnel évoluant, j'en ai aussi fait mon métier : réparer des Linux le jour, réparer des Linux la nuit... c'est pas une vie. Sans compter les enfants, la maison, et tout le tintouin.

J'entreprends donc de repartir des bases : me limiter aux services que j'utilise réellement (et mieux les choisir), limiter le nombre de machines, simplifier l'administration au maximum.

Chez moi, le cluster vole en éclats : je ne conserve que mon serveur historique (qui embarque donc un Proxmox et le NAS), je résilie chez OVH dans tous les sens (pour n'en conserver qu'un), et je réintègre proprement mes services. Je tente même une expérimentation (que je connaissais depuis longtemps, mais que j'avais laissé de côté) : Yunohost. Je repense également mon réseau (trop de VLANs, trop de flux dans tous les sens), mais je conserve un minimum de sécurité et d'isolation (que je détaillerai dans un autre article) : l'idée reste quand même d'avoir une petite plateforme pour m'amuser de temps en temps.

Pour ma synchronisation de fichiers, qui faisait régulièrement des allers-retours entre chez moi et OVH (je n'étais jamais satisfait), j'acte : ça sera chez moi. Si de l'extérieur ça prend quelques minutes, tant pis, au moins en local ça ira vite (ça reste mon usage principal). Et les montages croisés avec du Syncthing, des montages Samba externes ou autres, je n'ai jamais obtenu de résultat qui me satisfasse. Les autres utilisateurs que j'hébergeais prennent peu à peu leur envol (soit en installant leurs propres instances, soit en partant sur des services propriétaires), je ne conserve que la famille proche (qui a des besoins assez limités). Je renforce la partie Caldav/Cardav, je synchronise petit à petit tous les smartphones de mes proches, et voilà.

Pour finir, j'automatise au maximum : je m'initie à Ansible, j'uniformise mes configurations, je nettoie tout le superflu. Et je vais au plus simple : un besoin, un service KISS. Si je ne devais donner qu'un exemple : j'ai remplacé Postfix de partout (sauf sur mes Proxmox) par SSMTP (un fichier de conf de moins de 10 lignes, et ça juste marche). Et bien, si au début ça prend du temps pour tout mettre en place (même si Ansible se prend assez bien en mains, j'ai beaucoup de réserves sur certains choix (dont la gestion de l'inventaire ou certaines syntaxes)), au final je gère tout mon parc avec quelques rôles, qui feront assurément hurler les puristes mais qui fonctionnent très bien et sont parfaitement idempotents. Même les mises à jour sont gérées avec Ansible : sauf cas spécifique, tout ce qui ne nécessite pas d'intervention, je ne veux plus en entendre parler.


Aujourd'hui : l'avenir

 

Aujourd'hui, je poursuis cette rationalisation de mes ressources. J'ai encore pas mal de bricoles à terminer, notamment côté Ansible et réseau, mais les bases sont là. C'est suffisamment propre pour moi, c'est assez léger et fonctionnel, et même si je sais que dans 2 ans j'aurai envie de tout dynamiter pour refaire autre chose, pour l'instant je n'ai rien à en redire. Bien sûr, les services que j'utilise évoluent, mais l'infra étant posée ça ne m'oblige plus à tout reprendre de zéro à chaque fois. Je n'ai plus qu'à surveiller mes ressources (notamment côté NAS).

Paradoxalement, ce sont les postes clients qui me posent le plus de problèmes aujourd'hui : aucun environnement de bureau ne me convient vraiment, et à chaque fois que je sélectionne LA bonne distribution pour mes proches (aujourd'hui Linux Mint) je tombe sur un os (Cinnamon qui crash régulièrement, les partages réseaux qui ne sont plus accessibles de façon aléatoire, etc...). Quand il s'agit de mon poste personnel, j'aime toujours autant bidouiller, mais pour Mme ou ma famille je veux juste quelque chose qui marche et dont je ne doive pas assurer la maintenance tous les WE. Il faut croire que ça n'existe pas ¯\_(ツ)_/¯

 

Mais pourquoi tout ça, au final ?

 

Au final, une question que je n'ai pas vraiment abordé jusqu'ici : pourquoi m'auto-héberger ? Pourquoi les logiciels libres ? Beaucoup d'autres blogs détaillent leur vision de la chose, la recherche de la liberté, les méchants GAFAM, tout ça tout ça... et je les rejoins en grande partie (donc je ne m'étendrai pas dessus). Mais pour moi, mon auto-hébergement c'est aussi :

  • une partie de ma vie (littéralement) : ces années d'auto-formation, de galères, de réflexions, de partages (rencontres, forums, blogs, etc), tout ce matériel récupéré à droite et à gauche, à rentabiliser le moindre disque, la moindre barrette de RAM... Quand je regarde mon serveur, il est passé par près de 10 ans de refontes, changé plusieurs fois de carte-mère, d'alimentation, de tour, déménagé dans des conditions parfois rocambolesques, mais il est toujours là, et il ronronne. Quelque part, il fait aussi partie de ma famille :D
  • un acte politique : au-delà de l'aspect "mes données sont chez moi", l'auto-hébergement est pour moi un pied-de-nez aux grandes firmes et aux complaisances gouvernementales envers la centralisation des services et des données (et ce d'autant plus que les tendances autoritaires et fascistes se renforcent d'années en années dans le monde).

 

Non, je ne veux pas que de telles structures aient un tel ascendant, ni sur moi, si sur mes proches ;
Non, je ne veux pas que, du jour au lendemain, on puisse me supprimer l'accès à mes données ;
Non, je ne veux pas de ce modèle où les citoyens sont dépossédés de tous pouvoirs, et où la mystification technologique est reine.

 

Alors oui, bien sûr, tout le monde n'a pas les compétences, le temps ou la volonté de s'auto-héberger, et c'est pourquoi des modèles d'hébergements alternatifs (comme le collectif CHATONS) ou des solutions clé-en-main comme Yunohost sont si important.e.s. C'est aussi pour cela que des initiatives comme "Dé-googl-isons Internet" ou Contributopia (toutes deux portées par Framasoft) sont si importantes : rééduquer la population au numérique, sensibiliser aux opportunités et aux dangers de ces "nouvelles" technologies. Et c'est, enfin, pour cela que des innovations comme ActivityPub et consorts sont si importantes : donner la possibilité de pouvoir, dès aujourd'hui, décentraliser les services, les connecter, les fédérer, afin de garantir une totale indépendance et résilience face aux organismes (étatiques ou économiques) de régulation.

Écrire un commentaire

Quelle est la dernière lettre du mot sngdeg ?