Bienvenue dans ce cours complet sur l'InterPlanetary File System (IPFS). Ce cours est conçu pour vous guider à travers les concepts fondamentaux d'IPFS, de la théorie à la pratique. Il est divisé en trois parties :
Commençons notre voyage dans le monde du web décentralisé !
Bienvenue dans ce cours d'introduction à IPFS (InterPlanetary File System). Si vous avez déjà entendu parler de décentralisation, de blockchain ou de P2P, vous êtes au bon endroit. IPFS est une technologie révolutionnaire qui vise à changer la façon dont nous partageons et stockons l'information sur le web.
Pour comprendre l'intérêt d'IPFS, il faut d'abord comprendre comment fonctionne le web que nous utilisons tous les jours. Le web actuel est basé sur un modèle centralisé. Cela signifie que les données (sites web, images, vidéos, etc.) sont stockées sur des serveurs centraux. Lorsque vous voulez accéder à un site, votre navigateur envoie une requête à l'adresse de ce serveur (par exemple, https://copylaradio.com) et le serveur vous renvoie les données.
Ce modèle a plusieurs inconvénients :
IPFS propose une approche radicalement différente : un réseau décentralisé et pair-à-pair (P2P). Au lieu de demander à un serveur central de nous donner un fichier, nous demandons au réseau IPFS de nous donner un fichier qui a un certain contenu.
C'est la grande révolution d'IPFS : l'adressage par contenu (content addressing). Au lieu d'identifier un fichier par son emplacement (son URL), on l'identifie par son empreinte numérique unique, appelée CID (Content Identifier). Cette empreinte est calculée à partir du contenu du fichier lui-même (c'est un hash cryptographique).
| Modèle Actuel (HTTP) | Modèle IPFS |
|---|---|
| Adressage par localisation | Adressage par contenu |
https://example.com/image.jpg | QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco |
| Centralisé | Décentralisé |
| Fragile | Résilient |
Maintenant que vous avez compris les concepts de base d'IPFS, il est temps de mettre les mains dans le cambouis ! Dans cette partie, nous allons installer un nœud IPFS, apprendre les commandes essentielles et explorer des concepts plus avancés comme le "pinning" (épinglage) et IPNS.
Il existe plusieurs implémentations d'IPFS. La plus courante et mature est Kubo (anciennement go-ipfs), écrite en langage Go. Nous allons l'installer.
Télécharger Kubo : Rendez-vous sur la page de distribution de Kubo et téléchargez l'archive binaire correspondant à votre système d'exploitation et votre architecture (par exemple, linux-amd64).
Extraire l'archive :
tar -xvzf kubo_vX.Y.Z_linux-amd64.tar.gz
Installer l'exécutable : Déplacez-vous dans le dossier kubo et lancez le script d'installation.
cd kubo
sudo ./install.sh
Vérifier l'installation : Tapez la commande suivante pour vous assurer que tout fonctionne.
ipfs --version
Vous devriez voir la version d'IPFS que vous venez d'installer.
Avant de pouvoir utiliser IPFS, vous devez initialiser votre "dépôt" local. C'est là que votre nœud stockera ses paramètres, ses clés et les données que vous partagerez.
ipfs init
Cette commande va créer un dossier .ipfs dans votre répertoire personnel. Elle va également générer une clé cryptographique unique qui représente votre identité sur le réseau (votre Peer ID). Conservez bien le résultat de cette commande, notamment votre Peer ID.
Pour connecter votre nœud au réseau IPFS, vous devez lancer le "démon" (un processus qui tourne en arrière-plan).
ipfs daemon
Votre terminal va afficher des logs indiquant que votre nœud se connecte à d'autres pairs sur le réseau. Laissez ce terminal ouvert. Votre nœud est maintenant en ligne !
Vous pouvez maintenant accéder à une interface web locale très pratique pour visualiser l'état de votre nœud : http://127.0.0.1:5001/webui
Ouvrez un nouveau terminal pour interagir avec votre nœud.
ipfs add)Pour ajouter un fichier au réseau IPFS, utilisez la commande add.
# Créez un fichier de test
echo "Bonjour le monde décentralisé !" > mon_fichier.txt
# Ajoutez-le à IPFS
ipfs add mon_fichier.txt
La commande vous retournera le CID du fichier. C'est son adresse unique sur IPFS. Par exemple :
added QmXXY5cnK24sB6291E2S2sXN4tCF8jZc1gpiZg5g5g5g5g mon_fichier.txt
ipfs cat)Pour lire le contenu d'un fichier à partir de son CID, utilisez la commande cat.
ipfs cat QmXXY5cnK24sB6291E2S2sXN4tCF8jZc1gpiZg5g5g5g5g
Cela affichera : Bonjour le monde décentralisé !
Vous pouvez aussi accéder à ce fichier via une passerelle (gateway) publique. C'est un nœud IPFS qui est accessible via le web classique (HTTP). Essayez ce lien dans votre navigateur (en remplaçant le CID par le vôtre) :
https://ipfs.io/ipfs/QmXXY5cnK24sB6291E2S2sXN4tCF8jZc1gpiZg5g5g5g5g
Par défaut, votre nœud IPFS agit comme un cache. Si vous ajoutez beaucoup de fichiers, il peut supprimer les plus anciens pour faire de la place (un processus appelé "garbage collection").
Pour dire à votre nœud de conserver un fichier de manière permanente, vous devez l'épingler (pin).
# La commande `add` épingle le fichier par défaut sur votre nœud.
# Pour lister les fichiers épinglés :
ipfs pin ls
# Pour épingler un CID qui n'est pas sur votre nœud :
ipfs pin add QmSomeOtherCID
Important : Si vous éteignez votre nœud, le fichier ne sera plus accessible (sauf si quelqu'un d'autre l'a aussi téléchargé et épinglé). Pour garantir une haute disponibilité, on utilise des services d'épinglage (Pinning Services) comme Pinata ou Filebase, qui sont des nœuds IPFS professionnels toujours en ligne.
Le CID d'un fichier change à chaque fois que vous le modifiez, même d'un seul caractère. C'est logique (adressage par contenu), mais ce n'est pas pratique si vous voulez avoir une adresse fixe pour un contenu qui évolue (comme un site web).
C'est là qu'intervient IPNS (InterPlanetary Name System). IPNS vous permet de créer une adresse stable (basée sur votre Peer ID) qui pointe vers un CID. Vous pouvez ensuite mettre à jour le CID vers lequel cette adresse pointe, sans que l'adresse elle-même ne change.
Publier un contenu sur IPNS :
# Publions notre fichier sur IPNS. Cela peut prendre un peu de temps.
ipfs name publish QmXXY5cnK24sB6291E2S2sXN4tCF8jZc1gpiZg5g5g5g5g
La commande retournera votre Peer ID (qui est maintenant votre adresse IPNS) et le CID vers lequel il pointe.
Accéder au contenu via IPNS :
Vous pouvez maintenant accéder à votre fichier via votre adresse IPNS (remplacez VotrePeerID):
https://ipfs.io/ipns/VotrePeerID
Si vous modifiez votre fichier, ajoutez la nouvelle version à IPFS pour obtenir un nouveau CID, puis relancez la commande ipfs name publish avec le nouveau CID. Votre adresse IPNS ne changera pas, mais elle pointera vers le nouveau contenu !
Ces exercices sont conçus pour vous aider à mettre en pratique les concepts que vous avez appris dans les parties débutant et intermédiaire du cours.
Cet exercice a pour but de vous faire comprendre intuitivement la puissance de l'adressage par contenu, sans même installer IPFS.
Trouvez le CID d'un fichier connu : L'image ci-dessous, le logo officiel d'IPFS, a été ajoutée au réseau IPFS. Son CID est QmQzY5c6zX9C9zY5c6zX9C9zY5c6zX9C9zY5c6zX9C9zY (ceci est un exemple, nous utiliserons un vrai CID ci-dessous).
Accédez à l'image via différentes passerelles : Ouvrez les liens suivants dans votre navigateur. Vous remarquerez que même si le nom de domaine (le serveur) change, vous accédez toujours exactement à la même image, car vous demandez le contenu identifié par le CID.
(Note : Le CID ci-dessus est un exemple. Pour un vrai test, utilisez le CID de l'image du logo IPFS : QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG)
Question : Que se passe-t-il si une de ces passerelles tombe en panne ? Pouvez-vous toujours accéder à l'image ? Pourquoi ?
Cet exercice vous guidera pour mettre votre premier fichier sur IPFS.
Installez et initialisez IPFS : Suivez les étapes 1 et 2 de la partie intermédiaire pour installer Kubo et initialiser votre dépôt.
Mettez votre nœud en ligne : Lancez la commande ipfs daemon dans un terminal.
Créez un fichier : Dans un autre terminal, créez un fichier presentation.txt qui contient une petite présentation de vous.
echo "Bonjour, je m'appelle [Votre Nom] et je découvre IPFS !" > presentation.txt
Ajoutez le fichier à IPFS : Utilisez la commande ipfs add pour ajouter votre fichier. Notez bien le CID qui vous est retourné.
Vérifiez votre fichier : Utilisez la commande ipfs cat avec le CID que vous avez obtenu pour vérifier que le contenu est correct.
Accédez-y via une passerelle publique : Construisez une URL comme https://ipfs.io/ipfs/VOTRE_CID et ouvrez-la dans votre navigateur. Votre fichier est maintenant accessible depuis n'importe où dans le monde, tant que votre nœud est en ligne !
Allons plus loin en hébergeant un petit site web (une seule page).
Créez un fichier HTML : Créez un fichier index.html avec le contenu suivant :
<!DOCTYPE html>
<html>
<head>
<title>Ma Page IPFS</title>
</head>
<body>
<h1>Bienvenue sur ma page web décentralisée !</h1>
<p>Cette page est hébergée sur IPFS.</p>
</body>
</html>
Créez un dossier pour votre site : Créez un dossier mon_site et placez le fichier index.html à l'intérieur.
Ajoutez le dossier à IPFS : Pour ajouter un dossier, utilisez l'option -r (récursif).
ipfs add -r mon_site
La commande add vous donnera plusieurs CIDs (pour le fichier et pour le dossier). Le CID qui nous intéresse est le dernier, celui qui correspond au dossier mon_site.
Visitez votre site : Prenez le CID du dossier et accédez-y via une passerelle : https://ipfs.io/ipfs/CID_DU_DOSSIER/. Vous devriez voir votre page web s'afficher !
Maintenant, mettons à jour notre site et publions-le avec une adresse stable grâce à IPNS.
Modifiez votre site : Ouvrez le fichier index.html et modifiez le titre ou le paragraphe.
Ajoutez la nouvelle version : Ré-ajoutez le dossier mon_site à IPFS avec ipfs add -r mon_site. Vous obtiendrez un nouveau CID pour le dossier.
Publiez sur IPNS : Prenez ce nouveau CID et publiez-le sur IPNS.
ipfs name publish NOUVEAU_CID_DU_DOSSIER
https://ipfs.io/ipns/VOTRE_PEER_ID/. Vous devriez voir la version mise à jour de votre site.Bonus : Modifiez à nouveau votre site, obtenez un nouveau CID et republiez-le. Rafraîchissez la page dans votre navigateur (cela peut prendre un peu de temps pour que la mise à jour se propage). L'adresse n'a pas changé, mais le contenu si ! Vous avez maintenant un site web décentralisé avec une adresse permanente.
Félicitations ! Vous avez maintenant une compréhension solide des principes fondamentaux d'IPFS et de son utilisation pratique. Vous avez appris à partager des fichiers, à garantir leur persistance et même à héberger et mettre à jour un site web de manière totalement décentralisée.
Le monde d'IPFS est vaste et en constante évolution. Nous vous encourageons à continuer d'explorer, à consulter la documentation officielle et à rejoindre la communauté pour découvrir tout le potentiel de cette technologie passionnante.