Jélatine

Yunohost

Petit point annuel sur mon environnement numérique qui me permet d'héberger un certain nombre de services (si je m'y tiens, je m'impressionnerai tout seul...).

Matériel

Toujours le vieux XPS de 2015 derrière la Freebox. Rien n'a vraiment changé finalement. On peut dire qu'il est amorti !

Logiciel

La base n'a pas changé non plus (à part les versions bien sûr) : Fedora Server sur le XPS – que j'administre à partir de l'interface web Cockpit –, qui gère une machine virtuelle #Yunohost.

Ce Yunohost gère quant à lui deux domaines, le perso calut.fr et un autre pro, avec les e-mails bien sûr.

Blog

J'ai laissé tombé Pelican pour WriteFreely. J'aimais beaucoup le côté statique de Pelican, et ma bidouille pour le faire marcher avec Nextcloud était presque pas trop mal. Mais force est de constater que je ne m'en suis pas servi !

Avec #WriteFreely, je me dis que la diffusion sur le fediverse me motivera un peu plus. J'ai rapatrié mes posts #Pelican (il y a une fonction d'import, pas trop d'effort à fournir), l'interface est ultra-sobre... On verra !

Microblog

Plus ça allait, et plus mon instance #Misskey me faisait soucis. Le “Drive” intégré ne me permettait plus de télécharger des fichiers, plus de photos à partager donc, plus d'image de profil, et la documentation est peu instructive tout comme les fils des tickets github.

Après tergiversations et scrutation du catalogue yunohost, j'ai décidé de migrer vers une instance #mastodon. @djelouze@social.calut.fr est donc devenu @djelouze@mstdn.calut.fr, parce que je n'ai pas trouvé le moyen de conservé le sous-domaine social.

La migration n'a pas été compliquée, à part quelques bidouillages côté misskey pour l'export des abonnements. J'y reviendrai dans un autre post je pense.

Cloud

#Nextcloud est toujours en service, c'est la plus vieille application de mon yunohost et je lui ai adjoint #Collabora pour de l'édition WYSIWYG.

Gestionnaire de mot de passe

Je suis en train de passer de KeepassXC (que j'utilisais sur mes différents terminzux grâce à nextcloud) à Vaultwarden, un fork de Bitwarden. Le but est de proposer le service à une personne que je ne vois pas gérer des synchronisations nextcloud.

En vrac

  • Dépôt de code : #Forgejo est très mieux, j'en ai deux, mais je les utilise peu
  • Funkwhale, toujours là, je n'utilise pas la fédération pour l'instant
  • Calibre-web pour partager mes livres avec mes collègues
  • Dolibarr pour la gestion de ma petite entreprise
  • SoGo pour que le fiston puisse aller voir ses mails de partout
  • Kresus pour la gestion des finances quotidiennes
  • Et plein d'autres que je teste !

Une mise en veille (un peu) longue

Ceci n'est pas un billet technique

Ou pas que. La sortie d'hibernation concerne uniquement ce blog, qui n'a pas eu de nouveau billet depuis 2 ans. Et il s'en est passé, des choses, depuis...

(À commencer par ma reprise d'étude, que j'espérais raconter depuis la décision en 2021!)

Évolution de mon auto-hébergement

Donc voyons voir. À l'époque, je me lançais dans l'auto-hébergement. Une machine à la maison (XPS de 2015) derrière une freebox pour différents services ludiques, un VPS chez hetzner pour un nextcloud familial et un nom de domaine chez gandi qui gérait également mes mails.

Le XPS est sur une Fedora server pour gérer quelques machines virtuelles, dont une Yunohost – et c'est la seule, finalement !

Yunohost a fait largement ses preuves depuis, et je ne l'ai pas épargné : installation d'applications en tout genre “pour voir”, désinstallation évidemment parce que “en fait je m'en sers pas”, serveur minetest pour l'ado qui finalement préfère fortnite sur switch, mon instance Misskey qui me relie au fédivers,...

La première grande évolution a été de laisser Yunohost gérer mes mails perso, Gandi ne devenant plus qu'un fournisseur de nom de domaine. Ça fait maintenant plus d'un an que c'est le cas. Je n'ai pas souvenir de problème de configuration, éventuellement quelques passages en spam chez quelques destinataires, mais rien d'alarmant.

La deuxième évolution importante : rapatrier mon nextcloud (et accessoirement un serveur Calibre et ce blog) à la maison pour fermer le VPS et faire quelques économies. Encore une fois, Yunohost gère très bien Nextcloud, Pelican et Calibre-web donc à part le temps de transfert des données ça n'a pas été très difficile[1]. J'ai juste fait attention avec les enregistrements DNS, les IP ayant changé ! Et justement...

Dernière évolution : le passage de Gandi à Infomaniak pour le nom de domaine. Là, j'ai perdu un peu de confort, car Yunohost gére automatiquement les enregistrements DNS avec Gandi. Ce n'est pas le cas (pour l'instant ?) avec Infomaniak. J'ai commencé par exporter les enregistrements Gandi, effectuer le transfert vers infomaniak, puis mettre à jour quelques enregistrements. Et voilà (en anglais dans le texte).

Aujourd'hui

Pour résumer, tout est chez moi sur un PC de 10 ans d'âge. Le serveur Fedora avec son interface Cockpit ne gère qu'une seule VM Yunohost, aussi je me tâte à tout simplement installer Yunohost directement sur la machine. Mais je dois avouer que pour les sauvegardes, faire un petit snapshot de la VM de temps en temps, c'est facile quand même 😅

Le passage à Yunohost 12 a quand même fait une victime collatérale : mon instance Funkwhale[^2], que j'appréciais pour écouter mes musiques ailleurs que chez moi. Je n'ai pas le temps de m'occuper de ça, et heureusement mon audiothèque est intacte. Pour l'instant, je laisse Nextcloud me proposer son player mais j'aimais bien le côté fédéré de funkwhale.

Depuis mes migrations récentes, Yunohost gère aussi mon nom de domaine pro, ses mails, son nextcloud et son dolibarr. Encore une fois, rien à redire. J'ai remplacé Gitea par Forgejo, sans avoir eu l'occasion de tester.

Pour ce blog, j'ai tâtonné concernant les droits d'accès des fichiers de façon à pouvoir synchroniser les fichiers “sources” de Pelican avec Nextcloud. C'est chose faite : j'édite les billets en markdown sur ma machine (j'ai installé et découvre Apostrophe[^3] qui est très bien) ou directement dans le navigateur depuis mon nextcloud. Quand je sauvegarde, les fichiers HTML du blog sont générés automatiquement. J'aurais voulu passer à WriteFreely pour la fédération, mais une erreur m'empêche de l'installer sur Yunohost.

Plus tard...

La prochaine étape serait de migrer mon Misskey (ma porte d'entrée vers le fedivers) vers une instance Pleroma, mais l'application n'est plus disponible sur Yunohost. J'ai été déçu par une mise à jour récente, qui m'a imposé des fonctionnalités de gamification qui ne m'intéressent pas. Mais je n'ai pas le courage/temps/argent d'installer un autre serveur.

Dorénavant ce serveur auto-hébergé qui tourne comme une horloge va servir surtout à soutenir ma reprise d'étude. Je tenterai donc quelques expériences qui lient médecine, cours, et informatique (serveur d'image médicale, différents projets autour de Anki pour la préparation du concours EDN,...)

[1]: Je ne me suis pas lancé dans une migration de serveur : sur le VPS, l'installation avait été faite “à la main”, et je préfère laisser Yunohost gérer la configuration à la maison. Donc transfert “à l'ancienne” du répertoire nextcloud-data et resynchronisation finale. [^2]: C'est un problème connu, et la solution est... d'attendre :) [^3]: Dépôt gnome d'Apostrophe

#selfHosting #yunohost #nextcloud #pelican

Le moment idéal

Une conjoncture favorable me motive à tenter un auto-hébergement avancé :

  • L'écran de mon Dell XPS de 2015 donne des signes de faiblesse, mais reste une configuration honorable (i7, 16G RAM, 500Go SSD)
  • Le macbook de la même année revit grâce à une Fedora 35, il devient mon ordinateur quotidien (voir ce billet)
  • J'ai le temps

Voici mon plan framasoftien pour participer, à mon humble niveau, à la décentralisation. Le XPS deviendra un simple gestionnaire de machines virtuelles dédiées à différents services. Le premier sera un serveur YunoHost, au coeur de la démarche de décentralisation.

Ce serveur hébergera des instances de plusieurs services en ligne :

  • Misskey ou Pleroma, en remplacement de Mastodon et ainsi décharger Framasoft de mon compte framapiaf
  • Peertube, pour voir
  • Funkwhale, pour voir
  • EtherPad, EtherCalc, pour la collaboration dans différentes assos
  • Serveur XMPP, pour montrer d'autres solutions de messagerie instantanée autour de moi
  • ... et en fonction des besoins, on verra bien.

Je ne compte pas ouvrir les inscriptions sur les instances sociales – je ne me sens pas l'âme d'un administrateur-modérateur. Tous les autres services anonymes seront eux bien accessibles, dans la limite des ressources réseaux disponibles.

Test local

Il est extrêmement facile de créer des machines virtuelles (VM) sur Linux. KVM est intégré au noyau, et le gestionnaire de VM souvent installé par défaut.

Une fois l'ISO de YunoHost récupéré, l'installation se fait sans douleur. L'interface d'administration est censée se trouver sur https://yunohost.local, mais pas dans mon cas : le gestionnaire de VM créé un sous-réseau. Je dois donc passer par l'IP pour afficher l'interface.

Par curiosité, je tente l'installation de Pleroma. A priori, ça fonctionne avec mon nom de domaine, même si je dois l'ajouter dans mon /etc/hosts pour cela – il faut que je change le mode réseau de la VM pour un mode bridge plutôt que NAT, à mon avis.

Mon compte Pleroma voit mon compte framapiaf \o/ La VM étant isolée, l'inverse n'est pas vrai, et la communication est perdue rapidement mais c'est prometteur.

Concernant XMPP : YunoHost installe automatiquement un serveur ! Je teste localement avec Gajim (un client XMPP pour linux) : ça marche \o/

Idem, je ne peux pas rejoindre de salon, mais c'est très certainement lié au caractère très local de ma configuration.

Grandeur nature

La première chose à faire est d'installer Fedora Server sur le XPS en faisant table rase du passé. Une fois l'installation terminée, j'ai accès à l'interface de gestion du serveur via Cockpit sur le réseau local. Une mise à jour des paquets et l'installation des outils de virtualisation est nécessaire avant de pouvoir installer l'application Machine qui offre une entrée Virtual Machines dans le menu principal.

Une petite bidouille nécessaire : éviter que la machine se mette en veille lorsqu'elle est fermée.

Bridge

Les VM devront être sur le réseau local. Il faut configurer l'hôte de manière à proposer une interface réseau en mode Bridge

Yunohost

La première machine virtuelle installée sera donc YunoHost. Après la création de la VM, l'interface réseau choisie par défaut est le bridge, rien à faire donc de ce côté. Yunohost s'installe comme n'importe quel OS headless, l'interface de configuration est accessible par un navigateur sur une machine du réseau local. Contrairement à la documentation, https://yunohost.local ne marche pas et je dois passer par l'IP que je trouve grâce à l'interface de configuration de la Freebox.

Ensuite, c'est la configuration du domaine :

  • je désactive les mails entrants/sortants et garde XMPP
  • je lance la configuration DNS. Heureusement je suis chez [Gandi] et tout cela semble automatisé !

Mais après la récupération de la clé d'API, j'obtiens :

Échec de l'enregistrement create AAAA/xxxx.org : list indices must be integers or slices, not str
Échec de l'enregistrement create CAA/xxxx.org : list indices must be integers or slices, not str

Et

Attente de la réponse du serveur

qui tourne en boucle sur [POST] /domains/xxx.org/dns/push?dry_run

Pourtant, dans ma configuration DNS Gandi, toutes les entrées de Yunohost apparaissent bien (sauf les deux entrées AAAA et CAA en erreurs évidemment). Il n'y a que deux erreurs; je les crée à la main depuis l'interface de gestion de Gandi et c'est bon.

C'est la seule VM sur le réseau qui mérite d'être accessible depuis l'extérieur pour l'instant. J'active la DMZ de la Freebox de manière à rediriger tout le trafic entrant vers elle.

La génération d'un certificat avec letsencrypt passe sans soucis.

La foire aux services

Yunohost est fonctionnel, et avec lui le catalogue d'application qui me happe. Résultat :

  • Pleroma ne fonctionne pas sur ma configuration, erreur à l'installation
  • Misskey s'installe correctement, mais j'ai tâtonné pour créer le premier utilisateur.
  • Etherpad, easy peazy
  • Funkwhale, easy peazy. Le système de fédération reste obscur pour moi, mais je vais creuser ça
  • Excalidraw s'installe correctement mais reste bloqué sur Loading scene lors d'une visite sur la page
  • Peertube s'installe proprement, mais le LDAP et l'envoi de mail ne fonctionne pas

Bidouilles

Peertube

Je n'ai pas reçu le mail contenant le mot de passe initial de l'utilisateur root. Il s'agit sûrement d'un défaut de configuration au niveau Yunohost : en effet, je ne souhaite pas utiliser l'auto-hébergement des mails, mais je veux le même nom de domaine. Même si Peertube a son propre sous-domaine, l'envoi initial se fait sur xxx@domaine.tld et les journaux de service postfix et dovecot semble me dire que le mail a bien été envoyé et reçu, sans sortir de localhost après l'installation.

Je me connecte en SSH sur le serveur Yunohost et scrute le répertoire local du serveur de mail :

sudo ls /var/mail/xxx/new

Le dernier mail est bien celui contenant le mot de passe pour l'utilisateur root de Peertube !

En root sur Peertube, je configure le LDAP comme expliqué dans ce mail, puis je me connecte en tant que xxx (mon utilisateur principal Yunohost). L'utilisateur n'est pas connu. Je tente de le créer à la main : un utilisateur avec cet identifiant existe déjà !

Test rapide : je me connecte avec un autre utilisateur Yunohost qui n'est pas partie prenante dans l'installation. Ça fonctionne. Il s'agit donc d'un conflit entre root et xxx, qui sont les mêmes utilisateurs Yunohost.

Je créé un utilisateur yunohost@ynh.domain.tld et j'en profite pour configurer le mail. Je réinstalle Peertube avec cet utilisateur comme root, et c'est tout bon.

Peertube installe un service Prosody (serveur XMPP) pour le live chat, même si je ne l'utilise pas. Il entre en conflit avec Metronome, le serveur XMPP de Yunohost. À suivre.

Misskey

Il faut que l'application soit dans les applications autorisées pour les visiteurs (Groupes et autorisations), sinon on a une page vide (à part les logos fork sur github et yunohost).

L'import de mes contacts framapiaf ne marchait pas. Le journal du service misskey de Yunohost indiquait

Blocked address : 127.0.0.1

Il y a effectivement une variable de configuration allowedPrivateNetworks qui permet d'autoriser localhost. Je le modifie en ligne de commande dans /var/www/misskey/.config/default.yml

Je redémarre le service misskey, et ça importe !

Je n'ai plus qu'à attendre que mes anciens contacts accepte ma demande de suivi et qu'elles et ils me suivent.

Premiers soucis !

Il n'aura pas fallu longtemps pour mettre tout ça KO ! Et pas de mon fait : le switch optique sur lequel je suis connecté a subit un incident. Résultat : mon serveur Yunohost n'est plus accessible.

Redondance

Dans l'idéal, il faudrait, je pense, une sorte de miroir qui prend le relais dans ces cas là. C'est beaucoup d'investissement pour pas grand chose. Au pire, je déplace le serveur ailleurs (rappel: c'est un XPS 13', donc très facile à transporter) et mets à jour le DNS chez mon fournisseur de nom de domaine.

Par contre, ça confirme que j'ai bien fait de garder mon Nextcloud sur un VPS externe. Si besoin, je me connecte en partage de connexion avec mon téléphone (ce que je fais pour publier ce billet)

Ma musiiiiiiiique !

Alors bien sûr, le web n'est pas mon métier, l'administration système non plus, donc il y en a qui vont bien rigoler. Soyez indulgent⋅es.

Mon instance Funkwhale est accessible depuis funkw.xxx.tld. Ce nom de domaine est défini par une entrée chez mon fournisseur de domaine. Donc... je ne peux pas accèder à ma musique en réseau local ! Il va me falloir me débrouiller pour que les connexions locales restent locales. À savoir : si je suis chez moi, la navigation vers funkw.xxx.tld me dirige directement vers 192.168.0.xx plutôt que <DNS> -> <fournisseur NDD> -> IP publique -> 192.168.0.xx.

Conclusion

Après une semaine d'auto-hébergement, je suis très satisfait. Les services supportés par Yunohost sont facilement déployés, même si il faut mettre un peu les mains dans le cambouis. Avec mes modestes connaissances, j'ai pu me dépatouiller seul donc je ne connais pas la réactivité de la communauté pour la résolution des problèmes – même si j'ai ma petite idée : j'ai eu quelques mentions en peu de temps sur le fediverse !

Funkwhale remplace maintenant totalement Kodi pour la musique, avec le gros avantage d'être accessible partout (sauf quand Free est cassé !).

#selfHosting #yunohost #misskey #peertube #funkwhale