NIP-5A définit comment héberger des sites web statiques sous des clés Nostr. Les auteurs de sites publient des événements de manifeste signés qui associent des chemins d’URL à des hachages SHA256 de contenu, et les serveurs hôtes résolvent ces manifestes pour servir les fichiers du site depuis le stockage Blossom.

Comment ça fonctionne

La spécification utilise deux kinds d’événements. Le kind 15128 est un manifeste de site racine, un par pubkey, qui sert de site web par défaut pour cette clé. Le kind 35128 est un manifeste de site nommé, identifié par un tag d, qui fonctionne comme un sous-domaine. Chaque manifeste contient des tags path associant des chemins d’URL absolus aux hachages SHA256 des fichiers à servir.

{
  "id": "5324d695ed7abf7cdd2a48deb881c93b7f4e43de702989bbfb55a1b97b35a3de",
  "pubkey": "266815e0c9210dfa324c6cba3573b14bee49da4209a9456f9484e5106cd408a5",
  "created_at": 1743465600,
  "kind": 15128,
  "tags": [
    ["path", "/index.html", "186ea5fd14e88fd1ac49351759e7ab906fa94892002b60bf7f5a428f28ca1c99"],
    ["path", "/about.html", "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"],
    ["server", "https://blossom.primal.net"],
    ["title", "My Nostr Site"],
    ["source", "https://github.com/lez/nsite"]
  ],
  "content": "",
  "sig": "f4e4a9e785f70e9fcaa855d769438fea10781e84cd889e3fcb823774f83d094cf2c05d5a3ac4aebc1227a4ebc3d56867286c15a6df92d55045658bb428fd5fb5"
}

Un serveur hôte reçoit une requête HTTP, extrait la pubkey de l’auteur du sous-domaine, récupère le manifeste du site depuis la liste de relays de l’auteur, résout le chemin demandé en un hachage de contenu, et télécharge le blob correspondant depuis le ou les serveurs Blossom listés dans les tags server.

Résolution d’URL

Les sites racines utilisent le npub comme sous-domaine. Les sites nommés utilisent un encodage base36 de 50 caractères de la pubkey brute suivi de la valeur du tag d, le tout dans un seul label DNS. Parce que les labels DNS sont limités à 63 caractères et que la pubkey en base36 en utilise toujours 50, les identifiants de sites nommés sont limités à 13 caractères.

Implémentations

  • nsite - Serveur hôte qui résout les manifestes NIP-5A et sert les fichiers
  • nsite-manager - Interface pour construire et publier les manifestes de sites

Sources principales :

Mentionné dans :

Voir aussi :