Sur le chemin de l’auto-hébergement #2

J’avais souhaité écrire régulièrement sur mon utilisation de YunoHost et mon évolution dans la pratique de l’auto-hébergement. Malheureusement, ce projet n’a jamais abouti faute de temps et de discipline.

Un an après, alors que la crise entraînée par la pandémie de covid-19 n’a pas manqué de rappeler les enjeux de notre dépendance à des services privateurs devenus incontournables, j’ai souhaité reprendre la rédaction d’un article partageant mon expérience avec ce système d’exploitation facilitant la gestion d’un serveur.

Janvier 2019 : Un serveur dans mon salon

Lorsque j’ai débuté mes tests sur machine virtuelle, je n’étais pas encore certaine du matériel sur lequel j’allais installer le ‘vrai’ serveur.

Pour se faire, plusieurs possibilités ont été envisagées (Raspberry Pi ou deux anciens ordinateurs portables avec chacun 2Go de RAM qui traînaient) mais le système a finalement été installé sur un ordinateur ‘Nettop’ déniché d’occasion aux « Cash Converters », pourvu de 4Go de RAM et d’un disque dur de 500 Go HDD. Un tel appareil permettait un peu plus de latitude pour installer différentes applications de YunoHost et assez d’espace disque pour stocker des fichiers (notamment pour un Nextcloud). Ses dimensions peu importantes facilitaient de surcroît le rangement.

Du fait de mes précédents essais, l’installation de YunoHost n’a pas révélé de difficultés à part un petit bug rencontré sur ma machine au moment de la post-installation : dans l’interface graphique, le packman de YunoHost tournait dans le vide au lieu de finaliser celle-ci. Après avoir attendu un certain temps, j’ai recouru à la ligne de commande pour réaliser cette étape, ce qui ne s’est pas avéré compliqué, la procédure à suivre étant claire et facilitée par ma précédente installation via la webadmin.

Le terrain ayant été préparé, le paramétrage des ports et des champs DNS n’a plus été un soucis non plus pour moi. En revanche, des difficultés sont apparues lorsque j’ai souhaité installer un VPN pour que mon serveur dispose d’une IP fixe.

Le choix s’est porté sur un VPN proposé par Neutrinet, un fournisseur qui en propose à prix libre en Belgique. L’enregistrement chez neutrinet est bien documenté mais requiert une intervention en ligne de commande sous Linux. J’ai constaté par la suite qu’il existait un client VPN parmi les applications YunoHost non officielles, facilitant peut-être la démarche, mais, au moment où j’ai installé mon VPN, j’ai suivi les informations fournies par Neutrinet. J’ai donc également utilisé la ligne de commande pour installer OpenVPN, le client chargé d’établir la connexion.

Outre la difficulté que présentaient les commandes pour la débutante que j’étais, ce qui a été un réel problème pour moi concernait le fichier de configuration .ovpn qui m’avait été fourni par Neutrinet. Ce dernier ne contenait pas directement toutes les informations nécessaires pour faire fonctionner mon VPN. Je n’y serais pas arrivée sans une aide extérieure pour me fournir les bonnes informations à copier dans ce fichier et m’aider à activer le VPN. A noter cependant que Neutrinet propose des install party pour procéder à l’installation de YunoHost, notamment sur les briques internet qu’il est possible de commander par leur intermédiaire. Il est aussi possible de les contacter par mail ou via un Mattermost ou un canal IRC en cas de problème.

Mai 2019 : Migration sur un VPS

Une fois les problèmes liés à l’installation de mon VPN résolus, le petit serveur hébergé dans mon salon s’est révélé concluant. Néanmoins, quelques mois après, j’ai migré mes services sur un VPS. Si ce choix correspondait moins à la représentation que je me faisais de l’auto-hébergement et me décevais en partie, il est la conséquence de deux problèmes qui sont progressivement survenus.

D’abord, ma vitesse de connexion en upload était assez lente et ne permettait pas de faire tout ce que je souhaitais faire. Par exemple, une photo stockée sur mon Nextcloud pouvait mettre une trentaine de secondes à s’afficher si je souhaitais la consulter de l’extérieur. Même avec une motivation pour une technologie libre et dé-gafamisée et l’acceptation d’un service moins performant que celui d’un GAFAM, de tels délais d’affichage et de téléchargement rendaient mon cloud peu utilisable.

Ensuite, surtout, vers la fin du printemps, un autre problème est apparu avec la chaleur. L’appartement où je vivais à ce moment-là se situait au dernier étage d’un immeuble et disposait de grandes portes fenêtres. Lumineux et agréable, ce dernier avait le désavantage de chauffer fortement quand la belle saison arrivait. Alors qu’au printemps, la température montait déjà régulièrement à plus de 25 degrés à l’intérieur, j’ai vite constaté que mon serveur devenait chaud. Bien que même en cas d’activité intense, la température restait en dessous de la température critique, je savais qu’en cas de canicule, la température pouvait monter facilement à 35 degrés dans mon appartement et réduire la marge qui me séparait de cette température. Une conséquence directe de cela était aussi que les ventilateurs du serveur produisaient de plus en plus de bruit, devenant dérangeants lorsque nous nous tenions dans la pièce sans musique et en particulier pour les invités qui y dormaient ponctuellement.

Un peu à contrecœur, j’ai donc pris la décision de déplacer mes services sur un vps chez OVH.

Choix du VPS et installation

Le VPS choisi est un VPS de 2 Go et 1 cœur pour 3€/mois HT. Avant de passer commande chez OVH, j’ai hésité avec d’autres fournisseurs, notamment Hetzner, dont les offres étaient similaires et légèrement moins chères. Ce qui m’a fait pencher pour OVH était assez bêtement la possibilité d’avoir un contact en Français avec le support dans la mesure où c’était la première fois que j’utilisais un VPS. Je n’ai cependant jamais eu besoin d’y avoir recours, et,actuellement, je déplace progressivement mes services chez Hetzner (qui en plus d’être un peu moins cher, propose immédiatement une IPv6 fonctionnelle sur ses VPS).

La prise en main du VPS est assez aisée. Le système d’exploitation (Debian 9 pour YunoHost) a été choisi et installé automatiquement lors de ma commande (et peut être réinstallé à n’importe quel moment via le panel d’administration). La connexion se fait par SSH, système que j’avais déjà pu expérimenter sur mon précédent serveur. L’installation de YunoHost en ligne de commande via SSH n’a pas posé de problème pas plus que la post-installation.

Si la migration sur un VPS m’a déçue par rapport à la représentation que j’avais de l’auto-hébergement, elle m’a aussi apporté un avantage. Plutôt que de gérer un unique serveur avec un stockage important, j’ai eu l’idée de répartir mes services sur deux VPS, l’un pour les applications officielles de YunoHost et l’autre pour les applications développées par la communauté que je souhaitais essayer, notamment Pleroma et Pixelfed.

Entre le printemps 2019 et le printemps 2020 où j’écris cet article, la distinction entre ces deux corpus d’applications n’est plus définie si nettement, y étant privilégiée une échelle de notation référant à la qualité des applications (avec la version 3.8 sortie tout récemment, les applications dont la qualité est supérieure sont labellisées « haute qualité »). A l’époque cependant, la différence est nettement marquée et YunoHost prévient activement l’utilisateur·trice du risque pris en installant des applications non-officielles risquant de casser YunoHost. A ce moment-là, donc, prendre 2 VPS m’apparaît comme une option qui me permet de m’assurer la stabilité des applications sur mon premier VPS (notamment Synapse, le serveur Matrix) tandis que le second m’autorise une démarche plus expérimentale.

YunoHost, à l’usage

Je me suis assez largement étendue sur les choix des architectures et l’installation du système sur ma machine personnelle puis sur mes deux VPS. Il me semble maintenant utile de faire un retour sur mon usage de YunoHost au cours des derniers mois.

Au moment où j’écris, j’utilise YunoHost depuis quasiment un an et demi (et même déjà un an et demi si je compte mes premiers essais sous machine virtuelle). Une fois le système installé, les tâches d’administrations sont réellement faciles à effectuer. La gestion des utilisateurs est aisée. L’installation des applications, comme j’en avais parlé dans mon précédent article, se fait sans peine en choisissant simplement l’application dans une liste, avec la même simplicité que dans le magasin d’application d’un smartphone ou d’un gestionnaire de logiciels sous Linux. L’ajout de domaines ou de sous-domaines pour les applications ne représente pas non plus de difficultés et il est possible avec tout autant de simplicité (en cliquant sur un bouton), d’installer, pour chacun, un certificat Let’s Encrypt. Ces derniers sont importants pour que votre navigateur n’affiche pas une erreur de sécurité peu rassurante. Les services de YunoHost sont en effet prévus pour utiliser automatiquement l’HTTPS, plus sécurisé que l’HTTP, et s’installent donc par défaut avec un certificat auto-signé qui n’est pas reconnu comme sécurisé par les navigateurs.

La maintenance est également globalement aisée à effectuer. Les backups sont faciles à faire. Il est possible de sauvegarder tout le système ou des applications individuelles, simplement en les sélectionnant dans une liste et en cliquant sur « Sauvegarder ». Les mises à jours sont tout aussi aisées, via la rubrique « Mettre à jour le système » du panel de configuration. Avant de procéder à chaque mise à jour, j’ai pris l’habitude d’effectuer un backup complet du système et des applications. Par ailleurs, YunoHost procède aussi automatiquement à un backup de chaque application avant sa mise à jour, permettant, en cas de problème, de la restaurer telle qu’elle était précédemment, processus qui se fait automatiquement.

A de rares exceptions près, la ligne de commande n’a pas été nécessaire sur le VPS hébergeant les applications officielles. Sur le second VPS, il a en revanche été nécessaire d’utiliser d’avantage la ligne de commande, notamment pour les services tels que Pixelfed ou Pleroma.

Si, la plupart du temps, mes manipulations sur YunoHost se sont déroulées correctement, voici néanmoins quelques problèmes que j’ai rencontrés :

Plusieurs problèmes ont été la conséquence d’erreurs de débutante ou d’erreurs d’étourderie. Ainsi, pendant assez longtemps, j’ai disposé d’un serveur matrix (Synapse) qui ne fédérait pas sans que je ne comprenne pourquoi, jusqu’au moment où je me suis rendue compte que j’avais stipulé un mauvais port dans mes champs DNS (4884 au lieu de 8448).

En grande partie car je n’avais pas veillé à cela dès l’installation, j’ai aussi eu des soucis lorsque j’ai voulu que mes mails ne tombent plus dans les boites de spams de mes correspondants. Les champs DNS à spécifier pour le serveur mail figurent dans la configuration recommandée du domaine accessible dans la webadmin de YunoHost, cependant, lorsque j’ai voulu résoudre ce problème, je n’ai plus pensé à retourner voir cette configuration et j’ai tenté de chercher des solutions par moi-même sur internet – arrivant à la conclusion qu’il me fallait générer des clés DKIM avec un site comme dkimcore alors que ces clés existaient déjà dans mon système. Heureusement, après avoir posé la question sur Mastodon, j’ai facilement retrouvé ces clés déjà existantes dans la configuration par défaut de YunoHost.

Autre erreur de ce genre qui aurait pu être évitée, malgré ma lecture du guide de l’administration fourni par YunoHost, j’ai également fait une mauvaise manipulation en utilisant une sauvegarde de YunoHost à la façon d’un point de restauration de Windows, sans avoir préalablement désinstallé l’application en question. Peut-être parce qu’il s’agissait à ce moment-là d’une application non officielle, cette manipulation a eu pour conséquence de casser des éléments de mon système et de me conduire à le réinstaller. (A noter qu’il aurait peut-être été possible de réparer, car il s’agissait d’erreurs concernant Nginx, mais ne m’y connaissant pas assez pour tâtonner dans les fichiers de configuration, j’ai préféré réinstaller sur base de ma sauvegarde précédente.)

Enfin, une grosse erreur de débutante a été d’oublier de sauvegarder les fichiers liés à mon VPN lorsque j’utilisais le serveur dans mon salon. Suite à la réinstallation dont il est question au paragraphe précédent, le système nouvellement installé ne possédait plus ces fichiers et il m’a été nécessaire de contacter Neutrinet pour savoir comment régénérer une seconde fois les clés de chiffrement et le certificat de mon VPN et réinstaller celui-ci.

Outre ces problèmes qui auraient pu être évités avec plus d’expérience ou de connaissances, les autres problèmes ont été assez rares. Quelque fois, je me suis trouvée devant des mises à jours qui échouaient mais l’application était restaurée et une autre mise à jour résolvait le problème par la suite. D’autres fois, par exemple suite à une mise à jour, l’API de YunoHost a cessé de répondre, obligeant à se connecter à distance via SSH pour taper la commande:

 systemctl status yunohost-api

Les problèmes les plus importants que j’ai rencontrés ont concerné les applications Pleroma et Pixelfed. D’abord, il m’a été régulièrement nécessaire de me plonger dans la documentation officielle des deux applications pour certaines tâches de maintenance qui n’étaient pas référencées dans le README de l’application YunoHost (par exemple l’ajout d’emoji personnalisés dans Pleroma ou comment éditer le fichier de configuration pour personnaliser son interface). Or, de telles documentations sont loin d’être facilement compréhensibles lorsque on débute.

C’est aussi avec Pleroma que j’ai rencontré une situation où un échec de mise à jour a entraîné un dysfonctionnement de l’application (qui ne fonctionnait plus même après avoir été restaurée) et où d’autres applications, (notamment Pixelfed), avaient été touchées. De loin le plus grand dysfonctionnement que j’aie rencontré au cours de mon expérience de YunoHost, ce problème est néanmoins dû à une situation particulière où l’application passait en quelques jours de la version 0,9999 à la version 2,1, un saut de version important à effectuer d’un seul coup. Ayant posé ma question sur Mastodon, j’ai pu avoir un contact avec la personne s’occupant du package YunoHost grâce à l’aide de laquelle mon application a pu finalement se mettre à jour et fonctionner à nouveau.

Bilan après 1 an et demi et conclusion

La prise en main et la maintenance de YunoHost n’est pas toujours aisée et la ligne de commande n’est pas toujours inévitable. A ce titre, le fait que j’aie précédemment commencé à utiliser Linux sur mon ordinateur a en bien des aspects facilité les choses – même si c’est surtout de communiquer avec mon serveur en SSH qui m’a vraiment familiarisée avec la ligne de commande. Je suis aussi depuis longtemps que ce qu’on pourrait qualifier d’ « un peu geek » et j’avais quelques notions basiques d’architecture et de protocoles web, d’utilisation de FileZilla et de chiffrement qui m’ont aussi aidée à prendre des repères. Cependant, je pense que l’aventure reste accessible même si – comme pour d’autres activités, qu’il s’agisse d’informatique ou non – un temps d’apprentissage peut être nécessaire. L’engagement et le temps nécessaires dépendent aussi des ambitions : si l’objectif est d’installer YunoHost pour disposer d’un serveur mail et de quelques applications telles que Synapse, Nextcloud, WordPress ou Etherpad, l’engagement, le temps et la nécessité d’utiliser la ligne de commande ne seront pas aussi importants que si l’on souhaite utiliser et personnaliser des applications comme Pixelfed ou Pleroma.

Par ailleurs, il est facile d’obtenir de l’aide. Comme je l’ai cité plus haut, Neutrinet organise des install party pour leurs briques internet. Une question envoyée sur Mastodon obtient également rapidement une réponse. YunoHost propose aussi son propre forum. C’est une chose que j’ai encore du mal à faire, tant je suis toujours persuadée d’être fautive dans tout dysfonctionnement et tant je culpabilise à ennuyer les autres à cause de mes erreurs, mais demander de l’aide est toujours efficace. Une grande part du temps que j’ai passé à comprendre et résoudre mes problèmes seule dans mon coin aurait sans doute pu être évitée en cherchant de l’aide en ligne.

Enfin, YunoHost ne cesse d’être amélioré pour devenir plus accessible. Ainsi, le 21 mai 2020, la version 3.8 du logiciel apporte une nouvelle fonctionnalité de diagnostique qui permet de repérer plus facilement les erreurs de configuration et prévient notamment des champs DNS manquants pour chaque domaine ajouté à YunoHost. Une telle fonctionnalité m’aurait entre autres facilité la tâche pour visualiser quels enregistrements DNS manquaient encore à ma configuration mail. Là où j’avais utilisé un outil tel que mail-tester pour vérifier la recevabilité de mes mails, le diagnostique de YunoHost inclut aussi désormais son propre outil de vérification, conçu pour bien expliquer les manipulations à faire pour corriger les problèmes. La page de la documentation YunoHost concernant les champs DNS est également, il me semble, devenue plus précise à ce sujet.

Malgré les difficultés rencontrées, un an et demi après avoir commencé à utiliser YunoHost, je ne peux que me dire ravie de ce que Yunohost me permet de faire au quotidien. Pendant longtemps, disposer de mes propres services, en particulier de mes propres instances Matrix, Pleroma et Pixelfed avait été inimaginable pour moi. Grâce à YunoHost, c’est non seulement devenu possible, mais cela est devenu possible avec une certaine simplicité. Outre une émancipation vis à vis des services propriétaires des GAFAMS, héberger mes propres services m’apporte aussi une forme d’ « empowerment » avec le sentiment de me réapproprier cet outil que j’utilise tous les jours qu’est l’internet.

Enfin, YunoHost est aussi une porte pour aller plus loin. Ainsi, en période de confinement, j’ai entrepris d’installer un serveur mumble-web via une application personnalisée de YunoHost et, sur un serveur Ubuntu, en me passant de YunoHost, des services Jitsi et BigBlueButton. Sans une première approche simplifiée de l’administration système, de telles démarches et de telles possibilités d’autonomie numérique n’auraient pas été envisageables pour moi.