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

Cet premier article portant sur ma démarche d’auto-hébergement revient sur mes premiers essais avec Yunohost en décembre 2018.


Intéressée depuis plusieurs mois par la décentralisation d’internet et par les alternatives libres, respectueuses de la vie privées des utilisateurs, j’ai tenté de me lancer dans une démarche personnelle d’auto-hébergement de services en ligne.

Ayant fait des études d’anthropologie, mes compétences informatiques étaient limitées au moment où je me suis lancée. En particulier, je n’avais jamais tâté à l’administration système d’un serveur même si j’avais depuis longtemps l’envie d’en avoir un. Je n’avais pas non plus une grande expérience de Linux : mes ordinateurs personnels fixe et portable ne tournant sous un OS libre que depuis 8 mois.

Dans ces prochains articles, je me propose de revenir sur mon expérience et sur les difficultés que j’ai rencontrées. Qui sait, cela pourra peut-être servir à d’autres néophytes 🙂

Le choix de YunoHost

Logo de YunoHost

J’ai connu YunoHost sur le réseau social Mastodon.

YunoHost est un système d’exploitation conçu pour simplifier des démarches comme la mienne et permettre au plus grand nombre de « s’auto-héberger », c’est à dire de reprendre le contrôle sur ses données en les hébergeant soi-même plutôt qu’en les confiant à des entreprises telles que Microsoft ou Google.

Pour ne présenter YunoHost que brièvement (la documentation en ligne le concernant étant déjà très complète !), il s’agit d’un système d’exploitation, basé sur Debian, pouvant être installé sur un serveur mais pouvant aussi – et peut-être surtout – être installé sur une ancienne machine inutilisée ou un Raspberry Pi, directement chez soi.

Une fois installé, YunoHost ne requiert a priori pas une administration passant par la ligne de commande. Tout peut se faire (en principe) via une « webadmin », une interface graphique accessible dans notre navigateur internet (même si un tour sur internet en quête d’avis ou de retours d’expérience nuance un peu cette prétention, témoignant de plusieurs situations où une intervention en ligne de commande sur la machine se révèle tout de même nécessaire).

Le panel d’administration de YunoHost

En plus de la facilité d’installation du système d’exploitation (l’installation depuis l’ISO est bien documentée ainsi que la « post-installation », en y allant pas à pas), la simplicité se trouve du côté des logiciels et des services en ligne qui peuvent fonctionner grâce à YunoHost (par exemple serveur mail, serveur de messagerie instantanée, serveur cloud Nextcloud, hébergement WordPress, etc.).

Sans m’étendre non plus ici, puisque tous les détails se trouvent sur le site de YunoHost, ces logiciels s’installent au travers de l’interface graphique du navigateur comme des « applications », avec la même simplicité avec laquelle on installe une application sur son smartphone via un magasin d’applications. Là où l’installation de chaque service pourrait demander de manipuler de nombreuses lignes de commandes et chaque application l’installation de plusieurs autres services nécessaires à son fonctionnement, YunoHost propose un paquet complet où tout s’installe d’un coup automatiquement (via l’interface graphique ou via une unique ligne de commande en mode console).

Une fois installées, ces applications sont ensuite accessibles à l’utilisateur via une interface (toujours dans le navigateur) dite « SSO » regroupant tous les services auxquels celui-ci à accès avec le même login.

Le design de l’interface SSO de YunoHost

Une vingtaine d’applications dites « officielles » sont proposées mais il est également possible d’installer des applications non officielles mises à disposition par la communauté – avec, bien sûr, plus de risques.

L’interface d’administration ainsi que l’interface utilisateur SSO peuvent être testée ici depuis le site de Yunohost : https://yunohost.org/#/try_fr

Les premières interrogations

Avant d’entreprendre d’installer YunoHost, ma première démarche à été de lire intégralement la marche à suivre sur le site de Yunohost. Le Guide de l’Administrateur est spécialement conçu pour expliquer les étapes pas à pas : https://yunohost.org/#/admindoc_fr

Pour concrétiser encore un peu la post-installation, j’ai aussi visionné cette vidéo : https://www.youtube.com/watch?v=mq6569w2rEU

Après une lecture de cette documentation – j’insiste encore – écrite dans un langage dans l’ensemble très compréhensible pour moi – et le visionnage de cette vidéo, quelques points restaient néanmoins flous en regard de mes compétences en informatique, en particulier du côté « réseau » :

* En quoi consistaient concrètement les redirections de ports qui devaient être opérées sur ma box internet (la notion de ports est quand même très abstraite pour un·e néophyte), quelles devaient être exactement les manipulations ?

* Comment relier ma machine à un nom de domaine (ne maîtrisant pas la notion de redirection de ports : quelle IP lui donner ? celle visible de l’extérieur attribuée par mon fournisseur d’accès, ou une plus précise pour indiquer à quelle machine de mon réseau local diriger les paquets reçus) ?

* Comment cela se passait-il aussi si l’on avait plusieurs noms de domaines ?

* La gestion des champs DNS ensuite : en quoi consistait un champ DNS ? Que voulaient dire ces symboles avec des AAAA à la suite comme sur les piles ou les andouillettes ? Que voulaient exprimer les chiffres indiqués en TTL ? YunoHost fourni quelques notes à ce sujet (https://yunohost.org/#/dns_config_fr) mais celles-ci sont assez succinctes à l’heure où j’écris et trop peu explicites lorsqu’on n’a jamais édité un seul champ DNS de sa vie et que l’on découvre à peine cette notion. En-ligne, on trouve également assez peu d’explicitations claires et complètes sur le sens de ces différents champs et sur leur paramétrages (faut-il les éditer sur notre machine ? chez l’hébergeur du nom de domaine ? chez les deux ?). Je ne comprenais pas bien si la configuration recommandée accessible dans la webadmin était purement informative ou devait encore faire l’objet d’une manipulation dans mon système.

* Les questions d’IP fixes et d’IP dynamiques : je ne savais pas vraiment ce que j’avais à la maison.

En outre, j’avais appris en lisant la documentation de YunoHost et des posts sur le forum qu’il n’était pas encore possible de réaliser des backups sur des machines distantes via l’interface graphique du navigateur mais que cela était possible en ligne de commande. Comme je n’étais pas certaine du matériel sur lequel serait finalement installé le serveur au final, il m’importait de m’assurer de pouvoir rapatrier les sauvegardes vers mon ordinateur ou vers un NAS que j’avais déjà.

Un premier essai sur une machine virtuelle

Ces questions et zones d’ombres m’ont motivée à réaliser à mon tour un essai dans une machine virtuelle. Personnellement, j’avais préalablement appris à installer une machine virtuelle mais, pour les utilisateurs·trices curieux·ses qui ne l’auraient jamais fait, YunoHost propose un tutoriel pour cela : https://yunohost.org/#/install_on_virtualbox_fr

La première étape étant pour moi de comprendre comment paramétrer les redirections de ports sur ma box internet, et n’ayant pas préalablement de nom de domaine, j’ai réalisé mon premier essai avec un nom de sous-domaine fourni par YunoHost.

Pour les personnes qui ne disposent pas d’un nom de domaine (les noms de domaines sont payants), YunoHost propose en effet des sous-domaines en « .noho.st » ou en « .nohost.me ». Ceux-ci s’enregistrent au moment de la post-installation (il suffit de les spécifier quand YunoHost demande un nom de domaine). Avec ces sous-domaines gratuits qui peuvent être obtenus auprès de YunoHost, il n’est pas possible d’installer toutes les applications de l’écosystème de YunoHost. Ils ont cependant l’avantage d’être gratuits et de ne pas nécessiter d’autres paramétrages DNS auprès d’un hébergeur – ce qui était plus facile pour moi, au moins dans un premier temps.

Paramétrage des ports sur le router

Note : je sais que cela ne sera pas la même chose sur un autre router mais j’ai l’impression qu’une illustration sous forme de captures d’écran peut aider un·e débutant·e à mieux se représenter les choses. Je pense en tous cas que cela aurait pu m’aider personnellement même si la capture d’écran n’était pas celle de mon router. : cela m’aurait permis de voir comment les choses peuvent se présenter et d’avoir une vision un peu plus claire de ce qui m’est demandé à cette étape.

Je vis en Belgique et mon FAI est Edpnet. Mon router est une FritzBox WLAN 7360. Sur un tel appareil, la redirection des ports se présente comme suit :

Il faut aller dans Internet -> Autorisations d’accès, puis cliquer sur Nouvelle redirection de port » pour paramétrer les redirections de ports. Sur l’écran qui s’affiche, il est nécessaire de choisir « Autres Applications » pour obtenir d’avantage de paramètres :

Paramètres par défaut pour la redirection de ports, il faut aller dans « Autres applications » pour des paramètres supplémentaires
Les paramètres à remplir pour rediriger le port 993 pour l’IMAP (réglage pour le mail)

On remplit alors le nom du service (ici IMAP pour les mails), le protocole (ici TCP, comme renseigné dans la documentation de YunoHost), le port concerné. Ici je dois le spécifier plusieurs fois… sans avoir trouvé d’infos spécifiques à ce sujet, j’ai mis 993 partout… et ça semble marcher 🙂 (… je suppose que ceci peut servir si l’on a plusieurs machines qui doivent être accessibles et qu’on utilise donc des ports différents sur chaque machine). On définit enfin la machine sur laquelle le port est redirigé qui est identifiée par son nom (ici YunoHost) et son adresse IP.

Note : Au moment de mes tâtonnements, j’ai aussi à un moment donné créé une « Autorisation d’accès » vers ma machine comme un serveur HTTPS. Je ne sais pas au final se cela était nécessaire (je ne crois pas), mais je n’ai plus pensé à tester en le supprimant.

Édition des champs DNS

Après avoir fait quelques essais avec un sous-domaine offert par YunoHost, j’ai acheté un nom de domaine chez OVH (merci le capitalisme et le black friday pour ses noms de domaines à moins de 2 euros…) pour réaliser des tests avec un vrai nom de domaine. J’ai donc pu me confronter aux fameux champs DNS.

Même si tout n’est pas facile à comprendre pour un·e néophyte, YunoHost fourni de précieuses informations pour remplir les champs DNS. Une configuration recommandée est trouvable dans l’interface du navigateur dans Domaine -> [Le domaine concerné] -> Configurations DNS.

Pour mon domaine « patobroco.eu », YunoHost me propose les champs suivants :

Ces indications, comme précisé par YunoHost, ne configurent pas elles-mêmes le domaine. Elles sont à reporter chez l’hébergeur auprès duquel on a acheté un nom domaine (ici OVH). Ces informations, attachées au nom de domaine ou aux sous-domaines créés (dans mon cas, un sous domaine est quelque chose comme sousdomaine.patobroco.eu), indiquent l’adresse IP de la machine vers laquelle la connexion doit être dirigée.

Quelques précisions par rapport aux informations fournies par YunoHost

Les entrées DNS peuvent être de différents types. YunoHost en présente quelques uns (https://yunohost.org/#/dns_config_fr), dont le champ « A » qui est nécessaire pour indiquer l’adresse IP de ma machine. Ce champ permet de faire le lien pour que lorsqu’on tape « patobroco.eu », les données qui s’affichent dans le navigateur proviennent de ma machine (pour une adresse IPv6, c’est un champ « AAAA »).

Pour une installation minimale de YunoHost, il est nécessaire de disposer des champs A, MX (pour le mail) et SRV pour le serveur de messagerie instantanée XMPP. Il est proposé de choisir un TTL de 3600. Ces abréviations qui peuvent paraître incompréhensibles et angoisser un·e néophyte sont en réalité faciles à manipuler dans l’interface d’un hébergeur comme OVH qui propose de les créer ou de les éditer facilement ainsi que d’autres types de champs (pas besoin de recourir forcément à la modification d’un fichier de configuration en format texte comme le laisse penser les indications fournies par YunoHost, le tout peut se faire facilement via une interface graphique). Pour chaque domaine, il est tout aussi aisé de configurer des sous-domaines.

Néanmoins, par rapport à ce qui est expliqué sur le site de YunoHost, quelques compléments qui permettent de mieux comprendre ces champs :

  • Le « . » à la fin du nom de domaine lorsqu’il est la cible des champs SRV et MX est nécessaire car sinon, l’enregistrement ajoute le dit nom de domaine à la cible écrite, faisant des choses comme « patobroco.eu.patobroco.eu »
  • Le paramètre TTL correspond au temps durant lequel un serveur DNS conservera (« en cache ») l’information liée à un champ DNS (l’information que tel domaine ou sous-domaine « pointe » vers telle adresse IP) avant de refaire une recherche pour obtenir cette information. Un TTL de 3600 secondes signifie donc que ces informations seront gardées en mémoire durant 1h. Concrètement, cela signifie que si l’on change l’IP vers laquelle pointe notre nom de domaine, ce changement ne sera pris en compte qu’après un certain temps par les différents annuaires DNS ayant préalablement d’autres informations à ce sujet. Ainsi, durant 1 h, le nom de domaine est susceptible de pointer encore vers son ancienne adresse IP dans les annuaires.
  • Si l’on souhaite éditer des sous-domaines qui pointent vers notre machine, le type de champ à utiliser est le CNAME (voir exemple ci-dessous).

Quelques exemples en images

Voici quelques captures d’écrans pour expliciter la façon dont se paramètrent les champs DNS. Ici aussi, bien que l’interface puisse varier d’un hébergeur à l’autre, il me semble utile d’avoir des exemples concrets imagés car cela m’a fait défaut personnellement. En effet, le site de YunoHost indique bien là où il faut se rendre dans l’espace client d’OVH pour éditer les champs DNS mais ne montre malheureusement pas d’exemple concret de remplissage des champs. Comme écrit ci-dessus, le format texte des champs qui est fourni laisse aussi supposer la nécessité d’éditer un fichier de configuration, ce qui peut inquiéter.

Pour des utilisateurs·trices connaisseurs·trices de l’informatique, ce genre de procédé ne doit pas sembler poser problèmes mais il ne va pas de soi lorsqu’on n’est pas familiarisé avec cela précédemment.

Configuration du champ A pour patobroco.eu

Voici comment j’ai modifié (il existait déjà) le champ A dans OVH pour qu’il corresponde à ma machine :

Modification de l’entrée DNS A pour faire pointer mon nom de domaine vers ma machin

Pour modifier un champ DNS, on clique sur les « … » dans un cercle pour accéder au menu qui le permet. Pour ajouter un champ, on clique sur « Ajouter une entrée » en haut à droite.

NB : cette capture d’écran a été faite rétrospectivement après que mon ‘vrai’ serveur soit installé et qu’il dispose d’un VPN pour une IP fixe.

Configuration des champs mail MX

Voici comment j’ai modifié le champs MX dans OVH pour qu’il corresponde à ma machine :

Modification d’un champ MX pour le mail.

Ici la cible n’est pas une adresse mais « patobroco.eu. » (avec le « . ») puisque le « patobroco.eu » pointe déjà vers l’adresse de la machine.

Configuration d’un sous-domaine pour OpenSondage

Lorsqu’on dispose d’un nom de domaine, on peut ajouter comme je l’ai signalé des sous-domaines. Ceux-ci pointent vers la même machine mais sont différentiés. Les applications de YunoHost peuvent s’installer à plusieurs sur un même domaine, à la façon d’un répertoire qui suit le nom de domaine (par exemple : patobroco.eu/nomdelapplication) ou s’installer sur de tels sous-domaines. Avant de faire l’installation de l’application, il faut donc ajouter le sous-domaine souhaité à YunoHost et, pour qu’il soit connu des annuaires DNS, le renseigner dans la zone DNS de l’hébergeur.

Ici un exemple avec l’application OpenSondage :

OpenSondage (plus connu sous le nom de framadate ^^) est une application permettant de créer des sondages en prévision d’un événement. Cette application est une application officielle de Yunohost qui peut être installée aussi bien sur un domaine que sur un sous-domaine.

J’ai souhaité l’installer à la racine du sous-domaine « date.patobroco.eu ». Pour utiliser ce sous-domaine, j’ai donc dû préalablement ajouter une entrée dans ma zone DNS chez OVH. Cette entrée est alors de type « CNAME ».

Configuration d’un champ CNAME pour le sous-domaine date.patobroco.eu

J’ai entré les informations suivantes :

Configuration d’un champ CNAME pour le sous-domaine date.patobroco.eu

Note : Sur la capture d’écran, j’avais conservé un TTL par défaut mais je l’ai ensuite réglé à 3600.

Copie des backups sur une machine distante en SSH

Un dernier point que je souhaitais tester dans ma machine virtuelle avant une réelle installation concernait les backups. Comme je ne savais pas ce que j’utiliserais comme matériel pour le serveur (et donc la capacité qu’aurait le disque dur de la machine), il me semblait nécessaire de savoir comment transférer des backups pour les conserver hors de ma machine et ne pas qu’ils prennent de la place dessus.

Ce dernier point ne s’est pas avéré trop compliqué dans la mesure où j’utilisais déjà Linux depuis quelques mois et que j’avais déjà un peu utilisé mon terminal (même si y copier, même aveuglément, des lignes de commandes me procurait toujours une certaine montée d’adrénaline) et où les lignes de commandes à utiliser sont bien renseignées dans YunoHost : https://yunohost.org/#/backup_fr

En réalisant l’opération, j’ai néanmoins rencontré deux difficultés :

* L’une relative à ma machine virtuelle : le port 22, utilisé par la connexion SSH utilisée par cette commande n’était pas préalablement ouvert et il m’a fallu éditer un fichier de configuration avec un éditeur de texte dans le terminal (vi) pour l’autoriser. Mais ce problème n’était pas présent lorsque j’ai installé Yunohost sur une ‘vraie’ machine où j’ai pu établir facilement une connexion en SSH. Peut-être avais-je modifié quelque chose sans m’en rendre compte. Par ailleurs, au lieu d’ouvrir le port 22 en éditant un fichier de configuration, j’ai découvert par la suite que ce type de manipulations pouvait être fait via le par-feu de la webadmin de Yunohost.

* L’autre en raison des permissions du dossier « archives » qui ne laissaient pas l’utilisateur admin y manipuler les archives. Dans la mesure où Yunohost change la configuration SSH pour interdire à l’utilisateur de se connecter en tant que root, il n’est pas possible d’adapter les commandes à cet utilisateur. Mes premières manipulations ont consisté à me positionner dans ma machine Yunohost en tant que root et à envoyer via le réseau local l’archive sur mon ordinateur (activant SSH sur ce dernier). Par la suite, j’ai appris à changer les permissions de ce dossier. De même, plutôt que la ligne de commande, j’ai utilisé FileZilla.

Bilan de ma première expérience d’installation de YunoHost

Ma première expérience d’installation de YunoHost sur une machine virtuelle m’a permis de me familiariser avec la partie graphique du logiciel : ajouts d’utilisateurs, de domaines, d’applications, réalisation de sauvegardes, mises à jours etc. (+ un tout petit peu par ligne de commande via SSH)

Cette expérience m’a aussi permis d’apprendre la gestion de la partie réseau, du côté de ma box internet et des champs DNS du côté de mon hébergeur. Elle m’a permis d’apprendre et de rendre plus clair dans ma tête comment des machines se connectent entre elles et comment les noms de domaines sont associés aux adresses IP.

Elle m’a aussi montré les problèmes que rencontrerait une prochaine vraie installation :

1) Mon adresse IP n’étant pas fixe, un VPN serait nécessaire pour ne pas devoir ré-éditer mes champs DNS à chaque changement d’adresse IP (même si Edpnet laisse plutôt longtemps les mêmes adresses IP publiques sauf redémarrage du router, un changement fréquent de l’adresse IP dans la zone DNS est fastidieux).

2) Malgré la redirection des ports sur ma box et l’ouverture du port 25 dans YunoHost, les mails sortants étaient bloqués par mon réseau. Il est possible que cela puisse être débloqué mais, mon installation nécessitant de toute manière un VPN, ce problème serait corrigé.

Enfin, bien sûr, cette expérience m’a permis de comprendre davantage comment se construisait internet et a renforcé l’envie d’y apporter moi-aussi, une brique. C’est pourquoi, après ces premiers tests, j’ai eu envie de passer à l’installation d’un ‘vrai’ serveur sur une véritable machine.