❌

Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

NomadNet - Votre site et vos fichiers sur Reticulum

En février, je vous ai présenté Reticulum , une pile réseau chiffrée de Mark Qvist qui n'a besoin ni de TCP/IP ni d'Internet. Et cette fois, on va aller un peu plus loin en passant à la pratique avec NomadNet, un programme du même auteur qui permet de servir des pages et des fichiers par-dessus Reticulum.

À la fin de ce tuto, vous aurez alors une page d'accueil et quelques fichiers à télécharger, diffusés par votre propre nœud.

Pour ce tuto, je me suis aidé de VMs et de la doc que vous pouvez consulter ici .

Installer NomadNet

NomadNet est tout simplement un paquet Python qui va chercher Reticulum pour l'installer. Il suffit d'invoquer pip comme ceci :

pip install nomadnet

Sur les Debian et Ubuntu récentes, qui bloquent pip, vous pouvez utiliser pipx à la place comme ceci :

pipx install nomadnet
pipx install rns

Et voilà, vous devriez normalement vous retrouver avec NomadNet 1.5.0 et rns 1.6.0.

NomadNet 1.5.0 installé par pipx

Le paquet rns apporte rnstatus et les autres utilitaires de Reticulum 1.6.0

Le second paquet n'est pas obligatoire certes, mais il apporte des utilitaires de Reticulum plutôt cools et pratiques comme rnstatus, qui affiche l'état de vos interfaces.

Lancez ensuite nomadnet une première fois. Le programme s'ouvrira alors sur son guide, dans le terminal, et créera au passage 2 fichiers de configuration : ~/.reticulum/config pour la pile réseau et ~/.nomadnetwork/config pour NomadNet.

Le premier lancement, sur le guide

Ce guide recommande un terminal d'au moins 135 colonnes sur 32 lignes, donc agrandissez un peu la fenêtre si vous voyez que c'est moche et si vous voyez des petits carrés à la place des lettres de l'alphabet, c'est que vous devez installer les Nerd Fonts . Ou vous en passer en changer dans la section [textui] dans le fichier ~/.nomadnetwork/config, le paramètre glyphs = nerdfont par :

glyphs = unicode

Relancez ensuite NomadNet pour que le changement prenne effet.

Côté réseau, la config par défaut n'active qu'une seule interface : l'AutoInterface. Elle permet de découvrir les autres nœuds Reticulum par IPv6 en lien local et transporte les paquets en UDP, sans routeur ni DHCP. Mais elle ne parle qu'aux pairs Reticulum de votre réseau local. Donc si un pare-feu tourne sur la machine et bloque ce trafic, faudra lui ouvrir les ports UDP 29716 et 42671, sinon personne ne vous trouvera et ça c'est triste... snif.

Entre mes deux machines virtuelles, ça a marché sans toucher à rien, puisque le pare-feu ufw est désactivé par défaut dans Ubuntu.

Activer le nœud

Par défaut, NomadNet est un simple client de messagerie. Pour qu'il serve des pages web, ouvrez ~/.nomadnetwork/config, cherchez la section [node] et passez enable_node à yes.

[node]
enable_node = yes
node_name = Mon site
disable_propagation = yes

Le node_name est le nom que votre nœud diffuse à tout le réseau donc je compte sur vous pour choisir un truc cool. Quant à disable_propagation, il sert à faire un nœud qui ne sert que des pages, sans stocker ni relayer les messages chiffrés des autres utilisateurs. En version 1.5.0 c'est déjà le réglage par défaut, donc pas de stress. Relancez ensuite NomadNet, ou faites-le tourner sans interface avec la commande : nomadnet --daemon.

La section [node] de la config, nœud activé

Chez moi, une fois le nœud activé, un onglet My Node est alors apparu dans l'interface, avec l'explorateur des pages et des fichiers, ainsi qu'un éditeur de langage micron (j'y viens après) et un aperçu en direct, soit de quoi se passer de nano.

Sans Nerd Font, des carrés remplacent les icônes de l'onglet My Node

La page provisoire d'un nœud encore vide et la fenêtre de saisie d'adresse, dans une version antérieure de NomadNet

Écrire la page et poser les fichiers

Tant que vous n'avez rien déposé, le nœud sert une page d'accueil générée automatiquement. Comme je vous le disais, les pages s'écrivent en micron, un petit langage de balisage de NomadNet, et vont dans ~/.nomadnetwork/storage/pages. Créez donc d'abord un fichier index.mu, puisque c'est la page servie par défaut à quiconque se connectera à votre noeud.

Les fichiers à partager vont ensuite dans le dossier ~/.nomadnetwork/storage/files, et pour qu'un visiteur puisse en télécharger un, il faudra un lien vers ce même fichier dans une de vos pages.

Voici une page minimale, assemblée à partir des exemples du guide :

>Bienvenue sur mon nœud
Quelques fichiers à récupérer :

`[Le PDF du jour`:/file/document.pdf]

La page index.mu et le PDF posés dans le stockage du nœud

À l'essai, ce lien fonctionne, mais il s'affiche chez le visiteur du texte ordinaire tout moche, alors pour qu'il ressorte un peu mieux, je vous invite à l'entourer d'une couleur et d'un petit soulignement avec ces codes : F79d` et _ pour ouvrir, ``_ et ``f` pour refermer :

`F79d`_`[Le PDF du jour`:/file/document.pdf]`_`f

Notre page vue depuis la seconde machine : le lien ne se distingue pas du texte ordinaire

Avec ses balises de couleur, le lien sort en bleu souligné

L'éditeur micron de l'onglet My Node et son aperçu en direct

L'adresse :/file/document.pdf pointe donc vers un fichier local, posé dans storage/files mais attention par contre, NomadNet ne dressera la liste de ces deux dossiers qu'au démarrage, puisque page_refresh_interval et file_refresh_interval sont à 0 par défaut. Donc après chaque ajout, soit vous redémarrez votre noeud, soit vous donnez à ces deux réglages un intervalle en minutes pour que ça s'auto-refresh tous les X.

Ainsi, une page déjà existante que l'on modifie s'affichera aussitôt chez le visiteur dans sa nouvelle version pour peu qu'il refresh, par contre, une page ajoutée par la suite sera en "Request failed" tant que le nœud n'a pas redémarré.

L'adresse complète d'une page se compose donc d'un hash de destination du nœud, qui fait 32 caractères hexadécimaux, suivi de :/page/index.mu. Dans l'onglet Network de NomadNet, Ctrl+U ouvre la boîte de saisie d'URL, et le programme se charge de trouver le nœud et de s'y connecter. Depuis une autre machine du même réseau local, c'est là aussi que votre page devrait s'afficher.

Notre nœud "Mon site" dans le flux d'annonces du voisin

Maintenant le plus simple pour la trouver, c'est encore de passer par le flux d'annonces de l'onglet Network, où votre nœud apparaît sous son nom, puis de cliquer dessus et de choisir Connect. Et si vous passez par Ctrl+U, chez moi la boîte de dialogue est arrivée préremplie avec l'adresse de la page en cours, qu'il a donc fallu effacer avant de taper la mienne, avec l'adresse du nœud lue sur sa fiche, à la ligne Addr.

La boîte de saisie d'URL avec l'adresse complète de la page

Reste le téléchargement, et là, sur mon Ubuntu en français, ça a coincé car NomadNet enregistre par défaut dans ~/Downloads, un dossier qui n'existe pas chez moi puisqu'il s'appelle Téléchargements. Et donc chez moi le transfert est resté figé sur "Receiving response 100%", sans un message à l'écran. L'erreur n'apparaissait que dans ~/.nomadnetwork/logfile. Donc si ce dossier n'existe pas chez vous non plus, corrigez ça sur la machine du visiteur, à la ligne downloads_path de la section [client] de ~/.nomadnetwork/config :

downloads_path = ~/Téléchargements

Le dossier de téléchargement corrigé dans la config de NomadNet

Chez moi, après un redémarrage de NomadNet, le PDF est arrivé ensuite en une fraction de seconde, avec une empreinte SHA-256 identique à celle de l'original.

Le PDF enregistré, 13,12 Ko, identique à l'original

Le forum rns.recipes ouvert dans le navigateur intégré de NomadNet, son adresse de page en haut

Sortir du réseau local

Maintenant pour être joignable depuis l'extérieur, il faut en général ajouter une interface dans ~/.reticulum/config, sous [interfaces], à moins qu'un autre système de votre réseau local, configuré en passerelle, ne le fasse déjà pour vous. Pour passer par Internet, la forme que donne la doc est celle-ci, où target_host et target_port sont ceux d'un point d'entrée que vous aurez choisi :

[[TCP Client Interface]]
 type = TCPClientInterface
 enabled = yes
 target_host = 127.0.0.1
 target_port = 4242

Le projet ne fournit plus d'adresse toute faite, puisque son testnet public a été fermé donc la doc renvoie vers deux annuaires communautaires, directory.rns.recipes et rmap.world, et conseille de mettre en place plusieurs connexions plutôt qu'une seule. Sachez aussi que si Reticulum chiffre ses échanges par défaut, TCP lui ne chiffre rien. Cela veut dire que l'adresse IP des deux bouts est visible pour qui inspecte la connexion, et il peut aussi en déduire que vous faites tourner Reticulum. Donc si vous voulez masquer réellement ces adresses, faudra mettre en place une interface I2P au prix d'un démon i2pd à faire tourner à côté (une fois encore tout est dans la doc).

Dans l'annuaire directory.rns.recipes on a 71 points d'entrée TCP, dont 40 sont actuellement en ligne, chacun avec pour chacun son bloc de configuration prêt à copier. J'ai ajouté RMAP et SWISS RNS sur la machine du visiteur, relancé NomadNet, et une minute plus tard, une dizaine de nœuds figuraient déjà dans la liste, le mien compris :

[[RMAP]]
 type = TCPClientInterface
 enabled = yes
 target_host = rmap.world
 target_port = 4242

[[SWISS RNS]]
 type = TCPClientInterface
 enabled = yes
 target_host = swiss-rns.cl0ud.ch
 target_port = 4242

Dix nœuds listés une minute après l'ajout des deux points d'entrée, le mien compris, les noms des autres étant floutés

rnstatus avec l'AutoInterface et les deux interfaces TCP actives

Je n'ai fait ce test que dans ce sens, le visiteur voit des nœuds d'Internet, mais je n'ai pas vérifié qu'un inconnu pouvait atteindre notre nœud, puisque seule la machine du visiteur avait ces deux interfaces.

Ce que votre nœud montre

Une fois en ligne, le nœud s'annonce au démarrage puis toutes les 360 minutes, et cette annonce diffuse son nom en clair. Et d'après le code de NomadNet (Node.py), le nœud réutilise l'identité principale du programme, celle qui sert aussi à votre messagerie, donc n'importe qui peut relier votre site à votre adresse de messagerie.

Et ça se voit, puisque chez le visiteur, la fiche de votre nœud affiche une ligne Oprtr qui n'est autre que votre adresse de messagerie LXMF , en clair.

La fiche du nœud chez le visiteur, avec l'adresse de messagerie de l'opérateur en face d'Oprtr

Les pages et fichiers que vous déposez sont publics, sauf si vous posez à côté un fichier du même nom suivi de .allowed, qui liste les identités autorisées. Et surtout, hors Windows, un fichier exécutable placé dans pages est lancé comme un programme quand un visiteur autorisé le demande, puisque c'est comme ça que NomadNet génère ses pages dynamiques. Donc vérifiez les droits de ce que vous y copiez.

Reste la question de la maturité car pour le moment Reticulum n'a fait l'objet d'aucun audit de sécurité externe, NomadNet est en bêta, y'a eu quelques failles de sécu corrigées depuis et les dépôts GitHub ne sont plus que des miroirs figés.

Ajoutez à ça la licence maison, la Reticulum License, qui interdit tout usage dans un système conçu pour nuire aux humains et toute utilisation dans la création d'une IA ou de ses données d'entraînement. Bref, les défenseurs d'Omarchy repasseront , loool. Voilà, donc pour un petit site entre voisins ou entre amis, c'est jouable mais pour quelque chose de sensible, je vous conseille d'attendre un audit et surtout de bien lire la doc.

Source : NomadNet sur GitHub

Collabora et LibreOffice en froid : ce qui se joue après des années de conflit

Les tensions entre Collabora et la Document Foundation sont montées d’un cran.

Depuis début avril, les deux organisations s’échangent ouvertement des amabilités par billets de blog.

Collabora avait lancé les hostilités avec un post intitulé « Dégageons les développeurs ! ». L’entreprise britannique regrettait que ses équipes aient été évincées de la liste des membres de la Document Foundation. D’autant plus que cette éviction, selon elle, résultait de « préoccupations juridiques non fondées ». Elle n’était pas allée pas plus loin à ce sujet, préférant dénoncer l’orientation prise ces dernières années par la fondation. Entre autres :

  • Nommer du personnel non technique à son conseil d’administration et « accuser les autres de conflits d’intérêts » (c’est le cœur du problème ; nous y reviendrons)
  • Revenir sur des décisions passées du board et du comité de pilotage, par exemple en ressortant LibreOffice Online du placard « pour concurrencer [Collabora] »
  • Menacer des contributeurs pour leur usage de la marque LibreOffice sous licence, tout en ignorant l’usage abusif massif fait par des tiers non contributeurs et non détenteurs d’une licence
  • Retarder une élection puis en invalider les résultats

« Lorsque cela fera sens, nous continuerons à contribuer à LibreOffice », expliquait le P-DG de Collabora. Il excluait toutefois clairement de « continuer à investir beaucoup » dans le projet en étant exclu de la gouvernance. Dans ces conditions, poursuivait-il, les travaux se concentreront sur la version de bureau de Collabora Online, lancée il y a quelques mois. Premier symbole, et pas des moindres : l’ouverture d’un Gerrit dédié.

Une exclusion consécutive à de prétendus conflits d’intérêts

Le jour même, la Document Foundation avait pris acte, sans toutefois digérer les accusations de Collabora. Elle avait rappelé que la situation résulte d’une mise à jour des règles communautaires. Ces dernières interdisent désormais le statut de membre au personnel d’entreprises en litige avec la fondation. En toile de fond, des « personnes qui, par le passé, ont pris des décisions dans l’intérêt de leur employeur plutôt que dans celui de la fondation », laquelle aurait pu y perdre son statut d’organisation à but non lucratif.

Quelques jours plus tard, la Document Foundation avait donné davantage d’éléments de contexte. Elle pointait, en particulier, deux décisions jugées problématiques. D’un côté, permettre aux entreprises de son écosystème d’utiliser gratuitement la marque LibreOffice pour vendre la suite sur les magasins d’applications d’Apple et de Microsoft. De l’autre, attribuer des contrats de développement/maintenance de la suite à des entreprises qui avaient des représentants au conseil d’administration de la fondation.

Collabora accusé d’avoir cherché le statu quo

Une fois que les équipes juridiques de la Document Foundation eurent soulevé le risque que ces pratiques faisaient peser sur le statut d’organisation à but non lucratif, les « entreprises ayant bénéficié de ces erreurs » (comprendre Collabora) ont tenté d’entretenir le statu quo. C’était fin 2021.

La fondation assure que cet épisode a accru les tensions au board, dans la lignée de l’abandon du Document Collective. Cette organisation distincte, voulue par une partie des administrateurs, était censée « compenser l’inefficacité de la Document Foundation ». Présentée sans préavis à la LibreOffice Conference 2019, elle a suscité d’autant plus d’inquiétudes dans la communauté qu’elle devait puiser dans les ressources financières de la fondation pour alimenter des fonds start-up.

En 2023, un audit des autorités allemandes avait fini par confirmer la nécessité d’un changement des processus sous peine de perdre le statut d’organisation à but non lucratif. Un deuxième réalisé l’année suivante avait abouti à la même conclusion. Collabora ayant fait barrage au board, la seule solution fut d’enlever le statut de membre à ses employés, en plus de geler les contrats de développement/maintenance sus-évoqués. Elle aurait en tout cas porté ses fruits, si on en croit la Document Foundation : un troisième audit, effectué fin 2025, a donné un résultat positif.

La Document Foundation a-t-elle polarisé la communauté LibreOffice ?

Collabora avait réagi en dénonçant des propos trompeurs, diffamatoires et factuellement inexacts. Les personnes accusées ont agi en toute bonne foi, dans le meilleur intérêt de la Document Foundation, avec les informations dont ils disposaient, prétend l’entreprise britannique. Les attaquer est donc « totalement irraisonnable ». Quant au retrait du statut de membre, c’est le choix d’un « sous-ensemble » du conseil d’administration qui a « créé des règles rétrospectives » pour un « bénéfice politique personnel ».

Irraisonnable est aussi, selon Collabora, le fait d’encourager des entreprises à signer des accords de licence de marque dont elles n’ont pas besoin, puis de les poursuivre pour avoir livré du code qui aurait pu être couvert par les conditions générales d’exploitation de marque.

Le board aurait plus globalement profité de « l’impression permanente de crise » dans la communauté LibreOffice pour la polariser et outrepasser ses droits jusqu’à invalider une élection.

Ne pas juger le mérite qu’à l’aune des commits

Le même jour, la Document Foundation est revenue sur sa perception de la « méritocratie ». Son postulat : il faut aller au-delà de la « légitimité basée sur le graphe des commits ». Autrement dit, ne pas confier l’autorité uniquement à qui produit le code. Cette option, explique-t-elle, est raisonnable au début d’un projet, quand le défi principal est d’ordre technique. Mais pour un projet qui a 15 ans, des millions d’utilisateurs et un environnement juridique et réglementaire complexe, l’approche ne tient plus. Un modèle qui exclut les contributions à la documentation, à la localisation, à la correction des bugs ou encore aux relations médias/institutionnelles est une « méritocratie partielle ». Pas question d’exclure les devs, mais de s’assurer que soit représentée une diversité de perspectives…

La Document Foundation se prononce aussi sur la question des conflits d’intérêt. La présence d’administrateurs dont l’employeur a un intérêt commercial direct dans l’orientation du projet rend la notion de méritocratie plus complexe. Quand bien même ces personnes seraient de bonne foi, peut-on vraiment construire une structure de gouvernance autour de leurs contributions ? Les conflits d’intérêts sont « inhérents » à une telle situation, estime la fondation.

La Document Foundation appelle à prendre en compte un autre aspect : le long terme. Dans cette perspective, le mérite doit aussi être mesuré à l’aune de la capacité à créer les conditions futures de croissance du projet. A fortiori si on considère que ses créateurs sont susceptibles de finir par passer la main.

La Document Foundation s’était préparée à une sécession

Le 10 avril, la Document Foundation a apporté des précisions supplémentaires. Entre autres sur les fameuses règles communautaires bloquant l’accès au statut de membre. Elles ne s’appliquent qu’aux litiges découlant d’une « mise en danger » de la fondation. On nous en donne trois exemples : risque sur son statut d’organisation à but non lucratif, usage abusif de ses fonds et dommages à ses actifs.

Concernant les contrats développement/maintenance, les administrateurs visés évaluaient les offres et supervisaient les équipes de la Document Foundation chargées d’exécuter les marchés.

Pour illustrer la volonté de Collabora de maintenir le statu quo, la fondation évoque une politique rejetée par le board en 2021. Elle aurait imposé aux administrateurs de s’abstenir lors des votes sur des sujets susceptibles de présenter des conflits d’intérêts avec leur entreprise.

Sur la réouverture du dépôt de LibreOffice Online : la décision de le mettre au rancart fut prise par un board où des développeurs avaient la majorité des votes. Elle ne reflétait pas la volonté générale, que la fondation a fini par suivre.

Quant à voir Collabora voler de ses propres ailes, la Document Foundation déclare s’y être préparée depuis au moins 2022. L’éditeur britannique est certes un contributeur important (43 % des patchs sur les 12 derniers mois), mais il n’est pas seul : parmi les 20 principaux contributeurs sur Git, 8 travaillent pour la fondation.

Pour ce qui est de Collabora Office for Desktop, il s’agira plutôt d’un concurrent d’OnlyOffice, juge la Document Foundation. Il n’aura effectivement que trois modules, en tout cas dans un premier temps. Bref, il faut plutôt y voir « un témoignage de la flexibilité du moteur de LibreOffice », sur lequel se base Collabora…

Des brainstormings communautaires aux réus en petit comité

Le lendemain, Collabora a réaffirmé la bonne foi de ses employés. Non sans déplorer que malgré des clarifications, certaines déclarations de la Document Foundation restaient trompeuses, diffamatoires et inexactes.

L’éditeur insiste : il n’était pas nécessaire pour lui de signer une licence de marque dans l’optique de distribuer LibreOffice sur les app stores. Il l’a fait parce que la fondation le lui a demandé… et celle-ci souhaite désormais qu’il la rémunère dans ce cadre. Alors même qu’il lui a  déjà reversé volontairement « plus de 15 % » de ses revenus app store.

Collabora conteste par ailleurs les affirmations de la Document Foundation à propos des contrats de développement/maintenance. Dans les grandes lignes, les personnes concernées n’ont eu aucune vision sur les contrats, les offres concurrentes et les décisions prises.

« On exclut des personnes parce que leurs collègues ont fait partie de conseils d’administration qui ont pris des décisions que le board actuel n’apprécie pas ! », s’exclame son P-DG. Et de dénoncer un renfermement de la Document Foundation sur ses équipes : ces dernières années, une partie de la communication est devenue complètement privée, des réunions en petit comité remplaçant les brainstormings communautaires.

Un demi-mea-culpa pour les devs de Collabora

La Document Foundation a fini par adresser une lettre ouverte aux développeurs de Collabora. Rappelant le danger qui a pesé sur son statut d’organisation à but non lucratif, elle concède ne pas avoir pu « résoudre le problème au cas par cas ». « La structure était biaisée et les dommages furent réels », martèle-t-elle.

Illustration générée par IA

The post Collabora et LibreOffice en froid : ce qui se joue après des années de conflit appeared first on Silicon.fr.

❌