Tutoriel IPFS - Installer un noeud IPFS pour Windows ou Linux
Salut les copains,
Aujourd'hui, petit tutoriel IPFS. Je vais vous montrer comment installer un démon IPFS et vous donnez quelques commandes utiles pour débuter.
Mais tout d'abord un petit rappel de ce qu'est IPFS...
IPFS signifie InterPlanetary File System. C'est un nouveau protocole permettant d'échanger du contenu multimédia entre pairs (peer-to-peer).
La différence avec les autres protocoles existants (comme Torrent par exemple) c'est que chaque fichier, et même chaque morceau de fichier, se voit attribué un hash. Un hash est une suite unique de lettres. Si deux fichiers ont le même hash, c'est que les fichiers sont identiques * !
Pour une explication plus imagée, je vous renvoie à ma dernière vidéo (vers 1:15).
Installation
IPFS n'est pour le moment pas un standard reconnu par les éditeurs d'OS et de logiciels (même si certains projet y travaillent : js-ipfs, Brave, Firefox, ArchLinux ). Il vous faudra donc installer un démon localement.
Rendez-vous sur la page de distribution et téléchargez la version go-ipfs correspondant à votre config pc.
Dézippez l'archive téléchargée et mettez le dossier dans un endroit "propre" (un dossier caché à la racine de votre home ou dans %appdata%). Ce dossier contient l'exécutable ipfs écrit en Go.
Pour une utilisation simple, je vous conseille d'ajouter ce dossier à votre path ( how to : Windows / Linux )
Une fois que vous êtes prêt, vous allez pouvoir créer votre identifiant IPFS. Pour cela, rien de plus simple : ouvrez un terminal et tapez la commande ipfs init
.
Si l'exécutable IPFS n'est pas dans votre path, il faudra fournir le chemin complet :
/chemin/du/dossier/ipfs init
(pour Linux)
C:\chemin\du\dosier\ipfs.exe init
(pour Windows)
Vous devriez voir quelque chose comme ça :
Un dossier .ipfs
vient d'être créé à la racine de votre home (C:\Users\votre_nom\.ipfs
ou /home/votre_nom/.ipfs
)
Il contient notamment un fichier "config" avec votre id IPFS et tout un tas de paramètres. C'est aussi dans ce dossier (sous datastore) que seront téléchargés les fichiers IPFS.
Vous pouvez maintenant démarrer votre démon IPFS. Dans votre terminal tapez ipfs daemon
. Voilà vous êtes maintenant un nœud du réseau IPFS et vous pouvez redistribuer les vidéos de DTube que vous regardez ! ;)
Aller plus loin
Si vous ne voulez plus remettre les doigts dans un terminal, il existe un petit programme pour Windows : IPFS-Gui, qui vous permettra de lancer le démon en un clic depuis la bar de widget.
Il existe aussi des add-ons pour Chrome et Firefox, qui vous permettent :
- d'ouvrir la page d'administration d'IPFS
- d'uploader facilement des fichiers
- de voir rapidement le nombre de pairs auxquels vous êtes connecté
- de rediriger les adresses des passerelles (comme ipfs.io) vers votre démon local
- d'avoir une notification lorsque IPFS-Gui démarre bien le démon (sinon c'est silencieux et pas très intuitif)
Je vous les recommande fortement :)
Quelques commandes utiles
On peut se passer du terminal pour naviguer sur IPFS mais si vous voulez maintenir un nœud IPFS propre, il va falloir rouvrir la boite noir...
Si vous redistribuez des fichiers vous allez les télécharger une première fois. Ils vont se stocker dans le dossier .ipfs/ jusqu'à ce que vous éteigniez votre démon. Autrement dit, IPFS les mets dans son cache.
Mais si vous voulez continuer à seeder des fichiers même après un redémarrage de votre démon, il va falloir épingler (to pin - en anglais) ce dit fichier.
- Voici la commande pour épingler un fichier :
ipfs pin add --progress <hash_du_fichier>
Par exemple je vous conseille d'épingler la page d'administration IPFS pour éviter de la télécharger à chaque fois :
ipfs pin add --progress QmPhnvn747LqwPYMJmQVorMaGbMSgA7mRRoyyZYz3DoZRQ
- Pour ajouter un fichier à IPFS et générer son hash :
ipfs add -rp <fichier>
-r
permet d'ajouter récursivement un dossier et tous ses sous-dossiers/fichiers.
-p
permet d'afficher une bar de progression.
* ! Suivant les options que vous passez, le hash peut varier !
Par exemple, ipfs add --nocopy
permet de ne pas dupliquer le fichier dans votre dossier local .ipfs. Ce qui est pratique pour réduire la taille sur le disque mais le hash sera différent avec cette option.
Autre exemple, pour obtenir le même hash que sur DTube, il faudra ajouter l'option -t (trickle dag), qui optimise le streaming des medias.
ipfs add -rpt <fichier>
- La commande pour unpin un fichier :
ipfs pin rm <hash_du_fichier>
- Et si vous voulez nettoyer le cache IPFS sans redémarrer votre démon :
ipfs repo gc
qui lancera le Garbage Collector.
Vous arrêterez alors de seeder tous les fichiers non épinglés.
- Pour voir la liste des hashes pin de votre nœud :
ipfs pin ls
Vous verrez alors des hashes avec la mention indirect ou recursive. Les premiers sont des fragments des deuxièmes. Si vous recherchez le hash d'un fichier, recherchez parmi les "recursive".
Je m'arrête ici pour ce tuto. Vous avez les bases pour utiliser IPFS, via DTube notamment et aider le réseau à prospérer.
Pour les plus féru, je vous renvoie vers la documentation IPFS et sa communauté. Vous pouvez aussi venir en discuter en Anglais dans le chat Riot.
N'hésitez pas à mettre ce tuto en application, ce n'est pas très compliqué et vous comprendrez surement mieux comment fonctionne IPFS et les plateformes comme DTube ou DSound :)
Pensez aussi à partager ce tuto pour construire ensemble l'internet décentralisé de demain. Et upvotez si vous avez trouvé ça intéressant :)
[Édité] - Ajout de la commande ipfs add et option -t trickle dag.
Super! En esperant voir de plus en plus de gens tourner un noeud IPFS dans le futur.
Pour ajouter des gros fichiers qui demandent a etre streamés, je recommande l'option -t (trickle dag) lors de ipfs add.
J'ai aussi un traffic important au bout d'un certains temps, qui paralyse tout le reste de mon réseau local (impossible de charger une vidéo youtube). Il y a une discussion sur Github mais je n'ai pas testé. Je kill/restart le démon régulièrement en workaround... :-/
Je remarque également que le chargement de certaines vidéos prend un temps de dingue. Effectivement, les originaux peuvent parfois dépasser le giga...
j'ai un trou de mémoire.
Tu avais évoqué le fait que vous conserviez les vidéos durant 7 jours et qu'ensuite, vous payez un hébergement ipfs pour certaines des vidéos. Tu peux me le confirmer ?
Je suis entrain de monter un bot qui va récupérer le contenu "fr" et l'ajouter sur mon noeud ipfs. Le but est qu'il soit "simple" à mettre en oeuvre afin d'ajouter des acteurs ipfs
On a des scripts nodejs pour faire ca. Cest assez simple honnetement, je peux t'aider par discord pour y arriver.
Ah effectivement j'ai trouvé ceci sur votre repo.
https://github.com/dtube/dscripts/tree/master/scruteur
J'étais passé par streamOperations, mais çe ne me semble pas tellement adapté.
Je vais creuser ça ! Merci
Yes. Je suis entrain de développer un bot pour faire persister les vidéos francophones sur mes noeuds.
C’est étrangement simple à utiliser.
Cool :)
Je ne connais pas ton projet mais sache qu'il existe IPFS-cluster qui permet de gérer plusieurs noeuds avec un seul client. Par exemple, ça permet de pin 2 fois un fichier sur tes 3 noeuds et de répliquer le fichier si jamais un noeud s'arrête ;)
Pour la mise à l'échelle pourquoi pas. Mais ça va me coûter un bras de maintenir plusieurs noeuds
Super merci beaucoup pour le tutoriel !
Merci pour ce tutoriel! J'ai toujours laissé mes torrents ouverts donc si j'ai bien compris l'équivalent ici serrai d'installer un noeud IPFS... Donc je vais essayé de le faire mais ça à l'air relativement technique pour un néophyte comme moi...
Avec plaisir :)
Oui c'est exactement le même principe que les torrents, tu laisses tourner IPFS pour seeder des fichiers.
Depuis la dernière maj de DTube on ne peux plus choisir d'utiliser son démon IPFS (choix que je ne comprends pas et j'espère que ça reviendra). Il faudra donc tout épingler à la main sur ton nœud. C'est un peu moins transparent et j'avoue que ça peut être une barrière pour les néophyte :/
Mais Courage ! La voie pour s'émanciper des géants du web est, certes plus sinueuse, mais pas inaccessible ! :D