Le blog de Genma
Vous êtes ici : Accueil » Yunohost » De la dépendance d’une instance Yunohost au serveur de Yunohost

De la dépendance d’une instance Yunohost au serveur de Yunohost

D 3 septembre 2020     H 09:00     A Genma     C 1 messages   Logo Tipee

TAGS : Yunohost Auto-hébergement Planet Libre

Remarque : ce billet de blog vient en complément de mon billet Yunohost - Les mails d’administration système et mails automatiques.

Introduction

Spécificité : mon instance est associée à plusieurs domaines et sous-domaines
Le domaine principal (qui est ici représenté par moninstanceyunohost.fr) est un nom de domaine géré par GANDI (pour la location du nom de domaines et la résolution DNS).

YunoHost fournit un service de noms de domaine offerts et automatiquement configurés (cf Yunohost - Noms de domaines automatiques) et il peut arriver que de en temps, différents serveurs du projet Yunohost ne répondent plus.

Voici les erreurs rencontrées et les conséquences de l’absence de réponse de ces serveurs.

Pas de résolution DNS et mail reçu

Comme indiqué dans mon billet Yunohost - Les mails d’administration système et mails automatiques, Yunohost envoi des mails d’administration.

Durant le mois d’août 2020, pendant quelques heures, toutes les 2 minutes, j’ai reçu le mail suivant :

* Expéditeur : Cron Daemon root@moninstanceyunohost.fr
* Sujet : Cron yunohost dyndns update >> /dev/null
* Corps du mail :

Traceback (most recent call last):
  File "/usr/bin/yunohost", line 218, in <module>
    timeout=opts.timeout,
  File "/usr/lib/python2.7/dist-packages/moulinette/__init__.py", line 149, in cli
    moulinette.run(args, output_as=output_as, password=password, timeout=timeout)
  File "/usr/lib/python2.7/dist-packages/moulinette/interfaces/cli.py", line 469, in run
    ret = self.actionsmap.process(args, timeout=timeout)
  File "/usr/lib/python2.7/dist-packages/moulinette/actionsmap.py", line 588, in process
    return func(**arguments)
  File "/usr/lib/moulinette/yunohost/log.py", line 313, in func_wrapper
    result = func(*args, **kwargs)
  File "/usr/lib/moulinette/yunohost/dyndns.py", line 235, in dyndns_update
    old_ipv4 = check_output("dig @%s +short %s" % (dyn_host, domain)).strip() or None
  File "/usr/lib/python2.7/dist-packages/moulinette/utils/process.py", line 31, in check_output
    return subprocess.check_output(args, stderr=stderr, shell=shell, **kwargs)
  File "/usr/lib/python2.7/subprocess.py", line 219, in check_output
    raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'dig @dyndns.yunohost.org +short moninstanceyunohost.ynh.fr' returned non-zero exit status 9

Ce mail est envoyé par une commande (yunohost dyndns update, commande qui fait donc appel à la moulinette interne) qui est lancée via une tâche cron toutes les 2 minutes

# more /etc/cron.d/yunohost-dyndns

*/2 * * * * root yunohost dyndns update >> /dev/null

Le mail et l’erreur indiquée précise la commande qui est derrière, à savoir

dig @dyndns.yunohost.org +short moninstanceyunohost.ynh.fr

Le serveur dyndns.yunohost.org et le serveur qui fait la résolution des domaines en ynh.fr pour avoir la correspondance sousdomaine.ynh.fr - IP de la machine. Si il ne répond pas, la commande tombe en erreur.

Conséquence : dans un navigateur, l’adresse moninstanceyunohost.ynh.fr n’est donc plus accessible.

Plus de mises à jour de Yunohost

Yunohost repose sur Debian (et donc les serveurs associés, du moins les miroirs) mais a également son propre serveur qui contient l’ensemble des paquets nécessaires au projet (c’est de ce serveur que sont téléchargées les mises à jours des programmes spécifiquement développés dans le cadre du projet Yunohost par exemple)

Dans le dossier de configuration des dépôts d’un serveur Yunohost, on a :

# cat /etc/apt/sources.list.d/yunohost.list 
deb http://forge.yunohost.org/debian/ buster stable

Si le serveur derrière forge.yunohost.org ne répond pas, Debian (Yunohost reste une distribution Debian) indique que le serveur ne répond pas et qu’il ne peut pas faire la mise à jour pour les logiciels issus de ce serveur. Les autres dépôts (ceux de Debian) étant accessibles / fonctionnels, il est toutefois possible de mettre à jour son serveur (correctifs et mises à jour de sécurité) via la ligne de commande, depuis une connexion en SSH par exemple, pour tout ce qui concerne Debian au sens strict.

Pour aller plus loin dans ce principe de dépendance

Le bon fonctionnement d’une instance Yunohost repose donc en partie sur quelques serveurs de l’infrastructure du projet, eux-mêmes gérés par les contributeurs cœurs de Yunohost. Comme pour tout logiciel libre, l’usage d’un logiciel libre dépend aussi fortement de sa maintenance et son évolution dans le temps. Il y a la problématique de la pérennité de Yunohost dans le temps : Yunohost est développé par plusieurs développeurs, mais par peu de développeurs. Les mainteneurs des paquets d’applications Yunohost sont tous bénévoles (à ma connaissance) et sont également peu nombreux... Il faut bien avoir ça en tête... Un jour Yunohost peut s’arrêter et disparaître ; ces problèmes ponctuels sont là pour nous le rappeler...

Enfin, il est important de garder en tête qu’il n’y a pas d’association ou de structure derrière Yunohost, encore moins d’entreprise, juste un collectif. Mais il y a des frais (rien que la maintenance des serveurs). Alors, si vous aimez le projet et que vous souhaitez le soutenir financièrement : https://donate.yunohost.org/

1 Messages

  • Et on pourra noter également ip.yunohost.org (et ip6.) qui permet au serveur de connaître ses IP globales et diagnosis.yunohost.org pour certains morceaux du système de diagnostique (exposition du port, de nginx et postfix). On a certaines idées en tête pour décentraliser ceux-là, mais c’est vraiment du long terme. Par contre décentraliser dyndns.yunohost.org et le dépôt Debian c’est plus compliqué.