Project

General

Profile

Demande #4490

Publier des métadonnées (NodeInfo2, host-meta + ServiceInfo)

Added by pitchum . 10 months ago. Updated about 2 months ago.

Status:
Fermé
Priority:
Normale
Assignee:
Start date:
05/16/2020
Due date:
% Done:

70%

Estimated time:
Difficulté:
3 Moyen

Description

NodeInfo2 est un format de méta-données pour rendre publiques des informations concernant le ou les services fédérés disponibles sur un domaine. Cela permet notamment d'alimenter le site the-federation.info qui recense les "nodes" de services fédérés comme mastodon, xmpp et bien d'autres (d'ailleurs pouet.chapril.org y est déjà).

Concrètement pour être recensé il suffit de publier du JSON à l'adresse en /.well-known/x-nodeinfo2.
Exemple chez jabber.fr : https://jabber.fr/.well-known/x-nodeinfo2

À garder à l'esprit, la spécification continue d'évoluer. Des échanges sur le forum feneas (feneas = Federated Networks Association) évoquent certaines évolutions comme la possibilité de déclarer plusieurs services pour un même domaine et aussi d'adopter la RFC6415 Web Host Metadata.
Ces échanges ont abouti à une nouvelle spécification nommée ServiceInfo qui ne semble pas encore vraiment utilisée.

J'ai simulé l'enregistrement de chapril.org et il n'y a pas eu d'appels à /.well-known/host-meta (XRD) ni à /.well-known/host-meta.json (JRD):

95.216.145.65 - - [16/May/2020:08:54:48 +0200] "GET /.well-known/x-nodeinfo2 HTTP/1.1" 301 185 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:48 +0200] "GET /.well-known/x-nodeinfo2 HTTP/1.1" 404 244 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:48 +0200] "GET /.well-known/x-nodeinfo2 HTTP/1.1" 301 185 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:48 +0200] "GET /.well-known/x-nodeinfo2 HTTP/1.1" 301 185 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:48 +0200] "GET /.well-known/x-nodeinfo2 HTTP/1.1" 404 244 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:48 +0200] "GET /.well-known/nodeinfo HTTP/1.1" 301 185 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:48 +0200] "GET /.well-known/nodeinfo HTTP/1.1" 404 244 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:48 +0200] "GET /.well-known/nodeinfo HTTP/1.1" 301 185 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:49 +0200] "GET /.well-known/nodeinfo HTTP/1.1" 301 185 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:49 +0200] "GET /.well-known/nodeinfo HTTP/1.1" 404 244 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:49 +0200] "GET /api/v1/instance HTTP/1.1" 301 185 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:49 +0200] "GET /api/v1/instance HTTP/1.1" 200 932 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:49 +0200] "GET /_matrix/federation/v1/version HTTP/1.1" 301 185 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:49 +0200] "GET /_matrix/federation/v1/version HTTP/1.1" 200 941 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:49 +0200] "POST /api/meta HTTP/1.1" 301 185 "-" "python-requests/2.23.0" 
95.216.145.65 - - [16/May/2020:08:54:50 +0200] "GET /api/meta HTTP/1.1" 200 926 "-" "python-requests/2.23.0" 
95.216.145.65 - - [16/May/2020:08:54:50 +0200] "GET /statistics.json HTTP/1.1" 301 185 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:50 +0200] "GET /statistics.json HTTP/1.1" 404 244 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:50 +0200] "GET /statistics.json HTTP/1.1" 301 185 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:50 +0200] "GET /statistics.json HTTP/1.1" 301 185 "-" "python/federation/0.20.0-dev" 
95.216.145.65 - - [16/May/2020:08:54:50 +0200] "GET /statistics.json HTTP/1.1" 404 244 "-" "python/federation/0.20.0-dev" 

History

#1

Updated by pitchum . 10 months ago

  • Status changed from Nouveau to En cours de traitement
  • % Done changed from 0 to 70

Ayé, on a un JSON au format nodeinfo2 publié sur https://chapril.org/.well-known/x-nodeinfo2.
Pour ce faire j'ai dû modifier légèrement la config nginx sur bastion (cf etckeeper).

J'ai ensuite tenté de nous enregistrer sur the-federation.info mais je me suis pris une erreur 500.
Je vais attendre un peu avant de retenter ma chance et éventuellement contacter l'auteur si besoin.

En attendant j'ai publié sur la forge mon script fait maison.

#2

Updated by pitchum . 10 months ago

J'ai trouvé ce qui n'allait pas : le champ "baseUrl" doit correspondre au nom de domaine qu'on souhaite enregistrer.
C'est corrigé. On est désormais visibles sur :

La page dédiée https://the-federation.info/node/chapril.org n'affiche pas encore les données chiffrées fournies par le JSON.
J'imagine que pour pouvoir tracer une courbe il faut attendre que le service collecte un minimum de données. Patientons...

#3

Updated by Laurent POUJOULAT 10 months ago

Tu n'aurais pas oublié le pays dans les métadonnées ? C'est le seul record qui ne l'affiche pas ici:
https://the-federation.info/protocol/xmpp

#4

Updated by pitchum . 10 months ago

Je m'en suis aperçu mais je n'ai pas vu comment indiquer ça dans le JSON.
Si ça se trouve c'est automatique, à partir de l'adresse IP par exemple (ce qui serait moyennement fiable) ou par un autre moyen non documenté (ou alors j'ai mal cherché).

#5

Updated by Christian P. Momon 10 months ago

  • Target version set to Backlog
#6

Updated by Christian P. Momon 10 months ago

L'information « country » est maintenant indiquée : DE :o)

#7

Updated by pitchum . 10 months ago

Voilà, c'est gagné, on a un drapeau allemand. Pas terrible comme indicateur, le fait qu'on soit hébergé chez Hetzner pourrait nous apporter un public germanophone... Ça va être chaud pour les échanges en cas de demande de support :)

Je m'apprêtais à suggérer une évolution du format nodeinfo2 pour permettre d'indiquer soi-même la ou les langues prédominantes sur un service. Mais visiblement le format nodeinfo2 n'est plus maintenu car il est voué à être remplacé par le nouveau format ServiceInfo donc cet aspect ne changera pas de sitôt. J'ai donc inauguré leur bug tracker en signalant le besoin dans le ticket n°1 sur feneas

Ce projet ServiceInfo a pas mal d'héritage, en bas du README on peut lire :

ServiceInfo is a fork of NodeInfo2 which itself
is a fork of NodeInfo which was the successor of
statistics.json in Diaspora.

Pourvu que ça arrive à maturation avant l'extinction de l'humanité.

#8

Updated by pitchum . 9 months ago

  • Subject changed from Publier des métadonnées NodeInfo2 to Publier des métadonnées (NodeInfo2, host-meta + ServiceInfo)

J'ai publié un host-meta expérimental : https://chapril.org/.well-known/host-meta

Ce host-meta ne fait pour l'instant référence qu'aux service XMPP et pad qui sont 2 services suffisamment différents pour pouvoir explorer les besoins potentiels. Pour XMPP je génère un vrai fichier serviceinfo.json, pour pad, j'en ai fabriqué un à la main pour les besoins des tests.

Maintenant il faudrait que j'adapte le projet de the-federation.info pour tenir compte de ses nouveaux formats et vérifier que ça fait le job avant de le suggérer upstream.

#9

Updated by pitchum . about 2 months ago

  • Status changed from En cours de traitement to Résolu

serviceinfo ne semble pas avoir d'avenir. Il n'y a pas d'activité depuis plus d'un an sur la forge du projet.

Et comme ça fait doublon avec chaprilinfos je clôture ce ticket.

#10

Updated by pitchum . about 2 months ago

  • Status changed from Résolu to Fermé

Sur bastion j'ai fait un peu de ménage : j'ai retiré la config pour serviceinfo, et je n'ai gardé que la config pour x-nodeinfo2 qui sert vraiment.

#11

Updated by Christian P. Momon about 2 months ago

  • Target version changed from Backlog to Sprint 2020 décembre

Also available in: Atom PDF